am 4ab59724: (-s ours) am 6581c3e0: (-s ours) Import translations. DO NOT MERGE
* commit '4ab59724793d8c4d22f6a56970b69b8e6dfacc3c':
Import translations. DO NOT MERGE
diff --git a/Android.mk b/Android.mk
index 4877cdd..a6c4efc 100644
--- a/Android.mk
+++ b/Android.mk
@@ -4,28 +4,29 @@
LOCAL_MODULE_TAGS := optional
contacts_common_dir := ../ContactsCommon
+phone_common_dir := ../PhoneCommon
-src_dirs := src $(contacts_common_dir)/src
-res_dirs := res $(contacts_common_dir)/res
+src_dirs := src $(contacts_common_dir)/src $(phone_common_dir)/src
+res_dirs := res $(contacts_common_dir)/res $(phone_common_dir)/res
LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
- --extra-packages com.android.contacts.common
+ --extra-packages com.android.contacts.common \
+ --extra-packages com.android.phone.common
LOCAL_JAVA_LIBRARIES := telephony-common voip-common
LOCAL_STATIC_JAVA_LIBRARIES := \
- com.android.phone.shared \
com.android.vcard \
android-common \
guava \
android-support-v13 \
+ android-support-v7-palette \
android-support-v4 \
- android-ex-variablespeed \
-
-LOCAL_REQUIRED_MODULES := libvariablespeed
+ libphonenumber \
+ libgeocoding
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bae0341..f145ac1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -23,33 +23,26 @@
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
- <uses-permission android:name="android.permission.READ_CALL_LOG" />
- <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.WRITE_PROFILE" />
- <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
- <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
- <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
- <uses-permission android:name="com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL" />
- <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
- <!-- allow broadcasting secret code intents that reboot the phone -->
- <uses-permission android:name="android.permission.REBOOT" />
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+ <!-- Following used for QuickContacts -->
+ <uses-permission android:name="android.permission.READ_CALL_LOG" />
+ <uses-permission android:name="android.permission.READ_SMS" />
+ <uses-permission android:name="android.permission.READ_CALENDAR" />
<application
android:name="com.android.contacts.ContactsApplication"
@@ -64,7 +57,6 @@
<activity android:name=".activities.PeopleActivity"
android:label="@string/people"
android:theme="@style/PeopleTheme"
- android:uiOptions="splitActionBarWhenNarrow"
android:clearTaskOnLaunch="true"
android:launchMode="singleTop"
>
@@ -255,14 +247,11 @@
android:theme="@style/EditorActivityTheme"
android:windowSoftInputMode="adjustResize" />
- <!-- Used to show QuickContact window over a translucent activity, which is a
- temporary hack until we add better framework support. -->
<activity
android:name=".quickcontact.QuickContactActivity"
android:theme="@style/Theme.QuickContact"
android:launchMode="singleTop"
android:excludeFromRecents="true"
- android:noHistory="true"
android:taskAffinity=""
android:windowSoftInputMode="stateUnchanged">
@@ -272,6 +261,14 @@
<data android:mimeType="vnd.android.cursor.item/contact" />
<data android:mimeType="vnd.android.cursor.item/person" />
</intent-filter>
+
+ <intent-filter android:label="@string/viewContactDesription">
+ <action android:name="android.intent.action.VIEW" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <data android:mimeType="vnd.android.cursor.item/person" />
+ <data android:mimeType="vnd.android.cursor.item/contact" />
+ <data android:mimeType="vnd.android.cursor.item/raw_contact" />
+ </intent-filter>
</activity>
<receiver
@@ -317,21 +314,6 @@
</activity-alias>
- <!-- Views the details of a single contact -->
- <activity android:name=".activities.ContactDetailActivity"
- android:label="@string/viewContactTitle"
- android:theme="@style/DetailActivityTheme"
- android:parentActivityName=".activities.PeopleActivity">
-
- <intent-filter android:label="@string/viewContactDesription">
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="vnd.android.cursor.item/person" />
- <data android:mimeType="vnd.android.cursor.item/contact" />
- <data android:mimeType="vnd.android.cursor.item/raw_contact" />
- </intent-filter>
- </activity>
-
<!-- Confirm that a single detail will be added to an existing contact -->
<activity
android:name=".activities.ConfirmAddDetailActivity"
@@ -351,7 +333,7 @@
<activity
android:name=".activities.ContactEditorActivity"
android:theme="@style/EditorActivityTheme"
- android:windowSoftInputMode="adjustResize">
+ android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter android:label="@string/editContactDescription">
<action android:name="android.intent.action.EDIT" />
diff --git a/CleanSpec.mk b/CleanSpec.mk
index b84e1b6..63f1939 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -47,3 +47,4 @@
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Contacts_intermediates)
diff --git a/proguard.flags b/proguard.flags
index 3991a14..05071df 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -10,10 +10,10 @@
}
# Any class or method annotated with NeededForTesting or NeededForReflection.
--keep @com.android.contacts.common.test.NeededForTesting class *
+-keep @com.android.contacts.common.testing.NeededForTesting class *
-keep @com.android.contacts.test.NeededForReflection class *
-keepclassmembers class * {
-@com.android.contacts.common.test.NeededForTesting *;
+@com.android.contacts.common.testing.NeededForTesting *;
@com.android.contacts.test.NeededForReflection *;
}
diff --git a/res/drawable-hdpi/default_avatar_white.png b/res/drawable-hdpi/default_avatar_white.png
new file mode 100644
index 0000000..711286c
--- /dev/null
+++ b/res/drawable-hdpi/default_avatar_white.png
Binary files differ
diff --git a/res/drawable-hdpi/expanding_entry_card_expand_white_24.png b/res/drawable-hdpi/expanding_entry_card_expand_white_24.png
new file mode 100644
index 0000000..50ebbc5
--- /dev/null
+++ b/res/drawable-hdpi/expanding_entry_card_expand_white_24.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ab_search_holo_dark.png b/res/drawable-hdpi/ic_ab_search_holo_dark.png
deleted file mode 100644
index 6dff03e..0000000
--- a/res/drawable-hdpi/ic_ab_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_arrow.png b/res/drawable-hdpi/ic_call_arrow.png
new file mode 100644
index 0000000..14a33e3
--- /dev/null
+++ b/res/drawable-hdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_create_24dp.png b/res/drawable-hdpi/ic_create_24dp.png
new file mode 100644
index 0000000..540ab4d
--- /dev/null
+++ b/res/drawable-hdpi/ic_create_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_email_24dp.png b/res/drawable-hdpi/ic_email_24dp.png
new file mode 100644
index 0000000..231b141
--- /dev/null
+++ b/res/drawable-hdpi/ic_email_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_event_24dp.png b/res/drawable-hdpi/ic_event_24dp.png
new file mode 100644
index 0000000..023695a
--- /dev/null
+++ b/res/drawable-hdpi/ic_event_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_message_24dp.png b/res/drawable-hdpi/ic_message_24dp.png
new file mode 100644
index 0000000..48f008a
--- /dev/null
+++ b/res/drawable-hdpi/ic_message_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_person_add_24dp.png b/res/drawable-hdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..1b71ff1
--- /dev/null
+++ b/res/drawable-hdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_phone_24dp.png b/res/drawable-hdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..a6a6448
--- /dev/null
+++ b/res/drawable-hdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_place_24dp.png b/res/drawable-hdpi/ic_place_24dp.png
new file mode 100644
index 0000000..8e21320
--- /dev/null
+++ b/res/drawable-hdpi/ic_place_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_star_24dp.png b/res/drawable-hdpi/ic_star_24dp.png
new file mode 100644
index 0000000..b3d2f44
--- /dev/null
+++ b/res/drawable-hdpi/ic_star_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_star_outline_24dp.png b/res/drawable-hdpi/ic_star_outline_24dp.png
new file mode 100644
index 0000000..4d4b7c1
--- /dev/null
+++ b/res/drawable-hdpi/ic_star_outline_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/profile_ic_fab_yellow.png b/res/drawable-hdpi/profile_ic_fab_yellow.png
new file mode 100644
index 0000000..9287aa5
--- /dev/null
+++ b/res/drawable-hdpi/profile_ic_fab_yellow.png
Binary files differ
diff --git a/res/drawable-mdpi/default_avatar_white.png b/res/drawable-mdpi/default_avatar_white.png
new file mode 100644
index 0000000..0983eb0
--- /dev/null
+++ b/res/drawable-mdpi/default_avatar_white.png
Binary files differ
diff --git a/res/drawable-mdpi/expanding_entry_card_expand_white_24.png b/res/drawable-mdpi/expanding_entry_card_expand_white_24.png
new file mode 100644
index 0000000..a0d4063
--- /dev/null
+++ b/res/drawable-mdpi/expanding_entry_card_expand_white_24.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ab_search_holo_dark.png b/res/drawable-mdpi/ic_ab_search_holo_dark.png
deleted file mode 100644
index 5a10e93..0000000
--- a/res/drawable-mdpi/ic_ab_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_arrow.png b/res/drawable-mdpi/ic_call_arrow.png
new file mode 100644
index 0000000..169cf29
--- /dev/null
+++ b/res/drawable-mdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_create_24dp.png b/res/drawable-mdpi/ic_create_24dp.png
new file mode 100644
index 0000000..8a2df39
--- /dev/null
+++ b/res/drawable-mdpi/ic_create_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_email_24dp.png b/res/drawable-mdpi/ic_email_24dp.png
new file mode 100644
index 0000000..c32d03a
--- /dev/null
+++ b/res/drawable-mdpi/ic_email_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_event_24dp.png b/res/drawable-mdpi/ic_event_24dp.png
new file mode 100644
index 0000000..f5abeb7
--- /dev/null
+++ b/res/drawable-mdpi/ic_event_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_message_24dp.png b/res/drawable-mdpi/ic_message_24dp.png
new file mode 100644
index 0000000..c18f225
--- /dev/null
+++ b/res/drawable-mdpi/ic_message_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_person_add_24dp.png b/res/drawable-mdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..b6cf02d
--- /dev/null
+++ b/res/drawable-mdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_phone_24dp.png b/res/drawable-mdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..2286bb4
--- /dev/null
+++ b/res/drawable-mdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_place_24dp.png b/res/drawable-mdpi/ic_place_24dp.png
new file mode 100644
index 0000000..2ef1381
--- /dev/null
+++ b/res/drawable-mdpi/ic_place_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_star_24dp.png b/res/drawable-mdpi/ic_star_24dp.png
new file mode 100644
index 0000000..b8f32f8
--- /dev/null
+++ b/res/drawable-mdpi/ic_star_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_star_outline_24dp.png b/res/drawable-mdpi/ic_star_outline_24dp.png
new file mode 100644
index 0000000..22b4fb8
--- /dev/null
+++ b/res/drawable-mdpi/ic_star_outline_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/profile_ic_fab_yellow.png b/res/drawable-mdpi/profile_ic_fab_yellow.png
new file mode 100644
index 0000000..257be13
--- /dev/null
+++ b/res/drawable-mdpi/profile_ic_fab_yellow.png
Binary files differ
diff --git a/res/drawable-xhdpi/default_avatar_white.png b/res/drawable-xhdpi/default_avatar_white.png
new file mode 100644
index 0000000..f645ff2
--- /dev/null
+++ b/res/drawable-xhdpi/default_avatar_white.png
Binary files differ
diff --git a/res/drawable-xhdpi/expanding_entry_card_expand_white_24.png b/res/drawable-xhdpi/expanding_entry_card_expand_white_24.png
new file mode 100644
index 0000000..42e9f2c
--- /dev/null
+++ b/res/drawable-xhdpi/expanding_entry_card_expand_white_24.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ab_search_holo_dark.png b/res/drawable-xhdpi/ic_ab_search_holo_dark.png
deleted file mode 100644
index b2d23c9..0000000
--- a/res/drawable-xhdpi/ic_ab_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_arrow.png b/res/drawable-xhdpi/ic_call_arrow.png
new file mode 100644
index 0000000..6f13660
--- /dev/null
+++ b/res/drawable-xhdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_create_24dp.png b/res/drawable-xhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..48e75be
--- /dev/null
+++ b/res/drawable-xhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_email_24dp.png b/res/drawable-xhdpi/ic_email_24dp.png
new file mode 100644
index 0000000..adf14ef
--- /dev/null
+++ b/res/drawable-xhdpi/ic_email_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_event_24dp.png b/res/drawable-xhdpi/ic_event_24dp.png
new file mode 100644
index 0000000..a2bd4b2
--- /dev/null
+++ b/res/drawable-xhdpi/ic_event_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_message_24dp.png b/res/drawable-xhdpi/ic_message_24dp.png
new file mode 100644
index 0000000..ee5021c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_message_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_person_add_24dp.png b/res/drawable-xhdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..2d265e1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_phone_24dp.png b/res/drawable-xhdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..cd9ff60
--- /dev/null
+++ b/res/drawable-xhdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_place_24dp.png b/res/drawable-xhdpi/ic_place_24dp.png
new file mode 100644
index 0000000..0f8bc5b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_place_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_star_24dp.png b/res/drawable-xhdpi/ic_star_24dp.png
new file mode 100644
index 0000000..e1ae246
--- /dev/null
+++ b/res/drawable-xhdpi/ic_star_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_star_outline_24dp.png b/res/drawable-xhdpi/ic_star_outline_24dp.png
new file mode 100644
index 0000000..f7dacfd
--- /dev/null
+++ b/res/drawable-xhdpi/ic_star_outline_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/profile_ic_fab_yellow.png b/res/drawable-xhdpi/profile_ic_fab_yellow.png
new file mode 100644
index 0000000..a6e183b
--- /dev/null
+++ b/res/drawable-xhdpi/profile_ic_fab_yellow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/default_avatar_white.png b/res/drawable-xxhdpi/default_avatar_white.png
new file mode 100644
index 0000000..b92f026
--- /dev/null
+++ b/res/drawable-xxhdpi/default_avatar_white.png
Binary files differ
diff --git a/res/drawable-xxhdpi/expanding_entry_card_expand_white_24.png b/res/drawable-xxhdpi/expanding_entry_card_expand_white_24.png
new file mode 100644
index 0000000..af4d711
--- /dev/null
+++ b/res/drawable-xxhdpi/expanding_entry_card_expand_white_24.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ab_search_holo_dark.png b/res/drawable-xxhdpi/ic_ab_search_holo_dark.png
deleted file mode 100644
index d56194d..0000000
--- a/res/drawable-xxhdpi/ic_ab_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_call_arrow.png b/res/drawable-xxhdpi/ic_call_arrow.png
new file mode 100644
index 0000000..0364ee0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_call_arrow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_create_24dp.png b/res/drawable-xxhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..24142c7
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_email_24dp.png b/res/drawable-xxhdpi/ic_email_24dp.png
new file mode 100644
index 0000000..d1fc5fc
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_email_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_event_24dp.png b/res/drawable-xxhdpi/ic_event_24dp.png
new file mode 100644
index 0000000..f27a424
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_event_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_message_24dp.png b/res/drawable-xxhdpi/ic_message_24dp.png
new file mode 100644
index 0000000..3b74d32
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_message_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_person_add_24dp.png b/res/drawable-xxhdpi/ic_person_add_24dp.png
new file mode 100644
index 0000000..6091312
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_person_add_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_phone_24dp.png b/res/drawable-xxhdpi/ic_phone_24dp.png
new file mode 100644
index 0000000..3c546e5
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_phone_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_place_24dp.png b/res/drawable-xxhdpi/ic_place_24dp.png
new file mode 100644
index 0000000..0eca249
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_place_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_star_24dp.png b/res/drawable-xxhdpi/ic_star_24dp.png
new file mode 100644
index 0000000..eeb659e
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_star_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_star_outline_24dp.png b/res/drawable-xxhdpi/ic_star_outline_24dp.png
new file mode 100644
index 0000000..d1728ff
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_star_outline_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/profile_ic_fab_yellow.png b/res/drawable-xxhdpi/profile_ic_fab_yellow.png
new file mode 100644
index 0000000..3e4b898
--- /dev/null
+++ b/res/drawable-xxhdpi/profile_ic_fab_yellow.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_create_24dp.png b/res/drawable-xxxhdpi/ic_create_24dp.png
new file mode 100644
index 0000000..d3ff0ec
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_create_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_star_24dp.png b/res/drawable-xxxhdpi/ic_star_24dp.png
new file mode 100644
index 0000000..bd1cd8d
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_star_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_star_outline_24dp.png b/res/drawable-xxxhdpi/ic_star_outline_24dp.png
new file mode 100644
index 0000000..cb90707
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_star_outline_24dp.png
Binary files differ
diff --git a/res/drawable/action_bar_tab.xml b/res/drawable/action_bar_tab.xml
deleted file mode 100644
index 2fc5c2b..0000000
--- a/res/drawable/action_bar_tab.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2011 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:drawable="@drawable/tab_selected_pressed" android:state_pressed="true"/>
- <item android:drawable="@drawable/tab_selected_focused" android:state_focused="true"/>
- <item android:drawable="@drawable/tab_selected" />
-</selector>
\ No newline at end of file
diff --git a/res/drawable/list_divider.xml b/res/drawable/default_avatar_white.xml
similarity index 71%
rename from res/drawable/list_divider.xml
rename to res/drawable/default_avatar_white.xml
index 81df0f5..9bc5cbf 100644
--- a/res/drawable/list_divider.xml
+++ b/res/drawable/default_avatar_white.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -13,8 +13,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <solid
- android:color="@color/quickcontact_list_divider"/>
-</shape>
\ No newline at end of file
+
+<inset
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/default_avatar_white"
+ android:insetRight="102dp"
+ android:insetLeft="102dp" />
\ No newline at end of file
diff --git a/res/drawable/quickcontact_track_background.xml b/res/drawable/expanding_entry_card_collapse_white_24.xml
similarity index 70%
copy from res/drawable/quickcontact_track_background.xml
copy to res/drawable/expanding_entry_card_collapse_white_24.xml
index fcf61fd..a38706e 100644
--- a/res/drawable/quickcontact_track_background.xml
+++ b/res/drawable/expanding_entry_card_collapse_white_24.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -14,6 +14,7 @@
limitations under the License.
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/quickcon_background_texture"
- android:tileMode="repeat" />
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/expanding_entry_card_expand_white_24"
+ android:fromDegrees="180"
+ android:toDegrees="0"/>
\ No newline at end of file
diff --git a/res/drawable/quickcontact_track_background.xml b/res/drawable/floating_action_button.xml
similarity index 71%
copy from res/drawable/quickcontact_track_background.xml
copy to res/drawable/floating_action_button.xml
index fcf61fd..f3c2b90 100644
--- a/res/drawable/quickcontact_track_background.xml
+++ b/res/drawable/floating_action_button.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!--
+ Copyright (C) 2014 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.
@@ -14,6 +15,7 @@
limitations under the License.
-->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/quickcon_background_texture"
- android:tileMode="repeat" />
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="@color/contacts_accent_color">
+ <item android:drawable="@drawable/profile_ic_fab_yellow" />
+</ripple>
diff --git a/res/drawable/ic_person_add_tinted_24dp.xml b/res/drawable/ic_person_add_tinted_24dp.xml
new file mode 100644
index 0000000..6d79663
--- /dev/null
+++ b/res/drawable/ic_person_add_tinted_24dp.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2014 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
+ -->
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/ic_person_add_24dp"
+ android:autoMirrored="true"
+ android:tint="@color/actionbar_icon_color" />
\ No newline at end of file
diff --git a/res/drawable/quickcontact_list_item_divider.xml b/res/drawable/quickcontact_list_item_divider.xml
deleted file mode 100644
index 99882c4..0000000
--- a/res/drawable/quickcontact_list_item_divider.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
- android:drawable="@drawable/list_divider"
- android:insetRight="16dp"
- android:insetLeft="16dp" />
\ No newline at end of file
diff --git a/res/drawable/tab_selected.xml b/res/drawable/tab_selected.xml
deleted file mode 100644
index 36a4175..0000000
--- a/res/drawable/tab_selected.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item>
- <shape android:shape="rectangle" >
- <solid android:color="@color/action_bar_background" />
- </shape>
- </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/tab_selected_focused.xml b/res/drawable/tab_selected_focused.xml
deleted file mode 100644
index 13aeb4ce..0000000
--- a/res/drawable/tab_selected_focused.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item>
- <shape android:shape="rectangle" >
- <solid android:color="@color/action_bar_background_highlight" />
- </shape>
- </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/tab_selected_pressed.xml b/res/drawable/tab_selected_pressed.xml
deleted file mode 100644
index 13aeb4ce..0000000
--- a/res/drawable/tab_selected_pressed.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item>
- <shape android:shape="rectangle" >
- <solid android:color="@color/action_bar_background_highlight" />
- </shape>
- </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/tab_unselected_focused.xml b/res/drawable/tab_unselected_focused.xml
deleted file mode 100644
index 13aeb4ce..0000000
--- a/res/drawable/tab_unselected_focused.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item>
- <shape android:shape="rectangle" >
- <solid android:color="@color/action_bar_background_highlight" />
- </shape>
- </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/tab_unselected_pressed.xml b/res/drawable/tab_unselected_pressed.xml
deleted file mode 100644
index 13aeb4ce..0000000
--- a/res/drawable/tab_unselected_pressed.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <item>
- <shape android:shape="rectangle" >
- <solid android:color="@color/action_bar_background_highlight" />
- </shape>
- </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/layout-land/contact_detail_container.xml b/res/layout-land/contact_detail_container.xml
deleted file mode 100644
index fc401b7..0000000
--- a/res/layout-land/contact_detail_container.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <com.android.contacts.detail.ContactDetailFragmentCarousel
- android:id="@+id/fragment_carousel"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout-land/contact_detail_updates_fragment.xml b/res/layout-land/contact_detail_updates_fragment.xml
deleted file mode 100644
index 801f2bb..0000000
--- a/res/layout-land/contact_detail_updates_fragment.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/contact_detail_updates_fragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/background_social_updates">
-
- <ListView android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fadingEdge="none"
- android:divider="@null"
- android:background="@android:color/transparent"/>
-
-</FrameLayout>
diff --git a/res/layout-land/quickcontact_activity.xml b/res/layout-land/quickcontact_activity.xml
index c398551..9a07698 100644
--- a/res/layout-land/quickcontact_activity.xml
+++ b/res/layout-land/quickcontact_activity.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -13,45 +13,30 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<view
+<com.android.contacts.widget.MultiShrinkScroller
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- class="com.android.contacts.quickcontact.FloatingChildLayout"
- android:id="@+id/floating_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/multiscroller"
android:focusable="true"
android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants">
- <LinearLayout
- android:id="@android:id/content"
+ android:descendantFocusability="afterDescendants" >
+
+ <View
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="32dip"
- android:orientation="horizontal">
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- ex:ratio="1.0"
- ex:direction="heightToWidth">
- <include layout="@layout/quickcontact_photo_container" />
- </view>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <include layout="@layout/quickcontact_track" />
- <View
- android:id="@+id/line_after_track"
- android:layout_width="match_parent"
- android:layout_height="2dip"
- android:background="@color/quickcontact_tab_indicator" />
- <android.support.v4.view.ViewPager
- android:id="@+id/item_list_pager"
- android:background="@drawable/quickcontact_track_background"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </LinearLayout>
+ android:layout_height="@dimen/quickcontact_starting_empty_height"
+ android:contentDescription="@string/quickcontact_transparent_view_description"
+ android:id="@+id/transparent_view" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <include layout="@layout/quickcontact_header" />
+
+ <include layout="@layout/quickcontact_content" />
+
</LinearLayout>
-</view>
+
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout-land/updates_header_contact.xml b/res/layout-land/updates_header_contact.xml
deleted file mode 100644
index 844188e..0000000
--- a/res/layout-land/updates_header_contact.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact updates list.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="32dip"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- android:paddingStart="16dip"
- android:paddingEnd="16dip"
- android:focusable="false">
-
- <TextView
- style="?android:attr/listSeparatorTextViewStyle"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingStart="8dip"
- android:paddingEnd="8dip"
- android:background="@drawable/list_section_divider_holo_custom"
- android:text="@string/recent_updates"
- android:textColor="@color/people_app_theme_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end" />
-
-</FrameLayout>
diff --git a/res/layout-sw600dp-land/contact_detail_container.xml b/res/layout-sw600dp-land/contact_detail_container.xml
deleted file mode 100644
index 3597d9f..0000000
--- a/res/layout-sw600dp-land/contact_detail_container.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <com.android.contacts.detail.ContactDetailFragmentCarousel
- android:id="@+id/fragment_carousel"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginStart="16dip"/>
-
-</FrameLayout>
diff --git a/res/layout-sw600dp-land/detail_header_contact_with_updates.xml b/res/layout-sw600dp-land/detail_header_contact_with_updates.xml
deleted file mode 100644
index 6476300..0000000
--- a/res/layout-sw600dp-land/detail_header_contact_with_updates.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!--
- This is a header entry in the contact details list for when the contact has social updates. The
- entry shows the contact's basic info and maintains vertical padding to ensure that the first
- contact detail is visible (and below the tab carousel). The photo is not displayed here
- because it will be shown in the tab carousel.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="8dip"
- android:orientation="horizontal">
-
- <include layout="@layout/photo_selector_view"
- android:layout_width="@dimen/detail_contact_photo_size"
- android:layout_height="@dimen/detail_contact_photo_size" />
-
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="4dip"
- android:paddingStart="16dip"
- android:paddingEnd="4dip">
-
- <TextView
- android:id="@+id/name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textSize="@dimen/detail_header_name_text_size" />
-
- <TextView
- android:id="@+id/company"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorSecondary" />
-
- </LinearLayout>
-
- <include
- layout="@layout/favorites_star" />
-
-</LinearLayout>
diff --git a/res/layout-sw600dp-land/people_activity.xml b/res/layout-sw600dp-land/people_activity.xml
deleted file mode 100644
index 46f27a0..0000000
--- a/res/layout-sw600dp-land/people_activity.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/people_view"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:id="@+id/main_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:splitMotionEvents="true"
- android:baselineAligned="false">
-
- <!-- Left panel browse list for Groups or All tabs -->
- <FrameLayout
- android:id="@+id/browse_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@drawable/list_background_holo"
- android:visibility="gone">
-
- <!-- All -->
- <fragment
- android:id="@+id/all_fragment"
- class="com.android.contacts.list.DefaultContactBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
-
- <!-- Groups -->
- <fragment
- android:id="@+id/groups_fragment"
- class="com.android.contacts.group.GroupBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
- </FrameLayout>
-
- <!-- Right panel detail view for All tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/contact_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This layout includes all possible views needed for a contact detail page -->
- <include
- android:id="@+id/contact_detail_container"
- layout="@layout/contact_detail_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- <!-- This invisible worker fragment loads the contact's details -->
- <fragment
- android:id="@+id/contact_detail_loader_fragment"
- class="com.android.contacts.detail.ContactLoaderFragment"
- android:layout_height="0dip"
- android:layout_width="0dip"
- android:visibility="gone"/>
- </view>
-
- <!-- Right panel detail view for Groups tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/group_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This is the group detail page -->
- <fragment
- android:id="@+id/group_detail_fragment"
- class="com.android.contacts.group.GroupDetailFragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone" />
- </view>
-
- <!-- Two-panel view under the Favorites tab -->
- <LinearLayout
- android:id="@+id/favorites_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/list_background_holo"
- android:baselineAligned="false">
-
- <!-- Starred -->
- <FrameLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:background="@drawable/panel_favorites_holo_light">
-
- <fragment
- android:id="@+id/favorites_fragment"
- class="com.android.contacts.list.ContactTileListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip" />
-
- </FrameLayout>
-
- <!-- Most Frequent -->
- <fragment
- android:id="@+id/frequent_fragment"
- class="com.android.contacts.list.ContactTileFrequentFragment"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:layout_marginTop="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginEnd="16dip"/>
-
- </LinearLayout>
-
- </LinearLayout>
-
- <com.android.contacts.widget.InterpolatingLayout
- android:id="@+id/contacts_unavailable_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/background_holo_light"
- android:visibility="gone">
-
- <FrameLayout
- android:id="@+id/contacts_unavailable_container"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="80dip"
- ex:layout_narrowMarginRight="80dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="200dip"
- ex:layout_wideMarginRight="200dip"
- android:paddingBottom="20dip" />
-
- </com.android.contacts.widget.InterpolatingLayout>
-</view>
diff --git a/res/layout-sw600dp-land/quickcontact_activity.xml b/res/layout-sw600dp-land/quickcontact_activity.xml
deleted file mode 100644
index 230c4e0..0000000
--- a/res/layout-sw600dp-land/quickcontact_activity.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.quickcontact.FloatingChildLayout"
- android:id="@+id/floating_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants">
- <LinearLayout
- android:id="@android:id/content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="32dip"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="360dip"
- android:layout_height="360dip">
- <include layout="@layout/quickcontact_photo_container" />
- </FrameLayout>
- <LinearLayout
- android:layout_width="360dip"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <include layout="@layout/quickcontact_track" />
- <View
- android:id="@+id/line_after_track"
- android:layout_width="match_parent"
- android:layout_height="2dip"
- android:background="@color/quickcontact_tab_indicator" />
- <android.support.v4.view.ViewPager
- android:id="@+id/item_list_pager"
- android:background="@drawable/quickcontact_track_background"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </LinearLayout>
- </LinearLayout>
-</view>
diff --git a/res/layout-sw600dp-land/updates_header_contact.xml b/res/layout-sw600dp-land/updates_header_contact.xml
deleted file mode 100644
index eb0eee7..0000000
--- a/res/layout-sw600dp-land/updates_header_contact.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!--
- This is a header entry in the contact updates list.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:focusable="false">
-
- <TextView
- style="?android:attr/listSeparatorTextViewStyle"
- android:layout_height="32dip"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingStart="8dip"
- android:paddingEnd="8dip"
- android:background="@drawable/list_section_divider_holo_custom"
- android:text="@string/recent_updates"
- android:textColor="@color/people_app_theme_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end" />
-
-</FrameLayout>
diff --git a/res/layout-sw600dp/contact_detail_container.xml b/res/layout-sw600dp/contact_detail_container.xml
deleted file mode 100644
index d7accaf..0000000
--- a/res/layout-sw600dp/contact_detail_container.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <android.support.v4.view.ViewPager
- android:id="@+id/pager"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <include
- android:id="@+id/tab_carousel"
- layout="@layout/contact_detail_tab_carousel"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"/>
-
-</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout-sw600dp/contact_detail_updates_fragment.xml b/res/layout-sw600dp/contact_detail_updates_fragment.xml
deleted file mode 100644
index 537d68f..0000000
--- a/res/layout-sw600dp/contact_detail_updates_fragment.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/contact_detail_updates_fragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ListView android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fadingEdge="none"
- android:divider="@null"
- android:scrollbarStyle="outsideOverlay"
- android:paddingRight="12dip"
- android:paddingEnd="12dip" />
-
-</FrameLayout>
diff --git a/res/layout-sw600dp/detail_header_contact_with_updates.xml b/res/layout-sw600dp/detail_header_contact_with_updates.xml
deleted file mode 100644
index 06b82dd..0000000
--- a/res/layout-sw600dp/detail_header_contact_with_updates.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact details list for when the contact has social updates. The
- entry shows the contact's basic info and maintains vertical padding to ensure that the first
- contact detail is visible (and below the tab carousel). The photo is not displayed here
- because it will be shown in the tab carousel.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_marginTop="30dip"
- android:paddingBottom="16dip">
-
- <!-- Add a first item that gives us enough space to show the carousel -->
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- ex:ratio="0.6667"
- ex:direction="widthToHeight">
-
- <!-- Put a dummy view here because the ProportionalLayout requires one -->
- <View
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- </view>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:paddingTop="8dip"
- android:paddingEnd="8dip" >
-
- <TextView
- android:id="@+id/name"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:paddingStart="8dip"
- android:paddingEnd="24dip"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textSize="@dimen/detail_header_name_text_size" />
-
- <include
- layout="@layout/favorites_star" />
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/company"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="8dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorSecondary" />
-
-</LinearLayout>
diff --git a/res/layout-sw600dp/people_activity.xml b/res/layout-sw600dp/people_activity.xml
deleted file mode 100644
index f788f72..0000000
--- a/res/layout-sw600dp/people_activity.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/people_view"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:id="@+id/main_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:splitMotionEvents="true"
- android:baselineAligned="false">
-
- <!-- Left panel browse list for Groups or All tabs -->
- <FrameLayout
- android:id="@+id/browse_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@drawable/list_background_holo"
- android:visibility="gone">
-
- <!-- All -->
- <fragment
- android:id="@+id/all_fragment"
- class="com.android.contacts.list.DefaultContactBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
-
- <!-- Groups -->
- <fragment
- android:id="@+id/groups_fragment"
- class="com.android.contacts.group.GroupBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
- </FrameLayout>
-
- <!-- Right panel detail view for All tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/contact_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This layout includes all possible views needed for a contact detail page -->
- <include
- android:id="@+id/contact_detail_container"
- layout="@layout/contact_detail_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip"
- android:layout_marginTop="16dip" />
-
- <!-- This invisible worker fragment loads the contact's details -->
- <fragment
- android:id="@+id/contact_detail_loader_fragment"
- class="com.android.contacts.detail.ContactLoaderFragment"
- android:layout_height="0dip"
- android:layout_width="0dip"
- android:visibility="gone" />
- </view>
-
- <!-- Right panel detail view for Groups tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/group_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This is the group detail page -->
- <fragment
- android:id="@+id/group_detail_fragment"
- class="com.android.contacts.group.GroupDetailFragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone" />
- </view>
-
- <!-- Single panel view under the Favorites tab (Strequent) -->
- <FrameLayout
- android:id="@+id/favorites_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/background_primary">
-
- <fragment
- android:id="@+id/favorites_fragment"
- class="com.android.contacts.list.ContactTileListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip" />
-
- </FrameLayout>
-
- </LinearLayout>
-
- <com.android.contacts.widget.InterpolatingLayout
- android:id="@+id/contacts_unavailable_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/background_holo_light"
- android:visibility="gone">
-
- <FrameLayout
- android:id="@+id/contacts_unavailable_container"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="80dip"
- ex:layout_narrowMarginRight="80dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="200dip"
- ex:layout_wideMarginRight="200dip"
- android:paddingBottom="20dip" />
-
- </com.android.contacts.widget.InterpolatingLayout>
-</view>
diff --git a/res/layout-sw600dp/quickcontact_activity.xml b/res/layout-sw600dp/quickcontact_activity.xml
deleted file mode 100644
index 229974b..0000000
--- a/res/layout-sw600dp/quickcontact_activity.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- class="com.android.contacts.quickcontact.FloatingChildLayout"
- android:id="@+id/floating_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants">
- <LinearLayout
- android:id="@android:id/content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="32dip"
- android:orientation="vertical" >
- <FrameLayout
- android:layout_width="360dip"
- android:layout_height="@dimen/quick_contact_photo_container_height">
- <include layout="@layout/quickcontact_photo_container" />
- </FrameLayout>
- <include layout="@layout/quickcontact_track" />
- <View
- android:id="@+id/line_after_track"
- android:layout_width="match_parent"
- android:layout_height="2dip"
- android:background="@color/quickcontact_tab_indicator" />
- <android.support.v4.view.ViewPager
- android:id="@+id/item_list_pager"
- android:background="@drawable/quickcontact_track_background"
- android:layout_width="match_parent"
- android:layout_height="160dip" />
- </LinearLayout>
-</view>
diff --git a/res/layout-sw600dp/updates_header_contact.xml b/res/layout-sw600dp/updates_header_contact.xml
deleted file mode 100644
index e95f1dd..0000000
--- a/res/layout-sw600dp/updates_header_contact.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact updates list.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- This blank view pushes the other content down because of the tab carousel -->
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="8dip"
- ex:ratio="0.6667"
- ex:direction="widthToHeight">
-
- <!-- Put a dummy view here because the ProportionalLayout requires one -->
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- </view>
-
- <!-- "Recent updates" header text -->
- <TextView
- style="?android:attr/listSeparatorTextViewStyle"
- android:layout_height="32dip"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingStart="8dip"
- android:paddingEnd="8dip"
- android:background="@drawable/list_section_divider_holo_custom"
- android:text="@string/recent"
- android:textColor="@color/people_app_theme_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end" />
-
-</LinearLayout>
diff --git a/res/layout-sw720dp-land/contact_detail_container.xml b/res/layout-sw720dp-land/contact_detail_container.xml
deleted file mode 100644
index 8180e92..0000000
--- a/res/layout-sw720dp-land/contact_detail_container.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- Two-column layout for a contact with social updates. If the contact does not
- have social updates, then the second fragment container will just be hidden.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbars="none"
- android:orientation="horizontal"
- android:baselineAligned="false">
-
- <!--
- Container for the "About" fragment on the contact card for a contact
- with social updates. This view ID must match with a view ID in the layout
- that is used after an orientation change.
- -->
- <FrameLayout
- android:id="@+id/about_fragment_container"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="3" />
-
- <!-- Vertical divider -->
- <View
- android:layout_width="2dip"
- android:layout_height="match_parent"
- android:background="?android:attr/listDivider"
- />
-
- <!--
- Container for the "Updates" fragment on the contact card for a contact
- with social updates. This view ID must match with a view ID in the layout
- that is used after an orientation change.
- -->
- <FrameLayout
- android:id="@+id/updates_fragment_container"
- android:layout_width="0dip"
- android:layout_weight="2"
- android:layout_height="match_parent"
- android:visibility="gone" />
-
-</LinearLayout>
diff --git a/res/layout-sw720dp-land/detail_header_contact_with_updates.xml b/res/layout-sw720dp-land/detail_header_contact_with_updates.xml
deleted file mode 100644
index 268b51a..0000000
--- a/res/layout-sw720dp-land/detail_header_contact_with_updates.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact details list for when the contact has social updates. The
- entry shows the contact's basic info and maintains vertical padding to ensure that the first
- contact detail is visible (and below the tab carousel). The photo is not displayed here
- because it will be shown in the tab carousel.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="8dip"
- android:orientation="horizontal">
-
- <include layout="@layout/photo_selector_view"
- android:layout_width="@dimen/detail_contact_photo_size"
- android:layout_height="@dimen/detail_contact_photo_size" />
-
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:orientation="vertical"
- android:paddingStart="16dip"
- android:paddingEnd="4dip">
-
- <TextView
- android:id="@+id/name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textSize="@dimen/detail_header_name_text_size" />
-
- <TextView
- android:id="@+id/company"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorSecondary" />
-
- </LinearLayout>
-
- <include
- layout="@layout/favorites_star" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout-sw720dp-land/people_activity.xml b/res/layout-sw720dp-land/people_activity.xml
deleted file mode 100644
index c33f0fa..0000000
--- a/res/layout-sw720dp-land/people_activity.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/people_view"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:id="@+id/main_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:splitMotionEvents="true">
-
- <FrameLayout
- android:id="@+id/browse_view"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@drawable/list_background_holo"
- android:visibility="gone">
-
- <!-- All -->
- <fragment
- android:id="@+id/all_fragment"
- class="com.android.contacts.list.DefaultContactBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
-
- <!-- Groups -->
- <fragment
- android:id="@+id/groups_fragment"
- class="com.android.contacts.group.GroupBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
- </FrameLayout>
-
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/contact_details_view"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This layout includes all possible views needed for a contact detail page -->
- <include
- android:id="@+id/contact_detail_container"
- layout="@layout/contact_detail_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- <!-- This invisible worker fragment loads the contact's details -->
- <fragment
- android:id="@+id/contact_detail_loader_fragment"
- class="com.android.contacts.detail.ContactLoaderFragment"
- android:layout_height="0dip"
- android:layout_width="0dip"
- android:visibility="gone"/>
- </view>
-
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/group_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This is the group detail page -->
- <fragment
- android:id="@+id/group_detail_fragment"
- class="com.android.contacts.group.GroupDetailFragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone" />
- </view>
-
- <LinearLayout
- android:id="@+id/favorites_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/list_background_holo"
- android:baselineAligned="false">
-
- <!-- Starred -->
- <FrameLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="7"
- android:background="@drawable/panel_favorites_holo_light">
-
- <fragment
- android:id="@+id/favorites_fragment"
- class="com.android.contacts.list.ContactTileListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_marginLeft="32dip"
- android:layout_marginRight="32dip"
- android:layout_marginStart="32dip"
- android:layout_marginEnd="32dip"/>
-
- </FrameLayout>
-
- <!-- Most Frequent -->
- <fragment
- android:id="@+id/frequent_fragment"
- class="com.android.contacts.list.ContactTileFrequentFragment"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="3"
- android:layout_marginTop="32dip"
- android:layout_marginRight="16dip"
- android:layout_marginEnd="16dip"/>
-
- </LinearLayout>
-
- </LinearLayout>
-
- <com.android.contacts.widget.InterpolatingLayout
- android:id="@+id/contacts_unavailable_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/background_holo_light"
- android:visibility="gone">
-
- <FrameLayout
- android:id="@+id/contacts_unavailable_container"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="80dip"
- ex:layout_narrowMarginRight="80dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="200dip"
- ex:layout_wideMarginRight="200dip"
- android:paddingBottom="20dip" />
-
- </com.android.contacts.widget.InterpolatingLayout>
-</view>
diff --git a/res/layout-sw720dp-land/quickcontact_activity.xml b/res/layout-sw720dp-land/quickcontact_activity.xml
deleted file mode 100644
index 230c4e0..0000000
--- a/res/layout-sw720dp-land/quickcontact_activity.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.quickcontact.FloatingChildLayout"
- android:id="@+id/floating_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants">
- <LinearLayout
- android:id="@android:id/content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="32dip"
- android:orientation="horizontal">
- <FrameLayout
- android:layout_width="360dip"
- android:layout_height="360dip">
- <include layout="@layout/quickcontact_photo_container" />
- </FrameLayout>
- <LinearLayout
- android:layout_width="360dip"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <include layout="@layout/quickcontact_track" />
- <View
- android:id="@+id/line_after_track"
- android:layout_width="match_parent"
- android:layout_height="2dip"
- android:background="@color/quickcontact_tab_indicator" />
- <android.support.v4.view.ViewPager
- android:id="@+id/item_list_pager"
- android:background="@drawable/quickcontact_track_background"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </LinearLayout>
- </LinearLayout>
-</view>
diff --git a/res/layout-sw720dp-land/updates_header_contact.xml b/res/layout-sw720dp-land/updates_header_contact.xml
deleted file mode 100644
index 8173f81..0000000
--- a/res/layout-sw720dp-land/updates_header_contact.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact updates list.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:focusable="false">
-
- <TextView
- style="?android:attr/listSeparatorTextViewStyle"
- android:layout_height="32dip"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingStart="8dip"
- android:paddingEnd="8dip"
- android:background="@drawable/list_section_divider_holo_custom"
- android:text="@string/recent_updates"
- android:textColor="@color/people_app_theme_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end" />
-
-</FrameLayout>
diff --git a/res/layout-sw720dp/people_activity.xml b/res/layout-sw720dp/people_activity.xml
deleted file mode 100644
index d8b4026..0000000
--- a/res/layout-sw720dp/people_activity.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/people_view"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout
- android:id="@+id/main_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:splitMotionEvents="true"
- android:baselineAligned="false">
-
- <!-- Left panel browse list for Groups or All tabs -->
- <FrameLayout
- android:id="@+id/browse_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@drawable/list_background_holo"
- android:visibility="gone">
-
- <!-- All -->
- <fragment
- android:id="@+id/all_fragment"
- class="com.android.contacts.list.DefaultContactBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
-
- <!-- Groups -->
- <fragment
- android:id="@+id/groups_fragment"
- class="com.android.contacts.group.GroupBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent" />
- </FrameLayout>
-
- <!-- Right panel detail view for All tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/contact_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This layout includes all possible views needed for a contact detail page -->
- <include
- android:id="@+id/contact_detail_container"
- layout="@layout/contact_detail_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip"
- android:layout_marginTop="16dip" />
-
- <!-- This invisible worker fragment loads the contact's details -->
- <fragment
- android:id="@+id/contact_detail_loader_fragment"
- class="com.android.contacts.detail.ContactLoaderFragment"
- android:layout_height="0dip"
- android:layout_width="0dip"
- android:visibility="gone"/>
- </view>
-
- <!-- Right panel detail view for Groups tab -->
- <view
- class="com.android.contacts.widget.TransitionAnimationView"
- android:id="@+id/group_details_view"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:visibility="gone">
-
- <!-- This is the group detail page -->
- <fragment
- android:id="@+id/group_detail_fragment"
- class="com.android.contacts.group.GroupDetailFragment"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone" />
- </view>
-
- <!-- Two-panel view under the Favorites tab -->
- <LinearLayout
- android:id="@+id/favorites_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/list_background_holo"
- android:baselineAligned="false">
-
- <!-- Starred -->
- <FrameLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="10"
- android:background="@drawable/panel_favorites_holo_light">
-
- <fragment
- android:id="@+id/favorites_fragment"
- class="com.android.contacts.list.ContactTileListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginStart="16dip"
- android:layout_marginEnd="16dip" />
-
- </FrameLayout>
-
- <!-- Most Frequent -->
- <fragment
- android:id="@+id/frequent_fragment"
- class="com.android.contacts.list.ContactTileFrequentFragment"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="8"
- android:layout_marginTop="16dip"
- android:layout_marginRight="16dip"
- android:layout_marginEnd="16dip"/>
-
- </LinearLayout>
-
- </LinearLayout>
-
- <com.android.contacts.widget.InterpolatingLayout
- android:id="@+id/contacts_unavailable_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/background_holo_light"
- android:visibility="gone">
-
- <FrameLayout
- android:id="@+id/contacts_unavailable_container"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="80dip"
- ex:layout_narrowMarginRight="80dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="200dip"
- ex:layout_wideMarginRight="200dip"
- android:paddingBottom="20dip" />
-
- </com.android.contacts.widget.InterpolatingLayout>
-</view>
diff --git a/res/layout/carousel_about_tab.xml b/res/layout/carousel_about_tab.xml
deleted file mode 100644
index 8026f37..0000000
--- a/res/layout/carousel_about_tab.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.detail.CarouselTab"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1">
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <ImageView android:id="@+id/photo"
- android:scaleType="centerCrop"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"/>
-
- <View android:id="@+id/photo_overlay"
- android:background="?android:attr/selectableItemBackground"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"/>
-
- <!-- Transparent view to overlay on the contact's photo
- (to allow white text to appear over a white photo). -->
- <View android:id="@+id/label_background"
- android:layout_width="match_parent"
- android:layout_height="@dimen/detail_tab_carousel_tab_label_height"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentBottom="true"
- android:background="#7F000000" />
-
- <View
- android:id="@+id/alpha_overlay"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- android:layout_marginBottom="@dimen/detail_tab_carousel_tab_label_height"/>
-
- <TextView
- android:id="@+id/label"
- android:layout_width="match_parent"
- android:layout_height="@dimen/detail_tab_carousel_tab_label_height"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentBottom="true"
- android:paddingLeft="@dimen/detail_tab_carousel_tab_label_indent"
- android:paddingStart="@dimen/detail_tab_carousel_tab_label_indent"
- android:singleLine="true"
- android:gravity="left|center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/detail_tab_carousel_tab_label_color"
- style="@android:style/Widget.Holo.ActionBar.TabView" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/carousel_updates_tab.xml b/res/layout/carousel_updates_tab.xml
deleted file mode 100644
index 0bd5cbd..0000000
--- a/res/layout/carousel_updates_tab.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- TODO: Collapse carousel_about_tab with carousel_updates_tab into 1 XML that
- handles all cases when updates fragment is more finalized.
--->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.detail.CarouselTab"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@drawable/bg_people_updates_holo">
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <ImageView android:id="@+id/status_photo"
- android:scaleType="centerCrop"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:visibility="gone" />
-
- <!-- Transparent view to overlay on the update photo
- (to allow white text to appear over a white photo). -->
- <View android:id="@+id/label_background"
- android:layout_width="match_parent"
- android:layout_height="@dimen/detail_tab_carousel_tab_label_height"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentBottom="true"
- android:layout_above="@id/status_photo"
- android:background="#7F000000" />
-
- <TextView android:id="@+id/status"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_above="@id/label"
- android:gravity="center_vertical"
- android:paddingLeft="@dimen/detail_update_tab_side_padding"
- android:paddingRight="@dimen/detail_update_tab_side_padding"
- android:paddingStart="@dimen/detail_update_tab_side_padding"
- android:paddingEnd="@dimen/detail_update_tab_side_padding"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textColor="@color/detail_update_tab_text_color"
- android:textStyle="bold"
- android:maxLines="@integer/updates_tab_snippet_max_lines"
- android:ellipsize="end" />
-
- <View
- android:id="@+id/alpha_overlay"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- android:layout_marginBottom="@dimen/detail_tab_carousel_tab_label_height"/>
-
- <TextView
- android:id="@+id/label"
- android:layout_width="match_parent"
- android:layout_height="@dimen/detail_tab_carousel_tab_label_height"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentBottom="true"
- android:layout_above="@id/status_photo"
- android:paddingLeft="@dimen/detail_tab_carousel_tab_label_indent"
- android:paddingStart="@dimen/detail_tab_carousel_tab_label_indent"
- android:singleLine="true"
- android:gravity="start|center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/detail_tab_carousel_tab_label_color"
- style="@android:style/Widget.Holo.ActionBar.TabView" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_detail_about_fragment_container.xml b/res/layout/contact_detail_about_fragment_container.xml
deleted file mode 100644
index 6fc9fe2..0000000
--- a/res/layout/contact_detail_about_fragment_container.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- Container for the "About" page fragment on the contact card for a contact with social updates.
- This view ID must match with a view ID in the layout that is used after an orientation change.
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/about_fragment_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
\ No newline at end of file
diff --git a/res/layout/contact_detail_container.xml b/res/layout/contact_detail_container.xml
index f6b3438..910d684 100644
--- a/res/layout/contact_detail_container.xml
+++ b/res/layout/contact_detail_container.xml
@@ -14,35 +14,12 @@
limitations under the License.
-->
-<!--
- Layout for the contact card page. If the contact has social updates, then
- the ViewPager and ContactDetailTabCarousel are shown together. If there
- aren't any social updates, then just the ContactDetailFragment will be
- shown. We include all 3 views even though they are never shown
- simultaneously because this layout is reused but set with different data
- each time (i.e. on a tablet).
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<!-- Layout for the contact card page. -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
-
- <android.support.v4.view.ViewPager
- android:id="@+id/pager"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <include
- android:id="@+id/tab_carousel"
- layout="@layout/contact_detail_tab_carousel"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"/>
-
-</RelativeLayout>
\ No newline at end of file
+ <fragment android:name="com.android.contacts.detail.ContactDetailFragment"
+ android:id="@+id/contact_detail_about_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/contact_detail_fragment_carousel.xml b/res/layout/contact_detail_fragment_carousel.xml
deleted file mode 100644
index 0695511..0000000
--- a/res/layout/contact_detail_fragment_carousel.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbars="none"
- android:orientation="horizontal"
- android:baselineAligned="false">
-
- <!--
- Container for the "About" page fragment on the contact card for a contact
- with social updates. This view ID must match with a view ID in the layout
- that is used after an orientation change.
- -->
- <view
- class="com.android.contacts.widget.FrameLayoutWithOverlay"
- android:id="@+id/about_fragment_container"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:focusable="true"
- android:focusableInTouchMode="true" />
-
- <!--
- Container for the "Updates" page fragment on the contact card for a contact
- with social updates. This view ID must match with a view ID in the layout
- that is used after an orientation change.
- -->
- <view
- class="com.android.contacts.widget.FrameLayoutWithOverlay"
- android:id="@+id/updates_fragment_container"
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:visibility="gone" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/contact_detail_tab_carousel.xml b/res/layout/contact_detail_tab_carousel.xml
deleted file mode 100644
index 711a6c3..0000000
--- a/res/layout/contact_detail_tab_carousel.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.detail.ContactDetailTabCarousel"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:scrollbars="none"
- android:fadingEdge="none">
-
- <LinearLayout
- android:id="@+id/tab_and_shadow_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <LinearLayout
- android:id="@+id/tab_container"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- android:orientation="horizontal"
- android:baselineAligned="false">
-
- <!-- "About" tab -->
- <include
- android:id="@+id/tab_about"
- layout="@layout/carousel_about_tab" />
-
- <!-- Vertical divider -->
- <View
- android:id="@+id/tab_divider"
- android:layout_width="1dip"
- android:layout_height="match_parent"
- android:background="@android:color/white"/>
-
- <!-- "Updates" tab -->
- <include
- android:id="@+id/tab_update"
- layout="@layout/carousel_updates_tab" />
-
- </LinearLayout>
-
- <!--
- Shadow below the carousel. The ContactDetailTabCarousel increases its height to
- account for this shadow, and the class assumes the height of this shadow to be
- @dimen/detail_contact_photo_shadow_height.
- -->
- <View
- android:id="@+id/shadow"
- android:layout_width="match_parent"
- android:layout_height="@dimen/detail_contact_photo_shadow_height"
- android:background="?android:attr/windowContentOverlay"/>
-
- </LinearLayout>
-
-</view>
diff --git a/res/layout/detail_header_contact_with_updates.xml b/res/layout/detail_header_contact_with_updates.xml
deleted file mode 100644
index dc4cf8b..0000000
--- a/res/layout/detail_header_contact_with_updates.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact details list for when the contact has social updates. The
- entry maintains vertical padding to ensure that the first contact detail is visible (and below
- the tab carousel). No information has to be displayed in this header.
- The FrameLayout is used to apply additional padding which is needed for the shadow
--->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/detail_contact_photo_shadow_height"
- ex:ratio="0.5"
- ex:direction="widthToHeight">
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </view>
-</FrameLayout>
diff --git a/res/layout/editor_custom_action_bar.xml b/res/layout/editor_custom_action_bar.xml
index e8d9287..af7b738 100644
--- a/res/layout/editor_custom_action_bar.xml
+++ b/res/layout/editor_custom_action_bar.xml
@@ -54,7 +54,7 @@
android:layout_marginRight="20dip"
android:layout_marginEnd="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="@color/people_app_theme_color"
+ android:textColor="@color/actionbar_text_color"
android:text="@string/menu_done"
style="@android:style/Widget.Holo.ActionBar.TabText" />
diff --git a/res/layout/expanding_entry_card_item.xml b/res/layout/expanding_entry_card_item.xml
new file mode 100644
index 0000000..c038d1b
--- /dev/null
+++ b/res/layout/expanding_entry_card_item.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/SelectableItem"
+ android:id="@+id/entry_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="@dimen/expanding_entry_card_item_padding_with_image_start"
+ android:paddingRight="@dimen/expanding_entry_card_item_padding_end"
+ android:paddingTop="@dimen/expanding_entry_card_item_padding_top"
+ android:paddingBottom="@dimen/expanding_entry_card_item_padding_bottom">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginRight="@dimen/expanding_entry_card_item_image_spacing" />
+
+ <TextView
+ android:id="@+id/header"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@+id/icon"
+ android:singleLine="true"
+ android:textColor="@android:color/black" />
+
+ <TextView
+ android:id="@+id/sub_header"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/header"
+ android:layout_toRightOf="@+id/icon_sub_header"
+ android:textColor="@android:color/black" />
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/icon_sub_header"
+ android:layout_below="@+id/header"
+ android:layout_toRightOf="@+id/icon"
+ android:layout_marginRight="@dimen/expanding_entry_card_item_sub_header_icon_margin_right"
+ android:layout_marginBottom="@dimen/expanding_entry_card_item_sub_header_icon_margin_bottom" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/text"
+ android:layout_below="@+id/sub_header"
+ android:layout_toRightOf="@+id/icon_text"
+ android:textColor="@android:color/darker_gray"/>
+
+ <ImageView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/icon_text"
+ android:layout_toRightOf="@+id/icon"
+ android:layout_below="@+id/sub_header"
+ android:layout_marginTop="@dimen/expanding_entry_card_item_text_icon_margin_top"
+ android:layout_marginRight="@dimen/expanding_entry_card_item_text_icon_margin_right" />
+</RelativeLayout>
diff --git a/res/layout/expanding_entry_card_view.xml b/res/layout/expanding_entry_card_view.xml
new file mode 100644
index 0000000..12f96e6
--- /dev/null
+++ b/res/layout/expanding_entry_card_view.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:lines="1"
+ android:padding="@dimen/expanding_entry_card_title_padding"
+ android:singleLine="true"
+ android:textSize="@dimen/expanding_entry_card_title_text_size" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/expanding_entry_card_item_separator_height"
+ android:background="@color/expanding_entry_card_item_separator_color" />
+
+ <LinearLayout
+ android:id="@+id/content_area_linear_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+
+</merge>
\ No newline at end of file
diff --git a/res/layout/group_account_header_horizontal.xml b/res/layout/group_account_header_horizontal.xml
index 918fd9f..cbfb555 100644
--- a/res/layout/group_account_header_horizontal.xml
+++ b/res/layout/group_account_header_horizontal.xml
@@ -33,7 +33,7 @@
android:layout_gravity="center_vertical"
android:paddingLeft="?attr/list_item_header_text_indent"
android:paddingStart="?attr/list_item_header_text_indent"
- android:textAppearance="@style/SectionHeaderStyle"
+ android:textAppearance="@style/DirectoryHeaderStyle"
android:singleLine="true"
android:textAlignment="viewStart" />
@@ -44,7 +44,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- android:textAppearance="@style/SectionHeaderStyle"
+ android:textAppearance="@style/DirectoryHeaderStyle"
android:textAllCaps="false"
android:textSize="12sp"
android:singleLine="true"
diff --git a/res/layout/group_account_header_vertical.xml b/res/layout/group_account_header_vertical.xml
index dc03b22..c5b9d76 100644
--- a/res/layout/group_account_header_vertical.xml
+++ b/res/layout/group_account_header_vertical.xml
@@ -33,7 +33,7 @@
android:layout_height="wrap_content"
android:paddingLeft="?attr/list_item_header_text_indent"
android:paddingStart="?attr/list_item_header_text_indent"
- android:textAppearance="@style/SectionHeaderStyle"
+ android:textAppearance="@style/DirectoryHeaderStyle"
android:singleLine="true"/>
<!-- TODO: Should use correct color with a correct name (content should be same).
@@ -44,7 +44,7 @@
android:layout_height="wrap_content"
android:paddingLeft="?attr/list_item_header_text_indent"
android:paddingStart="?attr/list_item_header_text_indent"
- android:textAppearance="@style/SectionHeaderStyle"
+ android:textAppearance="@style/DirectoryHeaderStyle"
android:textAllCaps="false"
android:textSize="12sp"
android:singleLine="true"
diff --git a/res/layout/people_activity.xml b/res/layout/people_activity.xml
index 589e4a9..bcdf08f 100644
--- a/res/layout/people_activity.xml
+++ b/res/layout/people_activity.xml
@@ -14,7 +14,7 @@
limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -42,4 +42,22 @@
android:layout_height="match_parent"
android:layout_width="match_parent" />
</FrameLayout>
-</FrameLayout>
+
+ <FrameLayout
+ android:id="@+id/floating_action_button_container"
+ android:layout_width="@dimen/floating_action_button_width"
+ android:layout_height="@dimen/floating_action_button_height"
+ android:layout_marginRight="@dimen/floating_action_button_margin_right"
+ android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentBottom="true">
+
+ <ImageButton
+ android:id="@+id/floating_action_button"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/floating_action_button"
+ android:contentDescription="@string/action_menu_add_new_contact_button"
+ android:src="@drawable/ic_person_add_24dp"/>
+ </FrameLayout>
+</RelativeLayout>
diff --git a/res/layout/quickcontact_activity.xml b/res/layout/quickcontact_activity.xml
index 36bdd50..008062b 100644
--- a/res/layout/quickcontact_activity.xml
+++ b/res/layout/quickcontact_activity.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!--
+ Copyright (C) 2011 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.
@@ -13,44 +14,24 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<view
+<com.android.contacts.widget.MultiShrinkScroller
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- class="com.android.contacts.quickcontact.FloatingChildLayout"
- android:id="@+id/floating_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/multiscroller"
android:focusable="true"
android:focusableInTouchMode="true"
- android:descendantFocusability="afterDescendants">
- <LinearLayout
- android:id="@android:id/content"
+ android:descendantFocusability="afterDescendants" >
+
+ <View
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="15dip"
- android:paddingRight="15dip"
- android:paddingStart="15dip"
- android:paddingEnd="15dip"
- android:paddingTop="8dip"
- android:orientation="vertical">
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- ex:ratio="0.5"
- ex:direction="widthToHeight">
- <include layout="@layout/quickcontact_photo_container" />
- </view>
- <include layout="@layout/quickcontact_track" />
- <View
- android:id="@+id/line_after_track"
- android:layout_width="match_parent"
- android:layout_height="2dip"
- android:background="@color/quickcontact_tab_indicator" />
- <android.support.v4.view.ViewPager
- android:id="@+id/item_list_pager"
- android:layout_width="match_parent"
- android:layout_height="156dip"
- android:background="@color/quickcontact_activity_background"/>
- </LinearLayout>
-</view>
+ android:layout_height="@dimen/quickcontact_starting_empty_height"
+ android:contentDescription="@string/quickcontact_transparent_view_description"
+ android:id="@+id/transparent_view" />
+
+ <include layout="@layout/quickcontact_header" />
+
+ <include layout="@layout/quickcontact_content" />
+
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout/quickcontact_content.xml b/res/layout/quickcontact_content.xml
new file mode 100644
index 0000000..b5b2a83
--- /dev/null
+++ b/res/layout/quickcontact_content.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+<com.android.contacts.widget.TouchlessScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fillViewport="true"
+ android:id="@+id/content_scroller"
+ android:background="@color/card_margin_color">
+
+ <!-- All the cards should be inserted into this LinearLayout -->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:id="@+id/card_container">
+ <com.android.contacts.quickcontact.ExpandingEntryCardView
+ style="@style/ExpandingEntryCardStyle"
+ android:id="@+id/communication_card"
+ android:layout_marginTop="@dimen/communication_card_marginTop"
+ android:visibility="gone" />
+
+ <com.android.contacts.quickcontact.ExpandingEntryCardView
+ style="@style/ExpandingEntryCardStyle"
+ android:id="@+id/recent_card"
+ android:visibility="gone" />
+ </LinearLayout>
+
+</com.android.contacts.widget.TouchlessScrollView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_expanding_entry_card_button.xml b/res/layout/quickcontact_expanding_entry_card_button.xml
new file mode 100644
index 0000000..9cd34d7
--- /dev/null
+++ b/res/layout/quickcontact_expanding_entry_card_button.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ style="@style/SelectableItem" >
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/expanding_entry_card_item_separator_height"
+ android:background="@color/expanding_entry_card_item_separator_color" />
+
+ <TextView
+ android:id="@+id/text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:drawablePadding="@dimen/expanding_entry_card_button_drawable_padding"
+ android:gravity="center_vertical"
+ android:paddingBottom="@dimen/expanding_entry_card_button_padding_vertical"
+ android:paddingLeft="@dimen/expanding_entry_card_button_padding_start"
+ android:paddingTop="@dimen/expanding_entry_card_button_padding_vertical"
+ android:textColor="@color/expanding_entry_card_button_text_color" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/quickcontact_header.xml b/res/layout/quickcontact_header.xml
new file mode 100644
index 0000000..0c51746
--- /dev/null
+++ b/res/layout/quickcontact_header.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 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.
+-->
+
+<!-- Needs a non null background in for elevation to work on this View. This will *not* cause an
+ additional draw since the background is transparent. -->
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#00000000"
+ android:id="@+id/toolbar_parent">
+
+ <com.android.contacts.widget.QuickContactImageView
+ android:id="@+id/photo"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:scaleType="centerCrop"
+ android:contentDescription="@string/description_contact_photo" />
+
+ <!-- Need to set a non null background on Toolbar in order for MenuItem ripples to be drawn on
+ this view, instead of another. This will *not* cause an additional draw since the
+ background is transparent.-->
+ <Toolbar
+ android:layout_width="match_parent"
+ android:layout_height="?android:attr/actionBarSize"
+ android:background="#00000000"
+ android:id="@+id/toolbar"/>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/actionbar_text_color"
+ android:maxLines="@integer/quickcontact_title_lines"
+ android:ellipsize="end"
+ android:layout_gravity="bottom"
+ android:textSize="@dimen/quickcontact_maximum_title_size"
+ android:layout_marginStart="@dimen/quickcontact_title_initial_margin"
+ android:layout_marginEnd="@dimen/quickcontact_title_initial_margin"
+ android:layout_marginBottom="@dimen/quickcontact_title_initial_margin"
+ android:id="@+id/large_title"/>
+
+</FrameLayout>
diff --git a/res/layout/quickcontact_list_fragment.xml b/res/layout/quickcontact_list_fragment.xml
deleted file mode 100755
index 712f116..0000000
--- a/res/layout/quickcontact_list_fragment.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <ListView
- android:id="@+id/list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:divider="@drawable/quickcontact_list_item_divider"
- android:dividerHeight="1dip"
- android:background="@color/quickcontact_list_background"
- android:cacheColorHint="@null"
- android:layout_alignParentTop="true"
- />
- <View
- android:layout_alignBottom="@+id/list"
- style="@style/QuickContactListBottomStyle"/>
-</RelativeLayout>
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
deleted file mode 100755
index 615895f..0000000
--- a/res/layout/quickcontact_list_item.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/actions_view_container"
- android:nextFocusRight="@+id/secondary_action_button"
- style="@style/QuickContactListItemStyle">
- <LinearLayout style="@style/QuickContactListItemTextWrapperStyle">
- <TextView
- android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/primary_text_color"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:singleLine="true"
- android:ellipsize="end" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/presence_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="1dip"
- android:layout_marginRight="4dip"
- android:layout_marginEnd="4dip"
- android:layout_gravity="center_vertical"
- android:gravity="center"
- android:scaleType="centerInside" />
- <TextView
- android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/secondary_text_color"
- android:textAllCaps="true"
- android:textAppearance="?android:attr/textAppearanceSmall" />
- </LinearLayout>
- </LinearLayout>
- <include layout="@layout/quickcontact_list_item_base"/>
-</LinearLayout>
diff --git a/res/layout/quickcontact_list_item_address.xml b/res/layout/quickcontact_list_item_address.xml
deleted file mode 100755
index c55c339..0000000
--- a/res/layout/quickcontact_list_item_address.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/actions_view_container"
- android:nextFocusRight="@+id/secondary_action_button"
- style="@style/QuickContactListItemStyle">
- <LinearLayout style="@style/QuickContactListItemTextWrapperStyle"
- android:layout_marginTop="12dip"
- android:layout_marginBottom="12dip">
- <TextView
- android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/primary_text_color"
- android:textAppearance="?android:attr/textAppearanceMedium" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/presence_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="1dip"
- android:layout_marginRight="4dip"
- android:layout_marginEnd="4dip"
- android:layout_gravity="center_vertical"
- android:gravity="center"
- android:scaleType="centerInside" />
- <TextView
- android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/secondary_text_color"
- android:textAllCaps="true"
- android:textAppearance="?android:attr/textAppearanceSmall" />
- </LinearLayout>
- </LinearLayout>
- <include layout="@layout/quickcontact_list_item_base"/>
-</LinearLayout>
diff --git a/res/layout/quickcontact_list_item_base.xml b/res/layout/quickcontact_list_item_base.xml
deleted file mode 100644
index 80a3422..0000000
--- a/res/layout/quickcontact_list_item_base.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
- <View
- android:id="@+id/vertical_divider"
- android:layout_width="1dip"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical"
- android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
- android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
- android:background="?android:attr/dividerVertical" />
- <ImageView
- android:id="@+id/secondary_action_button"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="8dip"
- android:paddingRight="14dip"
- android:paddingStart="8dip"
- android:paddingEnd="14dip"
- android:background="?android:attr/selectableItemBackground"
- android:duplicateParentState="false"
- android:nextFocusLeft="@id/actions_view_container"/>
- <View
- android:layout_width="1dip"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical"
- android:background="?android:attr/dividerVertical" />
-</merge>
diff --git a/res/layout/quickcontact_photo_container.xml b/res/layout/quickcontact_photo_container.xml
deleted file mode 100644
index 723665f..0000000
--- a/res/layout/quickcontact_photo_container.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<merge
- xmlns:android="http://schemas.android.com/apk/res/android">
- <RelativeLayout
- android:id="@+id/photo_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center_vertical">
- <ImageView
- android:id="@+id/photo"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop"
- android:clickable="true"
- android:contentDescription="@string/description_contact_photo" />
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_alignParentTop="true"
- android:background="#4CFFFFFF" />
- <View
- android:id="@+id/photo_text_bar"
- android:layout_width="0dip"
- android:layout_height="42dip"
- android:layout_alignBottom="@id/photo"
- android:layout_alignLeft="@id/photo"
- android:layout_alignRight="@id/photo"
- android:layout_alignStart="@id/photo"
- android:layout_alignEnd="@id/photo"
- android:background="@color/quickcontact_name_detail_background" />
- <ImageView
- android:id="@+id/contact_details_image"
- android:src="@drawable/ic_contacts_holo_dark"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginRight="16dip"
- android:layout_marginEnd="16dip"
- android:layout_marginBottom="5dip"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_alignRight="@id/photo_text_bar"
- android:layout_alignEnd="@id/photo_text_bar"
- android:clickable="true"
- android:contentDescription="@string/viewContactDesription" />
- <ImageView
- android:id="@+id/quickcontact_star_button"
- android:src="@drawable/ic_favorite_off_lt"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginBottom="5dip"
- android:layout_marginRight="16dip"
- android:layout_marginEnd="16dip"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_toLeftOf="@id/contact_details_image"
- android:layout_toStartOf="@id/contact_details_image"
- android:clickable="true"
- android:contentDescription="@string/menu_addStar" />
- <TextView
- android:id="@+id/name"
- android:layout_width="match_parent"
- android:layout_height="42dip"
- android:layout_alignBottom="@id/photo"
- android:layout_alignLeft="@id/photo"
- android:layout_alignStart="@id/photo"
- android:layout_toLeftOf="@id/quickcontact_star_button"
- android:layout_toStartOf="@id/quickcontact_star_button"
- android:gravity="center_vertical"
- android:paddingLeft="8dip"
- android:paddingStart="8dip"
- android:singleLine="true"
- android:ellipsize="end"
- android:textColor="@android:color/white"
- android:textAppearance="?android:attr/textAppearanceMedium" />
- </RelativeLayout>
-</merge>
diff --git a/res/layout/quickcontact_title_placeholder.xml b/res/layout/quickcontact_title_placeholder.xml
new file mode 100644
index 0000000..31d83ff
--- /dev/null
+++ b/res/layout/quickcontact_title_placeholder.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 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.
+ -->
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent" >
+
+ <!-- Marks the location and size of the Activity title -->
+ <TextView
+ android:id="@+id/placeholder_textview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@android:style/TextAppearance.Material.Widget.ActionBar.Title" />
+
+</FrameLayout>
+
+
diff --git a/res/layout/quickcontact_track.xml b/res/layout/quickcontact_track.xml
deleted file mode 100644
index 83a771c..0000000
--- a/res/layout/quickcontact_track.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-<merge
- xmlns:android="http://schemas.android.com/apk/res/android">
- <HorizontalScrollView
- android:id="@+id/track_scroller"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:fadingEdgeLength="0dip"
- android:background="@color/quickcontact_track_background"
- android:scrollbars="none">
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <LinearLayout
- android:id="@+id/track"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" />
- <View
- android:id="@+id/selected_tab_rectangle"
- android:layout_width="60dip"
- android:layout_height="6dip"
- android:layout_alignBottom="@id/track"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:background="@color/quickcontact_tab_indicator" />
- </RelativeLayout>
- </HorizontalScrollView>
-</merge>
diff --git a/res/layout/quickcontact_track_button.xml b/res/layout/quickcontact_track_button.xml
deleted file mode 100644
index f9dcd1d..0000000
--- a/res/layout/quickcontact_track_button.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 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.
--->
-
-<com.android.contacts.quickcontact.CheckableImageView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="60dip"
- android:layout_height="60dip"
- android:paddingLeft="12dip"
- android:paddingRight="12dip"
- android:paddingStart="12dip"
- android:paddingEnd="12dip"
- android:paddingTop="8dip"
- android:paddingBottom="8dip"
- android:scaleType="centerInside"
- android:focusable="true"
- android:clickable="true"
- android:background="?android:attr/selectableItemBackground" />
diff --git a/res/layout/social_widget.xml b/res/layout/social_widget.xml
deleted file mode 100644
index 1267bd9..0000000
--- a/res/layout/social_widget.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#00000000">
- <LinearLayout
- android:id="@+id/widget_container"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <FrameLayout
- android:layout_width="70dp"
- android:layout_height="70dp"
- android:layout_gravity="center_vertical">
- <ImageView
- android:id="@+id/image"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <ImageButton
- android:id="@+id/border"
- android:background="@drawable/frame_thumbnail_contact_widget_holo"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </FrameLayout>
- <RelativeLayout
- android:id="@+id/name_and_snippet_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingLeft="43dp"
- android:paddingRight="4dp"
- android:paddingStart="43dp"
- android:paddingEnd="4dp"
- android:paddingTop="4dp"
- android:paddingBottom="4dp"
- android:background="@drawable/bg_status_contact_widget">
- <TextView
- android:id="@+id/name_and_snippet"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true"
- android:maxLines="3"
- android:lineSpacingExtra="2sp"
- android:textColor="#FFFFFFFF"
- android:textSize="@dimen/widget_text_size_snippet" />
- <TextView
- android:id="@+id/name"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:textColor="#FFFFFFFF"
- android:textSize="@dimen/widget_text_size_name" />
- </RelativeLayout>
- </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/stream_item_container.xml b/res/layout/stream_item_container.xml
deleted file mode 100644
index 33840b6..0000000
--- a/res/layout/stream_item_container.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingLeft="@dimen/detail_update_section_side_padding"
- android:paddingRight="@dimen/detail_update_section_side_padding"
- android:paddingStart="@dimen/detail_update_section_side_padding"
- android:paddingEnd="@dimen/detail_update_section_side_padding">
-
- <!-- Clickable area -->
- <LinearLayout
- android:id="@+id/stream_item_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="@dimen/detail_update_section_item_horizontal_padding"
- android:paddingRight="@dimen/detail_update_section_item_horizontal_padding"
- android:paddingStart="@dimen/detail_update_section_item_horizontal_padding"
- android:paddingEnd="@dimen/detail_update_section_item_horizontal_padding"
- android:paddingTop="@dimen/detail_update_section_item_vertical_padding"
- android:paddingBottom="@dimen/detail_update_section_item_vertical_padding"
- android:background="?android:attr/selectableItemBackground"
- android:orientation="vertical"
- >
-
- <!-- Images -->
- <LinearLayout
- android:id="@+id/stream_item_image_rows"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="@dimen/detail_update_section_between_items_vertical_padding"
- android:layout_gravity="center_vertical"
- android:orientation="vertical"
- >
- </LinearLayout>
-
- <!-- Text -->
- <TextView android:id="@+id/stream_item_html"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textSize="16sp"
- android:textColor="?android:attr/textColorPrimary"
- android:textAlignment="viewStart" />
- <!--
- Attribution (e.g. timestamp) and comments (e.g. +1, like) should align horizontally.
- Can't merge this with the parent list view.
- -->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/stream_item_attribution"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:ellipsize="end"
- android:maxLines="1" />
- <TextView android:id="@+id/stream_item_comments"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/detail_update_section_attribution_comments_padding"
- android:layout_marginStart="@dimen/detail_update_section_attribution_comments_padding"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:maxLines="1"/>
- </LinearLayout>
- </LinearLayout>
-
- <View
- android:id="@+id/horizontal_divider"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="?android:attr/dividerHorizontal"
- android:layout_gravity="bottom" />
-
-</LinearLayout>
diff --git a/res/layout/stream_item_photo.xml b/res/layout/stream_item_photo.xml
deleted file mode 100644
index 9e27d2a..0000000
--- a/res/layout/stream_item_photo.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android">
- <com.android.contacts.common.widget.LayoutSuppressingImageView
- android:id="@+id/image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- <View
- android:id="@+id/push_layer"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?android:attr/selectableItemBackground"/>
-</FrameLayout>
diff --git a/res/layout/stream_item_row_images.xml b/res/layout/stream_item_row_images.xml
deleted file mode 100644
index a3f1325..0000000
--- a/res/layout/stream_item_row_images.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/detail_update_section_between_items_padding">
-
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/detail_update_section_between_items_padding"
- android:layout_marginEnd="@dimen/detail_update_section_between_items_padding"
- android:layout_weight="1"
- ex:ratio="1"
- ex:direction="widthToHeight">
- <include
- android:id="@+id/stream_item_first_image"
- layout="@layout/stream_item_photo"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </view>
-
- <view
- android:id="@+id/second_image_container"
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/detail_update_section_between_items_padding"
- android:layout_marginStart="@dimen/detail_update_section_between_items_padding"
- android:layout_weight="1"
- ex:ratio="1"
- ex:direction="widthToHeight">
- <include
- android:id="@+id/stream_item_second_image"
- layout="@layout/stream_item_photo"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </view>
-
-</LinearLayout>
diff --git a/res/layout/updates_header_contact.xml b/res/layout/updates_header_contact.xml
deleted file mode 100644
index 66cdac4..0000000
--- a/res/layout/updates_header_contact.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<!--
- This is a header entry in the contact updates list.
--->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <!-- This blank view pushes the other content down because of the tab carousel -->
- <view
- class="com.android.contacts.common.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/detail_contact_photo_shadow_height"
- ex:ratio="0.5"
- ex:direction="widthToHeight">
-
- <!-- Put a dummy view here because the ProportionalLayout requires one -->
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- </view>
-
- <!-- "Recent" header text -->
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="32dip"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- android:paddingStart="16dip"
- android:paddingEnd="16dip"
- android:focusable="false">
-
- <TextView
- style="?android:attr/listSeparatorTextViewStyle"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingStart="8dip"
- android:paddingEnd="8dip"
- android:background="@drawable/list_section_divider_holo_custom"
- android:text="@string/recent"
- android:textColor="@color/people_app_theme_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end" />
-
- </FrameLayout>
-
-</LinearLayout>
diff --git a/res/layout/user_profile_button.xml b/res/layout/user_profile_button.xml
deleted file mode 100644
index 6a7c3b4..0000000
--- a/res/layout/user_profile_button.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<Button
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/contact_browser_list_item_photo_size"
- android:layout_marginLeft="?attr/list_item_padding_left"
- android:layout_marginRight="?attr/list_item_padding_right"
- android:layout_marginStart="?attr/list_item_padding_left"
- android:layout_marginEnd="?attr/list_item_padding_right"
- android:paddingLeft="?attr/list_item_header_text_indent"
- android:paddingStart="?attr/list_item_header_text_indent"
- android:background="?android:attr/selectableItemBackground"
- android:singleLine="true"
- android:text="@string/profile_display_name"
- android:ellipsize="end"
- android:gravity="start|center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium" />
diff --git a/res/layout/user_profile_header.xml b/res/layout/user_profile_header.xml
index 1d08298..5a07313 100644
--- a/res/layout/user_profile_header.xml
+++ b/res/layout/user_profile_header.xml
@@ -25,31 +25,32 @@
android:paddingStart="?attr/list_item_padding_left"
android:paddingEnd="?attr/list_item_padding_right"
android:paddingTop="4dp"
- android:paddingBottom="8dp"
- android:background="@drawable/list_section_divider_holo_custom"
- android:gravity="center_vertical"
- >
+ android:paddingBottom="8dp" >
- <TextView
- android:id="@+id/profile_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ <TextView android:id="@+id/profile_title"
+ android:layout_width="@dimen/contact_list_section_header_width"
+ android:layout_height="?android:attr/listPreferredItemHeight"
android:singleLine="true"
android:text="@string/user_profile_contacts_list_header"
android:ellipsize="end"
- android:layout_weight="1"
- android:textAppearance="@style/DirectoryHeaderStyle"
- android:paddingLeft="?attr/list_item_text_indent"
- android:paddingStart="?attr/list_item_text_indent" />
+ android:textAppearance="@style/SectionHeaderStyle"
+ android:gravity="start|center_vertical" />
- <TextView
- android:id="@+id/contacts_count"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ <Button android:id="@+id/user_profile_button"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="?android:attr/listPreferredItemHeight"
+ android:layout_marginLeft="?attr/list_item_padding_left"
+ android:layout_marginRight="?attr/list_item_padding_right"
+ android:layout_marginStart="?attr/list_item_padding_left"
+ android:layout_marginEnd="?attr/list_item_padding_right"
+ android:paddingLeft="?attr/list_item_gap_between_image_and_text"
+ android:paddingStart="?attr/list_item_gap_between_image_and_text"
+ android:background="?android:attr/selectableItemBackground"
android:singleLine="true"
+ android:text="@string/profile_display_name"
android:ellipsize="end"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textSize="12sp"
- android:textColor="@color/people_app_theme_color" />
+ android:gravity="start|center_vertical"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
diff --git a/res/menu-sw600dp/people_options.xml b/res/menu-sw600dp/people_options.xml
index 891c1b4..931b456 100644
--- a/res/menu-sw600dp/people_options.xml
+++ b/res/menu-sw600dp/people_options.xml
@@ -16,22 +16,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_search"
- android:icon="@drawable/ic_search_dk"
+ android:icon="@drawable/ic_ab_search"
android:title="@string/menu_search"
android:showAsAction="ifRoom" />
- <item
- android:id="@+id/menu_add_contact"
- android:icon="@drawable/ic_add_person_dk"
- android:title="@string/menu_new_contact_action_bar"
- android:showAsAction="ifRoom" />
-
- <item
- android:id="@+id/menu_add_group"
- android:icon="@drawable/ic_add_person_dk"
- android:title="@string/menu_new_group_action_bar"
- android:showAsAction="ifRoom" />
-
<!-- Added orderInCategory to keep the following buttons at the end of the menu
Buttons will be added in the order added/inflated. Ordered buttons will be added
at the end according to the orderInCategory. This setup insures that the buttons below
diff --git a/res/menu/edit_contact.xml b/res/menu/edit_contact.xml
index 51d9ab0..fe6d2b9 100644
--- a/res/menu/edit_contact.xml
+++ b/res/menu/edit_contact.xml
@@ -34,6 +34,19 @@
android:title="@string/menu_discard" />
<item
+ android:id="@+id/menu_delete"
+ android:title="@string/menu_deleteContact" />
+
+ <item
+ android:id="@+id/menu_set_ringtone"
+ android:title="@string/menu_set_ring_tone" />
+
+ <item
+ android:id="@+id/menu_send_to_voicemail"
+ android:checkable="true"
+ android:title="@string/menu_redirect_calls_to_vm" />
+
+ <item
android:id="@+id/menu_help"
android:title="@string/menu_help" />
</menu>
diff --git a/res/menu/people_options.xml b/res/menu/people_options.xml
index 2c7eedb..4aae1a1 100644
--- a/res/menu/people_options.xml
+++ b/res/menu/people_options.xml
@@ -16,20 +16,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_search"
- android:icon="@drawable/ic_search_dk"
- android:title="@string/menu_search"
- android:showAsAction="ifRoom" />
-
- <item
- android:id="@+id/menu_add_contact"
- android:icon="@drawable/ic_add_person_dk"
- android:title="@string/menu_new_contact_action_bar"
- android:showAsAction="ifRoom" />
-
- <item
- android:id="@+id/menu_add_group"
- android:icon="@drawable/ic_add_group_dk"
- android:title="@string/menu_new_group_action_bar"
+ android:icon="@drawable/ic_ab_search"
android:showAsAction="ifRoom" />
<item
diff --git a/res/menu/quickcontact.xml b/res/menu/quickcontact.xml
new file mode 100644
index 0000000..34a6a10
--- /dev/null
+++ b/res/menu/quickcontact.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/menu_star"
+ android:showAsAction="always" />
+
+ <item
+ android:id="@+id/menu_edit"
+ android:icon="@drawable/ic_create_24dp"
+ android:showAsAction="always" />
+
+ <item
+ android:id="@+id/menu_share"
+ android:title="@string/menu_share"
+ android:alphabeticShortcut="s" />
+
+ <item
+ android:id="@+id/menu_create_contact_shortcut"
+ android:title="@string/menu_create_contact_shortcut" />
+</menu>
diff --git a/res/mipmap-hdpi/ic_launcher_shortcut_directmessage.png b/res/mipmap-hdpi/ic_launcher_shortcut_directmessage.png
index c8eb467..3256f8d 100644
--- a/res/mipmap-hdpi/ic_launcher_shortcut_directmessage.png
+++ b/res/mipmap-hdpi/ic_launcher_shortcut_directmessage.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_shortcut_directmessage.png b/res/mipmap-mdpi/ic_launcher_shortcut_directmessage.png
index 698971b..88ba718 100644
--- a/res/mipmap-mdpi/ic_launcher_shortcut_directmessage.png
+++ b/res/mipmap-mdpi/ic_launcher_shortcut_directmessage.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_shortcut_directmessage.png b/res/mipmap-xhdpi/ic_launcher_shortcut_directmessage.png
index 3222dc8..4664ea6 100644
--- a/res/mipmap-xhdpi/ic_launcher_shortcut_directmessage.png
+++ b/res/mipmap-xhdpi/ic_launcher_shortcut_directmessage.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_shortcut_directmessage.png b/res/mipmap-xxhdpi/ic_launcher_shortcut_directmessage.png
index 524d2b9..579a100 100644
--- a/res/mipmap-xxhdpi/ic_launcher_shortcut_directmessage.png
+++ b/res/mipmap-xxhdpi/ic_launcher_shortcut_directmessage.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 88a9b89..8a7b114 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Mense"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakte"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakte"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontak"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direk skakel"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Gereeld"</string>
<string name="strequentList" msgid="5640192862059373511">"Gunstelinge"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kontakbesonderhede"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Bekyk kontak"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Redigeer kontak"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Skep kontak"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Redigeer groep"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Hierdie kontak bevat inligting uit meerdere rekeninge. Inligting uit leesalleen-rekeninge sal in jou kontaklyste versteek word, nie verwyder word nie."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"As jy hierdie kontak uitvee, sal dit inligting uit meerdere rekeninge uitvee."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Hierdie kontak sal uitgevee word."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Gooi weg"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Verwerp wysigings"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Die kontak bestaan nie."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontak-legstuk by tuisskerm gevoeg."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Skep nuwe kontak"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontakte met foonnommers"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Geen kontakte met foonnommers nie"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontak"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakte"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 gevind"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> gevind"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 gevind"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> gevind"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontakte"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Groepe"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alle kontakte"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Gunstelinge"</string>
<string name="callBack" msgid="5498224409038809224">"Bel terug"</string>
<string name="callAgain" msgid="3197312117049874778">"Bel weer"</string>
<string name="returnCall" msgid="8171961914203617813">"Bel terug"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakte"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Name van jou kontakte"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Geen program is gevind om hierdie aksie te hanteer nie."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Geen program is gevind om hierdie handeling te behartig nie."</string>
<string name="menu_share" msgid="943789700636542260">"Deel"</string>
<string name="share_via" msgid="563121028023030093">"Deel kontak met"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Skep groep onder rekening"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Van eerste"</string>
<string name="take_photo" msgid="7496128293167402354">"Neem foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Neem nuwe foto"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Kies foto ui die galery"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Kies nuwe foto uit galery"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Kies foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Kies nuwe foto"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaklys word tans opgedateer om die taalverandering te weerspieël."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kontaklys word opgedateer."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontakte word tans opgradeer. \n\nDie opgraderingsproses benodig interne geheue van omtrent <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MG. \n\nKies een van die volgende opsies:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Voeg organisasie by"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Groepnaam"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"gunsteling"</string>
<string name="edit_contact" msgid="7529281274005689512">"Redigeer kontak"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopieer na My kontakte"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Voeg by My kontakte"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Gids <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Skep tans \'n persoonlike kopie..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Gepasmaak"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Instellings"</string>
<string name="menu_settings" msgid="377929915873428211">"Instellings"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"My plaaslike profiel"</string>
<string name="external_profile_title" msgid="8034998767621359438">"My <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>profiel"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Vertoon alle kontakte"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People werk beter met \'n Google-rekening.\n\n•Verkry toegang vanaf enige webblaaier.\n•Rugsteun jou kontakte veilig."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakte werk beter met \'n Google-rekening.\n\n• Verkry toegang vanaf enige webblaaier.\n• Rugsteun jou kontakte veilig."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Hou jou kontakte veilig, selfs al verloor jy jou selfoon: sinkroniseer met \'n aanlyn diens."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Voeg \'n rekening by"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Jou nuwe kontak sal nie gerugsteun word nie. Voeg \'n rekening by wat kontakte aanlyn rugsteun?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Voeg nuwe rekening by"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Voer databasislêers uit"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Foto. Kies om te verander"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"voeg nuwe kontak by"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Sien meer"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Sien minder"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Sien alles"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontak"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Onlangs"</string>
+ <string name="send_message" msgid="8938418965550543196">"Stuur boodskap"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Skep tans \'n persoonlike kopie …"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Gister"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Môre"</string>
+ <string name="today" msgid="8041090779381781781">"Vandag"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Vandag om <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Môre om <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Titellose geleentheid)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Stel"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 3b450e9..bc38435 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"ሰዎች"</string>
+ <string name="people" msgid="1190841469952343354">"ዕውቂያዎች"</string>
<string name="contactsList" msgid="8661624236494819731">"እውቅያዎች"</string>
<string name="shortcutContact" msgid="749243779392912958">"እውቅያ"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"ቀጥታ ደውል"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"ተደጋጋሚ"</string>
<string name="strequentList" msgid="5640192862059373511">"ተወዳጆች"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"የእውቅያ ዝርዝሮች"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"ዕውቂያ ዕይ"</string>
<string name="editContactDescription" msgid="2947202828256214947">"ዕውቅያ አርትዕ"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"ዕውቅያ ፍጠር"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"ቡድን አርትዕ"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ይህ ዕውቂያ ከብዙ መለያዎች መረጃ ይዟል።ከንባብ-ብቻ መለያዎች ውስጥ ያሉ ዕውቂያዎች ይደበቃሉ፣አይሰረዙም።"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ይህን ዕውቂያ መሰረዝ ከብዙ መለያዎች ውስጥ መረጃ ይሰርዛል።"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"ይህ ማንቂያ ይሰረዛል።"</string>
- <string name="menu_discard" msgid="6456087569315685632">"አስወግድ"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"ለውጦችን አስወግድ"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"ዕውቅያው የለም።"</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"የእውቂያ መግብር መነሻ ማያ ገጽ ላይ ታክሏል።"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"አዲስ ዕውቂያ ፍጠር"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> ዕውቂያዎች ከስልክ ቁጥሮች ጋር"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ከስልክ ቁጥር ጋር የሚታዩ ዕውቂያዎች የሉም"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 እውቅያ"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> እውቅያዎች"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 ተገኝቷል"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> ተገኝቷል"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 ተገኝቷል"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> ተገኝቷል"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"ሁሉም እውቂያዎች"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"ቡድኖች"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"ሁሉም ዕውቂያዎች"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"ተወዳጆች"</string>
<string name="callBack" msgid="5498224409038809224">"የኋላ ጥሪ"</string>
<string name="callAgain" msgid="3197312117049874778">"እንደገና ደውል"</string>
<string name="returnCall" msgid="8171961914203617813">"ጥሪ መልስ"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ከ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> እውቂያዎች"</string>
<string name="search_settings_description" msgid="2675223022992445813">"የዕውቂያዎችዎ ስሞች"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"ይህን እርምጃ ለማስተናገድ ምንም መተግበሪያ አልተገኘም፡፡"</string>
+ <string name="missing_app" msgid="1466111003546611387">"ይህን እርምጃ የሚያከናውን ምንም መተግበሪያ አልተገኘም።"</string>
<string name="menu_share" msgid="943789700636542260">"መጋሪያ"</string>
<string name="share_via" msgid="563121028023030093">"ዕውቂያበ በኩል አጋራ"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"በመለያ ስር ቡድን ፍጠር"</string>
@@ -143,11 +139,11 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"የቤተሰብ መነሻስም"</string>
<string name="take_photo" msgid="7496128293167402354">"ፎቶ አንሳ"</string>
<string name="take_new_photo" msgid="7341354729436576304">"አዲስ ፎቶ አንሳ"</string>
- <string name="pick_photo" msgid="3746334626214970837">"ፎቶ ከማዕከለ ስዕላት ምረጥ"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"ከማዕከለ ስእላት አዲስ ፎቶ ምረጥ"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"ፎቶ ምረጥ"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"አዲስ ፎቶ ይምረጡ"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"የቋንቋ ለውጥ ለማንፀባረቅ የዕውቂያ ዝርዝር ዘምኗል።"</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"የዕውቂያ ዝርዝር ዘምኗል"</string>
- <string name="upgrade_out_of_memory" msgid="1209994418877625940">"ዕውቂያዎች በአልቅ ሂደት ውስጥ ናቸው።\n\nየአልቁ ሂደት ወደ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g>ሜባ አካባቢ የውስጥ ማከማቻ \n\nይጠይቃል።ከሚከተሉት አማራጮች አንዱን ምረጥ፡"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"ዕውቂያዎች በአልቅ ሂደት ውስጥ ናቸው።\n\nየአልቁ ሂደት ወደ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g>ሜባ አካባቢ የውስጥ ማከማቻ \n\nይጠይቃል።ከሚከተሉት አማራጮች አንዱን ይምረጡ፡"</string>
<string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"አንዳንድ ትግበራዎችን አለመጫን"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"አልቅ ድጋሚ ሞክር"</string>
<string name="search_results_searching" msgid="3984833028938569930">"በመፈለግ ላይ…"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"ድርጅት አክል"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"ቀን"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"የቡድን ስም"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"በ<xliff:g id="SOURCE">%1$s</xliff:g> በኩል"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>በ<xliff:g id="SOURCE">%2$s</xliff:g> በኩል"</string>
<string name="description_star" msgid="2605854427360036550">"ተወዳጅ"</string>
<string name="edit_contact" msgid="7529281274005689512">"እውቅያ አርትዕ"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"ወደ ዕውቂያዎቼ ቅዳ"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"ወደ እኔ ዕውቂያዎች አክል"</string>
<string name="contact_directory_description" msgid="683398073603909119">"ማውጫ <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"የግል ቅጂ በመፍጠር ላይ..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"ብጁ"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"ቅንብሮች"</string>
<string name="menu_settings" msgid="377929915873428211">"ቅንብሮች"</string>
@@ -209,7 +202,7 @@
<string name="toast_join_with_empty_contact" msgid="2238581529864542985">"ሌላ ዕውቂያ ከመቀላቀልህ በፊት የዕውቂያ ስም ተይብ።"</string>
<string name="copy_text" msgid="3257145021583508761">"ወደ ቅንጥብ ሰሌዳ ገልብጥ"</string>
<string name="set_default" msgid="4417505153468300351">"ነባሪ አዘጋጅ"</string>
- <string name="clear_default" msgid="7193185801596678067">"ነባሪ አጥራ"</string>
+ <string name="clear_default" msgid="7193185801596678067">"ነባሪ አጽዳ"</string>
<string name="toast_text_copied" msgid="5143776250008541719">"ፅሁፍ ገልብጧል"</string>
<string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">" ለውጦችህ ይወገዱ?"</string>
<string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
@@ -219,15 +212,31 @@
<string name="local_profile_title" msgid="2021416826991393684">"በአካባቢው ምንም መገለጫ የለም"</string>
<string name="external_profile_title" msgid="8034998767621359438">"የእኔ የ<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> መገለጫ"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"ሁሉንም ዕውቂያዎች በማሳየት ላይ"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"ሰዎች በGoogle መለያ የተሻለ ይሰራሉ።\n\n• ከማንኛውም የድረ ማሰሻ ላይ ይድረሱበት።\n• ዝግጅቶችዎን በደንብ ያስጠብቁ"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"ዕውቂያዎች በGoogle መለያ የተሻለ ይሰራሉ።\n\n• ከማንኛውም የድረ አሳሽ ላይ ይድረሱበት።\n• እውቂያዎችዎን ደህንነቱ በተጠበቀ ሁኔታ ምትክ ያስቀምጡ።"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"ስልክህ ቢጠፋብህ እንኳን ዕውቂያዎችህን ደህንነታቸው እንደተጠበቀ እንዲቆዩ አድርግ ከመስመር ላይ አገልገሎት ጋር አመሳስለው::"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"መለያ አክል"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"አዲሱ ዕውቅያ ምትክ አይቀመጥለትም:: በመስመር ላይ ዕውቅያዎች በምትክ የሚያስቀምጥ መለያ አክል?"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"አዲሱ ዕውቅያህ ከ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> ጋር ይመሳሰላል፡፡"</string>
- <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"አዲስ ዕውቅያህን ከሚከተሉት መለያዎች ከአንዱ ጋር ማመሳሰል ትችላለህ፡፡ የትኛውን መጠቀም ትፈልጋለህ?"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"አዲስ ዕውቅያዎን ከሚከተሉት መለያዎች ከአንዱ ጋር ማመሳሰል ይችላሉ። የትኛውን መጠቀም ይፈልጋሉ?"</string>
<string name="keep_local" msgid="1258761699192993322">"በአካባቢው አቆይ"</string>
<string name="add_account" msgid="8201790677994503186">"መለያ አክል"</string>
<string name="add_new_account" msgid="5748627740680940264">"አዲስ መለያ አክል"</string>
<string name="menu_export_database" msgid="2659719297530170820">"የውሂብ ጎታ ፋይሎችን ወደ ውጭ ላክ"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"ስዕል። ለመቀየር ይምረጡ"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"አዲስ እውቂያ ያክሉ"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"ተጨማሪ ይመልከቱ"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"ያነሰ ይመልከቱ"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"ሁሉንም ይመልከቱ"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"እውቂያ"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"የቅርብ ጊዜ"</string>
+ <string name="send_message" msgid="8938418965550543196">"መልዕክት ላክ"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"የግል ቅጂ በመፍጠር ላይ..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"ትላንት"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"ነገ"</string>
+ <string name="today" msgid="8041090779381781781">"ዛሬ"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"ዛሬ <xliff:g id="TIME_INTERVAL">%s</xliff:g> ላይ"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"ነገ <xliff:g id="TIME_INTERVAL">%s</xliff:g> ላይ"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>፣ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(ርዕስ-አልባ ክስተት)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"አዘጋጅ"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e081867..2c46413 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"أشخاص"</string>
+ <string name="people" msgid="1190841469952343354">"جهات الاتصال"</string>
<string name="contactsList" msgid="8661624236494819731">"جهات الاتصال"</string>
<string name="shortcutContact" msgid="749243779392912958">"الاتصال بـ"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"طلب مباشر"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"متكررة"</string>
<string name="strequentList" msgid="5640192862059373511">"المفضلة"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"تفاصيل جهة الاتصال"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"عرض جهة الاتصال"</string>
<string name="editContactDescription" msgid="2947202828256214947">"تعديل جهة الاتصال"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"إنشاء جهة اتصال"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"تعديل المجموعة"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"تحتوي جهة الاتصال هذه على معلومات من عدة حسابات. وسيتم إخفاء المعلومات من الحسابات التي للقراءة فقط في قوائم جهات الاتصال، وليس حذفها."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"سيؤدي حذف جهة الاتصال هذه إلى حذف المعلومات من عدة حسابات."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"سيتم حذف جهة الاتصال هذه."</string>
- <string name="menu_discard" msgid="6456087569315685632">"تجاهل"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"إلغاء التغييرات"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"جهة الاتصال غير موجودة."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"تمت إضافة أداة جهات الاتصال إلى الشاشة الرئيسية."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"إنشاء جهة اتصال جديدة"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> من جهات الاتصال التي تشتمل على أرقام هواتف"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ليس هناك جهات اتصال تشتمل على أرقام هواتف"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"جهة اتصال واحدة"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> من جهات الاتصال"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"تم العثور على جهة اتصال واحدة"</item>
<item quantity="other" msgid="3852668542926965042">"تم العثور على <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"تم العثور على جهة اتصال واحدة"</item>
<item quantity="other" msgid="7988132539476575389">"تم العثور على <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"جميع جهات الاتصال"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"المجموعات"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"كل جهات الاتصال"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"المفضلة"</string>
<string name="callBack" msgid="5498224409038809224">"معاودة الاتصال"</string>
<string name="callAgain" msgid="3197312117049874778">"الاتصال مرة أخرى"</string>
<string name="returnCall" msgid="8171961914203617813">"معاودة اتصال بمكالمة فائتة"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> من <xliff:g id="TOTAL_NUMBER">%s</xliff:g> من جهات الاتصال"</string>
<string name="search_settings_description" msgid="2675223022992445813">"أسماء جهات الاتصال"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"لم يتم العثور على تطبيق يمكنه مباشرة هذا الإجراء."</string>
+ <string name="missing_app" msgid="1466111003546611387">"لم يتم العثور على تطبيق يمكنه مباشرة هذا الإجراء."</string>
<string name="menu_share" msgid="943789700636542260">"مشاركة"</string>
<string name="share_via" msgid="563121028023030093">"مشاركة جهة الاتصال عبر"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"إنشاء مجموعة ضمن حساب"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"اسم العائلة أولاً"</string>
<string name="take_photo" msgid="7496128293167402354">"التقاط صورة"</string>
<string name="take_new_photo" msgid="7341354729436576304">"التقاط صورة جديدة"</string>
- <string name="pick_photo" msgid="3746334626214970837">"اختيار صورة من المعرض"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"تحديد صورة جديدة من المعرض"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"اختيار صورة"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"تحديد صورة جديدة"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"يجري تحديث قائمة جهات الاتصال لتعكس التغير في اللغة."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"يجري تحديث قائمة جهات الاتصال."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"جهات الاتصال قيد الترقية.\n\nتتطلب عملية الترقية مساحة تبلغ حوالي <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> ميغابايت من سعة التخزين الداخلية.\n\nاختر أحد الخيارات التالية:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"إضافة مؤسسة"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"التاريخ"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"اسم المجموعة"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"عبر <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> عبر <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"مفضل"</string>
<string name="edit_contact" msgid="7529281274005689512">"تعديل جهة الاتصال"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"نسخ إلى جهات الاتصال الخاصة بي"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"إضافة إلى \"جهات الاتصال الخاصة بي\""</string>
<string name="contact_directory_description" msgid="683398073603909119">"الدليل <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"جارٍ إنشاء نسخة شخصية..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"مخصص"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"الإعدادات"</string>
<string name="menu_settings" msgid="377929915873428211">"الإعدادات"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"ملفي الشخصي المحلي"</string>
<string name="external_profile_title" msgid="8034998767621359438">"ملفي الشخصي في <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"عرض جميع جهات الاتصال"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"يعمل تطبيق \"الأشخاص\" بشكل أفضل مع حساب Google.\n\n• يمكنك الدخول من أي متصفح ويب.\n• يمكنك نسخ جهات اتصالك احتياطيًا بشكل آمن."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"تعمل جهات الاتصال بشكلٍ أفضل من خلال حساب Google.\n\n• يمكنك الدخول من أي متصفح ويب.\n• يمكنك الاحتفاظ بنسخة احتياطية من جهات اتصالك بشكلٍ آمن."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"يمكنك الاحتفاظ بجهات اتصالك في أمان حتى إذا فقدت هاتفك: من خلال المزامنة مع خدمة عبر الإنترنت."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"إضافة حساب"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"لن يتم الاحتفاظ بنسخة احتياطية من جهة الاتصال الجديدة. هل تريد إضافة حساب يحتفظ بنسخة احتياطية من جهات الاتصال على الإنترنت؟"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"إضافة حساب جديد"</string>
<string name="menu_export_database" msgid="2659719297530170820">"تصدير ملفات قاعدة البيانات"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"الصورة. حدد للتغيير"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"إضافة جهة اتصال جديدة"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"الاطلاع على المزيد"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"عرض أقل"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"عرض الكل"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"جهة الاتصال"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"الأخيرة"</string>
+ <string name="send_message" msgid="8938418965550543196">"إرسال رسالة"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"جارٍ إنشاء نسخة شخصية..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"أمس"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"غدًا"</string>
+ <string name="today" msgid="8041090779381781781">"اليوم"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"اليوم في <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"غدًا في <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>، <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(حدث بدون اسم)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"تعيين"</string>
</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..7092f8c
--- /dev/null
+++ b/res/values-az-rAZ/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"Camaat"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Kontaktlar"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Birbaşa nömrə yığımı"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Birbaşa mesaj"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Kontakt qısayolunu seçin"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Zəng üçün nömrə seçin"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Mesaj göndərmək üçün nömrə seçin"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Kontakt seçin"</string>
+ <string name="starredList" msgid="4817256136413959463">"Ulduzlu"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Tez-tez"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Seçilmişlər"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Kontakt detalları"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"Kontakta baxın"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Kontakta düzəliş edin"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Kontakt yaradın"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Qrupa düzəliş edin"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Qrup yaradın"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Haqqında"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Güncəlləşdirmələr"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Kontakt axtarın"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Kontakta baxın"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Favoritlərə əlavə edin"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Favoritlərdən yığışdırın"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Düzəliş edin"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Silin"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Əsas ekranda yer"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Kontakta zəng edin"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Mətn kontaktı"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Ayrılıqda"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Düzəliş edin"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Silin"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Kontakt əlavə edin"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Qrupu əlavə edin"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Kontakt bölünsün?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Bu kontakt çoxsaylı kontaktlara bölünəcək."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Qoşulun"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Kontaktları birləşdirin"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g> ilə birləşdirmək istədiyiniz kontaktı seçin:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Bütün kontaktları göstərin"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Təklif edilmiş kontaktlar"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Bütün kontaktlar"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktlar birləşdirildi"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Zəng səsi seçin"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Bütün zənglər səsli poçta"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Yalnız oxunmaq üçün olan hesablardan kontaktları silə bilməzsiniz, lakin onları kontakt siyahınızda gizlədə bilərsiniz."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Bu kontakt çoxsaylı hesablardan olan məlumatlardan ibarətdir. Yalnız oxunmaq üçün olan hesablardan məlumatlar Sizin kontakt siyahınızda gizlədiləcək, silinməyəcək."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Bu kontaktın silinməsi çoxsaylı hesablardan məlumatların silinməsi ilə nəticələnəcək."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Bu kontakt silinəcək."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"İmtina edin"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt mövcud deyil."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontakt vidceti Əsas ekrana əlavə edildi."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Yeni kontakt yaradın"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Yeni kontakt yaradın"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Təşkilat"</item>
+ <item msgid="7196592230748086755">"Qeyd"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Planşetdə şəkillər əlçatımlı deyil."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Telefonda heç bir şəkil əlçatımlı deyil."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Kontakt fotosu"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Fərdi etiket adı"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Səsləri birbaşa səsli poçta göndərin"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Fotonu yığışdırın"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Kontakt yoxdur."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Qrup yoxdur."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Qrup yaratmaq üçün hesaba ehtiyacınız var."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Bu qrupda adam yoxdur."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Bəzilərini əlavə etmək üçün qrupu redaktə edin"</string>
+ <string name="savingContact" msgid="4075751076741924939">"Kontakt yadda saxlanır..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Kontakt yadda saxlanıldı."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Kontakt dəyişiklikləri saxlanıla bilmədi."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Qrup yadda saxlanıldı."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Qrup dəyişiklikləri yadda saxlanılmadı."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"Telefon nömrəsi olan 1 kontakt"</item>
+ <item quantity="other" msgid="3299954047880968205">"Telefon nömrəsi olan <xliff:g id="COUNT">%d</xliff:g> kontakt"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Telefon nömrəsi olan kontakt yoxdur"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
+ <item quantity="other" msgid="3578469907265375314">"(<xliff:g id="COUNT">%d</xliff:g> kontakt)"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 tapıldı"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> tapıldı"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Kontakt yoxdur"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 tapılmış"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> tapıldı"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"Bütün kontaktlar"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"Qruplar"</string>
+ <string name="callBack" msgid="5498224409038809224">"Geriyə zəng"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Yenidən zəng edin"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Zəngi qaytarın"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" kontaktlara əlavə olunsun?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"Kontakt şəkli"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktdan <xliff:g id="CURRENT_NUMBER">%s</xliff:g> kontakt"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Kontaktlarınızın adları"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Bu əməliyyatı idarə etmək üçün heç bir tətbiq tapılmadı."</string>
+ <string name="menu_share" msgid="943789700636542260">"Paylaşın"</string>
+ <string name="share_via" msgid="563121028023030093">"Kontaktı bu vasitə ilə paylaşın:"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Hesab altında qrup yaradın"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Səsli çat"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Video çat"</string>
+ <string name="connections" msgid="8098440723172028350">"Əlaqələr"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Bağlantı əlavə edin"</string>
+ <string name="recent" msgid="2659189233141493004">"Son"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Son güncəlləşmələr"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> kontakt"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Bu fotonu istifadə edin"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Bu tətbiqdən düzəliş edilə bilən deyil."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Bu kontakt üçün heç bir əlavə məlumat yoxdur."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Bu cihaz üçün redaktəolunmazdır."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Siyahını sırala"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Verilmiş ad"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Soyad"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Kontakt adlarına baxın"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Birinci verilmiş ad yazılsın"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Birinci soyad yazılsın"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Fotoşəkil çəkin"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Yeni foto çəkin"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"Qalereyadan şəkil seçin"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"Qalereyadan yeni foto seçin"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Kontakt siyahısı dil dəyişikliyini əks etmək üçün yenilənir."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Kontakt siyahısı güncəlləşdirilir."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontaktlar təkmilləşmə prosesindədir. \n\nTəkmilləşmə prosesi təxminən <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB daxili yaddaş tələb edir.\n\nAşağıdakı variantlardan birini seçin:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Bəzi tətbiqləri sistemdən silin"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Təkmilləşdirməyə yenidən cəhd edin"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Axtarılır..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Seçilmişləri göstər"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Hamısını göstər"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Hamısını seçin"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Heç birini seçməyin"</string>
+ <string name="add_field" msgid="2384260056674995230">"Digər sahə əlavə edin"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Yenisini əlavə edin"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Təşkilat əlavə edin"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tarix"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Qrup adı"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> vasitəsilə"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> vasitəsilə <xliff:g id="DATE">%1$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"sevimli"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Kontaktı redaktə edin"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"qovuşdurulmayıb"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> mənbədən qovuşduruldu"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Cari kontakt seçilmiş kontakta birləşdirilsin?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Seçilmiş kontaktın redaktəsinə keçirilsin? Hazırda daxil etdiyiniz informasiya kopyalanacaq."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Kontaktlarıma Kopyalayın"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Kontaktlarıma Əlavə Edin"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Kataloq <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"Şəxsi nüsxə yaradılır..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Adət"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Ayarlar"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Ayarlar"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Yardım"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Displey seçənəkləri"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Telefon nömrəsi"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Kontaktlara əlavə edin"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Kontakta əlavə edin"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Qapadın"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"İli yazın"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Kontakt"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Yüklənir…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yeni kontakt yaradın"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Hesabınıza daxil olun"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Kontaktları import edin"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Yeni qrup yarat"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Yeni qrup yarat"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 qrup"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> qrup"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" qrupu silinsin? (Kontaktlar silinməyəcək.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> hesabından <xliff:g id="COUNT_0">%1$d</xliff:g> nəfər"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> hesabından <xliff:g id="COUNT_0">%1$d</xliff:g> nəfər"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> şəxs"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> nəfər"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Digəri ilə birləşmədən öncə kontakt adı yazın."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Panoya kopyalayın"</string>
+ <string name="set_default" msgid="4417505153468300351">"Defolt ayarlayın"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Defoltu təmizləyin"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Mətn kopyalandı"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Dəyişiklikləriniz kənarlaşdırılsın?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Profilimi quraşdırın"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Şəxsin adını yazın"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Qrup adı"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Yerli profilim"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Mənim <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profilim"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Bütün kontaktlar göstərilir"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"Adamlar Google Hesabı ile daha yaxşı işləyir. \n \n • Hər hansı bir veb brauzer ilə daxil olun \n • Kontaktlarınızı güvənli şəkildə yedəkləyin."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Telefonunuzu itirsəniz belə, kontaktlarınızı təhlükəsiz saxlayın: onlayn xidmət ilə sinxronlaşdırın."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Hesab əlavə edin"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Yeni kontaktınız yedəklənməyəcək. Kontaktları onlayn yedəkləyən hesab əlavə olunsun?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Yeni kontaktınız <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> ilə sinxronlaşacaq."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Kontaktlarınızı aşağıdakı hesablardan biri ilə sinxronlaşdıra bilərsiniz. Hansını istifadə etmək istəyirsiniz?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Lokal olaraq saxlayın"</string>
+ <string name="add_account" msgid="8201790677994503186">"Hesab əlavə edin"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Yeni hesab əlavə edin"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Data baza fayllarını eksport edin"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Şəkil. Dəyişmək üçün seçin."</string>
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
new file mode 100644
index 0000000..7092f8c
--- /dev/null
+++ b/res/values-az/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"Camaat"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Kontaktlar"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Birbaşa nömrə yığımı"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Birbaşa mesaj"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Kontakt qısayolunu seçin"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Zəng üçün nömrə seçin"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Mesaj göndərmək üçün nömrə seçin"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Kontakt seçin"</string>
+ <string name="starredList" msgid="4817256136413959463">"Ulduzlu"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Tez-tez"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Seçilmişlər"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Kontakt detalları"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"Kontakta baxın"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Kontakta düzəliş edin"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Kontakt yaradın"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Qrupa düzəliş edin"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Qrup yaradın"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Haqqında"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Güncəlləşdirmələr"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Kontakt axtarın"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Kontakta baxın"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Favoritlərə əlavə edin"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Favoritlərdən yığışdırın"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Düzəliş edin"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Silin"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Əsas ekranda yer"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Kontakta zəng edin"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Mətn kontaktı"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Ayrılıqda"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Düzəliş edin"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Silin"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Kontakt əlavə edin"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Qrupu əlavə edin"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Kontakt bölünsün?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Bu kontakt çoxsaylı kontaktlara bölünəcək."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Qoşulun"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Kontaktları birləşdirin"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g> ilə birləşdirmək istədiyiniz kontaktı seçin:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Bütün kontaktları göstərin"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Təklif edilmiş kontaktlar"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Bütün kontaktlar"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktlar birləşdirildi"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Zəng səsi seçin"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Bütün zənglər səsli poçta"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Yalnız oxunmaq üçün olan hesablardan kontaktları silə bilməzsiniz, lakin onları kontakt siyahınızda gizlədə bilərsiniz."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Bu kontakt çoxsaylı hesablardan olan məlumatlardan ibarətdir. Yalnız oxunmaq üçün olan hesablardan məlumatlar Sizin kontakt siyahınızda gizlədiləcək, silinməyəcək."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Bu kontaktın silinməsi çoxsaylı hesablardan məlumatların silinməsi ilə nəticələnəcək."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Bu kontakt silinəcək."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"İmtina edin"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt mövcud deyil."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontakt vidceti Əsas ekrana əlavə edildi."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Yeni kontakt yaradın"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Yeni kontakt yaradın"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Təşkilat"</item>
+ <item msgid="7196592230748086755">"Qeyd"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Planşetdə şəkillər əlçatımlı deyil."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Telefonda heç bir şəkil əlçatımlı deyil."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Kontakt fotosu"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Fərdi etiket adı"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Səsləri birbaşa səsli poçta göndərin"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Fotonu yığışdırın"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Kontakt yoxdur."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Qrup yoxdur."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Qrup yaratmaq üçün hesaba ehtiyacınız var."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Bu qrupda adam yoxdur."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Bəzilərini əlavə etmək üçün qrupu redaktə edin"</string>
+ <string name="savingContact" msgid="4075751076741924939">"Kontakt yadda saxlanır..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Kontakt yadda saxlanıldı."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Kontakt dəyişiklikləri saxlanıla bilmədi."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Qrup yadda saxlanıldı."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Qrup dəyişiklikləri yadda saxlanılmadı."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"Telefon nömrəsi olan 1 kontakt"</item>
+ <item quantity="other" msgid="3299954047880968205">"Telefon nömrəsi olan <xliff:g id="COUNT">%d</xliff:g> kontakt"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Telefon nömrəsi olan kontakt yoxdur"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
+ <item quantity="other" msgid="3578469907265375314">"(<xliff:g id="COUNT">%d</xliff:g> kontakt)"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 tapıldı"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> tapıldı"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Kontakt yoxdur"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 tapılmış"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> tapıldı"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"Bütün kontaktlar"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"Qruplar"</string>
+ <string name="callBack" msgid="5498224409038809224">"Geriyə zəng"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Yenidən zəng edin"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Zəngi qaytarın"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" kontaktlara əlavə olunsun?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"Kontakt şəkli"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktdan <xliff:g id="CURRENT_NUMBER">%s</xliff:g> kontakt"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Kontaktlarınızın adları"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Bu əməliyyatı idarə etmək üçün heç bir tətbiq tapılmadı."</string>
+ <string name="menu_share" msgid="943789700636542260">"Paylaşın"</string>
+ <string name="share_via" msgid="563121028023030093">"Kontaktı bu vasitə ilə paylaşın:"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Hesab altında qrup yaradın"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Səsli çat"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Video çat"</string>
+ <string name="connections" msgid="8098440723172028350">"Əlaqələr"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Bağlantı əlavə edin"</string>
+ <string name="recent" msgid="2659189233141493004">"Son"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Son güncəlləşmələr"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> kontakt"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Bu fotonu istifadə edin"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Bu tətbiqdən düzəliş edilə bilən deyil."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Bu kontakt üçün heç bir əlavə məlumat yoxdur."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Bu cihaz üçün redaktəolunmazdır."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Siyahını sırala"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Verilmiş ad"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Soyad"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Kontakt adlarına baxın"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Birinci verilmiş ad yazılsın"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Birinci soyad yazılsın"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Fotoşəkil çəkin"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Yeni foto çəkin"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"Qalereyadan şəkil seçin"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"Qalereyadan yeni foto seçin"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Kontakt siyahısı dil dəyişikliyini əks etmək üçün yenilənir."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Kontakt siyahısı güncəlləşdirilir."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontaktlar təkmilləşmə prosesindədir. \n\nTəkmilləşmə prosesi təxminən <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB daxili yaddaş tələb edir.\n\nAşağıdakı variantlardan birini seçin:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Bəzi tətbiqləri sistemdən silin"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Təkmilləşdirməyə yenidən cəhd edin"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Axtarılır..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Seçilmişləri göstər"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Hamısını göstər"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Hamısını seçin"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Heç birini seçməyin"</string>
+ <string name="add_field" msgid="2384260056674995230">"Digər sahə əlavə edin"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Yenisini əlavə edin"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Təşkilat əlavə edin"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tarix"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Qrup adı"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> vasitəsilə"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> vasitəsilə <xliff:g id="DATE">%1$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"sevimli"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Kontaktı redaktə edin"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"qovuşdurulmayıb"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> mənbədən qovuşduruldu"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Cari kontakt seçilmiş kontakta birləşdirilsin?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Seçilmiş kontaktın redaktəsinə keçirilsin? Hazırda daxil etdiyiniz informasiya kopyalanacaq."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Kontaktlarıma Kopyalayın"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Kontaktlarıma Əlavə Edin"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Kataloq <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"Şəxsi nüsxə yaradılır..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Adət"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Ayarlar"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Ayarlar"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Yardım"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Displey seçənəkləri"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Telefon nömrəsi"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Kontaktlara əlavə edin"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Kontakta əlavə edin"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Qapadın"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"İli yazın"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Kontakt"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Yüklənir…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Yeni kontakt yaradın"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Hesabınıza daxil olun"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Kontaktları import edin"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Yeni qrup yarat"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Yeni qrup yarat"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 qrup"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> qrup"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" qrupu silinsin? (Kontaktlar silinməyəcək.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> hesabından <xliff:g id="COUNT_0">%1$d</xliff:g> nəfər"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> hesabından <xliff:g id="COUNT_0">%1$d</xliff:g> nəfər"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> şəxs"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> nəfər"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Digəri ilə birləşmədən öncə kontakt adı yazın."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Panoya kopyalayın"</string>
+ <string name="set_default" msgid="4417505153468300351">"Defolt ayarlayın"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Defoltu təmizləyin"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Mətn kopyalandı"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Dəyişiklikləriniz kənarlaşdırılsın?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Profilimi quraşdırın"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Şəxsin adını yazın"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Qrup adı"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Yerli profilim"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Mənim <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profilim"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Bütün kontaktlar göstərilir"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"Adamlar Google Hesabı ile daha yaxşı işləyir. \n \n • Hər hansı bir veb brauzer ilə daxil olun \n • Kontaktlarınızı güvənli şəkildə yedəkləyin."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Telefonunuzu itirsəniz belə, kontaktlarınızı təhlükəsiz saxlayın: onlayn xidmət ilə sinxronlaşdırın."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Hesab əlavə edin"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Yeni kontaktınız yedəklənməyəcək. Kontaktları onlayn yedəkləyən hesab əlavə olunsun?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Yeni kontaktınız <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> ilə sinxronlaşacaq."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Kontaktlarınızı aşağıdakı hesablardan biri ilə sinxronlaşdıra bilərsiniz. Hansını istifadə etmək istəyirsiniz?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Lokal olaraq saxlayın"</string>
+ <string name="add_account" msgid="8201790677994503186">"Hesab əlavə edin"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Yeni hesab əlavə edin"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Data baza fayllarını eksport edin"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Şəkil. Dəyişmək üçün seçin."</string>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 21fdf10..7900589 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -143,8 +143,10 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Спачатку прозвішча"</string>
<string name="take_photo" msgid="7496128293167402354">"Зрабіць фота"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Зрабiце новую фатаграфію"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Выберыце фатаграфію з галерэі"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Выберыце новую фатаграфію з Галерэі"</string>
+ <!-- no translation found for pick_photo (2129509985223564942) -->
+ <skip />
+ <!-- no translation found for pick_new_photo (9122450996263688237) -->
+ <skip />
<string name="locale_change_in_progress" msgid="7583992153091537467">"Абнаўляецца спіс кантактаў для адлюстравання змены мовы."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Спiс кантактаў абнаўляецца."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Кантакты зараз абнаўляюцца. \n\nПрацэс абнаўлення патрабуе прыкладна <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Мб унутранай памяці.\n\nВыберыце адзін з наступных варыянтаў."</string>
@@ -160,8 +162,6 @@
<string name="add_organization" msgid="7311893231158291197">"Дадаць арганізацыю"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Назва групы"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"праз <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> праз <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"выбранае"</string>
<string name="edit_contact" msgid="7529281274005689512">"Рэдагаваць кантакт"</string>
<plurals name="merge_info">
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 948ec30..0b2a17a 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Хора"</string>
+ <string name="people" msgid="1190841469952343354">"Контакти"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Директно набиране"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Често"</string>
<string name="strequentList" msgid="5640192862059373511">"Любими"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Подробности за контакта"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Преглед на контакт"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Редактиране на контакт"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Създаване на контакт"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Редактиране на групата"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Този контакт съдържа информация от няколко профила. Тази от профили само за четене ще бъде скрита, а не изтрита."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Изтриването на този контакт ще премахна информация от няколко профила."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Този контакт ще бъде изтрит."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Отхвърляне"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Отхвърляне на промените"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Контактът не съществува."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Приспособлението за контакти е добавено към началния екран."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Създаване на нов контакт"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> контакта с телефонни номера"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Няма контакти с телефонни номера"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> контакта"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 намерен"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> намерени"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 намерен"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> намерени"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Всички контакти"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Групи"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Всички контакти"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Любими"</string>
<string name="callBack" msgid="5498224409038809224">"Обратно обаждане"</string>
<string name="callAgain" msgid="3197312117049874778">"Повторно обаждане"</string>
<string name="returnCall" msgid="8171961914203617813">"Отговаряне на обаждане"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> от <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контакта"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена на контактите ви"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Не бе намерено приложение за извършване на това действие."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Не бе намерено приложение за извършване на това действие."</string>
<string name="menu_share" msgid="943789700636542260">"Споделяне"</string>
<string name="share_via" msgid="563121028023030093">"Споделяне на контакт чрез"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Създаване на група в профил"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Първо фамилията"</string>
<string name="take_photo" msgid="7496128293167402354">"Снимане"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Заснемане на нова снимка"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Избор на снимка от галерията"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Избор на нова снимка от галерията"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Избор на снимка"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Избор на нова снимка"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Списъкът с контакти се актуализира, за да отрази промяната на езика."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Списъкът с контакти се актуализира."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Контактите се надстройват. \n\nПроцесът се нуждае от приблизително <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> МБ вътрешно хранилище.\n\nИзберете една от следните опции:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Организация: Добавяне"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Име на групата"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"чрез <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> чрез <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"любимо"</string>
<string name="edit_contact" msgid="7529281274005689512">"Редактиране на контакта"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Копиране в моите контакти"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Добавяне в „Моите контакти“"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Директория „<xliff:g id="TYPE">%1$s</xliff:g>“"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Създава се лично копие..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"По избор"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
<string name="menu_settings" msgid="377929915873428211">"Настройки"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Моят локален потр. профил"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Потр. ми профил <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Показват се всички контакти"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Приложението Хора работи по-добре с профил в Google.\n\n• Осъществявайте достъп от всеки уеб браузър.\n• Създавайте надеждни резервни копия на контактите си."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Приложението Контакти работи по-добре с профил в Google.\n\n• Осъществявайте достъп от всеки уеб браузър.\n• Създавайте сигурни резервни копия на контактите си."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Погрижете се за безопасността на контактите си, ако загубите своя телефон: синхронизирайте с онлайн услуга."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Добавяне на профил"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"За новия ви контакт няма да бъде създадено резервно копие. Да се добави ли профил, в който да се създават такива копия на контактите онлайн?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Добавяне на нов профил"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Експортиране на файловете на базата от данни"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Снимка. Изберете, за да промените"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"добавяне на нов контакт"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Преглед на още"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Преглед на по-малко"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Преглед на всичко"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Контакт"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Скорошни"</string>
+ <string name="send_message" msgid="8938418965550543196">"Изпращане на съобщение"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Създава се лично копие..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Вчера"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Утре"</string>
+ <string name="today" msgid="8041090779381781781">"Днес"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Днес от <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Утре от <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Неозаглавено събитие)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Задаване"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 25bf946..ecb9186 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Persones"</string>
+ <string name="people" msgid="1190841469952343354">"Contactes"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactes"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacte"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Marcatge directe"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Freqüent"</string>
<string name="strequentList" msgid="5640192862059373511">"Preferits"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Dades de contacte"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Visualitza el contacte"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Edita el contacte"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Crea un contacte"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Edita el grup"</string>
@@ -42,7 +41,7 @@
<string name="menu_removeStar" msgid="5844227078364227030">"Elimina dels preferits"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Edita"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Suprimeix"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Posa-ho a la pantalla d\'inici"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Afegeix a la pantalla d\'inici"</string>
<string name="menu_call" msgid="3992595586042260618">"Truca al contacte"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Envia un SMS al contacte"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"Separa"</string>
@@ -59,13 +58,13 @@
<string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactes suggerits"</string>
<string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tots els contactes"</string>
<string name="contactsJoinedMessage" msgid="7208148163607047389">"Contactes units"</string>
- <string name="menu_set_ring_tone" msgid="8728345772068064946">"Est. to trucada"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Estableix so"</string>
<string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Trucades a la bústia de veu"</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"No pots suprimir cap contacte dels comptes de només lectura, però pots amagar-los a les llistes de contactes."</string>
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Aquest contacte inclou informació de diversos comptes. La informació dels comptes només de lectura s\'ocultarà a les llistes de contactes, però no se suprimirà."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Si suprimiu aquest contacte se suprimirà informació de diversos comptes."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Aquest contacte se suprimirà."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Descarta"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Descarta els canvis"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"El contacte no existeix."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"El widget de contacte s\'ha afegit a la pantalla d\'inici."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Crea un contacte nou"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contactes amb números de telèfon"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"No hi ha cap contacte amb número de telèfon"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contacte"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactes"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 contacte"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> contactes"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 contacte"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> contactes"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Tots els contactes"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grups"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tots contactes"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Preferits"</string>
<string name="callBack" msgid="5498224409038809224">"Torna la trucada"</string>
<string name="callAgain" msgid="3197312117049874778">"Torna a trucar"</string>
<string name="returnCall" msgid="8171961914203617813">"Retorna la trucada"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactes"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Noms dels contactes"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No s\'ha trobat cap aplicació per processar aquesta acció."</string>
+ <string name="missing_app" msgid="1466111003546611387">"No s\'ha trobat cap aplicació per processar aquesta acció."</string>
<string name="menu_share" msgid="943789700636542260">"Comparteix"</string>
<string name="share_via" msgid="563121028023030093">"Comparteix el contacte mitjançant"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Creació d\'un grup al compte"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Cognoms primer"</string>
<string name="take_photo" msgid="7496128293167402354">"Fes una foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Fes una foto nova"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Selecciona una foto de la galeria"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Selecciona una foto nova de la galeria"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Tria una foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Selecciona una foto nova"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"S\'actualitza la llista de contactes per reflectir el canvi d\'idioma."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"S\'actualitza la llista de contactes."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"S\'estan actualitzant els contactes. \n\nEl procés d\'actualització requereix aproximadament <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB de l\'emmagatzematge intern.\n\nTria una de les opcions següents:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Afegeix organització"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nom del grup"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"mitjançant <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> mitjançant <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"preferit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Edita el contacte"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copia a Els meus contactes"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Afegeix a Els meus contactes"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directori <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"S\'està creant una còpia personal..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalitzada"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configuració"</string>
<string name="menu_settings" msgid="377929915873428211">"Configuració"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"El meu perfil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"El meu perfil de <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"S\'estan mostrant tots els contactes"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Contactes funciona millor amb un Compte de Google.\n\n• Accedeix-hi des de qualsevol navegador web.\n• Fes una còpia de seguretat dels teus contactes."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"La funció Contactes funciona millor amb un compte de Google.\n\n• Accedeix-hi des de qualsevol navegador.\n• Fes còpies de seguretat dels contactes de manera segura."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mantén els contactes segurs encara que perdis el telèfon: sincronitza\'ls amb un servidor en línia."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Afegeix un compte"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"No es farà una còpia de seguretat del teu contacte nou. Vols afegir un compte que faci còpies de seguretat dels contactes en línia?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Afegeix un compte nou"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exporta els fitxers de la base de dades"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Imatge. Selecciona-la per canviar-la"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"afegeix un contacte nou"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Mostra\'n més"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Mostra\'n menys"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Mostra-ho tot"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contacte"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recents"</string>
+ <string name="send_message" msgid="8938418965550543196">"Envia el missatge"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"S\'està creant una còpia personal..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ahir"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Demà"</string>
+ <string name="today" msgid="8041090779381781781">"Avui"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Avui a les <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Demà a les <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Esdeveniment sense títol)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Configura"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 801a4a0..0412a36 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Lidé"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakty"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Přímé vytáčení"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Časté"</string>
<string name="strequentList" msgid="5640192862059373511">"Oblíbené"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kontaktní údaje"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Zobrazit kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Upravit kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Vytvořit kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Upravit skupinu"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Tento kontakt obsahuje informace z několika účtů. Informace z účtů pouze pro čtení budou v seznamech kontaktů skryty, ale nebudou smazány."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Smazáním tohoto kontaktu smažete informace z více účtů."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Tento kontakt bude smazán."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Zahodit"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Zahodit změny"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt neexistuje."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget Kontakt byl přidán na plochu."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Vytvořit nový kontakt"</string>
@@ -86,7 +85,7 @@
<string name="emptyGroup" msgid="7502116218697177370">"Skupina nemá žádné členy."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Chcete-li někoho přidat, upravte skupinu."</string>
<string name="savingContact" msgid="4075751076741924939">"Ukládání kontaktu…"</string>
- <string name="contactSavedToast" msgid="7152589189385441091">"Kontakt byl uložen."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Kontakt byl uložen"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Změny kontaktů nelze uložit."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Skupina byla uložena."</string>
<string name="groupSavedErrorToast" msgid="7984466936615304740">"Změny skupiny nelze uložit."</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Kontakty s telefonními čísly: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ke kontaktům nejsou přiřazena žádná telefonní čísla"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
- <item quantity="other" msgid="3578469907265375314">"Kontakty: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Nalezeno: 1"</item>
<item quantity="other" msgid="3852668542926965042">"Nalezeno: <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Nalezeno: 1"</item>
<item quantity="other" msgid="7988132539476575389">"Nalezeno: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Všechny kontakty"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupiny"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Všechny kontakty"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Oblíbené"</string>
<string name="callBack" msgid="5498224409038809224">"Zavolat zpět"</string>
<string name="callAgain" msgid="3197312117049874778">"Zavolat znovu"</string>
<string name="returnCall" msgid="8171961914203617813">"Zpětné volání"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktů"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Jména vašich kontaktů"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikace potřebná k provedení této akce nebyla nalezena."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Aplikace potřebná k provedení této akce nebyla nalezena."</string>
<string name="menu_share" msgid="943789700636542260">"Sdílet"</string>
<string name="share_via" msgid="563121028023030093">"Sdílet kontakt pomocí"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Vytvořit skupinu v účtu"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nejprve příjmení"</string>
<string name="take_photo" msgid="7496128293167402354">"Vyfotit"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Pořídit novou fotografii"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Vybrat fotografii z Galerie"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Vybrat novou fotografii z Galerie"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Vybrat fotku"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Vybrat novou fotku"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Probíhá aktualizace seznamu kontaktů související se změnou jazyka."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Probíhá aktualizace seznamu kontaktů."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Probíhá upgrade kontaktů. \n\nUpgrade vyžaduje přibližně <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB interní paměti.\n\nZvolte jednu z následujících možností:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Přidat organizaci"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Název skupiny"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"pomocí služby <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> prostřednictvím služby <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"oblíbené"</string>
<string name="edit_contact" msgid="7529281274005689512">"Upravit kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Zkopírovat do kontaktů"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Přidat do skupiny Moje kontakty"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Adresář <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Vytváření osobní kopie..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Vlastní"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavení"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavení"</string>
@@ -219,15 +212,31 @@
<string name="local_profile_title" msgid="2021416826991393684">"Můj místní profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Můj profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Zobrazují se všechny kontakty"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Služba Lidé funguje lépe s účtem Google.\n\n• Můžete k ní přistupovat z libovolného webového prohlížeče\n• Kontakty lze bezpečně zálohovat."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"S účtem Google fungují Kontakty lépe:\n\n• Je k nim možné přistupovat z každého webového prohlížeče.\n• Bezpečně se zálohují."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mějte kontakty v bezpečí, i když telefon ztratíte: synchronizujte je s některou online službou."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Přidat účet"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Nový kontakt nebude zálohován. Chcete přidat účet pro zálohování kontaktů online?"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Nový kontakt bude synchronizován s účtem <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
- <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Nový kontakt můžete synchronizovat s jedním z následujících účtů. Který z nich chcete použít?"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Nový kontakt můžete synchronizovat s jedním z následujících účtů. Který z nich chcete použít?"</string>
<string name="keep_local" msgid="1258761699192993322">"Zachovat jako místní"</string>
<string name="add_account" msgid="8201790677994503186">"Přidat účet"</string>
<string name="add_new_account" msgid="5748627740680940264">"Přidat nový účet"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportovat soubory databáze"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Chcete-li obrázek změnit, vyberte jej"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"přidat nový kontakt"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Zobrazit více"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Zobrazit méně"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Zobrazit vše"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nedávné"</string>
+ <string name="send_message" msgid="8938418965550543196">"Odeslat zprávu"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Vytváření osobní kopie..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Včera"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Zítra"</string>
+ <string name="today" msgid="8041090779381781781">"Dnes"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Dnes v <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Zítra v <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Událost bez názvu)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Nastavit"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 603cc38..e04de68 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Personer"</string>
+ <string name="people" msgid="1190841469952343354">"Kontaktpersoner"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direkte opkald"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Ofte"</string>
<string name="strequentList" msgid="5640192862059373511">"Favorit"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kontaktoplysninger"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Vis kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Rediger kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Opret kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Rediger gruppe"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Denne kontakt indeholder oplysninger fra flere konti. Oplysningerne fra skrivebeskyttede konti vil blive skjult i dine lister over kontakter, men ikke slettet."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Sletning af denne kontakt sletter oplysninger fra flere konti."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Denne kontakt slettes."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Kassér"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Kassér ændringer"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontaktpersonen findes ikke."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktwidgetten føjes til startskærmen."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Opret ny kontakt"</string>
@@ -78,7 +77,7 @@
<string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Der er ingen tilgængelige billeder på telefonen."</string>
<string name="attach_photo_dialog_title" msgid="5599827035558557169">"Billede af kontaktperson"</string>
<string name="customLabelPickerTitle" msgid="1081475101983255212">"Navn på tilpasset etiket"</string>
- <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Send opkald direkte til voicemail"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Send opkald direkte til telefonsvarer"</string>
<string name="removePhoto" msgid="4898105274130284565">"Fjern billede"</string>
<string name="noContacts" msgid="8579310973261953559">"Der er ingen kontakter."</string>
<string name="noGroups" msgid="8614664663561385253">"Ingen grupper."</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersoner med telefonnumre"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Der er ingen kontakter med telefonnumre"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontaktperson"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersoner"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 fundet"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> fundet"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 fundet"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> fundet"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontaktpersoner"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alle kontakter"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritter"</string>
<string name="callBack" msgid="5498224409038809224">"Ring tilbage"</string>
<string name="callAgain" msgid="3197312117049874778">"Ring op igen"</string>
<string name="returnCall" msgid="8171961914203617813">"Ring tilbage"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> af <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Navne på dine kontakter"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Der blev ikke fundet nogen app, der kan håndtere denne handling."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Der blev ikke fundet nogen app, der kan håndtere denne handling."</string>
<string name="menu_share" msgid="943789700636542260">"Del"</string>
<string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Opret gruppe på konto"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Efternavn først"</string>
<string name="take_photo" msgid="7496128293167402354">"Tag billede"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Tag nyt billede"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Vælg billede fra Galleri"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Vælg nyt billede fra Galleri"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Vælg billede"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Vælg et nyt billede"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Listen over kontaktpersoner opdateres for at afspejle det nye sprog."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Listen over kontaktpersoner opdateres."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontaktpersonerne er ved at blive opgraderet. \n\nOpgraderingen kræver ca. <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB intern lagerplads.\n\nVælg et af følgende:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Tilføj organisation"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Dato"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Gruppenavn"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"foretrukken"</string>
<string name="edit_contact" msgid="7529281274005689512">"Rediger kontaktperson"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopier til Mine kontaktpersoner"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Føj til mine kontaktpersoner"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Indeks <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Opretter en privat kopi..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Tilpasset"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Indstillinger"</string>
<string name="menu_settings" msgid="377929915873428211">"Indstillinger"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Min lokale profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Min <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>-profil"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Viser alle kontaktpersoner"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Personer fungerer bedre med en Google-konto.\n\n• Få adgang fra enhver webbrowser.\n• Sikkerhedskopier dine kontaktpersoner sikkert."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontaktpersoner fungerer bedre med en Google-konto.\n\n• Få adgang fra enhver webbrowser. \n• Sikkerhedskopiér dine kontaktpersoner på sikker vis."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Behold dine kontaktpersoner, selv hvis du mister din telefon: Synkroniser med en onlinetjeneste."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Tilføj en konto"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Din nye kontaktperson bliver ikke sikkerhedskopieret. Vil du tilføje en konto, der sikkerhedskopierer kontaktpersoner online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Tilføj ny konto"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportér databasefiler"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Billede. Vælg for at ændre"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"tilføj ny kontaktperson"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Se mere"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Se mindre"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Se alle"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontaktperson"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Seneste"</string>
+ <string name="send_message" msgid="8938418965550543196">"Send besked"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Opretter en personlig kopi..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"I går"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"I morgen"</string>
+ <string name="today" msgid="8041090779381781781">"I dag"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"I dag kl. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"I morgen kl. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Ikke-navngiven begivenhed)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Indstil"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3331f2b..0850ed8 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Kontakte"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakte"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakte"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direktwahl"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Häufig"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoriten"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kontaktinformationen"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Kontakt anzeigen"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Kontakt bearbeiten"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Kontakt erstellen"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Gruppe bearbeiten"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Dieser Kontakt enthält Informationen aus mehreren Konten. Informationen aus schreibgeschützten Konten werden nicht gelöscht, sondern in Ihren Kontaktlisten ausgeblendet."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Wenn Sie diesen Kontakt löschen, werden Informationen aus mehreren Konten gelöscht."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Dieser Kontakt wird gelöscht."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Verwerfen"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Änderungen verwerfen"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Dieser Kontakt existiert nicht."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontakt-Widget zum Startbildschirm hinzugefügt"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Neuen Kontakt erstellen"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> Kontakte mit Telefonnummern"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Keine sichtbaren Kontakte mit Telefonnummern"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 Kontakt"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> Kontakte"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 gefunden"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> gefunden"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 gefunden"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> gefunden"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alle Kontakte"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruppen"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alle Kontakte"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoriten"</string>
<string name="callBack" msgid="5498224409038809224">"Rückruf"</string>
<string name="callAgain" msgid="3197312117049874778">"Erneut anrufen"</string>
<string name="returnCall" msgid="8171961914203617813">"Zurückrufen"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Kontakten"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Namen meiner Kontakte"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Für diese Aktion wurde keine App gefunden."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Für diese Aktion wurde keine App gefunden."</string>
<string name="menu_share" msgid="943789700636542260">"Teilen"</string>
<string name="share_via" msgid="563121028023030093">"Kontakt teilen über"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Konto für Gruppenerstellung"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nachname zuerst"</string>
<string name="take_photo" msgid="7496128293167402354">"Foto machen"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Neues Foto aufnehmen"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Foto aus Galerie auswählen"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Neues Foto aus Galerie auswählen"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Foto auswählen"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Neues Foto auswählen"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktliste wird an die geänderte Sprache angepasst..."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kontaktliste wird aktualisiert..."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontakte werden gerade aktualisiert. \n\nDas Upgrade erfordert etwa <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB des internen Speichers.\n\nWählen Sie eine der folgenden Optionen:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Unternehmen hinzufügen"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Gruppenname"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"über <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> über <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"Favorit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Kontakt bearbeiten"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"In meine Kontakte kopieren"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Zu meinen Kontakten hinzufügen"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Verzeichnis <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Persönliche Kopie wird erstellt..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Benutzerdefiniert"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Einstellungen"</string>
<string name="menu_settings" msgid="377929915873428211">"Einstellungen"</string>
@@ -214,20 +207,36 @@
<string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Sollen die Änderungen verworfen werden?"</string>
<string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
<string name="profile_display_name" msgid="4127389543625918771">"Mein Profil einrichten"</string>
- <string name="enter_contact_name" msgid="1738391320566349924">"Name der Person eingeben"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Namen der Person eingeben"</string>
<string name="group_name_hint" msgid="238359485263401293">"Gruppenname"</string>
<string name="local_profile_title" msgid="2021416826991393684">"Mein lokales Profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mein <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>-Profil"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Alle Kontakte werden angezeigt."</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Die Personenfunktion funktioniert besser mit einem Google-Konto.\n\n• Zugriff über einen beliebigen Browser\n• Sichern von Kontakten mit Schutzfunktion"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Die App \"Kontakte\" funktioniert am besten mit einem Google-Konto.\n\n• Sie können über alle Webbrowser darauf zugreifen.\n• Sichern und schützen Sie Ihre Kontakte."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Synchronisierung mit einem Online-Service: Ihre Kontakte sind dann auch sicher, wenn Sie Ihr Telefon verlieren."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Konto hinzufügen"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Ihr neuer Kontakt wird nicht gesichert. Konto für die Online-Sicherung von Kontakten hinzufügen?"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Ihr neuer Kontakt wird mit <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> synchronisiert."</string>
- <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Sie können Ihren neuen Kontakt mit einem der folgenden Konten synchronisieren. Welches möchten Sie verwenden?"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Sie können Ihren neuen Kontakt mit einem der folgenden Konten synchronisieren. Welches Konto möchten Sie verwenden?"</string>
<string name="keep_local" msgid="1258761699192993322">"Lokal speichern"</string>
<string name="add_account" msgid="8201790677994503186">"Konto hinzufügen"</string>
<string name="add_new_account" msgid="5748627740680940264">"Neues Konto hinzufügen"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Datenbankdateien exportieren"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Bild. Zum Ändern auswählen"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"Neuen Kontakt hinzufügen"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Mehr anzeigen"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Weniger anzeigen"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Alle anzeigen"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Letzte"</string>
+ <string name="send_message" msgid="8938418965550543196">"Nachricht senden"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Persönliche Kopie wird erstellt…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Gestern"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Morgen"</string>
+ <string name="today" msgid="8041090779381781781">"Heute"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Heute um <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Morgen um <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Unbenannter Termin)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Festlegen"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 1ef4817..62f0bb0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Άτομα"</string>
+ <string name="people" msgid="1190841469952343354">"Επαφές"</string>
<string name="contactsList" msgid="8661624236494819731">"Επαφές"</string>
<string name="shortcutContact" msgid="749243779392912958">"Επαφή"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Άμεση κλήση"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Συχνές"</string>
<string name="strequentList" msgid="5640192862059373511">"Αγαπ."</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Λεπτομέρειες επαφής"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Προβολή επαφής"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Επεξεργασία επαφής"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Δημιουργία επαφής"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Επεξεργασία ομάδας"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Αυτή η επαφή περιέχει πληροφορίες από πολλούς λογαριασμούς. Θα γίνει απόκρυψη και όχι διαγραφή των πληροφοριών που προέρχονται από λογαριασμούς μόνο για ανάγνωση στις λίστες επαφών σας."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Εάν διαγράψετε αυτήν την επαφή, θα γίνει διαγραφή των πληροφοριών από πολλούς λογαριασμούς."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Αυτή η επαφή θα διαγραφεί."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Απόρριψη"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Απόρριψη αλλαγών"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Η επαφή δεν υπάρχει."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Το γραφικό στοιχείο επαφών προστέθηκε στην αρχική οθόνη."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Δημιουργία νέας επαφής"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> επαφές με αριθμούς τηλεφώνου"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Δεν υπάρχουν επαφές με αριθμούς τηλεφώνου"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 επαφή"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> επαφές"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Βρέθηκε 1"</item>
<item quantity="other" msgid="3852668542926965042">"Βρέθηκαν <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Βρέθηκε 1"</item>
<item quantity="other" msgid="7988132539476575389">"Βρέθηκαν <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Όλες οι επαφές"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Ομάδες"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Όλες οι επαφές"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Αγαπημένα"</string>
<string name="callBack" msgid="5498224409038809224">"Επανάκληση"</string>
<string name="callAgain" msgid="3197312117049874778">"Επανάληψη κλήσης"</string>
<string name="returnCall" msgid="8171961914203617813">"Επιστροφή κλήσης"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> από <xliff:g id="TOTAL_NUMBER">%s</xliff:g> επαφές"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Ονόματα των επαφών σας"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Δεν βρέθηκε εφαρμογή για τη διαχείριση αυτής της ενέργειας."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Δεν βρέθηκε εφαρμογή για τη διαχείριση αυτής της ενέργειας."</string>
<string name="menu_share" msgid="943789700636542260">"Κοινή χρήση"</string>
<string name="share_via" msgid="563121028023030093">"Κοινή χρήση μέσω"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Δημιουργία ομάδας στο λογαριασμό"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Πρώτα το επίθετο"</string>
<string name="take_photo" msgid="7496128293167402354">"Λήψη φωτογραφίας"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Λήψη νέας φωτογραφίας"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Επιλογή φωτογραφιών από τη Συλλογή"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Επιλογή νέας φωτογραφίας από το Gallery"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Επιλογή φωτογραφίας"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Επιλογή νέας φωτογραφίας"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Γίνεται ενημέρωση της λίστας επαφών για να αντικατοπτριστεί η αλλαγή γλώσσας."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Γίνεται ενημέρωση της λίστας επαφών."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Γίνεται αναβάθμιση των επαφών. \n\nΗ διαδικασία αναβάθμισης απαιτεί περίπου <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB από τον εσωτερικό χώρο αποθήκευσης.\n\nΟρίστε μία από τις παρακάτω επιλογές:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Προσθήκη οργανισμού"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Ημερομηνία"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Όν. ομάδ."</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"μέσω <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> μέσω <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"αγαπημένο"</string>
<string name="edit_contact" msgid="7529281274005689512">"Επεξεργασία επαφής"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Αντιγραφή στις Επαφές μου"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Προσθήκη στις Επαφές μου"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Κατάλογος <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Δημιουργία προσωπικού αντιγράφου..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Προσαρμοσμένη"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ρυθμίσεις"</string>
<string name="menu_settings" msgid="377929915873428211">"Ρυθμίσεις"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Τοπικό προφίλ"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Προφίλ μου <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Εμφάνιση όλων των επαφών"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Η εφαρμογή \"Άτομα\" λειτουργεί καλύτερα με έναν Λογαριασμό Google.\n\n• Αποκτήστε πρόσβαση από οποιοδήποτε πρόγραμμα περιήγησης.\n• Δημιουργήστε αντίγραφα ασφαλείας των επαφών σας."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Οι Επαφές λειτουργούν καλύτερα με έναν Λογαριασμό Google.\n\n• Πρόσβαση από οποιοδήποτε πρόγραμμα περιήγησης.\n• Δημιουργία αντιγράφων ασφαλείας των επαφών σας με ασφάλεια."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Διατηρήστε τις επαφές σας ασφαλείς ακόμα και αν χάσετε το τηλέφωνό σας: συγχρονισμός με άλλη συσκευή στο διαδίκτυο."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Προσθήκη λογαριασμού"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Δεν θα δημιουργηθεί αντίγραφο ασφαλείας για τη νέα επαφή σας. Θέλετε να προσθέσετε ένα λογαριασμό που δημιουργεί αντίγραφα ασφαλείας επαφών στο διαδίκτυο;"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Προσθήκη νέου λογαριασμού"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Εξαγωγή αρχείων βάσης δεδομένων"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Εικόνα. Επιλέξτε για αλλαγή"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"προσθήκη νέας επαφής"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Δείτε περισσότερα"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Δείτε λιγότερα"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Εμφάνιση όλων"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Επικοινωνία"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Πρόσφατα"</string>
+ <string name="send_message" msgid="8938418965550543196">"Αποστολή μηνύματος"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Δημιουργία προσωπικού αντιγράφου…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Χθες"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Αύριο"</string>
+ <string name="today" msgid="8041090779381781781">"Σήμερα"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Σήμερα στις <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Αύριο στις <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Εκδήλωση χωρίς τίτλο)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Ορισμός"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 85199a6..bd03b76 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"People"</string>
+ <string name="people" msgid="1190841469952343354">"Contacts"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direct dial"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frequent"</string>
<string name="strequentList" msgid="5640192862059373511">"Favourites"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Contact details"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"View contact"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Edit contact"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Create contact"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Edit group"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"This contact contains information from multiple accounts. Information from read-only accounts will be hidden in your contacts lists, not deleted."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Deleting this contact will delete information from multiple accounts."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"This contact will be deleted."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Discard"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Discard changes"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"The contact doesn\'t exist."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Contact widget added to Home screen."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Create new contact"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contacts with phone numbers"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"No contacts with phone numbers"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contact"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacts"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 found"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> found"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 found"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> found"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"All contacts"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Groups"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"All contacts"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favourites"</string>
<string name="callBack" msgid="5498224409038809224">"Call back"</string>
<string name="callAgain" msgid="3197312117049874778">"Call again"</string>
<string name="returnCall" msgid="8171961914203617813">"Return call"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> of <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Names of your contacts"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No app was found to handle this action."</string>
+ <string name="missing_app" msgid="1466111003546611387">"No app was found to handle this action."</string>
<string name="menu_share" msgid="943789700636542260">"Share"</string>
<string name="share_via" msgid="563121028023030093">"Share contact via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Create group under account"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Surname first"</string>
<string name="take_photo" msgid="7496128293167402354">"Take photo"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Take new photo"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Choose photo from Gallery"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Select new photo from Gallery"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Choose photo"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Select new photo"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Contact list is being updated to reflect the change of language."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Contact list is being updated."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Contacts are in the process of being upgraded. \n\nThe upgrade process requires approximately <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB of internal storage.\n\nChoose one of the following options:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Add organisation"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Date"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Group name"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favourite"</string>
<string name="edit_contact" msgid="7529281274005689512">"Edit contact"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copy to My Contacts"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Add to My Contacts"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directory <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Creating a personal copy…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Customised"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Settings"</string>
<string name="menu_settings" msgid="377929915873428211">"Settings"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"My local profile"</string>
<string name="external_profile_title" msgid="8034998767621359438">"My <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profile"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Displaying all contacts"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People works better with a Google Account.\n\n• Access from any web browser.\n• Back up your contacts securely."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Contacts works better with a Google Account.\n\n• Access from any web browser.\n• Back up your contacts securely."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Keep your contacts safe even if you lose your phone: synchronise with an online service."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Add an account"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Your new contact won\'t be backed up. Add an account that backs up contacts online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Add new account"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Export database files"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Picture. Select to change"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"add new contact"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"See more"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"See less"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"See all"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recent"</string>
+ <string name="send_message" msgid="8938418965550543196">"Send message"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Creating a personal copy..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Yesterday"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Tomorrow"</string>
+ <string name="today" msgid="8041090779381781781">"Today"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Today at <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Tomorrow at <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Untitled event)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Set"</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..bd03b76
--- /dev/null
+++ b/res/values-en-rIN/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Contacts"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Direct dial"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Direct message"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Choose a contact short cut"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Choose a number to call"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Choose a number to message"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Choose a contact"</string>
+ <string name="starredList" msgid="4817256136413959463">"Starred"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Frequent"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Favourites"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Contact details"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Edit contact"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Create contact"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Edit group"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Create group"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"About"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Updates"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Search contacts"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"View contact"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Add to favourites"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Remove from favourites"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Delete"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Place on Home screen"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Call contact"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Text contact"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Separate"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Edit"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Delete"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Add Contact"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Add Group"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Separate contact?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"This contact will be separated into multiple contacts."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Join"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Join contacts"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Choose the contact that you want to join with <xliff:g id="NAME">%s</xliff:g>:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Show all contacts"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Suggested Contacts"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"All contacts"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacts joined"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Set ringtone"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"All calls to voicemail"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"You can\'t delete contacts from read-only accounts, but you can hide them in your contacts lists."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"This contact contains information from multiple accounts. Information from read-only accounts will be hidden in your contacts lists, not deleted."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Deleting this contact will delete information from multiple accounts."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"This contact will be deleted."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Discard changes"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"The contact doesn\'t exist."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Contact widget added to Home screen."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Create new contact"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Create new contact"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Organisation"</item>
+ <item msgid="7196592230748086755">"Note"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"No pictures are available on the tablet."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"No pictures are available on the phone."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Contact photo"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Custom label name"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Send calls directly to voicemail"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Remove photo"</string>
+ <string name="noContacts" msgid="8579310973261953559">"No contacts."</string>
+ <string name="noGroups" msgid="8614664663561385253">"No groups."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"To create groups you need an account."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"No people in this group."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"To add some, edit the group."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Saving contact…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Contact saved."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Couldn\'t save contact changes."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Group saved."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Couldn\'t save group changes."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 contact with phone number"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contacts with phone numbers"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"No contacts with phone numbers"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 found"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> found"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"No contacts"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 found"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> found"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"All contacts"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favourites"</string>
+ <string name="callBack" msgid="5498224409038809224">"Call back"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Call again"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Return call"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Add \"<xliff:g id="EMAIL">%s</xliff:g>\" to contacts?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"contact photo"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> of <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Names of your contacts"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"No app was found to handle this action."</string>
+ <string name="missing_app" msgid="1466111003546611387">"No app was found to handle this action."</string>
+ <string name="menu_share" msgid="943789700636542260">"Share"</string>
+ <string name="share_via" msgid="563121028023030093">"Share contact via"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Create group under account"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Voice chat"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Video chat"</string>
+ <string name="connections" msgid="8098440723172028350">"Connections"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Add connection"</string>
+ <string name="recent" msgid="2659189233141493004">"Recent"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Recent updates"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> contact"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Use this photo"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Not editable from this app."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"No additional information for this contact."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Not editable on this device"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Sort list by"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"First name"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Surname"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"View contact names"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"First name first"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Surname first"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Take photo"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Take new photo"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Choose photo"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Select new photo"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Contact list is being updated to reflect the change of language."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Contact list is being updated."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Contacts are in the process of being upgraded. \n\nThe upgrade process requires approximately <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB of internal storage.\n\nChoose one of the following options:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Uninstall some applications"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Retry upgrade"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Searching…"</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Show selected"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Show all"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Select all"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Unselect all"</string>
+ <string name="add_field" msgid="2384260056674995230">"Add another field"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Add new"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Add organisation"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Date"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Group name"</string>
+ <string name="description_star" msgid="2605854427360036550">"favourite"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Edit contact"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"not merged"</item>
+ <item quantity="other" msgid="425683718017380845">"merged from <xliff:g id="COUNT">%0$d</xliff:g> sources"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Join the current contact with the selected contact?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Switch to editing the selected contact? Information that you\'ve entered so far will be copied."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Copy to My Contacts"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Add to My Contacts"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Directory <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Customised"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Settings"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Settings"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Help"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Display options"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Phone number"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Add to contacts"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Add to contact"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Close"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Provide a year"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Contact"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Loading…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Create a new contact"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Sign in to an account"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Import contacts"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Create new group"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Create new group"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 group"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groups"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Delete the group \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (Contacts themselves will not be deleted.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> person from <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> people from <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> person"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> people"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Type contact name before joining with another."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Copy to clipboard"</string>
+ <string name="set_default" msgid="4417505153468300351">"Set default"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Clear default"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Text copied"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Discard your changes?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Set up my profile"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Type person\'s name"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Group\'s name"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"My local profile"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"My <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profile"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Displaying all contacts"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Contacts works better with a Google Account.\n\n• Access from any web browser.\n• Back up your contacts securely."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Keep your contacts safe even if you lose your phone: synchronise with an online service."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Add an account"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Your new contact won\'t be backed up. Add an account that backs up contacts online?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Your new contact will be synchronised with <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"You can synchronise your new contact with one of the following accounts. Which do you want to use?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Keep locally"</string>
+ <string name="add_account" msgid="8201790677994503186">"Add account"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Add new account"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Export database files"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Picture. Select to change"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"add new contact"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"See more"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"See less"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"See all"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recent"</string>
+ <string name="send_message" msgid="8938418965550543196">"Send message"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Creating a personal copy..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Yesterday"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Tomorrow"</string>
+ <string name="today" msgid="8041090779381781781">"Today"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Today at <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Tomorrow at <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Untitled event)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Set"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 6925bef..7b684d0 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Personas"</string>
+ <string name="people" msgid="1190841469952343354">"Contactos"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Marcado directo"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frecuente"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoritos"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detalles de contacto"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Ver contacto"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Editar contacto"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Crear contacto"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Editar grupo"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Este contacto contiene información de varias cuentas. La información de las cuentas de solo lectura se ocultará en tus listas de contactos, pero no se eliminará."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Eliminar este contacto suprimirá la información de mútliples cuentas."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Este contacto se eliminará."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Descartar cambios"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"El contacto no existe."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"El widget de contactos se agregó a la pantalla principal."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear nuevo contacto"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contactos con números de teléfono"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"No hay contactos con números de dispositivo"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contacto"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Se encontró uno (1)"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> encontrado(s)"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Se encontró uno (1)"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> encontrado(s)"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Todos los contactos"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Todos los contactos"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritos"</string>
<string name="callBack" msgid="5498224409038809224">"Volver a llamar"</string>
<string name="callAgain" msgid="3197312117049874778">"Llamar nuevamente"</string>
<string name="returnCall" msgid="8171961914203617813">"Regresar llamada"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No se encontró ninguna aplicación que pueda realizar esta acción."</string>
+ <string name="missing_app" msgid="1466111003546611387">"No se encontró ninguna aplicación que pueda realizar esta acción."</string>
<string name="menu_share" msgid="943789700636542260">"Compartir"</string>
<string name="share_via" msgid="563121028023030093">"Compartir un contacto a través de"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crear un grupo en la cuenta"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apellido Nombre"</string>
<string name="take_photo" msgid="7496128293167402354">"Tomar foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Tomar nueva foto"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Elige una foto de la Galería."</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Seleccionar nueva foto de galería"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Elegir una foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Seleccionar una foto nueva"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"La lista de contactos se está actualizando para reflejar el cambio de idioma."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"La lista de contactos se está actualizando."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"La actualización de los contactos está en proceso. \n\nEl proceso de actualización requiere aproximadamente <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB de almacenamiento interno en el dispositivo.\n\nElige una de las siguientes opciones:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Agregar organización"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Fecha"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nombre de grupo"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"a través de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> a través de <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorito"</string>
<string name="edit_contact" msgid="7529281274005689512">"Editar contacto"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copiar en Mis contactos"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Agregar a Mis contactos"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directorio <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Creando una copia personal..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configuración"</string>
<string name="menu_settings" msgid="377929915873428211">"Configuración"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mi perfil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mi perfil de <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Mostrar todos los contactos"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People funciona mejor con una cuenta de Google.\n\n Accede desde cualquier navegador web.\n Crea copias de seguridad de tus contactos de manera segura."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"La aplicación Contactos funciona mejor con una cuenta de Google.\n\n• Accede desde cualquier navegador web.\n• Haz copias de seguridad de tus contactos de forma segura."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mantén tus contactos a salvo aunque pierdas el dispositivo: sincronízalos con un servicio online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Agregar una cuenta"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"No se hará una copia de seguridad del nuevo contacto. ¿Quieres agregar una cuenta para hacer copias de seguridad en línea de los contactos?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Agregar una cuenta nueva"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar archivos de base de datos"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Fotografía. Seleccionar para cambiar"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"agregar contacto nuevo"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Ver más"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Ver menos"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Ver todo"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contacto"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Reciente"</string>
+ <string name="send_message" msgid="8938418965550543196">"Enviar mensaje"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Creando una copia personal…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ayer"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Mañana"</string>
+ <string name="today" msgid="8041090779381781781">"Hoy"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hoy a la hora <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Mañana a la hora <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Evento sin título)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Establecer"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e5e6bd3..ada7853 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Contactos"</string>
+ <string name="people" msgid="1190841469952343354">"Contactos"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Llamada directa"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frecuentes"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoritos"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detalles del contacto"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Ver contacto"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Editar contacto"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Crear contacto"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Editar grupo"</string>
@@ -65,11 +64,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Este contacto contiene información de varias cuentas. La información de las cuentas de solo lectura se ocultará en las listas de contactos, pero no se eliminará."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Si se elimina este contacto, se eliminará la información de varias cuentas."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"El contacto se eliminará."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Descartar cambios"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Este contacto no existe."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"El widget de contactos se ha añadido a la pantalla de inicio."</string>
- <string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear contacto nuevo"</string>
- <string name="pickerNewContactText" msgid="6166997164401048211">"Crear contacto nuevo"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear nuevo contacto"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Crear nuevo contacto"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organización"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contactos con números de teléfono"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ningún contacto con número de teléfono"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Un (1) contacto"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 encontrado"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> encontrados"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 encontrado"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> encontrados"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Todos los contactos"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Todos los contactos"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritos"</string>
<string name="callBack" msgid="5498224409038809224">"Llamar"</string>
<string name="callAgain" msgid="3197312117049874778">"Volver a llamar"</string>
<string name="returnCall" msgid="8171961914203617813">"Devolver llamada"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No se ha detectado ninguna aplicación que pueda hacer esta acción."</string>
+ <string name="missing_app" msgid="1466111003546611387">"No se ha detectado ninguna aplicación que pueda hacer esta acción."</string>
<string name="menu_share" msgid="943789700636542260">"Compartir"</string>
<string name="share_via" msgid="563121028023030093">"Compartir contacto a través de"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crear grupo en cuenta"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apellidos primero"</string>
<string name="take_photo" msgid="7496128293167402354">"Hacer una foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Hacer una foto nueva"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Seleccionar foto de la galería"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Seleccionar nueva foto de la galería"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Elegir foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Seleccionar nueva foto"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"La lista de contactos se está actualizando para reflejar el cambio de idioma."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"La lista de contactos se está actualizando."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Los contactos se están actualizando. \n\nSe necesitan aproximadamente <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB de almacenamiento interno para el proceso de actualización.\n\nSelecciona una de las siguientes opciones:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Añadir organización"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Fecha"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nombre del grupo"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"con <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> con <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favoritos"</string>
<string name="edit_contact" msgid="7529281274005689512">"Editar contacto"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copiar en mis contactos"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Añadir a Mis contactos"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directorio <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Creando una copia personal..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizar"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ajustes"</string>
<string name="menu_settings" msgid="377929915873428211">"Ajustes"</string>
@@ -188,7 +181,7 @@
<string name="date_year_toggle" msgid="7356532842767854606">"Introducir año"</string>
<string name="social_widget_label" msgid="6378905543028924592">"Contacto"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"Cargando..."</string>
- <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear contacto nuevo"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Crear nuevo contacto"</string>
<string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Iniciar sesión en una cuenta"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importar contactos"</string>
<string name="create_group_dialog_title" msgid="6874527142828424475">"Crear grupo nuevo"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mi perfil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mi perfil de <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Mostrando todos los contactos"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"La aplicación Contactos funciona mejor con una cuenta de Google.\n\n• Accede a tu lista de contactos desde cualquier navegador web.\n• Haz copias de seguridad de tus contactos de forma segura."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"La aplicación Contactos funciona mejor con una cuenta de Google.\n\n• Accede a tu lista de contactos desde cualquier navegador web.\n• Haz copias de seguridad de tus contactos de forma segura."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mantén tus contactos a salvo aunque pierdas el teléfono: sincronízalos con un servicio online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Añadir una cuenta"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"No se hará una copia de seguridad del nuevo contacto. ¿Quieres añadir una cuenta para hacer copias de seguridad online de los contactos?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Añadir una cuenta"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar archivos de base de datos"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagen. Seleccionar para cambiar"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"añadir nuevo contacto"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Ver más"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Ver menos"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Ver todo"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contacto"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recientes"</string>
+ <string name="send_message" msgid="8938418965550543196">"Enviar mensaje"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Creando una copia personal..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ayer"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Mañana"</string>
+ <string name="today" msgid="8041090779381781781">"Hoy"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hoy a las <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Mañana a las <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Evento sin título)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Establecer"</string>
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
new file mode 100644
index 0000000..57982e7
--- /dev/null
+++ b/res/values-et-rEE/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Kontaktid"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Kontaktid"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Otsevalimine"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Otsesõnum"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Kontakti otsetee valimine"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Valige helistamiseks number"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Valige sõnumi jaoks number"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Kontakti valimine"</string>
+ <string name="starredList" msgid="4817256136413959463">"Tärniga"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Sagedane"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Lemmikud"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Kontakti üksikasjad"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Muuda kontakti"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Looge kontakt"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Grupi muutmine"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Grupi loomine"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Teave"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Värskendused"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Otsige kontakte"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Kuva kontakt"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Lisa lemmikutesse"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Eemalda lemmikutest"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Muuda"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Kustuta"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Paiguta avalehele"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Helista kontaktile"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Saada kontaktile SMS"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Eralda"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Muuda"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Kustuta"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Kontaktisiku lisamine"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Rühma lisamine"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Eraldada kontakt?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"See kontakt eraldatakse mitmeks kontaktiks."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Liitumine"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Ühenda kontaktid"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Valige kontakt, keda soovite kasutajaga <xliff:g id="NAME">%s</xliff:g> liita."</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Kuva kõik kontaktid"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Soovitatud kontaktid"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Kõik kontaktid"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontaktid ühendatud"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Määrake helin"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Kõik kõned kõneposti"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Te ei saa kontakte kirjutuskaitstud kontodest kustutada, kuid saate need oma kontaktide loendis peita."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"See kontakt sisaldab teavet mitmelt kontolt. Kirjutuskaitstud teabega kontod peidetakse teie kontaktiloendites, mitte ei kustutata."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Selle kontakti kustutamisel kustutatakse andmed mitmelt kontolt."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"See kontakt kustutatakse."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Loobu muudatustest"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Kontakti ei ole olemas."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktividin lisati avalehele."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Loo uus kontakt"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Loo uus kontakt"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Organisatsioon"</item>
+ <item msgid="7196592230748086755">"Märkus"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Tahvelarvutis pole ühtegi pilti saadaval."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Telefonis pole ühtegi pilti saadaval."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Kontakti foto"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Kohandatud sildi nimi"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Saada kõned otse kõneposti"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Eemalda foto"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Kontaktid puuduvad."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Grupid puuduvad."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Rühmade loomiseks vajate kontot."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Selles rühmas pole inimesi."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Lisamiseks muutke rühma."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Kontakti salvestamine ..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Kontakt on salvestatud."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Kontaktide muudatuste salvestamine ebaõnnestus."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Grupp on salvestatud."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Rühmade muudatuste salvestamine ebaõnnestus."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 telefoninumbriga kontakt"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> telefoninumbriga kontakti"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Telefoninumbritega kontakte pole"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 leitud"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> leitud"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Kontakte pole"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 leitud"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> leitud"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Kõik kontaktid"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Lemmikud"</string>
+ <string name="callBack" msgid="5498224409038809224">"Helista tagasi"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Helista uuesti"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Tagasihelistamine"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Kas lisada „<xliff:g id="EMAIL">%s</xliff:g>” kontaktidesse?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"kontakti foto"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"pluss"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktist"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Teie kontaktide nimed"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Selle toimingu käsitsemiseks ei leitud ühtegi rakendust."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Selle toimingu käsitlemiseks ei leitud ühtegi rakendust."</string>
+ <string name="menu_share" msgid="943789700636542260">"Jaga"</string>
+ <string name="share_via" msgid="563121028023030093">"Kontakti jagamisvalikud"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Kontopõhise grupi loomine"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Häälvestlus"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Videovestlus"</string>
+ <string name="connections" msgid="8098440723172028350">"Ühendused"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Lisa ühendus"</string>
+ <string name="recent" msgid="2659189233141493004">"Hiljutine"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Uusimad värskendused"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> kontakt"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Kasuta seda fotot"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Ei saa muuta selles rakenduses."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Selle kontakti kohta pole täiendavat teavet."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Ei saa muuta selles seadmes."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Loendi sortimisalus"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Eesnimi"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Perekonnanimi"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Kuva kontaktid"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Eesnimi kõigepealt"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Perekonnanimi kõigepealt"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Tee foto"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Tee uus foto"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Vali foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Vali uus foto"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktiloendit värskendatakse keele muutmise kajastamiseks."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Kontaktiloendit värskendatakse."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontakte uuendatakse. \n\nUuendusprotsessiks on vaja umbes <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB sisemälu.\n\nValige üks järgmistest valikutest."</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Desinstalli mõned rakendused"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Proovi uuesti uuendada"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Otsimine ..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Kuva valitud"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Kuva kõik"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Vali kõik"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Tühista kõikide valik"</string>
+ <string name="add_field" msgid="2384260056674995230">"Lisa veel üks väli"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Lisa uus"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Lisa organisatsioon"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Kuupäev"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Grupi nimi"</string>
+ <string name="description_star" msgid="2605854427360036550">"lemmik"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Muuda kontakti"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"pole liidetud"</item>
+ <item quantity="other" msgid="425683718017380845">"ühendati <xliff:g id="COUNT">%0$d</xliff:g> allikast"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Kas ühendada praegune kontakt valitud kontaktiga?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Kas lülituda valitud kontakti muutmisse? Seni sisestatud andmed kopeeritakse."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Kopeeri valikusse Minu kontaktid"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Lisa lehele Minu kontaktid"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Kataloog <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Kohandatud"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Seaded"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Seaded"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Abi"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Kuvamisvalikud"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Telefoninumber"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Lisa kontaktidesse"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Kontaktile lisamine"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Sule"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Sisesta aasta"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Kontakt"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Laadimine ..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Loo uus kontakt"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logi kontole sisse"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Impordi kontaktid"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Uue grupi loomine"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Loo uus rühm"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 grupp"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> rühma"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Kas kustutada rühm „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Kontakte ei kustutata.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> isik(ut) rühmas <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> inimest rühmas <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> isik"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> inimest"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Enne teise kontaktiga ühendamist sisestage kontakti nimi."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Kopeeri lõikelauale"</string>
+ <string name="set_default" msgid="4417505153468300351">"Määra vaikeseadeks"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Kustuta vaikeseaded"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Tekst on kopeeritud"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Kas loobute oma muudatustest?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Minu profiili seadistamine"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Sisestage isiku nimi"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Rühma nimi"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Minu kohalik profiil"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Minu profiil: <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Kõigi kontaktide kuvamine"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Teenus Kontaktid töötab Google\'i kontoga paremini.\n\n• Pääsete sellele juurde igast veebibrauserist.\n• Varundage oma kontaktid turvaliselt."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Hoidke oma kontaktid turvalisena ka siis, kui kaotate telefoni: sünkroonige need võrguteenusega."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Konto lisamine"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Teie uut kontakti ei varundata. Kas lisada konto, mis varundab kontakte veebis?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Teie uut kontakti sünkroonitakse kontoga <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Saate sünkroonida oma uue kontakti ühega järgmistest kontodest. Millist soovite kasutada?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Hoia kohalikuna"</string>
+ <string name="add_account" msgid="8201790677994503186">"Lisa konto"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Lisa uus konto"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Andmebaasi failide eksportimine"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Pilt. Muutmiseks valige"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"uue kontakti lisamine"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Lisateave"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Kuva vähem"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Kuva kõik"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Hiljutine"</string>
+ <string name="send_message" msgid="8938418965550543196">"Saada sõnum"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Isikliku koopia loomine ..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Eile"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Homme"</string>
+ <string name="today" msgid="8041090779381781781">"Täna"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Täna kell <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Homme kell <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Pealkirjata sündmus)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Määra"</string>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index f78f65b..b3fd1e8 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"افراد"</string>
+ <string name="people" msgid="1190841469952343354">"مخاطبین"</string>
<string name="contactsList" msgid="8661624236494819731">"مخاطبین"</string>
<string name="shortcutContact" msgid="749243779392912958">"مخاطب"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"شماره گیری مستقیم"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"مکرر"</string>
<string name="strequentList" msgid="5640192862059373511">"موارد دلخواه"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"اطلاعات تماس"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"مشاهده مخاطب"</string>
<string name="editContactDescription" msgid="2947202828256214947">"ویرایش مخاطب"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"ایجاد مخاطب"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"ویرایش گروه"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"این مخاطب دارای اطلاعاتی از چند حساب است. اطلاعات حسابهای فقط خواندنی در لیستهای مخاطبین پنهان میشوند اما حذف نمیشوند."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"حذف این مخاطب اطلاعات را از حسابهای متعدد حذف میکند."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"این مخاطب حذف میشود."</string>
- <string name="menu_discard" msgid="6456087569315685632">"صرفنظر"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"صرفنظر از تغییرات"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"مخاطبی موجود نیست."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ابزارک مخاطب به صفحهٔ اصلی شما اضافه شد."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"ایجاد مخاطب جدید"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> مخاطب دارای شماره تلفن"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"مخاطبی با شماره تلفن موجود نیست"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"۱ مخاطب"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> مخاطب"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 مورد پیدا شد"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> یافت شد"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 مورد پیدا شد"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> یافت شد"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"همه مخاطبین"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"گروهها"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"همه مخاطبین"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"موارد دلخواه"</string>
<string name="callBack" msgid="5498224409038809224">"بازگرداندن تماس"</string>
<string name="callAgain" msgid="3197312117049874778">"تماس مجدد"</string>
<string name="returnCall" msgid="8171961914203617813">"برگشت تماس"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> از <xliff:g id="TOTAL_NUMBER">%s</xliff:g> مخاطب"</string>
<string name="search_settings_description" msgid="2675223022992445813">"نامهای مخاطبین شما"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"برنامهای برای انجام این عملکرد یافت نشد."</string>
+ <string name="missing_app" msgid="1466111003546611387">"برنامهای برای انجام این عملکرد یافت نشد."</string>
<string name="menu_share" msgid="943789700636542260">"اشتراکگذاری"</string>
<string name="share_via" msgid="563121028023030093">"اشتراکگذاری مخاطب از طریق"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"ایجاد گروه تحت حساب کاربری"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"ابتدا نام خانوادگی"</string>
<string name="take_photo" msgid="7496128293167402354">"عکسبرداری"</string>
<string name="take_new_photo" msgid="7341354729436576304">"گرفتن عکس جدید"</string>
- <string name="pick_photo" msgid="3746334626214970837">"انتخاب عکس از گالری"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"انتخاب عکس جدید از گالری"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"انتخاب عکس"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"انتخاب عکس جدید"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"لیست مخاطبین در حال بهروزرسانی برای منعکس کردن تغییرات زبان است."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"لیست مخاطبین در حال بهروزرسانی است."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"مخاطبین در حال ارتقا هستند. \n\nفرآیند ارتقا به تقریباً <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> مگابایت از حافظهٔ داخلی نیاز دارد. \n\nیکی از گزینههای زیر را انتخاب کنید:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"افزودن سازمان"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"تاریخ"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"نام گروه"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"از طریق <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> از طریق <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"مورد دلخواه"</string>
<string name="edit_contact" msgid="7529281274005689512">"ویرایش مخاطب"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"کپی در مخاطبین من"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"افزودن به مخاطبین من"</string>
<string name="contact_directory_description" msgid="683398073603909119">"دایرکتوری <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"ایجاد یک کپی شخصی..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"سفارشی"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"تنظیمات"</string>
<string name="menu_settings" msgid="377929915873428211">"تنظیمات"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"نمایه محلی من"</string>
<string name="external_profile_title" msgid="8034998767621359438">"نمایه <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> من"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"نمایش همه مخاطبان"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People با یک حساب Google بهتر کار میکند.\n\n• از هر مرورگر وب به آن دسترسی دارید\n• از رویدادهای خود به طور امن پشتیبان تهیه کنید"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"مخاطبین با حساب Google بهتر کار میکند.\n\n• از هر مرورگر وبی به آن دسترسی داشته باشید.\n• به صورت ایمن از مخاطبینتان پشتیبانگیری کنید."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"مخاطبین خود را ایمن نگهدارید حتی اگر گوشی شما گم شود: با یک سرویس آنلاین همگامسازی کنید."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"افزودن یک حساب"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"از مخاطب جدید شما نسخه پشتبان تهیه نمیشود. حسابی را اضافه میکنید که از مخاطبین بهصورت آنلاین نسخه پشتبان تهیه کند؟"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"اافزودن حساب جدید"</string>
<string name="menu_export_database" msgid="2659719297530170820">"صدور فایلهای پایگاه داده"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"عکس. جهت تغییر انتخاب کنید"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"افزودن مخاطب جدید"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"مشاهده موارد بیشتر"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"مشاهده موارد کمتر"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"مشاهده همه"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"مخاطب"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"اخیر"</string>
+ <string name="send_message" msgid="8938418965550543196">"ارسال پیام"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"در حال ایجاد یک کپی شخصی..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"دیروز"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"فردا"</string>
+ <string name="today" msgid="8041090779381781781">"امروز"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"امروز در <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"فردا در <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>، <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(رویداد بدون عنوان)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"تنظیم"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 70f3328..c53f006 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Henkilöt"</string>
+ <string name="people" msgid="1190841469952343354">"Yhteystiedot"</string>
<string name="contactsList" msgid="8661624236494819731">"Yhteystiedot"</string>
<string name="shortcutContact" msgid="749243779392912958">"Yhteystieto"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Puhelu"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Usein käytetyt"</string>
<string name="strequentList" msgid="5640192862059373511">"Suosikit"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Yhteystiedot"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Näytä yhteystieto"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Muokkaa yhteystietoa"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Luo yhteystieto"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Muokkaa ryhmää"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Tämä yhteystieto sisältää tietoja useista tileistä. Vain luku -tilassa olevien tilien tietoja ei poisteta, mutta ne piilotetaan yhteystietoluettelosta."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Kun tämä yhteystieto poistetaan, tietoja poistetaan useilta tileiltä."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Tämä yhteystieto poistetaan."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Hylkää"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Hylkää muutokset"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Yhteystietoa ei ole olemassa."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Yhteystiedot-widget lisätty aloitusruutuun."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Luo uusi yhteystieto"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> yhteystietoa, joissa puhelinnumero"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ei yhteystietoja, joissa on puhelinnumero"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 yhteystieto"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> yhteystietoa"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Löytyi 1"</item>
<item quantity="other" msgid="3852668542926965042">"Löytyi <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Löytyi 1"</item>
<item quantity="other" msgid="7988132539476575389">"Löytyi <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Kaikki kontaktit"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Ryhmät"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Yhteystiedot"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Suosikit"</string>
<string name="callBack" msgid="5498224409038809224">"Soita takaisin"</string>
<string name="callAgain" msgid="3197312117049874778">"Soita uudelleen"</string>
<string name="returnCall" msgid="8171961914203617813">"Soita takaisin"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g> yhteystietoa"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Yhteystietojen nimet"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Tätä toimintoa käsittelevää sovellusta ei löydy."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Tätä toimintoa käsittelevää sovellusta ei löydy."</string>
<string name="menu_share" msgid="943789700636542260">"Jaa"</string>
<string name="share_via" msgid="563121028023030093">"Jaa yhteystieto"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Luo ryhmä tilissä"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Sukunimi ensin"</string>
<string name="take_photo" msgid="7496128293167402354">"Ota valokuva"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Ota uusi kuva"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Valitse valokuva galleriasta"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Valitse uusi kuva galleriasta"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Valitse valokuva"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Valitse uusi valokuva"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Yhteystietoluettelo on päivitetty vastaamaan kielen muutosta."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Yhteystietoluetteloa päivitetään."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Yhteystietoja päivitetään. \n\nPäivitysprosessiin tarvitaan noin <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Mt sisäistä tallennustilaa.\n\nValitse yksi seuraavista vaihtoehdoista:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Lisää organisaatio"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Päivämäärä"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Ryhmän nimi"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"lähteestä: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> lähteestä: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"lisää suosikkeihin"</string>
<string name="edit_contact" msgid="7529281274005689512">"Muokkaa yhteystietoa"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopioi yhteystietoihini"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Lisää kontakteihin"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Hakemisto <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Luodaan kopio..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Oma"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Asetukset"</string>
<string name="menu_settings" msgid="377929915873428211">"Asetukset"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Oma paikallinen profiili"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Oma <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>-profiili"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Kaikki kontaktit"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Ihmiset-sovellus toimii paremmin Google-tilin kanssa.\n\n• Käytä sovellusta millä tahansa selaimella.\n• Varmuuskopioi yhteystietosi turvallisesti."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Yhteystiedot toimivat paremmin Google-tilin kanssa.\n\n• Käytä millä tahansa selaimella.\n• Varmuuskopioi turvallisesti."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Pidä kontaktisi turvassa, vaikka puhelimesi katoaisi: synkronoi ne verkkopalvelun avulla."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Lisää tili"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Uutta kontaktiasi ei varmuuskopioida. Lisätäänkö tili, joka varmuuskopioi uudet kontaktit verkossa?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Lisää uusi tili"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Vie tietokantatiedostot"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Kuva. Vaihda valitsemalla"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"lisää uusi kontakti"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Näytä enemmän"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Näytä vähemmän"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Näytä kaikki"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakti"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Viimeisimmät"</string>
+ <string name="send_message" msgid="8938418965550543196">"Lähetä viesti"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Luodaan oma kopio…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Eilen"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Huomenna"</string>
+ <string name="today" msgid="8041090779381781781">"Tänään"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Tänään klo <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Huomenna klo <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Nimetön tapahtuma)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Käytä"</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..820d12f
--- /dev/null
+++ b/res/values-fr-rCA/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Contacts"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Raccourci appel"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Raccourci message"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Choisir un contact pour le raccourci"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Choisissez le numéro à appeler"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Choisissez le numéro auquel envoyer le message"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Sélectionner un contact"</string>
+ <string name="starredList" msgid="4817256136413959463">"Favoris"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Contacts fréquents"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Favoris"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Détails du contact"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Modifier un contact"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Créer un contact"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Modifier le groupe"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Créer un groupe"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"À propos"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Mises à jour"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Rechercher des contacts"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Afficher le contact"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Ajouter aux favoris"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Supprimer des favoris"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Modifier"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Supprimer"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placer sur l\'écran d\'accueil"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Appeler le contact"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Envoyer un SMS au contact"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Séparer"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Modifier"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Supprimer"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Ajouter un contact"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Ajouter un groupe"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Séparer le contact?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Ce contact va être séparé en plusieurs contacts."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Joindre"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Joindre des contacts"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Sélectionnez le contact que vous voulez associer à \"<xliff:g id="NAME">%s</xliff:g>\" :"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Afficher tous les contacts"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contacts suggérés"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Tous les contacts"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Contacts joints"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Régler sonnerie"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Tous appels vers messag. voc."</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Impossible de supprimer les contacts des comptes en lecture seule. Vous pouvez les masquer dans la liste des contacts."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ce contact contient des informations provenant de plusieurs comptes. Vous pouvez masquer dans votre liste de contacts les informations des comptes en lecture seule, mais pas les supprimer."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"La suppression de ce contact entraînera celle d\'informations provenant de plusieurs comptes."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Ce contact sera supprimé."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Supprimer les modifications"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Ce contact n\'existe pas."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget de contact ajouté à l\'écran d\'accueil."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Créer un nouveau contact"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Créer un nouveau contact"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Organisation"</item>
+ <item msgid="7196592230748086755">"NOTE"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Aucune image n\'est disponible sur la tablette."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Aucune image disponible sur le téléphone"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Photo du contact"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Étiquette personnalisée"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Renvoyer les appels directement vers la messagerie vocale"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Retirer la photo"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Aucun contact"</string>
+ <string name="noGroups" msgid="8614664663561385253">"Aucun groupe"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Vous devez posséder un compte pour créer des groupes."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Ce groupe est vide."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Pour ajouter des membres, veuillez le modifier."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Enregistrement du contact…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Contact enregistré."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Impossible d\'enregistrer les modifications apportées au contact."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Groupe enregistré"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Impossible d\'enregistrer les modifications apportées au groupe."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 contact avec numéro de téléphone"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contacts avec des numéros de téléphone"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Aucun contact disposant d\'un numéro de téléphone"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 contact trouvé"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> contacts trouvés"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Aucun contact"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 contact trouvé"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> contacts trouvés"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tous les contacts"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoris"</string>
+ <string name="callBack" msgid="5498224409038809224">"Rappeler"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Renouveler l\'appel"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Rappeler"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ajouter \"<xliff:g id="EMAIL">%s</xliff:g>\" aux contacts?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"photo du contact"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"plus"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Noms de vos contacts"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Aucune application pouvant gérer cette action n\'a été trouvée."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Aucune application pouvant gérer cette action n\'a été trouvée."</string>
+ <string name="menu_share" msgid="943789700636542260">"Partager"</string>
+ <string name="share_via" msgid="563121028023030093">"Partager contact via"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Sélectionner le compte associé au groupe"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Clavardage audio"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Clavardage vidéo"</string>
+ <string name="connections" msgid="8098440723172028350">"Liens"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Ajouter un contact"</string>
+ <string name="recent" msgid="2659189233141493004">"Fichiers récents"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Mises à jour récentes"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> contact"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Utiliser cette photo"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Non modifiable depuis cette application."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Aucune autre information n\'est disponible pour ce contact."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Non modifiable sur cet appareil."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Trier la liste par"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Prénom"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Nom"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Afficher les noms des contacts"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Le prénom en premier"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Le nom en premier"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Prendre une photo"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Prendre une autre photo"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Choisir une photo"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Sélectionner une nouvelle photo"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Mise à jour de la liste des contacts en cours suite au changement de langue"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"La liste de contacts est en cours de mise à jour."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Les contacts font actuellement l\'objet d\'une mise à jour.\n\nCette opération nécessite environ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Mo de mémoire de stockage interne.\n\nVeuillez sélectionner l\'une des options suivantes :"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Désinstaller certaines applications"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Réessayer la mise à jour"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Recherche en cours..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Afficher la sélection"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Tout afficher"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Tout sélectionner"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Tout désélectionner"</string>
+ <string name="add_field" msgid="2384260056674995230">"Ajouter un champ"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Ajouter"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Ajouter une entreprise"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Date"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nom du groupe"</string>
+ <string name="description_star" msgid="2605854427360036550">"favori"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Modifier un contact"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"1 contact non fusionné"</item>
+ <item quantity="other" msgid="425683718017380845">"fusionné à partir de <xliff:g id="COUNT">%0$d</xliff:g> sources"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Associer ce contact au contact sélectionné?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Modifier le contact sélectionné? Les informations saisies jusqu\'ici seront copiées."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Copier dans \"Mes contacts\""</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Ajouter à \"Mes contacts\""</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Annuaire <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Personnaliser"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Paramètres"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Paramètres"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Aide"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Options d\'affichage"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Numéro de téléphone"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Ajouter aux contacts"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Ajouter au contact"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Fermer"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Indiquer une année"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Contact"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Chargement en cours..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Créer un contact"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Se connecter à un compte"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Téléverser des contacts"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Créer un groupe"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Créer un groupe"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"Un groupe"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> groupes"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Supprimer le groupe \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? Les contacts ne seront pas supprimés."</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> contact dans <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> contacts dans <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> contact"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> personne(s)"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Saisissez le nom du contact avant de l\'associer à un autre."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Copier dans le presse-papiers"</string>
+ <string name="set_default" msgid="4417505153468300351">"Définir par défaut"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Effacer les valeurs par défaut"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Texte copié."</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Annuler les modifications?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Configurer mon profil"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Saisissez le nom de la personne"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Nom du groupe"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Mon profil local"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Mon profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Affichage de tous les contacts"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Tirez le meilleur parti de l\'application Contacts en utilisant un compte Google.\n\n• Accédez-y à partir de n\'importe quel navigateur Web.\n• Sauvegardez vos contacts en toute sécurité."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Assurez la sécurité de vos contacts, même si vous perdez votre téléphone en effectuant une synchronisation avec un service en ligne."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ajouter un compte"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Votre nouveau contact ne sera pas sauvegardé. Ajouter un compte qui sauvegarde les contacts en ligne?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Votre nouveau contact va être synchronisé avec <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Vous pouvez synchroniser votre nouveau contact avec l\'un des comptes suivants. Lequel souhaitez-vous utiliser?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Enreg. copie locale"</string>
+ <string name="add_account" msgid="8201790677994503186">"Ajouter un compte"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Ajouter un nouveau compte"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Exporter les fichiers de la base de données"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Image. Sélectionner pour modifier."</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ajouter un contact"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"En voir plus"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"En voir moins"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Tout afficher"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Récents"</string>
+ <string name="send_message" msgid="8938418965550543196">"Envoyer un message"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Création d\'une copie personnelle en cours..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Hier"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Demain"</string>
+ <string name="today" msgid="8041090779381781781">"Aujourd\'hui"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Aujourd\'hui à <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Demain à <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Événement sans titre)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Définir"</string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index c686f4d..a2b0f98 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Contacts"</string>
+ <string name="people" msgid="1190841469952343354">"Contacts"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Raccourci appel"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Contacts fréquents"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoris"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Détails du contact"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Afficher le contact"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Modifier le contact"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Créer un contact"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Modifier le groupe"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ce contact contient des informations provenant de plusieurs comptes. Vous pouvez masquer dans votre liste de contacts les informations des comptes en lecture seule, mais pas les supprimer."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"La suppression de ce contact entraînera celle d\'informations provenant de plusieurs comptes."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Ce contact sera supprimé."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Ignorer"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Supprimer les modifications"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Ce contact n\'existe pas."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget de contact ajouté à l\'écran d\'accueil."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Créer un nouveau contact"</string>
@@ -76,7 +75,7 @@
</string-array>
<string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Aucune image n\'est disponible sur la tablette."</string>
<string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Aucune image disponible sur le téléphone."</string>
- <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Photo du contact"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Photo d\'un contact"</string>
<string name="customLabelPickerTitle" msgid="1081475101983255212">"Libellé personnalisé"</string>
<string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Renvoyer les appels directement vers la messagerie vocale"</string>
<string name="removePhoto" msgid="4898105274130284565">"Supprimer la photo"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contacts avec des n° de téléphone"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Aucun contact disposant d\'un numéro de téléphone"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contact"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacts"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 contact trouvé"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> contact(s) trouvé(s)"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 contact trouvé"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> contact(s) trouvé(s)"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Tous les contacts"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Groupes"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tous contacts"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoris"</string>
<string name="callBack" msgid="5498224409038809224">"Rappeler"</string>
<string name="callAgain" msgid="3197312117049874778">"Renouveler l\'appel"</string>
<string name="returnCall" msgid="8171961914203617813">"Rappeler"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> sur <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Noms de vos contacts"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aucune application pouvant gérer cette action n\'a été trouvée."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Aucune application trouvée pour gérer cette action."</string>
<string name="menu_share" msgid="943789700636542260">"Partager"</string>
<string name="share_via" msgid="563121028023030093">"Partager contact via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Sélectionner le compte associé au groupe"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Le nom en premier"</string>
<string name="take_photo" msgid="7496128293167402354">"Prendre une photo"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Prendre une autre photo"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Choisir dans la galerie"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Choisir dans la galerie"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Sélectionner une photo"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Sélectionner une nouvelle photo"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Mise à jour de la liste des contacts en cours suite au changement de langue."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"La liste de contacts est en cours de mise à jour."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Les contacts font actuellement l\'objet d\'une mise à jour.\n\nCette opération nécessite environ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Mo de mémoire de stockage interne.\n\nVeuillez sélectionner l\'une des options suivantes :"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Ajouter une entreprise"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Date"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nom du groupe"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favori"</string>
<string name="edit_contact" msgid="7529281274005689512">"Modifier le contact"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copier dans \"Mes contacts\""</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Ajouter à \"Mes contacts\""</string>
<string name="contact_directory_description" msgid="683398073603909119">"Annuaire <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Création d\'une copie personnelle…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personnalisé"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Paramètres"</string>
<string name="menu_settings" msgid="377929915873428211">"Paramètres"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mon profil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mon profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Affichage de tous les contacts"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Tirez le meilleur parti de l\'application Contacts en utilisant un compte Google.\n\n• Accédez-y depuis n\'importe quel navigateur Web.\n• Sauvegardez vos contacts en toute sécurité."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Tirez le meilleur parti de l\'application Contacts en utilisant un compte Google.\n\n• Accédez-y depuis n\'importe quel navigateur Web.\n• Sauvegardez vos contacts en toute sécurité."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Assurez la sécurité de vos contacts, même si vous perdez votre téléphone en effectuant une synchronisation avec un service en ligne."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ajouter un compte"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Votre nouveau contact ne sera pas sauvegardé. Ajouter un compte permettant de sauvegarder les contacts en ligne ?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Ajouter un compte"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exporter les fichiers de la base de données"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Image : sélectionner pour modifier"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ajouter un contact"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Plus"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Moins"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Tout afficher"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Récents"</string>
+ <string name="send_message" msgid="8938418965550543196">"Envoyer le message"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Création d\'une copie personnelle en cours..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Hier"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Demain"</string>
+ <string name="today" msgid="8041090779381781781">"Aujourd\'hui"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Aujourd\'hui, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Demain, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Événement sans titre)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Définir"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 9824863..747a313 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"लोग"</string>
+ <string name="people" msgid="1190841469952343354">"संपर्क"</string>
<string name="contactsList" msgid="8661624236494819731">"संपर्क"</string>
<string name="shortcutContact" msgid="749243779392912958">"संपर्क"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"प्रत्यक्ष डायल"</string>
@@ -29,20 +29,19 @@
<string name="frequentList" msgid="7154768136473953056">"बार-बार"</string>
<string name="strequentList" msgid="5640192862059373511">"पसंदीदा"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"संपर्क विवरण"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"संपर्क देखें"</string>
<string name="editContactDescription" msgid="2947202828256214947">"संपर्क संपादित करें"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"संपर्क बनाएं"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"समूह संपादित करें"</string>
<string name="insertGroupDescription" msgid="5658512271662210139">"समूह बनाएं"</string>
<string name="contactDetailAbout" msgid="5430408883907061400">"इस बारे में"</string>
- <string name="contactDetailUpdates" msgid="3780588624763446941">"अपडेट"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"नई जानकारी"</string>
<string name="searchHint" msgid="8482945356247760701">"संपर्क खोजें"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"संपर्क देखें"</string>
<string name="menu_addStar" msgid="2908478235715404876">"पसंदीदा में जोड़ें"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"पसंदीदा से निकालें"</string>
<string name="menu_editContact" msgid="9042415603857662633">"संपादित करें"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"हटाएं"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"मुखपृष्ठ स्क्रीन पर रखें"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"मुख्यपृष्ठ स्क्रीन पर रखें"</string>
<string name="menu_call" msgid="3992595586042260618">"संपर्क को कॉल करें"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"इस संपर्क को SMS भेजें"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"अलग करें"</string>
@@ -65,9 +64,9 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"इस संपर्क में एकाधिक खातों की जानकारी है. केवल-पढ़ने के लिए खातों की जानकारी आपकी संपर्क सूचियों में छिपी रहेगी, उसे हटाया नहीं जाएगा."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"इस संपर्क को हटाने से एकाधिक खातों से जानकारी हट जाएगी."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"यह संपर्क हटा दिया जाएगा."</string>
- <string name="menu_discard" msgid="6456087569315685632">"छोड़ें"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"बदलावों को छोड़ें"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"संपर्क मौजूद नहीं है."</string>
- <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"मुखपृष्ठ स्क्रीन पर संपर्क विजेट जोड़ा गया."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"मुख्यपृष्ठ स्क्रीन पर संपर्क विजेट जोड़ा गया."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"नया संपर्क बनाएं"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"नया संपर्क बनाएं"</string>
<string-array name="otherLabels">
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"फ़ोन नंबर वाले <xliff:g id="COUNT">%d</xliff:g> संपर्क"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"फ़ोन नंबर वाले कोई संपर्क नहीं"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 संपर्क"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> संपर्क"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 मिला"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> मिले"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 मिला"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> मिले"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"सभी संपर्क"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"समूह"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"सभी संपर्क"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"पसंदीदा"</string>
<string name="callBack" msgid="5498224409038809224">"कॉल बैक करें"</string>
<string name="callAgain" msgid="3197312117049874778">"फिर से कॉल करें"</string>
<string name="returnCall" msgid="8171961914203617813">"रिटर्न कॉल"</string>
@@ -118,21 +113,22 @@
<string name="description_plus_button" msgid="515164827856229880">"जोड़ें"</string>
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="TOTAL_NUMBER">%s</xliff:g> में से <xliff:g id="CURRENT_NUMBER">%s</xliff:g> संपर्क"</string>
<string name="search_settings_description" msgid="2675223022992445813">"आपके संपर्कों के नाम"</string>
- <string name="quickcontact_missing_app" msgid="358168575340921552">"यह कार्यवाही प्रबंधित करने के लिए कोई एप्लिकेशन नहीं मिला."</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"यह कार्यवाही प्रबंधित करने के लिए कोई ऐप्स नहीं मिला."</string>
+ <string name="missing_app" msgid="1466111003546611387">"यह कार्यवाही प्रबंधित करने के लिए कोई ऐप्स नहीं मिला."</string>
<string name="menu_share" msgid="943789700636542260">"साझा करें"</string>
<string name="share_via" msgid="563121028023030093">"इसके द्वारा संपर्क साझा करें"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"खाते के तहत समूह बनाएं"</string>
- <string name="audio_chat" msgid="2535716629358298691">"ध्वनि चैट"</string>
- <string name="video_chat" msgid="1872255818640336072">"वीडियो चैट"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ध्वनि बातचीत"</string>
+ <string name="video_chat" msgid="1872255818640336072">"वीडियो बातचीत"</string>
<string name="connections" msgid="8098440723172028350">"कनेक्शन"</string>
<string name="add_connection_button" msgid="4861308615789601727">"कनेक्शन जोड़ें"</string>
<string name="recent" msgid="2659189233141493004">"हाल ही के"</string>
- <string name="recent_updates" msgid="4267258535615860710">"हाल ही के अपडेट"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"हाल ही के नई जानकारी"</string>
<string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> संपर्क"</string>
<!-- no translation found for from_account_format (4469138575127580203) -->
<skip />
<string name="use_photo_as_primary" msgid="8807110122951157246">"इस फ़ोटो का उपयोग करें"</string>
- <string name="contact_read_only" msgid="7421346527289472273">"इस एप्लिकेशन द्वारा संपादन-योग्य नहीं."</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"इस ऐप्स द्वारा संपादन-योग्य नहीं."</string>
<string name="no_contact_details" msgid="6636856378019344497">"इस संपर्क की कोई अतिरिक्त जानकारी नहीं है."</string>
<string name="group_read_only" msgid="1061762906115697637">"इस उपकरण पर संपादन योग्य नहीं."</string>
<string name="display_options_sort_list_by" msgid="6080091755852211076">"सूची को इसके अनुसार क्रमित करें"</string>
@@ -143,12 +139,12 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"कुलनाम पहले"</string>
<string name="take_photo" msgid="7496128293167402354">"फ़ोटो लें"</string>
<string name="take_new_photo" msgid="7341354729436576304">"नया फ़ोटो लें"</string>
- <string name="pick_photo" msgid="3746334626214970837">"गैलरी से फ़ोटो चुनें"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"गैलरी से नए फ़ोटो को चुनें"</string>
- <string name="locale_change_in_progress" msgid="7583992153091537467">"भाषा के परिवर्तन दिखाने के लिए संपर्क सूची को अपडेट किया जा रहा है."</string>
- <string name="upgrade_in_progress" msgid="474511436863451061">"संपर्क सूची अपडेट की जा रही है."</string>
- <string name="upgrade_out_of_memory" msgid="1209994418877625940">"संपर्क अपग्रेड होने की प्रक्रिया में हैं. \n\nअपग्रेड प्रक्रिया को लगभग <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB आंतरिक संग्रहण की आवश्यकता होती है.\n\nनिम्न विकल्पों में से कोई एक चुनें:"</string>
- <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"कुछ एप्लिकेशन अनइंस्टॉल करें"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"फ़ोटो चुनें"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"नई फ़ोटो चुनें"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"भाषा के परिवर्तन दिखाने के लिए संपर्क सूची से नई जानकारी मिल रही है."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"संपर्क सूची से नई जानकारी मिल रही है."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"संपर्क अपग्रेड होने की प्रक्रिया में हैं. \n\nअपग्रेड प्रक्रिया को लगभग <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB मोबाइल संग्रहण की आवश्यकता होती है.\n\nनिम्न विकल्पों में से कोई एक चुनें:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"कुछ ऐप्स अनइंस्टॉल करें"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"अपग्रेड का पुन: प्रयास करें"</string>
<string name="search_results_searching" msgid="3984833028938569930">"खोज रहा है…"</string>
<string name="menu_display_selected" msgid="6470001164297969034">"चयनित दिखाएं"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"संगठन जोड़ें"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"दिनांक"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"समूह नाम"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> द्वारा"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> द्वारा <xliff:g id="DATE">%1$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"पसंदीदा"</string>
<string name="edit_contact" msgid="7529281274005689512">"संपर्क संपादित करें"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"मेरे संपर्क में प्रतिलिपि बनाएं"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"मेरे संपर्क में जोड़ें"</string>
<string name="contact_directory_description" msgid="683398073603909119">"निर्देशिका <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"एक व्यक्तिगत प्रतिलिपि बना रहा है…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"कस्टम"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"सेटिंग"</string>
<string name="menu_settings" msgid="377929915873428211">"सेटिंग"</string>
@@ -189,7 +182,7 @@
<string name="social_widget_label" msgid="6378905543028924592">"संपर्क करें"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"लोड हो रहा है..."</string>
<string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एक नया संपर्क बनाएं"</string>
- <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"किसी खाते में साइन इन करें"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"किसी खाते में प्रवेश करें"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"संपर्क आयात करें"</string>
<string name="create_group_dialog_title" msgid="6874527142828424475">"नया समूह बनाएं"</string>
<string name="create_group_item_label" msgid="4411981763169654825">"नया समूह बनाएं"</string>
@@ -208,8 +201,8 @@
</plurals>
<string name="toast_join_with_empty_contact" msgid="2238581529864542985">"अन्य संपर्क से जुड़ने से पहले संपर्क नाम लिखें."</string>
<string name="copy_text" msgid="3257145021583508761">"क्लिपबोर्ड पर प्रतिलिपि बनाएं"</string>
- <string name="set_default" msgid="4417505153468300351">"डिफ़ॉल्ट सेट करें"</string>
- <string name="clear_default" msgid="7193185801596678067">"डिफ़ॉल्ट साफ़ करें"</string>
+ <string name="set_default" msgid="4417505153468300351">"सामान्य सेट करें"</string>
+ <string name="clear_default" msgid="7193185801596678067">"सामान्य साफ़ करें"</string>
<string name="toast_text_copied" msgid="5143776250008541719">"पाठ की प्रतिलिपि बनाई गई"</string>
<string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"आपके परिवर्तन छोड़ें?"</string>
<string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"मेरी स्थानीय प्रोफ़ाइल"</string>
<string name="external_profile_title" msgid="8034998767621359438">"मेरी <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> प्रोफ़ाइल"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"सभी संपर्क प्रदर्शित कर रहा है"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"लोग Google खाते के साथ बेहतर तरीके से कार्य करते हैं.\n\n• किसी भी वेब ब्राउज़र से पहुंचें.\n• सुरक्षित रूप से अपने संपर्कों का बैकअप लें."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"संपर्क Google खाते के साथ बेहतर कार्य करता है.\n\n• किसी भी वेब ब्राउज़र से एक्सेस करें.\n• अपने संपर्कों का सुरक्षित रूप से बैकअप लें."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"अपना फ़ोन खो देने पर भी अपने संपर्क सुरक्षित रखें: किसी ऑनलाइन सेवा से समन्वयित करें."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"कोई खाता जोड़ें"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"आपके नए संपर्क का बैक अप नहीं लिया जाएगा. ऐसा खाता जोड़ें जो संपर्कों का ऑनलाइन बैक अप ले?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"नया खाता जोड़ें"</string>
<string name="menu_export_database" msgid="2659719297530170820">"डेटाबेस फ़ाइलें निर्यात करें"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"चित्र. बदलने के लिए चुनें"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"नया संपर्क जोड़ें"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"अधिक देखें"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"कम देखें"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"सभी देखें"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"संपर्क"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"हाल ही का"</string>
+ <string name="send_message" msgid="8938418965550543196">"संदेश भेजें"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"व्यक्तिगत प्रति बनाई जा रही है..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"कल"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"कल"</string>
+ <string name="today" msgid="8041090779381781781">"आज"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"आज <xliff:g id="TIME_INTERVAL">%s</xliff:g> बजे"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"कल <xliff:g id="TIME_INTERVAL">%s</xliff:g> बजे"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(शीर्षक रहित ईवेंट)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"सेट करें"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 41f9f08..aa1f1f3 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Osobe"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakti"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakti"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Izravan poziv"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Često"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoriti"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Pojedinosti kontakta"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Prikaži kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Uredi kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Izradi kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Uredi skupinu"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ovaj kontakt sadrži informacije iz više računa. Informacije iz računa koji su samo za čitanje bit će skrivene na popise kontakata, a ne izbrisane."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Brisanjem ovog kontakta izbrisat ćete podatke s više računa."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Ovaj će kontakt biti izbrisan."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Odbaci"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Odbaci promjene"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt ne postoji."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget za kontakte dodan je na vaš početni zaslon."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Izrada novog kontakta"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Kontakata s tel. brojevima: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nema kontakata s telefonskim brojevima"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
- <item quantity="other" msgid="3578469907265375314">"Broj kontakata: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 pronađen"</item>
<item quantity="other" msgid="3852668542926965042">"Pronađeno kontakata: <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 pronađen"</item>
<item quantity="other" msgid="7988132539476575389">"Pronađeno kontakata: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Svi kontakti"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupe"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Svi kontakti"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoriti"</string>
<string name="callBack" msgid="5498224409038809224">"Povratni poziv"</string>
<string name="callAgain" msgid="3197312117049874778">"Zovi ponovo"</string>
<string name="returnCall" msgid="8171961914203617813">"Povratni poziv"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> od <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakata"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nazivi vaših kontakata"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nije pronađena nijedna aplikacija koja može provesti ovu radnju."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nije pronađena nijedna aplikacija koja može provesti tu radnju."</string>
<string name="menu_share" msgid="943789700636542260">"Podijeli"</string>
<string name="share_via" msgid="563121028023030093">"Dijeli kontakt putem"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Napravite skupinu pod računom"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najprije prezime"</string>
<string name="take_photo" msgid="7496128293167402354">"Snimi fotografiju"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Snimi novu fotografiju"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Iz Galerije odaberite fotografiju"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Odaberite novu fotografiju iz galerije"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Odaberite fotografiju"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Odaberite novu fotografiju"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Popis kontakata ažurira se da bi se pokazala promjena jezika."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Popis kontakata ažurira se."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontakti se nadograđuju. \n\nZa proces nadogradnje potrebno je približno <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB interne pohrane.\n\nOdaberite jednu od sljedećih opcija:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizaciju"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Naziv grupe"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"preko izvora <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> preko izvora <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Uredi kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiraj u Moje kontakte"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj u Moje kontakte"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Direktorij <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Stvaranje osobne kopije..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Prilagođeno"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Postavke"</string>
<string name="menu_settings" msgid="377929915873428211">"Postavke"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Moj lokalni profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Moj <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profil"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Prikaz svih kontakata"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Značajka Osobe radi bolje s Google računom.\n\n• Pristup iz bilo kojeg web-preglednika.\n• Stvorite sigurnosnu kopiju kontakata."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakti funkcioniraju bolje uz Google račun.\n\n• Pristupajte im iz bilo kojeg web-preglednika.\n• Stvorite sigurnosnu kopiju kontakata."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Očuvajte sigurnost svojih kontakata čak i ako izgubite telefon, sinkronizirajte ih mrežnom uslugom."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Dodajte račun"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Sigurnosna kopija novog kontakta neće biti napravljena. Želite li dodati račun za pravljenje sigurnosnih kopija kontakata na mreži?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Dodaj novi račun"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Izvezi datoteke podatkovne baze"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Slika. Odaberite za promjenu"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"dodavanje novog kontakta"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Pokaži više"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Pokaži manje"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Pokaži sve"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nedavno"</string>
+ <string name="send_message" msgid="8938418965550543196">"Pošalji poruku"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Izrada osobne kopije..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Jučer"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Sutra"</string>
+ <string name="today" msgid="8041090779381781781">"Danas"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Danas u <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Sutra u <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Događaj bez naslova)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Postavi"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index f38cf9a..bfb715e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Személyek"</string>
+ <string name="people" msgid="1190841469952343354">"Névjegyek"</string>
<string name="contactsList" msgid="8661624236494819731">"Címtár"</string>
<string name="shortcutContact" msgid="749243779392912958">"Névjegy"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Közvetlen tárcsázás"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Gyakori"</string>
<string name="strequentList" msgid="5640192862059373511">"Kedvencek"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Névjegy adatai"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Névjegy megtekintése"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Névjegy szerkesztése"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Névjegy létrehozása"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Csoport szerkesztése"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ez a névjegy több fiókból is tartalmaz adatokat. Az írásvédett fiókokból származó adatok nem jelennek meg a Címtárban, de nem kerülnek törlésre."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"A névjegy törlésével több fiókból is töröl adatokat."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"A névjegy törlésre kerül."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Elvetés"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Módosítások elvetése"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"A névjegy nem létezik."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"A Névjegy modul felkerült a kezdőképernyőre."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Új névjegy létrehozása"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> névjegy telefonszámmal"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nincsenek telefonszámot is tartalmazó névjegyek"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 névjegy"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> névjegy"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 találat"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> találat"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 találat"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> találat"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Az összes névjegy"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Csoportok"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Összes névjegy"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Kedvencek"</string>
<string name="callBack" msgid="5498224409038809224">"Visszahívás"</string>
<string name="callAgain" msgid="3197312117049874778">"Hívásismétlés"</string>
<string name="returnCall" msgid="8171961914203617813">"Visszahívás"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> névjegy"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Ismerősök nevei"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nincs megfelelő alkalmazás a művelet elvégzésére."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nincs megfelelő alkalmazás a művelet elvégzéséhez."</string>
<string name="menu_share" msgid="943789700636542260">"Megosztás"</string>
<string name="share_via" msgid="563121028023030093">"Névjegy megosztása a következőn:"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Csoport létrehozása a fiókban"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Vezetéknév elöl"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotó készítése"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Új fénykép készítése"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Fotó kiválasztása a Galériából"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Új fotó kiválasztása a Galériából"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Fotó kiválasztása"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Új fotó kiválasztása"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Az ismerőslista frissítése folyamatban van, hogy tükrözze a nyelv módosítását."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Az ismerőslista frissítése folyamatban van."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"A névjegyek frissítése folyamatban van. \n\nA frissítés elvégzéséhez megközelítőleg <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB belső tárhelyre lesz szükség.\n\nVálasszon a következő lehetőségek közül:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Szervezet hozzáadása"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Dátum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Csoport neve"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"- <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> - <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"kedvenc"</string>
<string name="edit_contact" msgid="7529281274005689512">"Névjegy szerkesztése"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Másolás a saját névjegyeim közé"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Hozzáadás a Címtárhoz"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Mappa: <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Személyes másolat készítése..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Egyéni"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Beállítások"</string>
<string name="menu_settings" msgid="377929915873428211">"Beállítások"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Helyi profilom"</string>
<string name="external_profile_title" msgid="8034998767621359438">"<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profilom"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Az összes névjegy megjelenítése"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"A Személyek alkalmazás jobban működik egy Google Fiókkal.\n\n• Bármilyen bőngészőből elérheti\n• Biztonsági másolatot készíthet névjegyeiről."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"A Névjegyek alkalmazás jobban működik egy Google-fiókkal.\n\n• Bármilyen böngészőből elérheti.\n• Biztonsági másolatot készíthet névjegyeiről."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Tartsa névjegyeit biztonságban akkor is, ha elveszíti a telefont: szinkronizáljon egy online szolgáltatással."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Fiók hozzáadása"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Az Ön új névjegyéről nem készül biztonsági másolat. Hozzáad egy olyan fiókot, amelyik online biztonsági másolatot készít a névjegyekről?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Új fiók hozzáadása"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Adatbázisfájlok exportálása"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Kép. Válassza ki a módosításhoz"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"új névjegy hozzáadása"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Továbbiak"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Kevesebb megjelenítése"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Az összes megjelenítése"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Névjegy"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Legutóbbiak"</string>
+ <string name="send_message" msgid="8938418965550543196">"Üzenet küldése"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Személyes másolat létrehozása…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Tegnap"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Holnap"</string>
+ <string name="today" msgid="8041090779381781781">"Ma"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Ma <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Holnap <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Névtelen esemény)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Beállítás"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..644dbcf
--- /dev/null
+++ b/res/values-hy-rAM/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Կոնտակտներ"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Կոնտակտներ"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Կոնտակտ"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Ուղիղ համարհավաքում"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Ուղիղ հաղորդագրություն"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Ընտրել կոնտակտի դյուրանցումը"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Ընտրել զանգելու համարը"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Ընտրել համարը՝ հաղորդագրելու համար"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Ընտրել կոնտակտ"</string>
+ <string name="starredList" msgid="4817256136413959463">"Աստղանշված"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Հաճախակի"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Ընտրյալներ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Մանրամասներ կոնտակտի մասին"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Խմբագրել կոնտակտը"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Ստեղծել կոնտակտ"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Խմբագրել խումբը"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Ստեղծել խումբ"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Տեղեկատվություն"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Թարմացումները"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Որոնել կոնտակտներ"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Դիտել կոնտակտը"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Ավելացնել ընտրյալներում"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Հեռացնել ընտրյալներից"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Խմբագրել"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Ջնջել"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Տեղադրել գլխավոր էկրանին"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Զանգել կոնտակտին"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Հաղորդագրել կոնտակտին"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Առանձնացնել"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Խմբագրել"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Ջնջել"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Ավելացնել կոնտակտ"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Ավելացնել խումբ"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Բաժանե՞լ կոնտակտը"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Այս կոնտակտը կբաժանվի մի քանի կոնտակտների:"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Միացնել"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Միացնել կոնտակտները"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Ընտրեք կոնտակտը, որը ցանկանում եք միացնել <xliff:g id="NAME">%s</xliff:g>-ին"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Ցույց տալ բոլոր կոնտակտները"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Առաջարկվող կոնտակները"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Բոլոր կոնտակտները"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Կոնտակտները միացվեցին"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Կարգավորել զանգերանգը"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Բոլոր զանգերը՝ ձայնային փոստին"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Դուք չէք կարող ջնջել միայն ընթերցման համար նախատեսված հաշիվների կոնտակտները, սակայն կարող եք ձեր կոնտակտների ցանկից թաքցնել:"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Այս կոնտակտը պարունակում է տվյալներմի քանի հաշվիներից: Միայն ընթերցելի հաշիվներից տվյալները կթաքցվեն ձեր կոնտակների ցանկից, չեն ջնջվի:"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Այս կոնտակտը ջնջելիս տվյալները ևս մի քանի հաշիվներից կջնջվեն:"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Այս կոնտակտը կջնջվի:"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Հրաժարվել փոփոխություններից"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Կոնտակտը գոյություն չունի:"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Կոնտակտի վիջեթը ավելացվեց Գլխավոր էկրանին:"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Ստեղծել նոր կոնտակտ"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Ստեղծել նոր կոնտակտ"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Կազմակերպություն"</item>
+ <item msgid="7196592230748086755">"Նշում"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Գրասալիկի վրա հասանելի նկարներ չկան:"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Հեռախոսում մատչելի լուսանկարներ չկան:"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Կոնտակտի լուսանկարը"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Պիտակի հատուկ անունը"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Ուղարկել զանգերը անմիջապես ձայնային փոստին"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Հեռացնել լուսանկարը"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Կոնտակտներ չկան:"</string>
+ <string name="noGroups" msgid="8614664663561385253">"Խմբեր չկան:"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Խմբեր ստեղծելու համար դուք պետք է հաշիվ ունենաք:"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Այս խմբում ոչ ոք չկա:"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Խմբագրեք` խմբին անդամ ավելացնելու համար:"</string>
+ <string name="savingContact" msgid="4075751076741924939">"Կոնտակտի պահվում է..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Կոնտակտը պահվեց:"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Հնարավոր չէ պահել կոնտակտային փոփոխությունները:"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Խումբը պահվեց:"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Հնարավոր չէ պահել խմբի փոփոխությունները:"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 կոնտակտ հեռախոսահամարով"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> կոնտակտ հեռախոսահամարներով"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Հեռախոսահամարներով կոնտակտներ չկան"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 գտնված"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> գտնված"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Կոտնակտներ չկան"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"գտնվել է 1-ը"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> գտնված"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Բոլոր կոնտակտները"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Ընտրանի"</string>
+ <string name="callBack" msgid="5498224409038809224">"Հետ զանգել"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Կրկին զանգել"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Հետ զանգել"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ավելացնե՞լ «<xliff:g id="EMAIL">%s</xliff:g>»-ը կոնտակտներին:"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"կոնտակտի լուսանկարը"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"գումարել"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>-ը <xliff:g id="TOTAL_NUMBER">%s</xliff:g> կոնտակտից"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Ձեր կոնտակտների անունները"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Այս գործողությունը կատարելու համար ոչ մի ծրագիր չի գտնվել:"</string>
+ <string name="missing_app" msgid="1466111003546611387">"Այս գործողությունը կատարելու համար ոչ մի ծրագիր չի գտնվել:"</string>
+ <string name="menu_share" msgid="943789700636542260">"Տարածել"</string>
+ <string name="share_via" msgid="563121028023030093">"Տարածել կոնտակտը"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Ստեղծել խումբ հաշվի ներքևում"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Ձայնային զրույց"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Տեսազրույց"</string>
+ <string name="connections" msgid="8098440723172028350">"Կապեր"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Ավելացնել կապ"</string>
+ <string name="recent" msgid="2659189233141493004">"Վերջին"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Վերջին թարմացումները"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> կոնտակտ"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Օգտագործել այս լուսանկարը"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Ենթակա չէ խմբագրման այս ծրագրով:"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Այս կոնտակտի համար չկան հավելյալ տվյալներ:"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Խմբագրելի չէ այս սարքից:"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Դասավորել ցանկը ըստ"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Անունի"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Ազգանունի"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Դիտել կոնտակտի անունները"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Առաջինը՝ անունը"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Առաջինը՝ ազգանունը"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Լուսանկարել"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Լուսանկարել նորը"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Ընտրել լուսանկար"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Ընտրել նոր լուսանկար"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Կոնտակտների ցանկը թարմացվում է՝ լեզվի փոփոխություններն արտացոլելու համար:"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Կոնտակտների ցանկը թարմացվում է:"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Կոնտակտները թարմացման գործընթացի մեջ են:\n\nԹարմացման գործընթացը պահանջում է մոտավորապես <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Մբ հեռախոսի ներքին պահոց:\n\nԸնտրեք հետևյալ ընրանքներից մեկը՝"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Ապատեղադրել որոշ ծրագրեր"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Կրկին փորձել թարմացնել"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Որոնում..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Ցույց տալ ընտրվածները"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Ցուցադրել բոլորը"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Ընտրել բոլորը"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Ապանշել բոլորը"</string>
+ <string name="add_field" msgid="2384260056674995230">"Ավելացնել այլ դաշտ"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Ավելացնել նորը"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Ավելացնել կազմակերպություն"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Ամսաթիվը"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Խմբի անունը"</string>
+ <string name="description_star" msgid="2605854427360036550">"ընտրյալ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Խմբագրել կոնտակտը"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"չմիավորված"</item>
+ <item quantity="other" msgid="425683718017380845">"միացվել է <xliff:g id="COUNT">%0$d</xliff:g> աղբյուրից"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Միացնե՞լ այս կոնտակտը ընտրված կոնտակտի հետ"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Փոխարկե՞լ ընտրված կոնտակտի խմբագրմանը: Մինչ այս պահը ձեր մուտքագրած տեղեկությունները կպատճենվեն:"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Պատճենել Իմ կոնտակտներում"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Ավելացնել Իմ կոնտակտներին"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> գրացուցակ"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Հատուկ"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Կարգավորումներ"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Կարգավորումներ"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Օգնություն"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Ցուցադրման ընտրանքներ"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Հեռախոսահամար"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Ավելացնել կոնտակտներում"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Ավելացնել կոնտակտին"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Փակել"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Ցուցադրել տարին"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Կոնտակտ"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Բեռնում..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Ստեղծել նոր կոնտակտ"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Մուտք գործել հաշիվ"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ներմուծել կոնտակտներ"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Ստեղծել նոր խումբ"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Ստեղծել նոր խումբ"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 խումբ"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> խումբ"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Ջնջե՞լ «<xliff:g id="GROUP_LABEL">%1$s</xliff:g>» խումբը: (Կոնտակտները չեն ջնջվի:)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> անձ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-ից"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> մարդ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-ից"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> անձ"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> մարդ"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Մուտքագրեք կոնտակտի անունը մեկ ուրիշի հետ միացնելուց առաջ:"</string>
+ <string name="copy_text" msgid="3257145021583508761">"Պատճենել սեղմատախտակին"</string>
+ <string name="set_default" msgid="4417505153468300351">"Սահմանել լռելյայն"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Մաքրել լռելյայն"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Տեքսը պատճենված է"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Հրաժարվե՞լ ձեր փոփոխություններից"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Կարգավորել իմ պրոֆիլը"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Մուտքագրեք անձի անունը"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Խմբի անունը"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Իմ տեղային պրոֆիլը"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Իմ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> պրոֆիլը"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Ցուցադրվում են բոլոր կոնտակտները"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Կոնտակտների հավելվածն ավելի լավ է աշխատում Google հաշվի հետ:\n\n• Մուտք գործեք ցանկացած վեբ դիտարկչով:\n• Պահուստավորեք ձեր կոնտակտներն ապահով ճանապարհով:"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Պահեք ձեր կոնտակտները ապահով, նույնիսկ եթե կորցնեք ձեր հեռախոսը. համաժամեցրեք առցանց ծառայության հետ:"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ավելացնել հաշիվ"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Ձեր նոր կոնտակտը չի պահուստավորվի: Ավելացնե՞լ հաշիվ, որն առցանց է պահուստավորում կոնտակտները:"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Ձեր նոր կոնտակտը կհամաժամեցվի <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-ի հետ:"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Դուք կարող եք համաժամեցնել ձեր նոր կոնտակտը այս հաշիվներից որևէ մեկի հետ: Ո՞րն եք ցանկանում ընտրել:"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Պահել տեղային"</string>
+ <string name="add_account" msgid="8201790677994503186">"Ավելացնել հաշիվ"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Ավելացնել նոր հաշիվ"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Արտահանել տվյալների շտեմարանի ֆայլերը"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Նկար: Ընտրեք՝ փոխելու համար"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ավելացնել նոր կոնտակտ"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Տեսնել ավելին"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Տեսնել պակաս"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Տեսնել բոլորը"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Կոնտակտ"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Վերջին գործողությունները"</string>
+ <string name="send_message" msgid="8938418965550543196">"Ուղարկել հաղորդագրություն"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Ստեղծվում է անձնական պատճենը..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Երեկ"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Վաղը"</string>
+ <string name="today" msgid="8041090779381781781">"Այսօր"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Այսօր՝ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Վաղը՝ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Անվերնագիր միջոցառում)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Սահմանել"</string>
+</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
new file mode 100644
index 0000000..6210868
--- /dev/null
+++ b/res/values-hy/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"Մարդիկ"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Կոնտակտներ"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Կոնտակտ"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Ուղիղ համարհավաքում"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Ուղիղ հաղորդագրություն"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Ընտրել կոնտակտի դյուրանցումը"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Ընտրել զանգելու համարը"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Ընտրել համարը՝ հաղորդագրելու համար"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Ընտրել կոնտակտ"</string>
+ <string name="starredList" msgid="4817256136413959463">"Աստղանշված"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Հաճախակի"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Ընտրյալներ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Մանրամասներ կոնտակտի մասին"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"Դիտել կոնտակտը"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Խմբագրել կոնտակտը"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Ստեղծել կոնտակտ"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Խմբագրել խումբը"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Ստեղծել խումբ"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Տեղեկատվություն"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Թարմացումները"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Որոնել կոնտակտներ"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Դիտել կոնտակտը"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Ավելացնել ընտրյալներում"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Հեռացնել ընտրյալներից"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Խմբագրել"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Ջնջել"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Տեղադրել գլխավոր էկրանին"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Զանգել կոնտակտին"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Հաղորդագրել կոնտակտին"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Առանձնացնել"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Խմբագրել"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Ջնջել"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Ավելացնել կոնտակտ"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Ավելացնել խումբ"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Բաժանե՞լ կոնտակտը"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Այս կոնտակտը կբաժանվի մի քանի կոնտակտների:"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Միացնել"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Միացնել կոնտակտները"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Ընտրեք կոնտակտը, որը ցանկանում եք միացնել <xliff:g id="NAME">%s</xliff:g>-ին"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Ցույց տալ բոլոր կոնտակտները"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Առաջարկվող կոնտակները"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Բոլոր կոնտակտները"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Կոնտակտները միացվեցին"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Կարգավորել զանգերանգը"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Բոլոր զանգերը՝ ձայնային փոստին"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Դուք չէք կարող ջնջել միայն ընթերցման համար նախատեսված հաշիվների կոնտակտները, սակայն կարող եք ձեր կոնտակտների ցանկից թաքցնել:"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Այս կոնտակտը պարունակում է տվյալներմի քանի հաշվիներից: Միայն ընթերցելի հաշիվներից տվյալները կթաքցվեն ձեր կոնտակների ցանկից, չեն ջնջվի:"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Այս կոնտակտը ջնջելիս տվյալները ևս մի քանի հաշիվներից կջնջվեն:"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Այս կոնտակտը կջնջվի:"</string>
+ <string name="menu_discard" msgid="6456087569315685632">"Հրաժարվել"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Կոնտակտը գոյություն չունի:"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Կոնտակտի վիջեթը ավելացվեց Գլխավոր էկրանին:"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Ստեղծել նոր կոնտակտ"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Ստեղծել նոր կոնտակտ"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Կազմակերպություն"</item>
+ <item msgid="7196592230748086755">"Նշում"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Գրասալիկի վրա հասանելի նկարներ չկան:"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Հեռախոսում մատչելի լուսանկարներ չկան:"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Կոնտակտի լուսանկարը"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Պիտակի հատուկ անունը"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Ուղարկել զանգերը անմիջապես ձայնային փոստին"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Հեռացնել լուսանկարը"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Կոնտակտներ չկան:"</string>
+ <string name="noGroups" msgid="8614664663561385253">"Խմբեր չկան:"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Խմբեր ստեղծելու համար դուք պետք է հաշիվ ունենաք:"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Այս խմբում ոչ ոք չկա:"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Խմբագրեք` խմբին անդամ ավելացնելու համար:"</string>
+ <string name="savingContact" msgid="4075751076741924939">"Կոնտակտի պահվում է..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Կոնտակտը պահվեց:"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Հնարավոր չէ պահել կոնտակտային փոփոխությունները:"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Խումբը պահվեց:"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Հնարավոր չէ պահել խմբի փոփոխությունները:"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 կոնտակտ հեռախոսահամարով"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> կոնտակտ հեռախոսահամարներով"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Հեռախոսահամարներով կոնտակտներ չկան"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 կոնտակտ"</item>
+ <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> կոնտակտ"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 գտնված"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> գտնված"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Կոտնակտներ չկան"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"գտնվել է 1-ը"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> գտնված"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"Բոլոր կոնտակտները"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"Խմբեր"</string>
+ <string name="callBack" msgid="5498224409038809224">"Հետ զանգել"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Կրկին զանգել"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Հետ զանգել"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ավելացնե՞լ «<xliff:g id="EMAIL">%s</xliff:g>»-ը կոնտակտներին:"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"կոնտակտի լուսանկարը"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"գումարել"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>-ը <xliff:g id="TOTAL_NUMBER">%s</xliff:g> կոնտակտից"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Ձեր կոնտակտների անունները"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Այս գործողությունը կատարելու համար ոչ մի ծրագիր չի գտնվել:"</string>
+ <string name="menu_share" msgid="943789700636542260">"Տարածել"</string>
+ <string name="share_via" msgid="563121028023030093">"Տարածել կոնտակտը"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Ստեղծել խումբ հաշվի ներքևում"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Ձայնային զրույց"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Տեսազրույց"</string>
+ <string name="connections" msgid="8098440723172028350">"Կապեր"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Ավելացնել կապ"</string>
+ <string name="recent" msgid="2659189233141493004">"Վերջին"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Վերջին թարմացումները"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> կոնտակտ"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Օգտագործել այս լուսանկարը"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Ենթակա չէ խմբագրման այս ծրագրով:"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Այս կոնտակտի համար չկան հավելյալ տվյալներ:"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Խմբագրելի չէ այս սարքից:"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Դասավորել ցանկը ըստ"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Կոչված անունը"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Ազգանունը"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Դիտել կոնտակտի անունները"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Առաջինը՝ կոչված անունը"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Առաջինը՝ ազգանունը"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Լուսանկարել"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Լուսանկարել նորը"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"Ընտրել լուսանկարների պատկերասրահից"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"Ընտրել նոր լուսանկար Պատկերասրահից"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Կոնտակտների ցանկը թարմացվում է՝ լեզվի փոփոխություններն արտացոլելու համար:"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Կոնտակտների ցանկը թարմացվում է:"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Կոնտակտները թարմացման գործընթացի մեջ են:\n\nԹարմացման գործընթացը պահանջում է մոտավորապես <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Մբ հեռախոսի ներքին պահոց:\n\nԸնտրեք հետևյալ ընրանքներից մեկը՝"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Ապատեղադրել որոշ ծրագրեր"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Կրկին փորձել թարմացնել"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Որոնում..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Ցույց տալ ընտրվածները"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Ցուցադրել բոլորը"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Ընտրել բոլորը"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Ապանշել բոլորը"</string>
+ <string name="add_field" msgid="2384260056674995230">"Ավելացնել այլ դաշտ"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Ավելացնել նորը"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Ավելացնել կազմակերպություն"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Ամսաթիվը"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Խմբի անունը"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>-ի միջոցով"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g>-ով"</string>
+ <string name="description_star" msgid="2605854427360036550">"ընտրյալ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Խմբագրել կոնտակտը"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"չմիավորված"</item>
+ <item quantity="other" msgid="425683718017380845">"միացվել է <xliff:g id="COUNT">%0$d</xliff:g> աղբյուրից"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Միացնե՞լ այս կոնտակտը ընտրված կոնտակտի հետ"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Փոխարկե՞լ ընտրված կոնտակտի խմբագրմանը: Մինչ այս պահը ձեր մուտքագրած տեղեկությունները կպատճենվեն:"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Պատճենել Իմ կոնտակտներում"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Ավելացնել Իմ կոնտակտներին"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> գրացուցակ"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"Ստեղծվում է անձնական պատճենը..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Հատուկ"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Կարգավորումներ"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Կարգավորումներ"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Օգնություն"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Ցուցադրման ընտրանքներ"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Հեռախոսահամար"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Ավելացնել կոնտակտներում"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Ավելացնել կոնտակտին"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Փակել"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Ցուցադրել տարին"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Կոնտակտ"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Բեռնում..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Ստեղծել նոր կոնտակտ"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Մուտք գործել հաշիվ"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Ներմուծել կոնտակտներ"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Ստեղծել նոր խումբ"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Ստեղծել նոր խումբ"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 խումբ"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> խումբ"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Ջնջե՞լ «<xliff:g id="GROUP_LABEL">%1$s</xliff:g>» խումբը: (Կոնտակտները չեն ջնջվի:)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> անձ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-ից"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> մարդ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-ից"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> անձ"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> մարդ"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Մուտքագրեք կոնտակտի անունը մեկ ուրիշի հետ միացնելուց առաջ:"</string>
+ <string name="copy_text" msgid="3257145021583508761">"Պատճենել սեղմատախտակին"</string>
+ <string name="set_default" msgid="4417505153468300351">"Սահմանել լռելյայն"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Մաքրել լռելյայն"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Տեքսը պատճենված է"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Հրաժարվե՞լ ձեր փոփոխություններից"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Կարգավորել իմ պրոֆիլը"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Մուտքագրեք անձի անունը"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Խմբի անունը"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Իմ տեղային պրոֆիլը"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Իմ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> պրոֆիլը"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Ցուցադրվում են բոլոր կոնտակտները"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"Մարդիկ ծրագիրը ավելի լավ է աշխատում Google հաշիվների հետ:\n\n• Մուտք գործեք ցանկացած դիտարկչով:\n• Կրկնօրինակեք ձեր կոնտակտները ապահով կերպով:"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Պահեք ձեր կոնտակտները ապահով, նույնիսկ եթե կորցնեք ձեր հեռախոսը. համաժամեցրեք առցանց ծառայության հետ:"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ավելացնել հաշիվ"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Ձեր նոր կոնտակտը չի պահուստավորվի: Ավելացնե՞լ հաշիվ, որն առցանց է պահուստավորում կոնտակտները:"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Ձեր նոր կոնտակտը կհամաժամեցվի <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-ի հետ:"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Դուք կարող եք համաժամեցնել ձեր նոր կոնտակտը այս հաշիվներից որևէ մեկի հետ: Ո՞րն եք ցանկանում ընտրել:"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Պահել տեղային"</string>
+ <string name="add_account" msgid="8201790677994503186">"Ավելացնել հաշիվ"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Ավելացնել նոր հաշիվ"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Արտահանել տվյալների շտեմարանի ֆայլերը"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Նկար: Ընտրեք՝ փոխելու համար"</string>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 83654cc..32392f1 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Orang"</string>
+ <string name="people" msgid="1190841469952343354">"Kontak"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontak"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontak"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Panggilan langsung"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Sering"</string>
<string name="strequentList" msgid="5640192862059373511">"Favorit"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detail kontak"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Lihat kontak"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Edit kontak"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Buat kontak"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Edit grup"</string>
@@ -60,12 +59,12 @@
<string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Semua kontak"</string>
<string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontak telah bergabung"</string>
<string name="menu_set_ring_tone" msgid="8728345772068064946">"Setel nada dering"</string>
- <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Semua panggilan ke kotak pesan"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Panggilan masuk kotak pesan"</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"Anda tidak dapat menghapus kontak dari akun hanya-baca, namun Anda dapat menyembunyikannya dalam daftar kontak Anda."</string>
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Kontak ini berisi informasi dari beberapa akun. Informasi dari akun hanya-baca akan disembunyikan dalam daftar kontak Anda, tidak dihapus."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Menghapus kontak ini akan menghapus informasi dari beberapa akun."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Kontak ini akan dihapus."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Buang"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Batalkan perubahan"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontak tidak ada."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget kontak ditambahkan ke layar Utama."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Buat kontak baru"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontak dengan nomor telepon"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Tidak ada kontak dengan nomor telepon"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontak"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontak"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Ada 1"</item>
<item quantity="other" msgid="3852668542926965042">"Ada <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Ada 1"</item>
<item quantity="other" msgid="7988132539476575389">"Ada <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Semua kontak"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grup"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Semua kontak"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favorit"</string>
<string name="callBack" msgid="5498224409038809224">"Hubungi kembali"</string>
<string name="callAgain" msgid="3197312117049874778">"Hubungi sekali lagi"</string>
<string name="returnCall" msgid="8171961914203617813">"Panggilan kembali"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> dari <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontak"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nama kontak Anda"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Tidak ada apl yang ditemukan untuk menangani tindakan ini."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Tidak ditemukan aplikasi untuk menangani tindakan ini."</string>
<string name="menu_share" msgid="943789700636542260">"Bagikan"</string>
<string name="share_via" msgid="563121028023030093">"Bagikan kontak melalui"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Buat grup dalam akun"</string>
@@ -135,7 +131,7 @@
<string name="contact_read_only" msgid="7421346527289472273">"Tidak dapat diedit dari apl ini."</string>
<string name="no_contact_details" msgid="6636856378019344497">"Tidak ada informasi tambahan untuk kontak ini."</string>
<string name="group_read_only" msgid="1061762906115697637">"Tidak dapat diedit pada perangkat ini."</string>
- <string name="display_options_sort_list_by" msgid="6080091755852211076">"Sortir daftar menurut"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Urutkan daftar menurut"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nama depan"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Nama keluarga"</string>
<string name="display_options_view_names_as" msgid="4386932036180428374">"Lihat nama kontak"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nama keluarga pertama"</string>
<string name="take_photo" msgid="7496128293167402354">"Ambil foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Ambil foto baru"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Pilih foto dari Galeri"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Pilih foto baru dari Galeri"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Pilih foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Pilih foto baru"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Daftar kontak sedang diperbarui untuk mencerminkan perubahan bahasa."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Daftar kontak sedang diperbarui."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontak sedang dalam proses peningkatan versi. \n\nProses peningkatan versi memerlukan sekitar <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB dari penyimpanan internal.\n\nPilih salah satu opsi berikut:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Tambahkan organisasi"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tanggal"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nama grup"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"melalui <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> melalui <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Edit kontak"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Salin ke Kontak Saya"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Tambahkan ke Kontak Saya"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Direktori <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Membuat salinan pribadi..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Khusus"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Setelan"</string>
<string name="menu_settings" msgid="377929915873428211">"Setelan"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Profil lokal saya"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> saya"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Menampilkan semua kontak"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Orang bekerja lebih baik dengan Akun Google.\n\n• Akses dari browser web mana pun.\n• Cadangkan kontak Anda dengan aman."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontak bekerja lebih baik dengan Akun Google.\n\n• Akses dari browser web apa pun.\n• Cadangkan kontak Anda dengan aman."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Tetap amankan kontak Anda jika kehilangan ponsel: sinkronkan dengan layanan online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Tambahkan akun"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Kontak baru Anda tidak akan dicadangkan. Tambahkan akun yang mencadangkan kontak secara online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Tambahkan akun baru"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Ekspor file basis data"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Gambar. Pilih untuk mengubah"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"menambah kontak baru"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Lihat lebih banyak"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Lihat lebih sedikit"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Lihat semua"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontak"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Terbaru"</string>
+ <string name="send_message" msgid="8938418965550543196">"Kirim pesan"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Membuat salinan pribadi..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Kemarin"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Besok"</string>
+ <string name="today" msgid="8041090779381781781">"Hari ini"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hari ini pukul <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Besok pukul <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Acara tanpa judul)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Setel"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 08c513c..eb83d4b 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Persone"</string>
+ <string name="people" msgid="1190841469952343354">"Contatti"</string>
<string name="contactsList" msgid="8661624236494819731">"Contatti"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contatto"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Composizione diretta"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frequenti"</string>
<string name="strequentList" msgid="5640192862059373511">"Preferiti"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Dettagli contatto"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Visualizza contatto"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Modifica contatto"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Crea contatto"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Modifica gruppo"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Il contatto contiene informazioni da più account. Le informazioni provenienti da account di sola lettura verranno nascoste nei tuoi elenchi di contatti, non eliminate."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"L\'eliminazione di questo contatto causerà l\'eliminazione di informazioni da più account."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Il contatto verrà eliminato."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Ignora"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Ignora modifiche"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Contatto non esistente."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget del contatto aggiunto alla schermata Home."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Crea nuovo contatto"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contatti con numeri di telefono"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nessun contatto con numeri di telefono"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contatto"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contatti"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 trovato"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> trovati"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 trovato"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> trovati"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Tutti i contatti"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruppi"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tutti i cont."</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Preferiti"</string>
<string name="callBack" msgid="5498224409038809224">"Richiama"</string>
<string name="callAgain" msgid="3197312117049874778">"Richiama"</string>
<string name="returnCall" msgid="8171961914203617813">"Chiama numero"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> contatti su <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
<string name="search_settings_description" msgid="2675223022992445813">"I nomi dei tuoi contatti"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nessuna applicazione trovata per gestire questa azione."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nessuna applicazione trovata per gestire questa azione."</string>
<string name="menu_share" msgid="943789700636542260">"Condividi"</string>
<string name="share_via" msgid="563121028023030093">"Condividi contatto tramite"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crea un gruppo nell\'account"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Prima il cognome"</string>
<string name="take_photo" msgid="7496128293167402354">"Scatta foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Scatta nuova foto"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Scegli la foto dalla Galleria"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Seleziona nuova foto da galleria"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Scegli foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Seleziona nuova foto"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Elenco contatti in fase di aggiornamento per l\'applicazione della modifica della lingua."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Elenco contatti in fase di aggiornamento."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Contatti in fase di upgrade. \n\nIl processo di upgrade richiede circa <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB di memoria interna.\n\nScegli una delle seguenti opzioni:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Aggiungi organizzazione"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nome del gruppo"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"tramite <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> tramite <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"preferiti"</string>
<string name="edit_contact" msgid="7529281274005689512">"Modifica contatto"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copia nei miei contatti"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Aggiungi ai contatti personali"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directory <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Creazione di una copia personale..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizzato"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Impostazioni"</string>
<string name="menu_settings" msgid="377929915873428211">"Impostazioni"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Il mio profilo locale"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Il mio profilo <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Sono visualizzati tutti i contatti"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"L\'applicazione People funziona meglio con un account Google.\n\n• Puoi accedervi da qualsiasi browser web.\n• Effettua il backup dei tuoi contatti in modo sicuro."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"L\'app Contatti funziona meglio con un account Google.\n\n• Accedi da qualsiasi browser web.\n• Effettua il backup dei tuoi contatti in modo sicuro."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Tieni al sicuro i tuoi contatti anche se perdi il telefono: sincronizzali con un servizio online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Aggiungi un account"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Non verrà effettuato il backup del nuovo contatto. Aggiungere un account che effettua il backup dei contatti online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Aggiungi nuovo account"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Esporta file database"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Immagine. Seleziona per modificare"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"aggiungi nuovo contatto"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Mostra altro"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Mostra meno"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Mostra tutto"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contatto"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recenti"</string>
+ <string name="send_message" msgid="8938418965550543196">"Invia messaggio"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Creazione di una copia personale..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ieri"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Domani"</string>
+ <string name="today" msgid="8041090779381781781">"Oggi"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Oggi alle ore <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Domani alle ore <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Evento senza titolo)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Imposta"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index fbcce59..15dd9e9 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"אנשים"</string>
+ <string name="people" msgid="1190841469952343354">"אנשי קשר"</string>
<string name="contactsList" msgid="8661624236494819731">"אנשי קשר"</string>
<string name="shortcutContact" msgid="749243779392912958">"איש קשר"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"חיוג ישיר"</string>
@@ -29,12 +29,11 @@
<string name="frequentList" msgid="7154768136473953056">"לעתים קרובות"</string>
<string name="strequentList" msgid="5640192862059373511">"מועדפים"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"פרטי איש קשר"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"הצג איש קשר"</string>
<string name="editContactDescription" msgid="2947202828256214947">"ערוך איש קשר"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"צור איש קשר"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"ערוך קבוצה"</string>
<string name="insertGroupDescription" msgid="5658512271662210139">"צור קבוצה"</string>
- <string name="contactDetailAbout" msgid="5430408883907061400">"מידע על"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"מידע כללי"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"עדכונים"</string>
<string name="searchHint" msgid="8482945356247760701">"חפש אנשי קשר"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"הצג איש קשר"</string>
@@ -65,16 +64,16 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"איש קשר זה מכיל מידע מחשבונות מרובים. מידע מחשבונות לקריאה בלבד יוסתר ברשימות אנשי הקשר ולא יימחק."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"מחיקת איש קשר זה תמחק מידע מחשבונות מרובים."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"איש קשר זה יימחק."</string>
- <string name="menu_discard" msgid="6456087569315685632">"מחק"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"בטל שינויים"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"איש הקשר לא קיים."</string>
- <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"widget של אנשי קשר נוסף למסך הבית."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"widget של אנשי קשר נוסף למסך הבית."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"צור איש קשר חדש"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"צור איש קשר חדש"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"ארגון"</item>
<item msgid="7196592230748086755">"הערה"</item>
</string-array>
- <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"אין תמונות זמינות בטבלט."</string>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"אין תמונות זמינות בטאבלט."</string>
<string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"אין תמונות זמינות בטלפון."</string>
<string name="attach_photo_dialog_title" msgid="5599827035558557169">"תמונה של איש קשר"</string>
<string name="customLabelPickerTitle" msgid="1081475101983255212">"שם תווית בהתאמה אישית"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> אנשי קשר עם מספרי טלפון"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"אין אנשי קשר עם מספרי טלפון"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"איש קשר אחד"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> אנשי קשר"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"נמצא אחד"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> נמצאו"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"נמצא אחד"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> נמצאו"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"כל אנשי הקשר"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"קבוצות"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"כל אנשי הקשר"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"מועדפים"</string>
<string name="callBack" msgid="5498224409038809224">"התקשר חזרה"</string>
<string name="callAgain" msgid="3197312117049874778">"התקשר שוב"</string>
<string name="returnCall" msgid="8171961914203617813">"התקשר בחזרה"</string>
@@ -118,7 +113,8 @@
<string name="description_plus_button" msgid="515164827856229880">"חיבור"</string>
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> מתוך <xliff:g id="TOTAL_NUMBER">%s</xliff:g> אנשי קשר"</string>
<string name="search_settings_description" msgid="2675223022992445813">"השמות של אנשי הקשר"</string>
- <string name="quickcontact_missing_app" msgid="358168575340921552">"לא נמצא יישום שיכול לטפל בפעולה זו."</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"לא נמצאה אפליקציה שיכולה לטפל בפעולה זו."</string>
+ <string name="missing_app" msgid="1466111003546611387">"לא נמצאה אפליקציה שיכולה לטפל בפעולה זו."</string>
<string name="menu_share" msgid="943789700636542260">"שתף"</string>
<string name="share_via" msgid="563121028023030093">"שתף איש קשר באמצעות"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"צור קבוצה עבור חשבון"</string>
@@ -132,7 +128,7 @@
<!-- no translation found for from_account_format (4469138575127580203) -->
<skip />
<string name="use_photo_as_primary" msgid="8807110122951157246">"השתמש בתמונה זו"</string>
- <string name="contact_read_only" msgid="7421346527289472273">"לא ניתן לעריכה מיישום זה."</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"לא ניתן לעריכה מאפליקציה זו."</string>
<string name="no_contact_details" msgid="6636856378019344497">"אין מידע נוסף על איש קשר זה."</string>
<string name="group_read_only" msgid="1061762906115697637">"לא ניתן לעריכה במכשיר זה"</string>
<string name="display_options_sort_list_by" msgid="6080091755852211076">"מיין רשימה לפי"</string>
@@ -143,12 +139,12 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"שם משפחה תחילה"</string>
<string name="take_photo" msgid="7496128293167402354">"צלם תמונה"</string>
<string name="take_new_photo" msgid="7341354729436576304">"צלם תמונה חדשה"</string>
- <string name="pick_photo" msgid="3746334626214970837">"בחר תמונה מתוך \'גלריה\'"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"בחר תמונה חדשה מהגלריה"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"בחר תמונה"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"בחר תמונה חדשה"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"רשימת אנשי הקשר מתעדכנת כדי לשקף את שינוי השפה."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"רשימת אנשי הקשר מתעדכנת."</string>
- <string name="upgrade_out_of_memory" msgid="1209994418877625940">"מתבצע כרגע שדרוג של אנשי הקשר. \n\nעבור תהליך השדרוג נדרש אחסון פנימי בנפח של כ-<xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB.\n\nבחר אחת מהאפשרויות הבאות:"</string>
- <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"הסר התקנה של יישומים מסוימים"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"מתבצע כרגע שדרוג של אנשי הקשר. \n\nעבור תהליך השדרוג נדרש אחסון פנימי בנפח של כ-<xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB.\n\nבחר אחת מהאפשרויות הבאות:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"הסר התקנה של אפליקציות מסוימות"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"נסה שוב לשדרג"</string>
<string name="search_results_searching" msgid="3984833028938569930">"מחפש..."</string>
<string name="menu_display_selected" msgid="6470001164297969034">"הצג פריטים שנבחרו"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"הוסף ארגון"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"תאריך"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"שם קבוצה"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"באמצעות <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> באמצעות <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"מועדף"</string>
<string name="edit_contact" msgid="7529281274005689512">"ערוך איש קשר"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"העתק אל \'אנשי הקשר שלי\'"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"הוסף ל\'אנשי הקשר שלי\'"</string>
<string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> ספריה"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"יוצר עותק אישי..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"מותאם אישית"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"הגדרות"</string>
<string name="menu_settings" msgid="377929915873428211">"הגדרות"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"הפרופיל המקומי שלי"</string>
<string name="external_profile_title" msgid="8034998767621359438">"פרופיל <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> שלי"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"מציג את כל אנשי הקשר"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"\'אנשים\' עובד טוב יותר עם חשבון Google. \n \n • גישה מכל דפדפן אינטרנט. \n • גיבוי אנשי הקשר באופן מאובטח."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"\'אנשי קשר\' פועל טוב יותר עם חשבון Google.\n\n• קבל גישה מכל דפדפן אינטרנט.\n• גבה את אנשי הקשר באופן מאובטח."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"דאג שלא תאבד את אנשי הקשר שלך גם אם הטלפון שלך יאבד: בצע סנכרון עם שירות מקוון."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"הוסף חשבון"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"איש הקשר החדש שלך לא יגובה. להוסיף חשבון שמגבה אנשי קשר באופן מקוון?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"הוסף חשבון חדש"</string>
<string name="menu_export_database" msgid="2659719297530170820">"ייצוא קובצי מסד נתונים"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"תמונה. בחר כדי לשנות"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"הוסף איש קשר חדש"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"הצג יותר"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"הצג פחות"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"הצג הכל"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"איש קשר"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"מהזמן האחרון"</string>
+ <string name="send_message" msgid="8938418965550543196">"שלח הודעה"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"יוצר עותק אישי..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"אתמול"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"מחר"</string>
+ <string name="today" msgid="8041090779381781781">"היום"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"היום ב-<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"מחר ב-<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(אירוע ללא שם)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"הגדר"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 7bfc49c..2f90358 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"連絡帳"</string>
+ <string name="people" msgid="1190841469952343354">"連絡先"</string>
<string name="contactsList" msgid="8661624236494819731">"連絡先"</string>
<string name="shortcutContact" msgid="749243779392912958">"連絡先"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"直接発信"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"よく使う連絡先"</string>
<string name="strequentList" msgid="5640192862059373511">"お気に入り"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"連絡先情報"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"連絡先を表示"</string>
<string name="editContactDescription" msgid="2947202828256214947">"連絡先を編集"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"連絡先を新規登録"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"グループの編集"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"この連絡先には、複数のアカウント情報が含まれています。読み取り専用アカウントの情報を連絡先リストで非表示にすることはできますが、削除はできません。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"この連絡先を削除すると、複数のアカウント情報が削除されます。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"この連絡先を削除します。"</string>
- <string name="menu_discard" msgid="6456087569315685632">"キャンセル"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"変更を破棄"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"連絡先が存在しません。"</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ホーム画面に連絡先ウィジェットを追加しました。"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"連絡先を新規登録"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"電話番号のある連絡先<xliff:g id="COUNT">%d</xliff:g>件"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"電話番号付きの連絡先はありません"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"連絡先1件"</item>
- <item quantity="other" msgid="3578469907265375314">"連絡先<xliff:g id="COUNT">%d</xliff:g>件"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1件見つかりました"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g>件見つかりました"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1件見つかりました"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g>件見つかりました"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"すべての連絡先"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"グループ"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"すべての連絡先"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"お気に入り"</string>
<string name="callBack" msgid="5498224409038809224">"コールバック"</string>
<string name="callAgain" msgid="3197312117049874778">"再発信"</string>
<string name="returnCall" msgid="8171961914203617813">"発信"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件のファイル"</string>
<string name="search_settings_description" msgid="2675223022992445813">"連絡先の名前"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"この操作を行うアプリが見つかりませんでした。"</string>
+ <string name="missing_app" msgid="1466111003546611387">"この操作を行うアプリが見つかりませんでした。"</string>
<string name="menu_share" msgid="943789700636542260">"共有"</string>
<string name="share_via" msgid="563121028023030093">"連絡先の共有ツール"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"次のアカウントにグループを作成"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"姓が先"</string>
<string name="take_photo" msgid="7496128293167402354">"写真を撮影"</string>
<string name="take_new_photo" msgid="7341354729436576304">"新しい写真を撮る"</string>
- <string name="pick_photo" msgid="3746334626214970837">"ギャラリーから画像を選ぶ"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"ギャラリーから新しい写真を選ぶ"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"写真を選択"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"新しい写真を選択"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"言語の変更に伴い連絡先リストを更新しています。"</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"連絡先リストを更新しています。"</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"連絡先をアップグレードしています。\n\nアップグレード処理には約<xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g>MBの内部ストレージが必要です。\n\n次のいずれかのオプションを選択してください:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"所属を追加"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"日付"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"グループ名"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>経由"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>、<xliff:g id="SOURCE">%2$s</xliff:g>経由"</string>
<string name="description_star" msgid="2605854427360036550">"お気に入り"</string>
<string name="edit_contact" msgid="7529281274005689512">"連絡先の編集"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Myコンタクトにコピー"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Myコンタクトに追加"</string>
<string name="contact_directory_description" msgid="683398073603909119">"ディレクトリ<xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"個人用コピーを作成しています..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"カスタム"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
<string name="menu_settings" msgid="377929915873428211">"設定"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"ローカルプロフィール"</string>
<string name="external_profile_title" msgid="8034998767621359438">"<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>のプロフィール"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"すべての連絡先を表示しています"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Googleアカウントがあればユーザーアプリをもっと活用できます。\n\n• どのウェブブラウザからもアクセスできます。\n• 連絡先を安全にバックアップできます。"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Googleアカウントがあれば連絡先をもっと活用できます。\n\n• どのウェブブラウザからもアクセスできます。\n• 連絡先を安全にバックアップできます。"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"携帯端末を紛失したときにも連絡先を保護するため、オンラインサービスと同期させます。"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"アカウントの追加"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"新しい連絡先はバックアップされません。オンラインで連絡先をバックアップするアカウントを追加しますか?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"新しいアカウントを追加"</string>
<string name="menu_export_database" msgid="2659719297530170820">"データベースファイルをエクスポート"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"画像: 選択して変更"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"新しい連絡先を追加"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"もっと見る"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"一部を表示"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"すべて表示"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"連絡先"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"最近"</string>
+ <string name="send_message" msgid="8938418965550543196">"メッセージの送信"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"個人用コピーを作成しています..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"昨日"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"明日"</string>
+ <string name="today" msgid="8041090779381781781">"今日"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"今日の<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"明日の<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>の<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(無題の予定)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"設定"</string>
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..9d05a13
--- /dev/null
+++ b/res/values-ka-rGE/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"კონტაქტები"</string>
+ <string name="contactsList" msgid="8661624236494819731">"კონტაქტები"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"კონტაქტი"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"სწრაფი დარეკვა"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"სწრაფი შეტყობინება"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"კონტაქტის მალსახმობის არჩევა"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"დასარეკად აირჩიეთ ნომერი"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ნომრის შერჩევა შეტყობინების გასაგზავნად"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"კონტაქტის არჩევა"</string>
+ <string name="starredList" msgid="4817256136413959463">"ვარსკვლავიანი"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ხშირი"</string>
+ <string name="strequentList" msgid="5640192862059373511">"რჩეულები"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"კონტაქტის დეტალები"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"კონტაქტის რედაქტირება"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"კონტაქტის შექმნა"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"ჯგუფის რედაქტირება"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"ჯგუფის შექმნა"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"შესახებ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"განახლებები"</string>
+ <string name="searchHint" msgid="8482945356247760701">"კონტაქტებში ძიება"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"კონტაქტის ნახვა"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"რჩეულებში დამატება"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"რჩეულებიდან ამოშლა"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"რედაქტირება"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"წაშლა"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"მთავარ ეკრანზე განთავსება"</string>
+ <string name="menu_call" msgid="3992595586042260618">"დარეკვა კონტაქტთან"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"ტექსტური შეტყობინების გაგზავნა კონტაქტისთვის"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"დაშლა"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"რედაქტირება"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"წაშლა"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"კონტაქტის დამატება"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"ჯგუფის დამატება"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"გსურთ კონტაქტის დაშლა?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"ეს კონტაქტი დაიშლება მრავალ კონტაქტად."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"შეერთება"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"კონტაქტების შეერთება"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"აირჩიეთ კონტაქტი, რომელიც გსურთ შეუერთოთ <xliff:g id="NAME">%s</xliff:g>-ს:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"ყველა კონტაქტის ჩვენება"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"შემოთავაზებული კონტაქტები"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ყველა კონტაქტი"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"შემოერთებული კონტაქტები"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"ზარის დაყენება"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ყველა ზარი ხმოვან ფოსტაში"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"მხოლოდ კითხვადი ანგარიშებიდან კონტაქტების წაშლა შეუძლებელია, თუმცა შეგიძლიათ დამალოთ ისინი კონტაქტების სიაში."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ეს კონტაქტი შეიცავს ინფორმაციას სხვადასხვა ანგარიშებიდან. ინფორმაცია მხოლოდ კითხვადი ანგარიშებიდან არ წაიშლება, არამედ დაიმალება კონტაქტების სიაში."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ამ კონტაქტის წაშლით წაიშლება ინფორმაცია რამდენიმე ანგარიშიდან."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"ეს კონტაქტი წაიშლება."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"ცვლილებების გაუქმება"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"კონტაქტი არ არსებობს."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"მთავარ ეკრანს დაემატა კონტაქტების ვიჯეტი."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"ახალი კონტაქტის შექმნა"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"ახალი კონტაქტის შექმნა"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ორგანიზაცია"</item>
+ <item msgid="7196592230748086755">"შენიშვნა"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ტაბლეტზე სურათები მიუწვდომელია."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"ტელეფონზე სურათები არ არის."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"კონტაქტის ფოტო"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"მორგებული ლეიბლის სახელი"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"ზარების პირდაპირ ხმოვან ფოსტაში გაგზავნა"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ფოტოების წაშლა"</string>
+ <string name="noContacts" msgid="8579310973261953559">"კონტაქტები არ არის."</string>
+ <string name="noGroups" msgid="8614664663561385253">"ჯგუფები არ არის."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ჯგუფების შესაქმნელად გესაჭიროებათ ანგარიში."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"ამ ჯგუფში ხალხი არ არის."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"წევრთა დასამატებლად შეასრულეთ ჯგუფის რედაქტირება."</string>
+ <string name="savingContact" msgid="4075751076741924939">"კონტაქტის შენახვა…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"კონტაქტი შენახულია."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"კონტაქტის ცვლილებების შენახვა ვერ მოხერხდა."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"ჯგუფი შენახულია."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"ჯგუფის ცვლილებების შენახვა ვერ მოხერხდა."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"ტელეფონის ნომრიანი 1 კონტაქტი"</item>
+ <item quantity="other" msgid="3299954047880968205">"ტელეფონის ნომრიანი <xliff:g id="COUNT">%d</xliff:g> კონტაქტი"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ტელეფონის ნომრიანი კონტაქტები არ არის"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"მოიძებნა 1"</item>
+ <item quantity="other" msgid="3852668542926965042">"მოიძებნა <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"კონტაქტები არ არის"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"მოიძებნა 1"</item>
+ <item quantity="other" msgid="7988132539476575389">"მოიძებნა <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"ყველა კონტაქტი"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"რჩეულები"</string>
+ <string name="callBack" msgid="5498224409038809224">"გადარეკვა"</string>
+ <string name="callAgain" msgid="3197312117049874778">"დარეკვა ხელახლა"</string>
+ <string name="returnCall" msgid="8171961914203617813">"გადარეკვა"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"„<xliff:g id="EMAIL">%s</xliff:g>“ დაემატოს კონტაქტებს?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"კონტაქტის ფოტო"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"პლუსი"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> (სულ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> კონტაქტიდან)"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"თქვენი კონტაქტების სახელები"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"ამ მოქმედების შესასრულებლად აპი ვერ მოიძებნა."</string>
+ <string name="missing_app" msgid="1466111003546611387">"ამ მოქმედების შესასრულებლად აპი ვერ მოიძებნა."</string>
+ <string name="menu_share" msgid="943789700636542260">"გაზიარება"</string>
+ <string name="share_via" msgid="563121028023030093">"კონტაქტის გაზიარება"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ჯგუფის შექმნა ანგარიშში"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ხმოვანი ჩეთი"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ვიდეო ჩეთი"</string>
+ <string name="connections" msgid="8098440723172028350">"კავშირები"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"კავშირის დამატება"</string>
+ <string name="recent" msgid="2659189233141493004">"უახლესი"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"უახლესი განახლებები"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g>-ის კონტაქტი"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ამ ფოტოს გამოყენება"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"არ რედაქტირდება ამ აპიდან"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"ამ კონტაქტისთვის დამატებითი ინფორმაცია არ არის."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"არ რედაქტირდება ამ მოწყობილობაზე."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"სიის სორტირება"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"სახელი"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"გვარი"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"კონტაქტების სახელების ნახვა"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ჯერ სახელი"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"ჯერ გვარი"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ფოტოს გადაღება"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ახალი ფოტოს გადაღება"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"ფოტოს არჩევა"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"ახალი ფოტოს არჩევა"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"მიმდინარეობს კონტაქტების სიის განახლება ენის ცვლილების ასახვის მიზნით."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"მიმდინარეობს კონტაქტების სიის განახლება."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"კონტაქტები ახალ ვერსიაზე გადასვლის პროცესშია. \n\nახალ ვერსიაზე გადასვლის პროცესს ესაჭიროება შიდა მეხსიერების დაახლოებით <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> მბაიტი.\n\nაირჩიეთ შემდეგი პარამეტრებიდან ერთ-ერთი:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"ზოგიერთი აპლიკაციის დეინსტალაცია"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ახალ ვერსიაზე გადასვლის მცდელობის გამეორება"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"ძიება..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"არჩეულის ჩვენება"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"ყველას ჩვენება"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ყველას არჩევა"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"ყველა არჩევანის გაუქმება"</string>
+ <string name="add_field" msgid="2384260056674995230">"სხვა ველის დამატება"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"ახლის დამატება"</string>
+ <string name="add_organization" msgid="7311893231158291197">"ორგანიზაციის დამატება"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"თარიღი"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ჯგუფის სახელი"</string>
+ <string name="description_star" msgid="2605854427360036550">"რჩეული"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"კონტაქტის რედაქტირება"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"გასაერთიანებელი"</item>
+ <item quantity="other" msgid="425683718017380845">"გაერთიანდა <xliff:g id="COUNT">%0$d</xliff:g> წყაროდან"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"გსურთ მიმდინარე და არჩეული კონტაქტების შეერთება?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"გადაერთვებით არჩეული კონტაქტის რედაქტირებაზე? მოხდება თქვენს მიერ შეყვანილი ინფორმაციის კოპირება."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"კოპირება ჩემს კონტაქტებში"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"ჩემს კონტაქტებში დამატება"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"კატალოგი <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"მორგებული"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"პარამეტრები"</string>
+ <string name="menu_settings" msgid="377929915873428211">"პარამეტრები"</string>
+ <string name="menu_help" msgid="5123887102216637725">"დახმარება"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"ეკრანის პარამეტრები"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"ტელეფონის ნომერი"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"კონტაქტებში დამატება"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"დაემატოს კონტაქტს"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"დახურვა"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"მიუთითეთ წელი"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"კონტაქტი"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"იტვირთება…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ახალი კონტაქტის შექმნა"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ანგარიშზე შესვლა"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"კონტაქტების იმპორტი"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"ახალი ჯგუფის შექმნა"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"ახალი ჯგუფის შექმნა"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 ჯგუფი"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ჯგუფი"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"გსურთ ჯგუფის „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“ წაშლა? (კონტაქტები არ წაიშლება)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> ადამიანი <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-დან"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> ადამიანი <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-დან"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> ადამიანი"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> ადამიანი"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"სხვა კონტაქტთან შეერთებამდე აკრიფეთ კონტაქტის სახელი."</string>
+ <string name="copy_text" msgid="3257145021583508761">"კოპირება გაცვლის ბუფერში"</string>
+ <string name="set_default" msgid="4417505153468300351">"ნაგულისხმევად დაყენება"</string>
+ <string name="clear_default" msgid="7193185801596678067">"ნაგულისხმევის წაშლა"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"კოპირებული ტექსტი"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"გსურთ ცვლილებების გაუქმება?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"ჩემი პროფილის პარამეტრების დაყენება"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"აკრიფეთ კონტაქტის სახელი"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ჯგუფის სახელი"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ჩემი ადგილობრივი პროფილი"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ჩემი <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> პროფილი"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"ყველა კონტაქტის ჩვენება"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"კონტაქტები Google ანგარიშთან ერთად უკეთ მუშაობს.\n\n• იქონიეთ წვდომა ნებისმიერი ვებ-ბრაუზერიდან.\n• თქვენი კონტაქტების საიმედო დამარქაფება."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"შეინახეთ თქვენი კონტაქტები საიმედოდ ტელეფონის დაკარგვის შემთხვევაშიც კი: მოახდინეთ სინქრონიზაცია ონლაინ სერვისთან."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ანგარიშის დამატება"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"თქვენი ახალი კონტაქტი არ დამარქაფდება. გსურთ ანგარიშის დამატება, რომელიც დაამარქაფებს კონტაქტებს ონლაინ?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"მოხდება თქვენი ახალი კონტაქტის სინქრონიზაცია <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-თან."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ახალი კონტაქტის სინქრონიზაცია შეგიძლიათ ერთ-ერთი შემდეგი ანგარიშიდან. რომლის გამოყენება გსურთ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"შენახვა ადგილობრივად"</string>
+ <string name="add_account" msgid="8201790677994503186">"ანგარიშის დამატება"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"ახალი ანგარიშის დამატება"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"მონაცემთა ბაზის ფაილების ექსპორტი"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"სურათი. მონიშნეთ შესაცვლელად"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ახალი კონტაქტის დამატება"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"იხილე მეტი"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"ნაკლების ჩვენება"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"ყველას ჩვენება"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"კონტაქტი"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"ბოლო"</string>
+ <string name="send_message" msgid="8938418965550543196">"შეტყობინების გაგზავნა"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"იქმნება პერსონალური ასლი..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"გუშინ"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"ხვალ"</string>
+ <string name="today" msgid="8041090779381781781">"დღეს"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"დღეს <xliff:g id="TIME_INTERVAL">%s</xliff:g>-ზე"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"ხვალ <xliff:g id="TIME_INTERVAL">%s</xliff:g>-ზე"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(უსათაურო მოვლენა)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"დაყენება"</string>
+</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
new file mode 100644
index 0000000..25b3f8f
--- /dev/null
+++ b/res/values-ka/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"ხალხი"</string>
+ <string name="contactsList" msgid="8661624236494819731">"კონტაქტები"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"კონტაქტი"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"სწრაფი დარეკვა"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"სწრაფი შეტყობინება"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"კონტაქტის მალსახმობის არჩევა"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"დასარეკად აირჩიეთ ნომერი"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ნომრის შერჩევა შეტყობინების გასაგზავნად"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"კონტაქტის არჩევა"</string>
+ <string name="starredList" msgid="4817256136413959463">"ვარსკვლავიანი"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ხშირი"</string>
+ <string name="strequentList" msgid="5640192862059373511">"რჩეულები"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"კონტაქტის დეტალები"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"კონტაქტის ნახვა"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"კონტაქტის რედაქტირება"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"კონტაქტის შექმნა"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"ჯგუფის რედაქტირება"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"ჯგუფის შექმნა"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"შესახებ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"განახლებები"</string>
+ <string name="searchHint" msgid="8482945356247760701">"კონტაქტებში ძიება"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"კონტაქტის ნახვა"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"რჩეულებში დამატება"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"რჩეულებიდან ამოშლა"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"რედაქტირება"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"წაშლა"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"მთავარ ეკრანზე განთავსება"</string>
+ <string name="menu_call" msgid="3992595586042260618">"დარეკვა კონტაქტთან"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"ტექსტური შეტყობინების გაგზავნა კონტაქტისთვის"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"დაშლა"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"რედაქტირება"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"წაშლა"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"კონტაქტის დამატება"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"ჯგუფის დამატება"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"გსურთ კონტაქტის დაშლა?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"ეს კონტაქტი დაიშლება მრავალ კონტაქტად."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"შეერთება"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"კონტაქტების შეერთება"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"აირჩიეთ კონტაქტი, რომელიც გსურთ შეუერთოთ <xliff:g id="NAME">%s</xliff:g>-ს:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"ყველა კონტაქტის ჩვენება"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"შემოთავაზებული კონტაქტები"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ყველა კონტაქტი"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"შემოერთებული კონტაქტები"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"ზარის დაყენება"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ყველა ზარი ხმოვან ფოსტაში"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"მხოლოდ კითხვადი ანგარიშებიდან კონტაქტების წაშლა შეუძლებელია, თუმცა შეგიძლიათ დამალოთ ისინი კონტაქტების სიაში."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ეს კონტაქტი შეიცავს ინფორმაციას სხვადასხვა ანგარიშებიდან. ინფორმაცია მხოლოდ კითხვადი ანგარიშებიდან არ წაიშლება, არამედ დაიმალება კონტაქტების სიაში."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ამ კონტაქტის წაშლით წაიშლება ინფორმაცია რამდენიმე ანგარიშიდან."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"ეს კონტაქტი წაიშლება."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"გაუქმება"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"კონტაქტი არ არსებობს."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"მთავარ ეკრანს დაემატა კონტაქტების ვიჯეტი."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"ახალი კონტაქტის შექმნა"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"ახალი კონტაქტის შექმნა"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ორგანიზაცია"</item>
+ <item msgid="7196592230748086755">"შენიშვნა"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ტაბლეტზე სურათები მიუწვდომელია."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"ტელეფონზე სურათები არ არის."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"კონტაქტის ფოტო"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"მორგებული ლეიბლის სახელი"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"ზარების პირდაპირ ხმოვან ფოსტაში გაგზავნა"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ფოტოების წაშლა"</string>
+ <string name="noContacts" msgid="8579310973261953559">"კონტაქტები არ არის."</string>
+ <string name="noGroups" msgid="8614664663561385253">"ჯგუფები არ არის."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ჯგუფების შესაქმნელად გესაჭიროებათ ანგარიში."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"ამ ჯგუფში ხალხი არ არის."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"წევრთა დასამატებლად შეასრულეთ ჯგუფის რედაქტირება."</string>
+ <string name="savingContact" msgid="4075751076741924939">"კონტაქტის შენახვა…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"კონტაქტი შენახულია."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"კონტაქტის ცვლილებების შენახვა ვერ მოხერხდა."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"ჯგუფი შენახულია."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"ჯგუფის ცვლილებების შენახვა ვერ მოხერხდა."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"ტელეფონის ნომრიანი 1 კონტაქტი"</item>
+ <item quantity="other" msgid="3299954047880968205">"ტელეფონის ნომრიანი <xliff:g id="COUNT">%d</xliff:g> კონტაქტი"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ტელეფონის ნომრიანი კონტაქტები არ არის"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 კონტაქტი"</item>
+ <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> კონტაქტი"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"მოიძებნა 1"</item>
+ <item quantity="other" msgid="3852668542926965042">"მოიძებნა <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"კონტაქტები არ არის"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"მოიძებნა 1"</item>
+ <item quantity="other" msgid="7988132539476575389">"მოიძებნა <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"ყველა კონტატი"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"ჯგუფები"</string>
+ <string name="callBack" msgid="5498224409038809224">"გადარეკვა"</string>
+ <string name="callAgain" msgid="3197312117049874778">"დარეკვა ხელახლა"</string>
+ <string name="returnCall" msgid="8171961914203617813">"გადარეკვა"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"„<xliff:g id="EMAIL">%s</xliff:g>“ დაემატოს კონტაქტებს?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"კონტაქტის ფოტო"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"პლუსი"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> (სულ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> კონტაქტიდან)"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"თქვენი კონტაქტების სახელები"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"ამ მოქმედების შესასრულებლად აპი ვერ მოიძებნა."</string>
+ <string name="menu_share" msgid="943789700636542260">"გაზიარება"</string>
+ <string name="share_via" msgid="563121028023030093">"კონტაქტის გაზიარება"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ჯგუფის შექმნა ანგარიშში"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ხმოვანი ჩეთი"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ვიდეო ჩეთი"</string>
+ <string name="connections" msgid="8098440723172028350">"კავშირები"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"კავშირის დამატება"</string>
+ <string name="recent" msgid="2659189233141493004">"უახლესი"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"უახლესი განახლებები"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g>-ის კონტაქტი"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ამ ფოტოს გამოყენება"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"არ რედაქტირდება ამ აპიდან"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"ამ კონტაქტისთვის დამატებითი ინფორმაცია არ არის."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"არ რედაქტირდება ამ მოწყობილობაზე."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"სიის სორტირება"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"სახელი"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"გვარი"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"კონტაქტების სახელების ნახვა"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ჯერ სახელი"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"ჯერ გვარი"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ფოტოს გადაღება"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ახალი ფოტოს გადაღება"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ფოტოს არჩევა გალერეიდან"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ახალი ფოტოს არჩევა გალერეიდან"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"მიმდინარეობს კონტაქტების სიის განახლება ენის ცვლილების ასახვის მიზნით."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"მიმდინარეობს კონტაქტების სიის განახლება."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"კონტაქტები ახალ ვერსიაზე გადასვლის პროცესშია. \n\nახალ ვერსიაზე გადასვლის პროცესს ესაჭიროება შიდა მეხსიერების დაახლოებით <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> მბაიტი.\n\nაირჩიეთ შემდეგი პარამეტრებიდან ერთ-ერთი:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"ზოგიერთი აპლიკაციის დეინსტალაცია"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ახალ ვერსიაზე გადასვლის მცდელობის გამეორება"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"ძიება..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"არჩეულის ჩვენება"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"ყველას ჩვენება"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ყველას არჩევა"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"ყველა არჩევანის გაუქმება"</string>
+ <string name="add_field" msgid="2384260056674995230">"სხვა ველის დამატება"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"ახლის დამატება"</string>
+ <string name="add_organization" msgid="7311893231158291197">"ორგანიზაციის დამატება"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"თარიღი"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ჯგუფის სახელი"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>-ის საშუალებით"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g>-ის მეშვეობით"</string>
+ <string name="description_star" msgid="2605854427360036550">"რჩეული"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"კონტაქტის რედაქტირება"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"გასაერთიანებელი"</item>
+ <item quantity="other" msgid="425683718017380845">"გაერთიანდა <xliff:g id="COUNT">%0$d</xliff:g> წყაროდან"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"გსურთ მიმდინარე და არჩეული კონტაქტების შეერთება?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"გადაერთვებით არჩეული კონტაქტის რედაქტირებაზე? მოხდება თქვენს მიერ შეყვანილი ინფორმაციის კოპირება."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"კოპირება ჩემს კონტაქტებში"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"ჩემს კონტაქტებში დამატება"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"კატალოგი <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"პირადი ასლის შექმნა…"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"მორგებული"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"პარამეტრები"</string>
+ <string name="menu_settings" msgid="377929915873428211">"პარამეტრები"</string>
+ <string name="menu_help" msgid="5123887102216637725">"დახმარება"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"ეკრანის პარამეტრები"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"ტელეფონის ნომერი"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"კონტაქტებში დამატება"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"დაემატოს კონტაქტს"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"დახურვა"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"მიუთითეთ წელი"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"კონტაქტი"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"იტვირთება…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ახალი კონტაქტის შექმნა"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ანგარიშზე შესვლა"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"კონტაქტების იმპორტი"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"ახალი ჯგუფის შექმნა"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"ახალი ჯგუფის შექმნა"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 ჯგუფი"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ჯგუფი"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"გსურთ ჯგუფის „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>“ წაშლა? (კონტაქტები არ წაიშლება)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> ადამიანი <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-დან"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> ადამიანი <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-დან"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> ადამიანი"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> ადამიანი"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"სხვა კონტაქტთან შეერთებამდე აკრიფეთ კონტაქტის სახელი."</string>
+ <string name="copy_text" msgid="3257145021583508761">"კოპირება გაცვლის ბუფერში"</string>
+ <string name="set_default" msgid="4417505153468300351">"ნაგულისხმევად დაყენება"</string>
+ <string name="clear_default" msgid="7193185801596678067">"ნაგულისხმევის წაშლა"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"კოპირებული ტექსტი"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"გსურთ ცვლილებების გაუქმება?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"ჩემი პროფილის პარამეტრების დაყენება"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"აკრიფეთ კონტაქტის სახელი"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ჯგუფის სახელი"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ჩემი ადგილობრივი პროფილი"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ჩემი <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> პროფილი"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"ყველა კონტაქტის ჩვენება"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"აპლიკაცია „ხალხი“ უკეთ მუშაობს Google-ის ანგარიშთან ერთად.\n\n• განახორციელეთ წვდომა ნებისმიერი ვებ-ბრაუზერიდან.\n• საიმედოდ დაამარქაფეთ თქვენი კონტაქტები."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"შეინახეთ თქვენი კონტაქტები საიმედოდ ტელეფონის დაკარგვის შემთხვევაშიც კი: მოახდინეთ სინქრონიზაცია ონლაინ სერვისთან."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ანგარიშის დამატება"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"თქვენი ახალი კონტაქტი არ დამარქაფდება. გსურთ ანგარიშის დამატება, რომელიც დაამარქაფებს კონტაქტებს ონლაინ?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"მოხდება თქვენი ახალი კონტაქტის სინქრონიზაცია <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-თან."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ახალი კონტაქტის სინქრონიზაცია შეგიძლიათ ერთ-ერთი შემდეგი ანგარიშიდან. რომლის გამოყენება გსურთ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"შენახვა ადგილობრივად"</string>
+ <string name="add_account" msgid="8201790677994503186">"ანგარიშის დამატება"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"ახალი ანგარიშის დამატება"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"მონაცემთა ბაზის ფაილების ექსპორტი"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"სურათი. მონიშნეთ შესაცვლელად"</string>
+</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..63aaea0
--- /dev/null
+++ b/res/values-km-rKH/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"ទំនាក់ទំនង"</string>
+ <string name="contactsList" msgid="8661624236494819731">"ទំនាក់ទំនង"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ទំនាក់ទំនង"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ហៅដោយផ្ទាល់"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ផ្ញើសារដោយផ្ទាល់"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"ជ្រើសផ្លូវកាត់ទំនាក់ទំនង"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ជ្រើសលេខដើម្បីហៅ"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ជ្រើសលេខដើម្បីផ្ញើសារ"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"ជ្រើសទំនាក់ទំនង"</string>
+ <string name="starredList" msgid="4817256136413959463">"បានដាក់ផ្កាយ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ញឹកញាប់"</string>
+ <string name="strequentList" msgid="5640192862059373511">"សំណព្វ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"ព័ត៌មានលម្អិតរបស់ទំនាក់ទំនង"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"កែទំនាក់ទំនង"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"បង្កើតទំនាក់ទំនង"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"កែក្រុម"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"បង្កើតក្រុម"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"អំពី"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"បច្ចុប្បន្នភាព"</string>
+ <string name="searchHint" msgid="8482945356247760701">"រកទំនាក់ទំនង"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"មើលទំនាក់ទំនង"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"បន្ថែមទៅសំណព្វ"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"លុបចេញពីសំណព្វ"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"កែសម្រួល"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"លុប"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"ដាក់លើអេក្រង់ដើម"</string>
+ <string name="menu_call" msgid="3992595586042260618">"ហៅទំនាក់ទំនង"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"អត្ថបទទំនាក់ទំនង"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"បំបែក"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"កែសម្រួល"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"លុប"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"បន្ថែមទំនាក់ទំនង"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"បន្ថែមក្រុម"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"បំបែកទំនាក់ទំនង?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"នឹងបំបែកទំនាក់ទំនងនេះទៅជាទំនាក់ទំនងច្រើន។"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"ចូលរួម"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"ភ្ជាប់ទំនាក់ទំនង"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"ជ្រើសទំនាក់ទំនងដែលអ្នកចង់ភ្ជាប់ជាមួយ <xliff:g id="NAME">%s</xliff:g>៖"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"បង្ហាញទំនាក់ទំនងទាំងអស់"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"ទំនាក់ទំនងដែលបានស្នើ"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ទំនាក់ទំនងទាំងអស់"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"ទំនាក់ទំនងដែលបានភ្ជាប់"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"កំណត់សំឡេងរោទ៍"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ការហៅទាំងអស់ទៅសារជាសំឡេង"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"អ្នកមិនអាចលុបទំនាក់ទំនងពីគណនីបានតែអានទេ ប៉ុន្តែអ្នកអាចលាក់ពួកវានៅក្នុងបញ្ជីទំនាក់ទំនងរបស់អ្នកបាន។"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ទំនាក់ទំនងនេះមានព័ត៌មានពីគណនីច្រើន។ នឹងលាក់ព័ត៌មានពីគណនីបានតែអាន, មិនមែនលុបទេ។"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ការលុបទំនាក់ទំនងនេះនឹងលុបព័ត៌មានពីគណនីច្រើនទៀត។"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"នឹងលុបទំនាក់ទំនងនេះ។"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"បោះបង់ការផ្លាស់ប្ដូរ"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"មិនមានទំនាក់ទំនង។"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"បានបន្ថែមធាតុក្រាហ្វិករបស់ទំនាក់ទំនងទៅអេក្រង់ដើម។"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ស្ថាប័ន"</item>
+ <item msgid="7196592230748086755">"ចំណាំ"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"មិនមានរូបភាពនៅលើកុំព្យូទ័របន្ទះនេះទេ។"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"មិនមានរូបភាពនៅលើទូរស័ព្ទ។"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"រូបថតទំនាក់ទំនង"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"ឈ្មោះស្លាកផ្ទាល់ខ្លួន"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"បញ្ជូនការហៅដោយផ្ទាល់ទៅសារជាសំឡេង"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"លុបរូបថតចេញ"</string>
+ <string name="noContacts" msgid="8579310973261953559">"មិនមានទំនាក់ទំនង។"</string>
+ <string name="noGroups" msgid="8614664663561385253">"មិនមានក្រុម។"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ដើម្បីបង្កើតក្រុមអ្នកចាំបាច់ត្រូវមានគណនីមួយ។"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"មិនមានមនុស្សនៅក្នុងក្រុមនេះទេ។"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"ដើម្បីបន្ថែម, កែសម្រួលក្រុម។"</string>
+ <string name="savingContact" msgid="4075751076741924939">"កំពុងរក្សាទុកទំនាក់ទំនង..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"បានរក្សាទុកទំនាក់ទំនង។"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"មិនអាចរក្សាទុកការប្ដូរទំនាក់ទំនង។"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"បានរក្សាទុកក្រុម។"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"មិនអាចរក្សាទុកការប្ដូរក្រុម។"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"ទំនាក់ទំនង ១ ដែលមានលេខទូរស័ព្ទ"</item>
+ <item quantity="other" msgid="3299954047880968205">"ទំនាក់ទំនង <xliff:g id="COUNT">%d</xliff:g> ដែលមានលេខទូរស័ព្ទ"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"គ្មានទំនាក់ទំនងដែលមានលេខទូរស័ព្ទ"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"បានរកឃើញ ១"</item>
+ <item quantity="other" msgid="3852668542926965042">"បានរកឃើញ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"មិនមានទំនាក់ទំនង"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"បានរកឃើញ ១"</item>
+ <item quantity="other" msgid="7988132539476575389">"បានរកឃើញ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"គ្រប់ទំនាក់ទំនង"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"ពេញចិត្ត"</string>
+ <string name="callBack" msgid="5498224409038809224">"ហៅទៅវិញ"</string>
+ <string name="callAgain" msgid="3197312117049874778">"ហៅម្ដងទៀត"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ហៅទៅវិញ"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"បន្ថែម \"<xliff:g id="EMAIL">%s</xliff:g>\" ទៅទំនាក់ទំនង?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"រូបថតទំនាក់ទំនង"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"បូក"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> នៃទំនាក់ទំនង <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ឈ្មោះនៃទំនាក់ទំនងរបស់អ្នក"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"រកមិនឃើញកម្មវិធីសម្រាប់សកម្មភាពនេះទេ។"</string>
+ <string name="missing_app" msgid="1466111003546611387">"រកមិនឃើញកម្មវិធីដើម្បីគ្រប់គ្រងសកម្មភាពនេះទេ។"</string>
+ <string name="menu_share" msgid="943789700636542260">"ចែករំលែក"</string>
+ <string name="share_via" msgid="563121028023030093">"ចែករំលែកទំនាក់ទំនងតាម"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"បង្កើតក្រុមនៅក្នុងគណនី"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ជជែកជាសំឡេង"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ជជែកជាវីដេអូ"</string>
+ <string name="connections" msgid="8098440723172028350">"ការតភ្ជាប់"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"បន្ថែមការតភ្ជាប់"</string>
+ <string name="recent" msgid="2659189233141493004">"ថ្មីៗ"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"បច្ចុប្បន្នភាពថ្មីៗ"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> ទំនាក់ទំនង"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ប្រើរូបថតនេះ"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"ពីកម្មវិធីនេះ មិនអាចកែបានទេ។"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"មិនមានព័ត៌មានបន្ថែមសម្រាប់ទំនាក់ទំនងនេះទេ។"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"មិនអាចកែបានទេលើឧបករណ៍នេះ។"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"តម្រៀបបញ្ជីតាម"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"នាមខ្លួន"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"នាមត្រកូល"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"មើលឈ្មោះទំនាក់ទំនង"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"នាមខ្លួនមុន"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"នាមត្រកូលមុន"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ថតរូប"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ថតរូបថ្មី"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"ជ្រើសរូបថត"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"ជ្រើសរូបថតថ្មី"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"កំពុងធ្វើបច្ចុប្បន្នភាពទំនាក់ទំនងដើម្បីឆ្លុះបញ្ចាំងការប្ដូរភាសា។"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"កំពុងធ្វើបច្ចុប្បន្នភាពបញ្ជីទំនាក់ទំនង។"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"កំពុងធ្វើបច្ចុប្បន្នភាពទំនាក់ទំនង។ \n\nដំណើរការនេះទាមទារឧបករណ៍ផ្ទុកខាងក្នុងប្រហែល <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> មេកាបៃ។\n\nជ្រើសជម្រើសមួយខាងក្រោម៖"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"លុបកម្មវិធីមួយចំនួន"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ធ្វើបច្ចុប្បន្នភាពម្ដងទៀត"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"កំពុងរក..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"បង្ហាញអ្វីដែលបានជ្រើស"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"បង្ហាញទាំងអស់"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ជ្រើសទាំងអស់"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"មិនជ្រើសទាំងអស់"</string>
+ <string name="add_field" msgid="2384260056674995230">"បន្ថែមវាលផ្សេងទៀត"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"បន្ថែមថ្មី"</string>
+ <string name="add_organization" msgid="7311893231158291197">"បន្ថែមស្ថាប័ន"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"កាលបរិច្ឆេទ"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ឈ្មោះក្រុម"</string>
+ <string name="description_star" msgid="2605854427360036550">"សំណព្វ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"កែទំនាក់ទំនង"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"មិនបានបញ្ចូលចូលគ្នា"</item>
+ <item quantity="other" msgid="425683718017380845">"បានបញ្ចូលគ្នាមកពីប្រភព <xliff:g id="COUNT">%0$d</xliff:g>"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"ភ្ជាប់ទំនាក់ទំនងបច្ចុប្បន្នជាមួយទំនាក់ទំនងដែលបានជ្រើស?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"ប្ដូរដើម្បីកែទំនាក់ទំនងដែលបានជ្រើស? ព័ត៌មានដែលអ្នកបញ្ចូលនឹងបានចម្លង។"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"ចម្លងទៅទំនាក់ទំនងរបស់ខ្ញុំ"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"បន្ថែមទៅទំនាក់ទំនងរបស់ខ្ញុំ"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"ថត <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"ផ្ទាល់ខ្លួន"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"ការកំណត់"</string>
+ <string name="menu_settings" msgid="377929915873428211">"ការកំណត់"</string>
+ <string name="menu_help" msgid="5123887102216637725">"ជំនួយ"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"បង្ហាញជម្រើស"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"លេខទូរស័ព្ទ"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"បន្ថែមទៅទំនាក់ទំនង"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"បន្ថែមទៅទំនាក់ទំនង"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"បិទ"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"ផ្ដល់ឆ្នាំ"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ទំនាក់ទំនង"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"កំពុងផ្ទុក..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ចូលគណនី"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"នាំចូលទំនាក់ទំនង"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"បង្កើតក្រុមថ្មី"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"បង្កើតក្រុមថ្មី"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"១ ក្រុម"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ក្រុម"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"លុបក្រុម \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (ទំនាក់ទំនងរបស់វានឹងមិនលុបទេ)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> នាក់ពី <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> នាក់ពី <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> នាក់"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> នាក់"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"សូមបញ្ចូលឈ្មោះទំនាក់ទំនងមុនពេលចូលរួមជាមួយទំនាក់ទំនងផ្សេងទៀត។"</string>
+ <string name="copy_text" msgid="3257145021583508761">"ចម្លងទៅក្ដារតម្បៀតខ្ទាស់"</string>
+ <string name="set_default" msgid="4417505153468300351">"កំណត់លំនាំដើម"</string>
+ <string name="clear_default" msgid="7193185801596678067">"សម្អាតលំនាំដើម"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"បានចម្លងអត្ថបទ"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"បោះបង់ការប្ដូរររបស់អ្នក?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"រៀបចំប្រវត្តិរូបរបស់ខ្ញុំ"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"វាយឈ្មោះមនុស្ស"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ឈ្មោះរបស់ក្រុម"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ប្រវត្តិរូបមូលដ្ឋានរបស់ខ្ញុំ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ប្រវត្តិរូប <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> របស់ខ្ញុំ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"បង្ហាញទំនាក់ទំនងទាំងអស់"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"ទំនាក់ទំនងដំណើរការកាន់តែល្អជាមួយគណនី Google ។\n\n• ចូលដំណើរការពីកម្មវិធីរុករកបណ្ដាញ។\n• បម្រុងទុកទំនាក់ទំនងរបស់អ្នកដោយសុវត្ថិភាព។"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"រក្សាទុកទំនាក់ទំនងរបស់អ្នកយ៉ាងមានសុវត្ថិភាព ទោះបីជាអ្នកបាត់ទូរស័ព្ទក៏ដោយ៖ ធ្វើសមកាលកម្មជាមួយសេវាកម្មលើបណ្ដាញ។"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"បន្ថែមគណនី"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"នឹងមិនបម្រុងទុកទំនាក់ទំនងថ្មីរបស់អ្នកទេ។ បន្ថែមគណនីដើម្បីបម្រុងទុកទំនាក់ទំនងនៅលើបណ្ដាញ?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"នឹងធ្វើសមកាលកម្មទំនាក់ទំនងថ្មីរបស់អ្នកជាមួយ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> ។"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"អ្នកអាចធ្វើសមកាលកម្មទំនាក់ទំនងថ្មីរបស់អ្នកជាមួយគណនីមួយខាងក្រោម។ តើអ្នកចង់ប្រើមួយណា?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"រក្សាទុកមូលដ្ឋាន"</string>
+ <string name="add_account" msgid="8201790677994503186">"បន្ថែមគណនី"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"បន្ថែមគណនីថ្មី"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"នាំចេញឯកសារមូលដ្ឋានទិន្នន័យ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"រូបភាព។ ជ្រើសដើម្បីប្ដូរ"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"បន្ថែមទំនាក់ទំនងថ្មី"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"មើលច្រើនជាង"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"មើលតិចជាង"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"មើលទាំងអស់"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"ទំនាក់ទំនង"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"ថ្មីៗ"</string>
+ <string name="send_message" msgid="8938418965550543196">"ផ្ញើសារ"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"កំពុងបង្កើតច្បាប់ចម្លងផ្ទាល់ខ្លួន..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"ម្សិលមិញ"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"ស្អែក"</string>
+ <string name="today" msgid="8041090779381781781">"ថ្ងៃនេះ"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"ថ្ងៃនេះនៅ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"ថ្ងៃស្អែកនៅ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(ព្រឹត្តិការណ៍គ្មានចំណងជើង)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"កំណត់"</string>
+</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
new file mode 100644
index 0000000..18b9828
--- /dev/null
+++ b/res/values-km/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"មនុស្ស"</string>
+ <string name="contactsList" msgid="8661624236494819731">"ទំនាក់ទំនង"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ទំនាក់ទំនង"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ហៅដោយផ្ទាល់"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ផ្ញើសារដោយផ្ទាល់"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"ជ្រើសផ្លូវកាត់ទំនាក់ទំនង"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ជ្រើសលេខដើម្បីហៅ"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ជ្រើសលេខដើម្បីផ្ញើសារ"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"ជ្រើសទំនាក់ទំនង"</string>
+ <string name="starredList" msgid="4817256136413959463">"បានដាក់ផ្កាយ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ញឹកញាប់"</string>
+ <string name="strequentList" msgid="5640192862059373511">"សំណព្វ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"ព័ត៌មានលម្អិតរបស់ទំនាក់ទំនង"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"មើលទំនាក់ទំនង"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"កែទំនាក់ទំនង"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"បង្កើតទំនាក់ទំនង"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"កែក្រុម"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"បង្កើតក្រុម"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"អំពី"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"បច្ចុប្បន្នភាព"</string>
+ <string name="searchHint" msgid="8482945356247760701">"រកទំនាក់ទំនង"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"មើលទំនាក់ទំនង"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"បន្ថែមទៅសំណព្វ"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"លុបចេញពីសំណព្វ"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"កែសម្រួល"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"លុប"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"ដាក់លើអេក្រង់ដើម"</string>
+ <string name="menu_call" msgid="3992595586042260618">"ហៅទំនាក់ទំនង"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"អត្ថបទទំនាក់ទំនង"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"បំបែក"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"កែសម្រួល"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"លុប"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"បន្ថែមទំនាក់ទំនង"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"បន្ថែមក្រុម"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"បំបែកទំនាក់ទំនង?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"នឹងបំបែកទំនាក់ទំនងនេះទៅជាទំនាក់ទំនងច្រើន។"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"ចូលរួម"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"ភ្ជាប់ទំនាក់ទំនង"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"ជ្រើសទំនាក់ទំនងដែលអ្នកចង់ភ្ជាប់ជាមួយ <xliff:g id="NAME">%s</xliff:g>៖"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"បង្ហាញទំនាក់ទំនងទាំងអស់"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"ទំនាក់ទំនងដែលបានស្នើ"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ទំនាក់ទំនងទាំងអស់"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"ទំនាក់ទំនងដែលបានភ្ជាប់"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"កំណត់សំឡេងរោទ៍"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ការហៅទាំងអស់ទៅសារជាសំឡេង"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"អ្នកមិនអាចលុបទំនាក់ទំនងពីគណនីបានតែអានទេ ប៉ុន្តែអ្នកអាចលាក់ពួកវានៅក្នុងបញ្ជីទំនាក់ទំនងរបស់អ្នកបាន។"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ទំនាក់ទំនងនេះមានព័ត៌មានពីគណនីច្រើន។ នឹងលាក់ព័ត៌មានពីគណនីបានតែអាន, មិនមែនលុបទេ។"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ការលុបទំនាក់ទំនងនេះនឹងលុបព័ត៌មានពីគណនីច្រើនទៀត។"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"នឹងលុបទំនាក់ទំនងនេះ។"</string>
+ <string name="menu_discard" msgid="6456087569315685632">"បោះបង់"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"មិនមានទំនាក់ទំនង។"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"បានបន្ថែមធាតុក្រាហ្វិករបស់ទំនាក់ទំនងទៅអេក្រង់ដើម។"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ស្ថាប័ន"</item>
+ <item msgid="7196592230748086755">"ចំណាំ"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"មិនមានរូបភាពនៅលើកុំព្យូទ័របន្ទះនេះទេ។"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"មិនមានរូបភាពនៅលើទូរស័ព្ទ។"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"រូបថតទំនាក់ទំនង"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"ឈ្មោះស្លាកផ្ទាល់ខ្លួន"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"បញ្ជូនការហៅដោយផ្ទាល់ទៅសារជាសំឡេង"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"លុបរូបថតចេញ"</string>
+ <string name="noContacts" msgid="8579310973261953559">"មិនមានទំនាក់ទំនង។"</string>
+ <string name="noGroups" msgid="8614664663561385253">"មិនមានក្រុម។"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ដើម្បីបង្កើតក្រុមអ្នកចាំបាច់ត្រូវមានគណនីមួយ។"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"មិនមានមនុស្សនៅក្នុងក្រុមនេះទេ។"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"ដើម្បីបន្ថែម, កែសម្រួលក្រុម។"</string>
+ <string name="savingContact" msgid="4075751076741924939">"កំពុងរក្សាទុកទំនាក់ទំនង..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"បានរក្សាទុកទំនាក់ទំនង។"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"មិនអាចរក្សាទុកការប្ដូរទំនាក់ទំនង។"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"បានរក្សាទុកក្រុម។"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"មិនអាចរក្សាទុកការប្ដូរក្រុម។"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"ទំនាក់ទំនង ១ ដែលមានលេខទូរស័ព្ទ"</item>
+ <item quantity="other" msgid="3299954047880968205">"ទំនាក់ទំនង <xliff:g id="COUNT">%d</xliff:g> ដែលមានលេខទូរស័ព្ទ"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"គ្មានទំនាក់ទំនងដែលមានលេខទូរស័ព្ទ"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"ទំនាក់ទំនង 1"</item>
+ <item quantity="other" msgid="3578469907265375314">"ទំនាក់ទំនង <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"បានរកឃើញ ១"</item>
+ <item quantity="other" msgid="3852668542926965042">"បានរកឃើញ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"មិនមានទំនាក់ទំនង"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"បានរកឃើញ ១"</item>
+ <item quantity="other" msgid="7988132539476575389">"បានរកឃើញ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"ទំនាក់ទំនងទាំងអស់"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"ក្រុម"</string>
+ <string name="callBack" msgid="5498224409038809224">"ហៅទៅវិញ"</string>
+ <string name="callAgain" msgid="3197312117049874778">"ហៅម្ដងទៀត"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ហៅទៅវិញ"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"បន្ថែម \"<xliff:g id="EMAIL">%s</xliff:g>\" ទៅទំនាក់ទំនង?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"រូបថតទំនាក់ទំនង"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"បូក"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> នៃទំនាក់ទំនង <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ឈ្មោះនៃទំនាក់ទំនងរបស់អ្នក"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"រកមិនឃើញកម្មវិធីសម្រាប់សកម្មភាពនេះទេ។"</string>
+ <string name="menu_share" msgid="943789700636542260">"ចែករំលែក"</string>
+ <string name="share_via" msgid="563121028023030093">"ចែករំលែកទំនាក់ទំនងតាម"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"បង្កើតក្រុមនៅក្នុងគណនី"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ជជែកជាសំឡេង"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ជជែកជាវីដេអូ"</string>
+ <string name="connections" msgid="8098440723172028350">"ការតភ្ជាប់"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"បន្ថែមការតភ្ជាប់"</string>
+ <string name="recent" msgid="2659189233141493004">"ថ្មីៗ"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"បច្ចុប្បន្នភាពថ្មីៗ"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> ទំនាក់ទំនង"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ប្រើរូបថតនេះ"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"ពីកម្មវិធីនេះ មិនអាចកែបានទេ។"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"មិនមានព័ត៌មានបន្ថែមសម្រាប់ទំនាក់ទំនងនេះទេ។"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"មិនអាចកែបានទេលើឧបករណ៍នេះ។"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"តម្រៀបបញ្ជីតាម"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"នាមខ្លួន"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"នាមត្រកូល"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"មើលឈ្មោះទំនាក់ទំនង"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"នាមខ្លួនដំបូង"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"នាមត្រកូលជាមុន"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ថតរូប"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ថតរូបថ្មី"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ជ្រើសរូបថតពីវិចិត្រសាល"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ជ្រើសរូបថតថ្មីពីវិចិត្រសាល"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"កំពុងធ្វើបច្ចុប្បន្នភាពទំនាក់ទំនងដើម្បីឆ្លុះបញ្ចាំងការប្ដូរភាសា។"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"កំពុងធ្វើបច្ចុប្បន្នភាពបញ្ជីទំនាក់ទំនង។"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"កំពុងធ្វើបច្ចុប្បន្នភាពទំនាក់ទំនង។ \n\nដំណើរការនេះទាមទារឧបករណ៍ផ្ទុកខាងក្នុងប្រហែល <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> មេកាបៃ។\n\nជ្រើសជម្រើសមួយខាងក្រោម៖"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"លុបកម្មវិធីមួយចំនួន"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ធ្វើបច្ចុប្បន្នភាពម្ដងទៀត"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"កំពុងរក..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"បង្ហាញអ្វីដែលបានជ្រើស"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"បង្ហាញទាំងអស់"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ជ្រើសទាំងអស់"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"មិនជ្រើសទាំងអស់"</string>
+ <string name="add_field" msgid="2384260056674995230">"បន្ថែមវាលផ្សេងទៀត"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"បន្ថែមថ្មី"</string>
+ <string name="add_organization" msgid="7311893231158291197">"បន្ថែមស្ថាប័ន"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"កាលបរិច្ឆេទ"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ឈ្មោះក្រុម"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"តាមរយៈ <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> តាមរយៈ <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"សំណព្វ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"កែទំនាក់ទំនង"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"មិនបានបញ្ចូលចូលគ្នា"</item>
+ <item quantity="other" msgid="425683718017380845">"បានបញ្ចូលគ្នាមកពីប្រភព <xliff:g id="COUNT">%0$d</xliff:g>"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"ភ្ជាប់ទំនាក់ទំនងបច្ចុប្បន្នជាមួយទំនាក់ទំនងដែលបានជ្រើស?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"ប្ដូរដើម្បីកែទំនាក់ទំនងដែលបានជ្រើស? ព័ត៌មានដែលអ្នកបញ្ចូលនឹងបានចម្លង។"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"ចម្លងទៅទំនាក់ទំនងរបស់ខ្ញុំ"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"បន្ថែមទៅទំនាក់ទំនងរបស់ខ្ញុំ"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"ថត <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"កំពុងបង្កើតច្បាប់ចម្លងផ្ទាល់ខ្លួន..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"ផ្ទាល់ខ្លួន"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"ការកំណត់"</string>
+ <string name="menu_settings" msgid="377929915873428211">"ការកំណត់"</string>
+ <string name="menu_help" msgid="5123887102216637725">"ជំនួយ"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"បង្ហាញជម្រើស"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"លេខទូរស័ព្ទ"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"បន្ថែមទៅទំនាក់ទំនង"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"បន្ថែមទៅទំនាក់ទំនង"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"បិទ"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"ផ្ដល់ឆ្នាំ"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ទំនាក់ទំនង"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"កំពុងផ្ទុក..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ចូលគណនី"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"នាំចូលទំនាក់ទំនង"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"បង្កើតក្រុមថ្មី"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"បង្កើតក្រុមថ្មី"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"១ ក្រុម"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ក្រុម"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"លុបក្រុម \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (ទំនាក់ទំនងរបស់វានឹងមិនលុបទេ)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> នាក់ពី <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> នាក់ពី <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> នាក់"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> នាក់"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"សូមបញ្ចូលឈ្មោះទំនាក់ទំនងមុនពេលចូលរួមជាមួយទំនាក់ទំនងផ្សេងទៀត។"</string>
+ <string name="copy_text" msgid="3257145021583508761">"ចម្លងទៅក្ដារតម្បៀតខ្ទាស់"</string>
+ <string name="set_default" msgid="4417505153468300351">"កំណត់លំនាំដើម"</string>
+ <string name="clear_default" msgid="7193185801596678067">"សម្អាតលំនាំដើម"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"បានចម្លងអត្ថបទ"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"បោះបង់ការប្ដូរររបស់អ្នក?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"រៀបចំប្រវត្តិរូបរបស់ខ្ញុំ"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"វាយឈ្មោះមនុស្ស"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ឈ្មោះរបស់ក្រុម"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ប្រវត្តិរូបមូលដ្ឋានរបស់ខ្ញុំ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ប្រវត្តិរូប <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> របស់ខ្ញុំ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"បង្ហាញទំនាក់ទំនងទាំងអស់"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"មនុស្សធ្វើការបានយ៉ាងប្រសើរជាមួយគណនីរបស់ Google ។ \n \n •អាចចូលដំណើរការពីកម្មវិធីអ៊ីនធឺណិតណាក៏បាន។ \n •បម្រុងទុកទំនាក់ទំនងរបស់អ្នកយ៉ាងមានសុវត្ថិភាព។"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"រក្សាទុកទំនាក់ទំនងរបស់អ្នកយ៉ាងមានសុវត្ថិភាព ទោះបីជាអ្នកបាត់ទូរស័ព្ទក៏ដោយ៖ ធ្វើសមកាលកម្មជាមួយសេវាកម្មលើបណ្ដាញ។"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"បន្ថែមគណនី"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"នឹងមិនបម្រុងទុកទំនាក់ទំនងថ្មីរបស់អ្នកទេ។ បន្ថែមគណនីដើម្បីបម្រុងទុកទំនាក់ទំនងនៅលើបណ្ដាញ?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"នឹងធ្វើសមកាលកម្មទំនាក់ទំនងថ្មីរបស់អ្នកជាមួយ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> ។"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"អ្នកអាចធ្វើសមកាលកម្មទំនាក់ទំនងថ្មីរបស់អ្នកជាមួយគណនីមួយខាងក្រោម។ តើអ្នកចង់ប្រើមួយណា?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"រក្សាទុកមូលដ្ឋាន"</string>
+ <string name="add_account" msgid="8201790677994503186">"បន្ថែមគណនី"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"បន្ថែមគណនីថ្មី"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"នាំចេញឯកសារមូលដ្ឋានទិន្នន័យ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"រូបភាព។ ជ្រើសដើម្បីប្ដូរ"</string>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index ca5f00a..a1b3187 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"주소록"</string>
+ <string name="people" msgid="1190841469952343354">"주소록"</string>
<string name="contactsList" msgid="8661624236494819731">"주소록"</string>
<string name="shortcutContact" msgid="749243779392912958">"연락처"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"바로 전화 걸기"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"자주 사용하는 연락처"</string>
<string name="strequentList" msgid="5640192862059373511">"즐겨찾기"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"연락처 세부정보"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"연락처 보기"</string>
<string name="editContactDescription" msgid="2947202828256214947">"연락처 수정"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"연락처 만들기"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"그룹 수정"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"연락처에 여러 계정의 정보가 들어 있습니다. 읽기 전용 계정의 정보는 주소록 목록에서 숨길 수 있지만 삭제할 수는 없습니다."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"이 연락처를 삭제하면 여러 계정의 정보가 삭제됩니다."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"이 연락처를 삭제합니다."</string>
- <string name="menu_discard" msgid="6456087569315685632">"취소"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"변경사항 취소"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"연락처가 없습니다."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"주소록 위젯이 홈 화면에 추가됨"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"새 연락처 만들기"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"전화번호가 포함된 연락처 <xliff:g id="COUNT">%d</xliff:g>개"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"전화번호가 포함된 주소록이 없습니다."</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"연락처 1개"</item>
- <item quantity="other" msgid="3578469907265375314">"연락처 <xliff:g id="COUNT">%d</xliff:g>개"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1개를 찾았습니다."</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g>개를 찾았습니다."</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1개를 찾았습니다."</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g>개를 찾았습니다."</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"모든 연락처"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"그룹"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"모든 연락처"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"즐겨찾기"</string>
<string name="callBack" msgid="5498224409038809224">"전화 걸기"</string>
<string name="callAgain" msgid="3197312117049874778">"다시 걸기"</string>
<string name="returnCall" msgid="8171961914203617813">"전화 걸기"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"연락처 <xliff:g id="CURRENT_NUMBER">%s</xliff:g>개(총 <xliff:g id="TOTAL_NUMBER">%s</xliff:g>개) 내보내는 중"</string>
<string name="search_settings_description" msgid="2675223022992445813">"연락처 명단"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"이 작업을 처리하는 앱을 찾을 수 없습니다."</string>
+ <string name="missing_app" msgid="1466111003546611387">"이 작업을 처리하는 앱을 찾을 수 없습니다."</string>
<string name="menu_share" msgid="943789700636542260">"공유"</string>
<string name="share_via" msgid="563121028023030093">"연락처 공유에 사용할 애플리케이션:"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"계정에서 그룹 만들기"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"성 먼저 표시"</string>
<string name="take_photo" msgid="7496128293167402354">"사진 찍기"</string>
<string name="take_new_photo" msgid="7341354729436576304">"새 사진 찍기"</string>
- <string name="pick_photo" msgid="3746334626214970837">"갤러리에서 사진 선택"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"갤러리에서 새 사진 선택"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"사진 선택"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"새 사진 선택"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"변경된 언어를 반영하도록 주소록을 업데이트하는 중입니다. 잠시 기다려 주세요."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"주소록을 업데이트하고 있습니다."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"주소록을 업그레이드하는 중입니다. \n\n업그레이드 하려면 약 <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g>MB의 내부 저장공간이 필요합니다.\n\n다음 옵션 중 하나를 선택하세요."</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"조직 추가"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"날짜"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"그룹 이름"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"출처: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>(출처: <xliff:g id="SOURCE">%2$s</xliff:g>)"</string>
<string name="description_star" msgid="2605854427360036550">"즐겨찾기"</string>
<string name="edit_contact" msgid="7529281274005689512">"연락처 수정"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"내 주소록에 복사"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"내 주소록에 추가"</string>
<string name="contact_directory_description" msgid="683398073603909119">"디렉토리 <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"개인 사본 작성 중..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"사용자 설정"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"설정"</string>
<string name="menu_settings" msgid="377929915873428211">"설정"</string>
@@ -219,15 +212,31 @@
<string name="local_profile_title" msgid="2021416826991393684">"내 로컬 프로필"</string>
<string name="external_profile_title" msgid="8034998767621359438">"내 <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> 프로필"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"모든 연락처 표시"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"인물 앱은 Google 계정에서 사용할 때 더 효과적입니다.\n\n• 어떤 웹 브라우저에서든 액세스하세요.\n• 주소록을 안전하게 백업하세요."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"주소록은 Google 계정에서 사용할 때 더 효과적입니다.\n\n• 어떤 웹 브라우저에서든 액세스할 수 있습니다.\n• 주소록을 안전하게 백업할 수 있습니다."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"온라인 서비스와 동기화되므로 휴대전화를 잃어버려도 주소록을 안전하게 유지할 수 있습니다."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"계정 추가"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"새 연락처는 백업되지 않습니다. 온라인에 주소록을 백업할 계정을 추가하시겠습니까?"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"새 연락처가 <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>와(과) 동기화됩니다."</string>
- <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"새 연락처를 다음 계정 중 하나와 동기화할 수 있습니다. 무엇을 사용하시겠습니까?"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"새 연락처를 다음 계정 중 하나와 동기화할 수 있습니다. 원하는 계정을 선택하세요."</string>
<string name="keep_local" msgid="1258761699192993322">"오프라인 보관"</string>
<string name="add_account" msgid="8201790677994503186">"계정 추가"</string>
<string name="add_new_account" msgid="5748627740680940264">"새 계정 추가"</string>
<string name="menu_export_database" msgid="2659719297530170820">"데이터베이스 파일 내보내기"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"사진을 변경하려면 선택"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"새 연락처 추가"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"더보기"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"간략히 보기"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"모두 보기"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"연락처"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"최근"</string>
+ <string name="send_message" msgid="8938418965550543196">"메시지 보내기"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"개인 사본 작성 중..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"어제"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"내일"</string>
+ <string name="today" msgid="8041090779381781781">"오늘"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"오늘 <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"내일 <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="TIME_INTERVAL">%s</xliff:g>, <xliff:g id="DATE">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(제목 없는 일정)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"설정"</string>
</resources>
diff --git a/res/drawable/quickcontact_track_background.xml b/res/values-land/bools.xml
similarity index 73%
copy from res/drawable/quickcontact_track_background.xml
copy to res/values-land/bools.xml
index fcf61fd..bd0650f 100644
--- a/res/drawable/quickcontact_track_background.xml
+++ b/res/values-land/bools.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -13,7 +13,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+<resources>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/quickcon_background_texture"
- android:tileMode="repeat" />
+ <bool name="quickcontact_two_panel">true</bool>
+
+</resources>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index e72a0ee..d975093 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -17,7 +17,5 @@
<dimen name="dialpad_digits_height">66dip</dimen>
<dimen name="dialpad_digits_text_size">28sp</dimen>
<dimen name="dialpad_digits_margin_bottom">50dip</dimen>
- <!-- Center vertically -->
- <dimen name="quick_contact_top_position">-1px</dimen>
<dimen name="editor_type_label_width">120dip</dimen>
</resources>
diff --git a/res/values-land/integers.xml b/res/values-land/integers.xml
index d247e46..08e1fe3 100644
--- a/res/values-land/integers.xml
+++ b/res/values-land/integers.xml
@@ -14,5 +14,11 @@
limitations under the License.
-->
<resources>
+ <!-- Determines the number of columns in a ContactTileRow in the favorites tab -->
+ <integer name="contact_tile_column_count_in_favorites">5</integer>
+
<integer name="contact_tile_column_count">4</integer>
+
+ <!-- Number of lines the QuickContact title can have -->
+ <integer name="quickcontact_title_lines">2</integer>
</resources>
diff --git a/res/drawable/quickcontact_track_background.xml b/res/values-land/vals.xml
similarity index 79%
rename from res/drawable/quickcontact_track_background.xml
rename to res/values-land/vals.xml
index fcf61fd..ebcae31 100644
--- a/res/drawable/quickcontact_track_background.xml
+++ b/res/values-land/vals.xml
@@ -13,7 +13,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/quickcon_background_texture"
- android:tileMode="repeat" />
+<resources>
+ <!-- The ratio of width:height for the contact's photo -->
+ <item name="quickcontact_photo_ratio" type="vals" format="float">0.7</item>
+</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..a637322
--- /dev/null
+++ b/res/values-lo-rLA/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="contactsList" msgid="8661624236494819731">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ໂທຫາໂດຍກົງ"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ສົ່ງຂໍ້ຄວາມຫາໂດຍກົງ"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"ເລືອກທາງລັດລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ເລືອກໝາຍເລກເພື່ອໂທ"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ເລືອກເບີເພື່ອສົ່ງຂໍ້ຄວາມ"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"ເລືອກລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="starredList" msgid="4817256136413959463">"ໝາຍດາວແລ້ວ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ເລື້ອຍໆ"</string>
+ <string name="strequentList" msgid="5640192862059373511">"ລາຍການທີ່ມັກ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"ລາຍລະອຽດລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"ແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"ແກ້ໄຂກຸ່ມ"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"ສ້າງກຸ່ມ"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"ກ່ຽວກັບ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"ອັບເດດ"</string>
+ <string name="searchHint" msgid="8482945356247760701">"ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"ເພີ່ມເປັນລາຍການທີ່ມັກ"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"ລຶບອອກຈາກລາຍການທີ່ມັກ"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"ແກ້ໄຂ"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"ລຶບ"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"ວາງໃສ່ໜ້າຈໍຫຼັກ"</string>
+ <string name="menu_call" msgid="3992595586042260618">"ໂທຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"ສົ່ງຂໍ້ຄວາມຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"ແຍກຂໍ້ມູນ"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"ແກ້ໄຂ"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"ລຶບ"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"ເພີ່ມເປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"ເພີ່ມກຸ່ມ"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"ແຍກລາຍຊື່ຜູ່ຕິດຕໍ່?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"ລາຍຊື່ຜູ່ຕິດຕໍ່ຈະຖືກແຍກເປັນຫຼາຍລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"ຮວມ"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"ເລືອກລາຍຊື່ຜູ່ຕິດຕໍ່ ທີ່ທ່ານຕ້ອງການຮວມກັບ <xliff:g id="NAME">%s</xliff:g>:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"ສະແດງລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ແນະນຳ"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່ແລ້ວ"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"ຕັ້ງສຽງຣິງໂທນ"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ໂອນທຸກສາຍໄປຂໍ້ຄວາມສຽງ"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"ທ່ານບໍ່ສາມາດລຶບລາຍຊື່ຜູ່ຕິດຕໍ່ຈາກບັນຊີທີ່ອ່ານໄດ້ເທົ່ານັ້ນ ແຕ່ທ່ານສາມາດເຊື່ອງມັນໄວ້ໃນລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ມີຂໍ້ມູນຈາກຫຼາຍບັນຊີ. ຂໍ້ມູນຈາກບັນຊີທີ່ອ່ານໄດ້ເທົ່ານັ້ນ ຈະຖືກເຊື່ອງໄວ້ໃນລາຍຊື່ຂອງທ່ານ ແຕ່ບໍ່ຖືກລຶບອອກ."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ການລຶບລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ຈະລຶບຂໍ້ມູນຈາກຫຼາຍບັນຊີ."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"ລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ຈະຖືກລຶບອອກ."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"ຍົກເລີກການແກ້ໄຂ"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ເພີ່ມວິດເຈັດລາຍຊື່ຜູ່ຕິດຕໍ່ໃສ່ໜ້າຈໍຫຼັກແລ້ວ."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ອົງກອນ"</item>
+ <item msgid="7196592230748086755">"ໝາຍເຫດ"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ບໍ່ມີຮູບໃນແທັບເລັດທີ່ສາມາດໃຊ້ໄດ້."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"ບໍ່ມີຮູບທີ່ສາມາດໃຊ້ໄດ້ໃນໂທລະສັບ."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"ຮູບລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"ປ້າຍກຳກັບຊື່ກຳນົດເອງ"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"ສົ່ງການໂທອອກໄປຫາຂໍ້ຄວາມສຽງໂດຍກົງ"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ລຶບຮູບພາບ"</string>
+ <string name="noContacts" msgid="8579310973261953559">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="noGroups" msgid="8614664663561385253">"ບໍ່ມີກຸ່ມ."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ເພື່ອສ້າງກຸ່ມ ທ່ານຈະຕ້ອງມີບັນຊີກ່ອນ."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"ບໍ່ມີຄົນໃນກຸ່ມນີ້."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"ເພື່ອເພີ່ມລາຍຊື່, ກະລຸນາແກ້ໄຂກຸ່ມ."</string>
+ <string name="savingContact" msgid="4075751076741924939">"ກຳລັງບັນທຶກລາຍຊື່ຜູ່ຕິດຕໍ່..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"ບັນທຶກລາຍຊື່ຜູ່ຕິດຕໍ່ແລ້ວ."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"ບໍ່ສາມາດບັນທຶກການແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່ໄດ້."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"ບັນທຶກກຸ່ມແລ້ວ."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"ບໍ່ສາມາດບັນທຶກການແກ້ໄຂກຸ່ມໄດ້."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ມີເບີໂທລະສັບ"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ມີເບີໂທລະສັບ"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ບໍ່ມີລາຍຊື່ທີ່ມີເບີໂທລະສັບ"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"ພົບ 1"</item>
+ <item quantity="other" msgid="3852668542926965042">"ພົບ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"ພົບ 1 ລາຍຊື່"</item>
+ <item quantity="other" msgid="7988132539476575389">"ພົບ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"ລາຍການທີ່ມັກ"</string>
+ <string name="callBack" msgid="5498224409038809224">"ໂທກັບ"</string>
+ <string name="callAgain" msgid="3197312117049874778">"ໂທອີກເທື່ອນຶ່ງ"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ໂທກັບ"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"ເພີ່ມ \"<xliff:g id="EMAIL">%s</xliff:g>\" ໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"ຮູບພາບລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"ບວກ"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"ລາຍຊື່ຜູ່ຕິດຕໍ່ <xliff:g id="CURRENT_NUMBER">%s</xliff:g> ຈາກທັງໝົດ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> ລາຍຊື່"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"ບໍ່ພົບແອັບຯທີ່ໃຊ້ເພື່ອດຳເນີນການ."</string>
+ <string name="missing_app" msgid="1466111003546611387">"ບໍ່ພົບແອັບຯທີ່ໃຊ້ເພື່ອດຳເນີນການ."</string>
+ <string name="menu_share" msgid="943789700636542260">"ແບ່ງປັນ"</string>
+ <string name="share_via" msgid="563121028023030093">"ແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່ຜ່ານທາງ"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ສ້າງກຸ່ມພາຍໃຕ້ບັນຊີ"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ການສົນທະນາດ້ວຍສຽງ"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ການສົນທະນາດ້ວຍວິດີໂອ"</string>
+ <string name="connections" msgid="8098440723172028350">"ການເຊື່ອມຕໍ່"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"ເພີ່ມການເຊື່ອມຕໍ່"</string>
+ <string name="recent" msgid="2659189233141493004">"ເມື່ອບໍ່ດົນມານີ້"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"ອັບເດດເມື່ອໄວໆນີ້"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ໃຊ້ຮູບນີ້"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"ບໍ່ສາມາດແກ້ໄຂໄດ້ຈາກແອັບຯນີ້."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"ບໍ່ມີຂໍ້ມູນເພີ່ມເຕີມສຳລັບລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"ບໍ່ສາມາດແກ້ໄຂໄດ້ໃນອຸປະກອນນີ້."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"ຈັດຮຽງລາຍຊື່ໂດຍ"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"ຊື່"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"ນາມສະກຸນ"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"ເບິ່ງຊື່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ຊື່ມາກ່ອນ"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"ນາມສະກຸນກ່ອນ"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ຖ່າຍຮູບ"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ຖ່າຍຮູບໃໝ່"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"ເລືອກຮູບ"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"ເລືອກຮູບໃໝ່"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"ລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຖືກອັບເດດຕາມການປ່ຽນແປງຂອງພາສາ."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"ລາຍການລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຖືກອັບເດດ."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"ລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຢູ່ໃນລະຫວ່າງການອັບເກຣດ. \n\nຂັ້ນຕອນການອັບເກຣດ ຈະໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB.\n\nກະລຸນາເລືອກໂຕເລືອກໃດນຶ່ງຕໍ່ໄປນີ້:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"ຖອນການຕິດຕັ້ງບາງແອັບພລິເຄຊັນອອກ"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ລອງອັບເກຣດອີກຄັ້ງ"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"ກຳລັງຊອກຫາ..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"ສະແດງສິ່ງທີ່ເລືອກ"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"ສະແດງທັງໝົດ"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ເລືອກທັງໝົດ"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"ບໍ່ເລືອກທັງໝົດ"</string>
+ <string name="add_field" msgid="2384260056674995230">"ເພີ່ມຊ່ອງຂໍ້ມູນອື່ນ"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"ເພີ່ມໃໝ່"</string>
+ <string name="add_organization" msgid="7311893231158291197">"ເພີ່ມອົງກອນ"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"ວັນທີ"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ຊື່ກຸ່ມ"</string>
+ <string name="description_star" msgid="2605854427360036550">"ໝາຍດາວ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"ແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"ຍັງບໍ່ຮວມເທື່ອ"</item>
+ <item quantity="other" msgid="425683718017380845">"ຮວມມາຈາກ <xliff:g id="COUNT">%0$d</xliff:g> ແຫລ່ງຂໍ້ມູນ"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ ກັບລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເລືອກ?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"ສະລັບໄປທີ່ການແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເລືອກ? ຂໍ້ມູນທີ່ທ່ານຂຽນມາຈະຖືກສຳເນົາໄວ້."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"ສຳເນົາໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງຂ້ອຍ"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງຂ້ອຍ"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"ໄດເຣັກທໍຣີ <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"ກຳນົດເອງ"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"ການຕັ້ງຄ່າ"</string>
+ <string name="menu_settings" msgid="377929915873428211">"ການຕັ້ງຄ່າ"</string>
+ <string name="menu_help" msgid="5123887102216637725">"ຊ່ວຍເຫຼືອ"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"ໂຕເລືອກການສະແດງຜົນ"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"ເບີໂທລະສັບ"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"ປິດ"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"ລະບຸປີ"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"ກຳລັງໂຫລດ..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ເຂົ້າສູ່ລະບົບບັນຊີ"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"ນຳເຂົ້າລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"ສ້າງກຸ່ມໃໝ່"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"ສ້າງກຸ່ມໃໝ່"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 ກຸ່ມ"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ກຸ່ມ"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"ລຶບກຸ່ມ \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (ລາຍຊື່ຜູ່ຕິດຕໍ່ຈະບໍ່ຖືກລຶບອອກ.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> ຄົນຈາກ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> ຄົນຈາກ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> ຄົນ"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> ຄົນ"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"ພິມຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ກ່ອນການຮວມກັບລາຍຊື່ອື່ນ."</string>
+ <string name="copy_text" msgid="3257145021583508761">"ສຳເນົາໃສ່ຄລິບບອດ"</string>
+ <string name="set_default" msgid="4417505153468300351">"ຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="clear_default" msgid="7193185801596678067">"ລຶບຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"ສຳເນົາຂໍ້ຄວາມແລ້ວ"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"ຍົກເລີກການແກ້ໄຂຂອງທ່ານ?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"ຕັ້ງຄ່າໂປຣໄຟລ໌ຂອງຂ້ອຍ"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"ພິມຊື່ຄົນ"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ຊື່ກຸ່ມ"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ໂປຣໄຟລ໌ໃນອຸປະກອນຂອງຂ້ອຍ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ໂປຣໄຟລ໌ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> ຂອງຂ້ອຍ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"ສະແດງລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"ລາຍຊື່ຜູ່ຕິດຕໍ່ຈະເຮັດວຽກໄດ້ດີຂຶ້ນເມື່ອໃຊ້ຮ່ວມກັບບັນຊີ Google.\n\n• ເຂົ້າເຖິງໄດ້ຈາກທຸກໂປຣແກຣມທ່ອງເວັບ.\n• ສຳຮອງຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານໄວ້ຢ່າງປອດໄພ."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"ເກັບຮັກສາລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານໄວ້ຢ່າງປອດໄພ ເຖິງແມ່ນວ່າໂທລະສັບຂອງທ່ານຈະເສຍກໍຕາມ ດ້ວຍການຊິ້ງຂໍ້ມູນກັບບໍລິການອອນລາຍ."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ເພີ່ມບັນຊີ"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"ລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານຈະບໍ່ຖືກສຳຮອງຂໍ້ມູນ. ທ່ານຕ້ອງການເພີ່ມບັນຊີ ທີ່ສາມາດສຳຮອງຂໍ້ມູນອອນລາຍໄດ້ຫຼືບໍ່?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"ລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານຈະຖືກຊິ້ງຂໍ້ມູນກັບ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ທ່ານສາມາດຊິ້ງຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານ ກັບບັນຊີຕໍ່ໄປນີ້ໄດ້. ທ່ານຕ້ອງການໃຊ້ບັນຊີໃດ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"ຈັດເກັບໃນເຄື່ອງ"</string>
+ <string name="add_account" msgid="8201790677994503186">"ເພີ່ມບັນຊີ"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"ເພີ່ມບັນຊີໃໝ່"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"ສົ່ງອອກໄຟລ໌ຖານຂໍ້ມູນ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"ຮູບພາບ. ເລືອກເພື່ອປ່ຽນ"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ເພີ່ມລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"ເບິ່ງເພີ່ມເຕີມ"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"ເບິ່ງໜ້ອຍລົງ"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"ເບິ່ງທັງໝົດ"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"ຕິດຕໍ່"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"ບໍ່ດົນມານີ້"</string>
+ <string name="send_message" msgid="8938418965550543196">"ສົ່ງຂໍ້ຄວາມ"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"ກຳລັງສ້າງສຳເນົາສ່ວນບຸກຄົນ..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"ມື້ວານນີ້"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"ມື້ອື່ນ"</string>
+ <string name="today" msgid="8041090779381781781">"ມື້ນີ້"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"ມື້ນີ້ໃນເວລາ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"ມື້ອື່ນໃນເວລາ <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(ນັດໝາຍບໍ່ມີຊື່)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"ຕົກລົງ"</string>
+</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
new file mode 100644
index 0000000..fbdd885
--- /dev/null
+++ b/res/values-lo/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"People"</string>
+ <string name="contactsList" msgid="8661624236494819731">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ໂທຫາໂດຍກົງ"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ສົ່ງຂໍ້ຄວາມຫາໂດຍກົງ"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"ເລືອກທາງລັດລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ເລືອກໝາຍເລກເພື່ອໂທ"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"ເລືອກເບີເພື່ອສົ່ງຂໍ້ຄວາມ"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"ເລືອກລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="starredList" msgid="4817256136413959463">"ໝາຍດາວແລ້ວ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"ເລື້ອຍໆ"</string>
+ <string name="strequentList" msgid="5640192862059373511">"ລາຍການທີ່ມັກ"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"ລາຍລະອຽດລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"ແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"ແກ້ໄຂກຸ່ມ"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"ສ້າງກຸ່ມ"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"ກ່ຽວກັບ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"ອັບເດດ"</string>
+ <string name="searchHint" msgid="8482945356247760701">"ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"ເບິ່ງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"ເພີ່ມເປັນລາຍການທີ່ມັກ"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"ລຶບອອກຈາກລາຍການທີ່ມັກ"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"ແກ້ໄຂ"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"ລຶບ"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"ວາງໃສ່ໜ້າຈໍຫຼັກ"</string>
+ <string name="menu_call" msgid="3992595586042260618">"ໂທຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"ສົ່ງຂໍ້ຄວາມຫາລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"ແຍກຂໍ້ມູນ"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"ແກ້ໄຂ"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"ລຶບ"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"ເພີ່ມເປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"ເພີ່ມກຸ່ມ"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"ແຍກລາຍຊື່ຜູ່ຕິດຕໍ່?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"ລາຍຊື່ຜູ່ຕິດຕໍ່ຈະຖືກແຍກເປັນຫຼາຍລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"ຮວມ"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"ເລືອກລາຍຊື່ຜູ່ຕິດຕໍ່ ທີ່ທ່ານຕ້ອງການຮວມກັບ <xliff:g id="NAME">%s</xliff:g>:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"ສະແດງລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ແນະນຳ"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່ແລ້ວ"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"ຕັ້ງສຽງຣິງໂທນ"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"ໂອນທຸກສາຍໄປຂໍ້ຄວາມສຽງ"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"ທ່ານບໍ່ສາມາດລຶບລາຍຊື່ຜູ່ຕິດຕໍ່ຈາກບັນຊີທີ່ອ່ານໄດ້ເທົ່ານັ້ນ ແຕ່ທ່ານສາມາດເຊື່ອງມັນໄວ້ໃນລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ມີຂໍ້ມູນຈາກຫຼາຍບັນຊີ. ຂໍ້ມູນຈາກບັນຊີທີ່ອ່ານໄດ້ເທົ່ານັ້ນ ຈະຖືກເຊື່ອງໄວ້ໃນລາຍຊື່ຂອງທ່ານ ແຕ່ບໍ່ຖືກລຶບອອກ."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ການລຶບລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ຈະລຶບຂໍ້ມູນຈາກຫຼາຍບັນຊີ."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"ລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ຈະຖືກລຶບອອກ."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"ປິດໄວ້"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"ເພີ່ມວິດເຈັດລາຍຊື່ຜູ່ຕິດຕໍ່ໃສ່ໜ້າຈໍຫຼັກແລ້ວ."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"ອົງກອນ"</item>
+ <item msgid="7196592230748086755">"ໝາຍເຫດ"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ບໍ່ມີຮູບໃນແທັບເລັດທີ່ສາມາດໃຊ້ໄດ້."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"ບໍ່ມີຮູບທີ່ສາມາດໃຊ້ໄດ້ໃນໂທລະສັບ."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"ຮູບລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"ປ້າຍກຳກັບຊື່ກຳນົດເອງ"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"ສົ່ງການໂທອອກໄປຫາຂໍ້ຄວາມສຽງໂດຍກົງ"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ລຶບຮູບພາບ"</string>
+ <string name="noContacts" msgid="8579310973261953559">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່."</string>
+ <string name="noGroups" msgid="8614664663561385253">"ບໍ່ມີກຸ່ມ."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"ເພື່ອສ້າງກຸ່ມ ທ່ານຈະຕ້ອງມີບັນຊີກ່ອນ."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"ບໍ່ມີຄົນໃນກຸ່ມນີ້."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"ເພື່ອເພີ່ມລາຍຊື່, ກະລຸນາແກ້ໄຂກຸ່ມ."</string>
+ <string name="savingContact" msgid="4075751076741924939">"ກຳລັງບັນທຶກລາຍຊື່ຜູ່ຕິດຕໍ່..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"ບັນທຶກລາຍຊື່ຜູ່ຕິດຕໍ່ແລ້ວ."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"ບໍ່ສາມາດບັນທຶກການແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່ໄດ້."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"ບັນທຶກກຸ່ມແລ້ວ."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"ບໍ່ສາມາດບັນທຶກການແກ້ໄຂກຸ່ມໄດ້."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ມີເບີໂທລະສັບ"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> ລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ມີເບີໂທລະສັບ"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ບໍ່ມີລາຍຊື່ທີ່ມີເບີໂທລະສັບ"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 ລາຍຊື່ຜູ່ຕິດຕໍ່"</item>
+ <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> ລາຍຊື່ຜູ່ຕິດຕໍ່"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"ພົບ 1"</item>
+ <item quantity="other" msgid="3852668542926965042">"ພົບ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"ພົບ 1 ລາຍຊື່"</item>
+ <item quantity="other" msgid="7988132539476575389">"ພົບ <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"ກຸ່ມ"</string>
+ <string name="callBack" msgid="5498224409038809224">"ໂທກັບ"</string>
+ <string name="callAgain" msgid="3197312117049874778">"ໂທອີກເທື່ອນຶ່ງ"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ໂທກັບ"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"ເພີ່ມ \"<xliff:g id="EMAIL">%s</xliff:g>\" ໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"ຮູບພາບລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"ບວກ"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"ລາຍຊື່ຜູ່ຕິດຕໍ່ <xliff:g id="CURRENT_NUMBER">%s</xliff:g> ຈາກທັງໝົດ <xliff:g id="TOTAL_NUMBER">%s</xliff:g> ລາຍຊື່"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"ບໍ່ພົບແອັບຯທີ່ໃຊ້ເພື່ອດຳເນີນການ."</string>
+ <string name="menu_share" msgid="943789700636542260">"ແບ່ງປັນ"</string>
+ <string name="share_via" msgid="563121028023030093">"ແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່ຜ່ານທາງ"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ສ້າງກຸ່ມພາຍໃຕ້ບັນຊີ"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"ການສົນທະນາດ້ວຍສຽງ"</string>
+ <string name="video_chat" msgid="1872255818640336072">"ການສົນທະນາດ້ວຍວິດີໂອ"</string>
+ <string name="connections" msgid="8098440723172028350">"ການເຊື່ອມຕໍ່"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"ເພີ່ມການເຊື່ອມຕໍ່"</string>
+ <string name="recent" msgid="2659189233141493004">"ເມື່ອບໍ່ດົນມານີ້"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"ອັບເດດເມື່ອໄວໆນີ້"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"ໃຊ້ຮູບນີ້"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"ບໍ່ສາມາດແກ້ໄຂໄດ້ຈາກແອັບຯນີ້."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"ບໍ່ມີຂໍ້ມູນເພີ່ມເຕີມສຳລັບລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"ບໍ່ສາມາດແກ້ໄຂໄດ້ໃນອຸປະກອນນີ້."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"ຈັດຮຽງລາຍຊື່ໂດຍ"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"ຊື່"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"ນາມສະກຸນ"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"ເບິ່ງຊື່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ຊື່ມາກ່ອນ"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"ນາມສະກຸນກ່ອນ"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ຖ່າຍຮູບ"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"ຖ່າຍຮູບໃໝ່"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ເລືອກຮູບຈາກຄັງຮູບພາບ"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ເລືອກຮູບໃໝ່ຈາກຄັງຮູບພາບ"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"ລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຖືກອັບເດດຕາມການປ່ຽນແປງຂອງພາສາ."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"ລາຍການລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຖືກອັບເດດ."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"ລາຍຊື່ຜູ່ຕິດຕໍ່ກຳລັງຢູ່ໃນລະຫວ່າງການອັບເກຣດ. \n\nຂັ້ນຕອນການອັບເກຣດ ຈະໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນພາຍໃນ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB.\n\nກະລຸນາເລືອກໂຕເລືອກໃດນຶ່ງຕໍ່ໄປນີ້:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"ຖອນການຕິດຕັ້ງບາງແອັບພລິເຄຊັນອອກ"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"ລອງອັບເກຣດອີກຄັ້ງ"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"ກຳລັງຊອກຫາ..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"ສະແດງສິ່ງທີ່ເລືອກ"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"ສະແດງທັງໝົດ"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"ເລືອກທັງໝົດ"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"ບໍ່ເລືອກທັງໝົດ"</string>
+ <string name="add_field" msgid="2384260056674995230">"ເພີ່ມຊ່ອງຂໍ້ມູນອື່ນ"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"ເພີ່ມໃໝ່"</string>
+ <string name="add_organization" msgid="7311893231158291197">"ເພີ່ມອົງກອນ"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"ວັນທີ"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"ຊື່ກຸ່ມ"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"ຜ່ານ <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> ຜ່ານ <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"ໝາຍດາວ"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"ແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"ຍັງບໍ່ຮວມເທື່ອ"</item>
+ <item quantity="other" msgid="425683718017380845">"ຮວມມາຈາກ <xliff:g id="COUNT">%0$d</xliff:g> ແຫລ່ງຂໍ້ມູນ"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"ຮວມລາຍຊື່ຜູ່ຕິດຕໍ່ນີ້ ກັບລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເລືອກ?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"ສະລັບໄປທີ່ການແກ້ໄຂລາຍຊື່ຜູ່ຕິດຕໍ່ທີ່ເລືອກ? ຂໍ້ມູນທີ່ທ່ານຂຽນມາຈະຖືກສຳເນົາໄວ້."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"ສຳເນົາໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງຂ້ອຍ"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງຂ້ອຍ"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"ໄດເຣັກທໍຣີ <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"ກຳລັງສ້າງສຳເນົາສ່ວນໂຕ..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"ກຳນົດເອງ"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"ການຕັ້ງຄ່າ"</string>
+ <string name="menu_settings" msgid="377929915873428211">"ການຕັ້ງຄ່າ"</string>
+ <string name="menu_help" msgid="5123887102216637725">"ຊ່ວຍເຫຼືອ"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"ໂຕເລືອກການສະແດງຜົນ"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"ເບີໂທລະສັບ"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"ປິດ"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"ລະບຸປີ"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"ກຳລັງໂຫລດ..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"ສ້າງລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ເຂົ້າສູ່ລະບົບບັນຊີ"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"ນຳເຂົ້າລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"ສ້າງກຸ່ມໃໝ່"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"ສ້າງກຸ່ມໃໝ່"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 ກຸ່ມ"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> ກຸ່ມ"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"ລຶບກຸ່ມ \"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\"? (ລາຍຊື່ຜູ່ຕິດຕໍ່ຈະບໍ່ຖືກລຶບອອກ.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> ຄົນຈາກ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> ຄົນຈາກ <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> ຄົນ"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> ຄົນ"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"ພິມຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ກ່ອນການຮວມກັບລາຍຊື່ອື່ນ."</string>
+ <string name="copy_text" msgid="3257145021583508761">"ສຳເນົາໃສ່ຄລິບບອດ"</string>
+ <string name="set_default" msgid="4417505153468300351">"ຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="clear_default" msgid="7193185801596678067">"ລຶບຄ່າເລີ່ມຕົ້ນ"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"ສຳເນົາຂໍ້ຄວາມແລ້ວ"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"ຍົກເລີກການແກ້ໄຂຂອງທ່ານ?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"ຕັ້ງຄ່າໂປຣໄຟລ໌ຂອງຂ້ອຍ"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"ພິມຊື່ຄົນ"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"ຊື່ກຸ່ມ"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"ໂປຣໄຟລ໌ໃນອຸປະກອນຂອງຂ້ອຍ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"ໂປຣໄຟລ໌ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> ຂອງຂ້ອຍ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"ສະແດງລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດ"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"ເຮັດວຽກໄດ້ດີຂຶ້ນດ້ວຍບັນຊີ Google.\n\n• ເຂົ້າເຖິງໄດ້ຈາກທຸກໂປຣແກຣມທ່ອງເວັບ.\n• ສຳຮອງຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານຢ່າງປອດໄພ."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"ເກັບຮັກສາລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານໄວ້ຢ່າງປອດໄພ ເຖິງແມ່ນວ່າໂທລະສັບຂອງທ່ານຈະເສຍກໍຕາມ ດ້ວຍການຊິ້ງຂໍ້ມູນກັບບໍລິການອອນລາຍ."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ເພີ່ມບັນຊີ"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"ລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານຈະບໍ່ຖືກສຳຮອງຂໍ້ມູນ. ທ່ານຕ້ອງການເພີ່ມບັນຊີ ທີ່ສາມາດສຳຮອງຂໍ້ມູນອອນລາຍໄດ້ຫຼືບໍ່?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"ລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານຈະຖືກຊິ້ງຂໍ້ມູນກັບ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ທ່ານສາມາດຊິ້ງຂໍ້ມູນລາຍຊື່ຜູ່ຕິດຕໍ່ໃໝ່ຂອງທ່ານ ກັບບັນຊີຕໍ່ໄປນີ້ໄດ້. ທ່ານຕ້ອງການໃຊ້ບັນຊີໃດ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"ຈັດເກັບໃນເຄື່ອງ"</string>
+ <string name="add_account" msgid="8201790677994503186">"ເພີ່ມບັນຊີ"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"ເພີ່ມບັນຊີໃໝ່"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"ສົ່ງອອກໄຟລ໌ຖານຂໍ້ມູນ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"ຮູບພາບ. ເລືອກເພື່ອປ່ຽນ"</string>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 55dd40c..583c217 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Žmonės"</string>
+ <string name="people" msgid="1190841469952343354">"Kontaktai"</string>
<string name="contactsList" msgid="8661624236494819731">"Adresinė"</string>
<string name="shortcutContact" msgid="749243779392912958">"Adresatas"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Tiesioginis numerio rinkimas"</string>
@@ -27,9 +27,8 @@
<string name="contactPickerActivityTitle" msgid="4301062192337417640">"Pasirinkti kontaktą"</string>
<string name="starredList" msgid="4817256136413959463">"Pažymėta žvaigždute"</string>
<string name="frequentList" msgid="7154768136473953056">"Dažnai naudojami"</string>
- <string name="strequentList" msgid="5640192862059373511">"Adresynas"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Mėgstamiausi"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Išsami adresato informacija"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Žiūrėti adresatą"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Redaguoti adresatą"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Sukurti adresatą"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Redaguoti grupę"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Šiam adresatui priskirta kelių paskyrų informacija. Tik skaitomų paskyrų informacija bus paslėpta adresatų sąrašuose; ji nebus ištrinta."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Ištrynus šią informaciją, bus ištrinta kelių paskyrų informacija."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Šis adresatas bus ištrintas."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Atmesti"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Atmesti pakeitimus"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontaktas neegzistuoja."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktų valdiklis pridėtas prie pagrindinio ekrano."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Kurti naują adresatą"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Kontaktai (-ų) su telefonų numeriais: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nėra kontaktų su telefonų numeriais"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontaktas"</item>
- <item quantity="other" msgid="3578469907265375314">"Kontaktai: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"rastas 1"</item>
<item quantity="other" msgid="3852668542926965042">"Rasta <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"rastas 1"</item>
<item quantity="other" msgid="7988132539476575389">"Rasta <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Visi kontaktai"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupės"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Visi kontaktai"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Mėgstamiausi"</string>
<string name="callBack" msgid="5498224409038809224">"Perskambinti"</string>
<string name="callAgain" msgid="3197312117049874778">"Skambinti dar kartą"</string>
<string name="returnCall" msgid="8171961914203617813">"Grįžtamasis skambutis"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> iš <xliff:g id="TOTAL_NUMBER">%s</xliff:g> adresatų"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Kontaktų vardai"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nerasta jokių programų šiam veiksmui apdoroti."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nerasta jokių programų šiam veiksmui apdoroti."</string>
<string name="menu_share" msgid="943789700636542260">"Bendrinti"</string>
<string name="share_via" msgid="563121028023030093">"Bendrinti adresatą naudojant"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Kurti grupę paskyroje"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Pirmiausia pavardė"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotografuoti"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Iš naujo fotografuoti"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Pasirinkti nuotrauką iš galerijos."</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Pasirinkti naują nuotrauką iš galerijos"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Pasirinkti nuotrauką"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Pasirinkti naują nuotrauką"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktų sąrašas yra atnaujinamas, kad atspindėtų kalbos pakeitimą."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Atnaujinamas kontaktų sąrašas."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontaktai naujovinami. \n\nNaujovinimo procesui reikalinga maždaug <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB vidinės atminties.\n\nPasirinkite vieną iš šių parinkčių:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Pridėti organizaciją"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Grupės pavad."</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"naudojant „<xliff:g id="SOURCE">%1$s</xliff:g>“"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> naudojant „<xliff:g id="SOURCE">%2$s</xliff:g>“"</string>
<string name="description_star" msgid="2605854427360036550">"įtraukti į adresyną"</string>
<string name="edit_contact" msgid="7529281274005689512">"Redaguoti kontaktą"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopijuoti į „Mano kontaktus“"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Pridėti prie „Mano kontaktų“"</string>
<string name="contact_directory_description" msgid="683398073603909119">"„<xliff:g id="TYPE">%1$s</xliff:g>“ katalogas"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Kuriama asmeninė kopija..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Priskirtas"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nustatymai"</string>
<string name="menu_settings" msgid="377929915873428211">"Nustatymai"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mano vietos profilis"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mano „<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>“ profilis"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Pateikiami visi kontaktai"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Žmonių programa veikia geriau naudojant „Google“ paskyrą.\n\n• Pasiekite naudodami bet kurią žiniatinklio naršyklę.\n• Saugiai kurkite atsargines kontaktų kopijas."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontaktai veikia geriau naudojant „Google“ paskyrą.\n\n• Pasiekite naudodami bet kurią žiniatinklio naršyklę.\n• Saugiai kurkite atsargines kontaktų kopijas."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Užtikrinkite kontaktų saugumą net praradę telefoną: sinchronizuokite su internetine paslauga."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Pridėti paskyrą"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Naujo kontakto atsarginė kopija nebus sukurta. Pridėti paskyrą, kuri sukuria atsargines kontaktų kopijas internete?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Pridėkite naują paskyrą"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportuoti duomenų failus"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Nuotrauka. Pasirinkite, kad pakeistumėte"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"pridėti naują kontaktą"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Žr. daugiau"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Žr. mažiau"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Žr. viską"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontaktas"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Naujausios"</string>
+ <string name="send_message" msgid="8938418965550543196">"Siųsti pranešimą"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Kuriama asmeninė kopija..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Vakar"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Rytoj"</string>
+ <string name="today" msgid="8041090779381781781">"Šiandien"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Šiandien, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Rytoj, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Įvykis be pavadinimo)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Nustatyti"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index b479d59..e0e8e30 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Kontakti"</string>
+ <string name="people" msgid="1190841469952343354">"Kontaktpersonas"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontaktpersonas"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontaktpersona"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Tiešais zvans"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Bieži"</string>
<string name="strequentList" msgid="5640192862059373511">"Izlase"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Informācija par kontaktpersonu"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Skatīt kontaktpersonu"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Rediģēt kontaktpersonu"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Izveidot kontaktpersonu"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Rediģēt grupu"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Šī kontaktpersona satur informāciju no vairākiem kontiem. Informācija no tikai lasāmiem kontiem jūsu kontaktpersonu sarakstā tiks slēpta, nevis dzēsta."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Dzēšot šo kontaktpersonu, tiks dzēsta informācija no vairākiem kontiem."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Šī kontaktpersona tiks dzēsta."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Atmest"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Atmest izmaiņas"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Šāda kontaktpersona nepastāv."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktpersonas logrīks pievienots sākuma ekrānam."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Izveidot jaunu kontaktpersonu"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersonas ar tālruņa numuriem"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nav nevienas kontaktpersonas ar tālruņa numuru"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontaktpersona"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersonas"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Atrasta 1"</item>
<item quantity="other" msgid="3852668542926965042">"Atrastas <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Atrasta 1"</item>
<item quantity="other" msgid="7988132539476575389">"Atrastas <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Visas kontaktpersonas"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupas"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Visas"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Izlase"</string>
<string name="callBack" msgid="5498224409038809224">"Atzvanīt"</string>
<string name="callAgain" msgid="3197312117049874778">"Zvanīt vēlreiz"</string>
<string name="returnCall" msgid="8171961914203617813">"Atzvanīt"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> no <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktpersonas(-ām)"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Kontaktpersonu vārdi"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Netika atrasta neviena lietotne šīs darbības veikšanai."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Netika atrasta neviena lietotne šīs darbības veikšanai."</string>
<string name="menu_share" msgid="943789700636542260">"Kopīgot"</string>
<string name="share_via" msgid="563121028023030093">"Kopīgot kontaktpersonu, izmantojot"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Izveidot grupu šajā kontā:"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Vispirms rādīt uzvārdu"</string>
<string name="take_photo" msgid="7496128293167402354">"Uzņemt fotoattēlu"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Uzņemt jaunu fotoattēlu"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Izvēlēties fotoattēlu no galerijas"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Atlasīt jaunu fotoattēlu no galerijas"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Izvēlēties fotoattēlu"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Atlasīt jaunu fotoattēlu"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktpersonu saraksts tiek atjaunināts, lai atspoguļotu valodas maiņu."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kontaktpersonu saraksts tiek atjaunināts."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Notiek kontaktpersonu jaunināšana.\n\nJaunināšanas procesam ir nepieciešami aptuveni <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB iekšējās atmiņas.\n\nIzvēlieties vienu no tālāk norādītajām opcijām."</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Pievienot organiz."</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datums"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Grupas nos."</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"izmantojot <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>, izmantojot <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"izlase"</string>
<string name="edit_contact" msgid="7529281274005689512">"Kontaktpersonu rediģēšana"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopēt uz manām kontaktpersonām"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Pievienot mapē Manas kontaktpersonas"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Katalogs <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Notiek personīgā eksemplāra izveide..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Pielāgotas"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Iestatījumi"</string>
<string name="menu_settings" msgid="377929915873428211">"Iestatījumi"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mans vietējais profils"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mans <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profils"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Tiek attēlotas visas kontaktpersonas"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Lietotne People darbojas labāk ar Google kontu.\n\n• Piekļuve no jebkuras tīmekļa pārlūkprogrammas\n• Droša kontaktinformācijas dublēšana"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Lietotne “Kontaktpersonas” darbosies labāk, izmantojot Google kontu.\n\n• Piekļuve no jebkuras tīmekļa pārlūkprogrammas. \n• Droša kontaktpersonu informācijas dublēšana."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Nodrošinieties pret kontaktpersonu zudumu pat tālruņa nozaudēšanas gadījumā — sinhronizējiet informāciju ar tiešsaistes pakalpojumu."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Konta pievienošana"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Jaunā kontaktinformācija netiks dublēta. Vai pievienot kontu, kurā tiek tiešsaistē dublēta kontaktinformācija?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Pievienot jaunu kontu"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportēt datu bāzes failus"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Attēls. Lai mainītu, atlasiet."</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"pievienot jaunu kontaktpersonu"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Skatīt vairāk"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Skatīt mazāk"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Skatīt visu"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontaktpersona"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nesenie"</string>
+ <string name="send_message" msgid="8938418965550543196">"Sūtīt ziņojumu"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Notiek personīgās kopijas izveide…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Vakar"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Rīt"</string>
+ <string name="today" msgid="8041090779381781781">"Šodien"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Šodien plkst. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Rīt plkst. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Pasākums bez nosaukuma)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Iestatīt"</string>
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..019dbdf
--- /dev/null
+++ b/res/values-mn-rMN/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Харилцагчид"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Харилцагчид"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Харилцагч"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Шууд залгах"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Шууд зурвас"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Харилцагчийн товчилборыг сонгоно уу"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Залгах дугаарыг сонгоно уу"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Зурвас илгээх дугаарыг сонгох"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Харилцагч сонгоно уу"</string>
+ <string name="starredList" msgid="4817256136413959463">"Одтой"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Байнга"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Дуртай"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Харилцагчийн мэдээлэл"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Харилцагч засварлах"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Харилцагч үүсгэх"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Бүлгэм засварлах"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Бүлгэм үүсгэх"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Тухай"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Шинэчлэлтүүд"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Харилцагчдаас хайх"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Харилцагчийг харах"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Таалагдсан руу нэмэх"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Дуртайгаас хасах"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Засах"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Устгах"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Үндсэн дэлгэц дээр байршуулах"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Харилцагч руу залгах"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Харилцагч руу зурвас илгээх"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Салгах"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Засах"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Устгах"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Харилцагч нэмэх"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Бүлгэм нэмэх"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Харилцагчийг хуваах уу?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Энэ харилцагч олон харилцагчид хуваагдах болно."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Холбох"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Харилцагчдыг холбох"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g>-тай холбохыг хүсэж буй харилцагчийг сонгоно уу:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Бүх харилцагчдыг харуулах"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Санал болгосон харилцагчид"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Бүх харилцагчид"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Харилцагчид холбогдсон"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Хонхны ая суулгах"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Бүх дуудлагыг дуут шуудан руу"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Та зөвхөн-унших акаунтаас харилцагчдыг устгаж чадахгүй, харин харилцагчдын жагсаалтаасаас нууцлаж болно."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Энэ харилцагчид олон акаунтын мэдээлэл агуулагдаж байна. Зөвхөн-унших акаунтуудын мэдээллийг харилцагчийн жагсаалтаас устгахгүйгээр нууцлах болно."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Энэ харилцагчийг устгаснаар олон акаунтаас мэдээллийг устгах болно."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Энэ харилцагч устгагдах болно."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Өөрчлөлтүүдийг цуцлах"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Харилцагч байхгүй байна."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Харилцагчийн виджетийг Үндсэн дэлгэцэнд нэмсэн."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Шинэ харилцагч үүсгэх"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Шинэ харилцагч үүсгэх"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Байгууллага"</item>
+ <item msgid="7196592230748086755">"Тэмдэглэл"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Таблетэнд зураг байхгүй байна."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Утсанд зураг байхгүй байна."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Харилцагчийн зураг"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Захиалгат шошгын нэр"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Дуут шуудан руу шууд дуудлага хийх"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Зургийг арилгах"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Харилцагч байхгүй."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Бүлгэм байхгүй байна."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Бүлгэм үүсгэхийн тулд танд акаунт хэрэгтэй."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Энэ бүлгэмд хүн алга."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Нэмэхийн тулд бүлгэмд өөрчлөлт оруулна уу."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Харилцагчийг хадгалж байна…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Харилцагчийг хадгалсан."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Харилцагчийн өөрчлөлтүүдийг хадгалж чадсангүй."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Бүлгэм хадгалагдлаа."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Бүлгэмийн өөрчлөлтүүдийг хадгалж чадсангүй."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"Утасны дугаартай 1 харилцагч"</item>
+ <item quantity="other" msgid="3299954047880968205">"Утасны дугаартай <xliff:g id="COUNT">%d</xliff:g> харилцагч"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Утасны дугаартай харилцагч байхгүй"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 олдсон"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> олдсон"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Харилцагч байхгүй"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 олдсон"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> олдсон"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Бүх харилцагчид"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Дуртай"</string>
+ <string name="callBack" msgid="5498224409038809224">"Буцааж залгах"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Дахин залгана уу"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Буцааж залгах"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\"-г харилцагчдад нэмэх үү?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"харилцагчийн зураг"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"нэмэх"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"нийт <xliff:g id="TOTAL_NUMBER">%s</xliff:g> харилцагчдын <xliff:g id="CURRENT_NUMBER">%s</xliff:g>"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Таны харилцагчдын нэрс"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Тус үйлдлийг гүйцэтгэх апп олдсонгүй."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Тус үйлдлийг гүйцэтгэх апп олдсонгүй."</string>
+ <string name="menu_share" msgid="943789700636542260">"Хуваалцах"</string>
+ <string name="share_via" msgid="563121028023030093">"Харилцагчийг дараахаар хуваалцах"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Акаунт дотор бүлгэм үүсгэх"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Дуут чат"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Видео чат"</string>
+ <string name="connections" msgid="8098440723172028350">"Холболтууд"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Холболт нэмэх"</string>
+ <string name="recent" msgid="2659189233141493004">"Саяхны"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Саяхны шинэчлэлтүүд"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> харилцагч"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Энэ зургийг ашиглах"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Тус апп-с засварлах боломжгүй."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Тус харилцагчтай холбоотой нэмэлт мэдээлэл байхгүй байна."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Энэ төхөөрөмж дээр засах боломжгүй."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Жагсаалтыг дараахаар эрэмбэлэх"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Өөрийн нэр"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Овгийн нэр"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Харилцагчийн нэрсийг харах"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Өөрийн нэрийг өмнө оруулах"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Овгийн нэрийг эхэнд нь"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Зураг авах"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Шинэ зураг авах"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Зураг сонгох"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Шинэ зураг сонгох"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Хэлний өөрчлөлтийг тусгахын тулд харилцагчдын жагсаалтыг шинэчилж байна."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Харилцагчдын жагсаалтыг шинэчилж байна."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Харилцагчдын жагсаалтыг сайжруулж байна. \n\nСайжруулах явцад ойролцоогоор <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB хэмжээтэй дотоод сан шаардагдана.\n\nДараах сонголтуудаас нэгийг нь сонгоно уу:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Зарим аппликешнүүдийг устгана уу"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Сайжруулахыг дахин эхлүүлэх"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Хайж байна..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Сонгоснуудыг харуулах"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Бүгдийг харуулах"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Бүгдийг сонгох"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Бүх сонголтыг цуцлах"</string>
+ <string name="add_field" msgid="2384260056674995230">"Өөр талбар нэмэх"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Шинийг нэмэх"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Байгууллага нэмэх"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Огноо"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Бүлгэмийн нэр"</string>
+ <string name="description_star" msgid="2605854427360036550">"дуртай"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Харилцагчийг засварлах"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"нэгтгэгдээгүй"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> эх үүсвэрээс нийлүүлсэн"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Энэ харилцагчийг сонгосон харилцагчтай холбох уу?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Сонгосон харилцагчийг засварлах руу шилжих үү? Таны оруулсан мэдээллүүд хуулагдах болно."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Миний Харилцагчид руу хуулах"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Миний харилцагчдад нэмэх"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Директор <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Тохируулсан"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Тохиргоо"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Тохиргоо"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Тусламж"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Харуулах сонголтууд"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Утасны дугаар"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Харилцагчдад нэмэх"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Харилцагчид нэмэх"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Хаах"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Жилийг оруулах"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Харилцагч"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Ачаалж байна..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Шинэ акаунт үүсгэх"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Акаунт руу нэвтрэн орох"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Харилцагчид импорт хийх"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Шинэ бүлгэм үүсгэх"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Шинэ бүлгэм үүсгэх"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 бүлгэм"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> бүлгэм"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" бүлгэмийг устгах уу? (Доторх харилцагчид нь устахгүй.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-с <xliff:g id="COUNT_0">%1$d</xliff:g> хүн"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-с <xliff:g id="COUNT_0">%1$d</xliff:g> хүн"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> хүн"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> хүн"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Өөр харилцагчтай холбохын өмнө харилцагчийн нэрийг оруулна уу."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Түр санах ойд хуулах"</string>
+ <string name="set_default" msgid="4417505153468300351">"Үндсэн болгох"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Үндсэнээс хасах"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Текст хуулагдав"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Өөрчлөлтүүдээ цуцлах уу?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Миний профайлийн тохиргоо"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Хүний нэрийг бичнэ үү"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Бүлгэмийн Нэр"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Миний дотоод профайл"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Миний <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> профайл"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Бүх харилцагчийг харуулж байна"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Харилцагчид нь Google акаунттай сайн тохирдог.\n\n• Дурын веб хөтчөөс хандах боломжтой.\n• Өөрийн харилцагчдыг найдвартай нөөшлөнө."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Утсаа гээсэн ч харилцагчдаа найдвартай хадгалаарай: онлайн үйлчилгээгээр синк хийгээрэй."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Акаунт нэмэх"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Таны шинэ харилцагч нөөцлөгдөхгүй. Харилцагчдыг онлайнаар нөөцөлдөг акаунтыг нэмэх үү?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Таны шинэ харилцагч <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-тай синк хийгдэх болно."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Та өөрийн шинэ харилцагчийг дараах акаунтуудын нэгтэй нь синк хийж болно. Алийг нь ашиглах вэ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Төхөөрөмжид хадгалах"</string>
+ <string name="add_account" msgid="8201790677994503186">"Акаунт нэмэх"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Шинэ акаунт нэмэх"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Өгөгдлийн сангийн файлуудыг экспорт хийх"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Зураг. Өөрчлөхийн тулд сонгоно уу"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"шинэ харилцагч нэмэх"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Дэлгэрэнгүй үзэх"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Цөөнийг харах"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Бүгдийг харах"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Харилцагч"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Саяхны"</string>
+ <string name="send_message" msgid="8938418965550543196">"Зурвас илгээх"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Хувийн хуулбар үүсгэж байна..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Өчигдөр"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Маргааш"</string>
+ <string name="today" msgid="8041090779381781781">"Өнөөдөр"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Өнөөдөр <xliff:g id="TIME_INTERVAL">%s</xliff:g>-д"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Маргааш <xliff:g id="TIME_INTERVAL">%s</xliff:g>-д"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Гарчиггүй үйл явдал)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Тохируулах"</string>
+</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
new file mode 100644
index 0000000..f5f68ae
--- /dev/null
+++ b/res/values-mn/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"Хүмүүс"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Харилцагчид"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Харилцагч"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Шууд залгах"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Шууд зурвас"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Харилцагчийн товчилборыг сонгоно уу"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Залгах дугаарыг сонгоно уу"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Зурвас илгээх дугаарыг сонгох"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Харилцагч сонгоно уу"</string>
+ <string name="starredList" msgid="4817256136413959463">"Одтой"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Байнга"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Дуртай"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Харилцагчийн мэдээлэл"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"Харилцагчийг харах"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Харилцагч засварлах"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Харилцагч үүсгэх"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Бүлгэм засварлах"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Бүлгэм үүсгэх"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Тухай"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Шинэчлэлтүүд"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Харилцагчдаас хайх"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Харилцагчийг харах"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Таалагдсан руу нэмэх"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Дуртайгаас хасах"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Засах"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Устгах"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Үндсэн дэлгэц дээр байршуулах"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Харилцагч руу залгах"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"Харилцагч руу зурвас илгээх"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Салгах"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Засах"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Устгах"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Харилцагч нэмэх"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Бүлгэм нэмэх"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Харилцагчийг хуваах уу?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Энэ харилцагч олон харилцагчид хуваагдах болно."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Холбох"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Харилцагчдыг холбох"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g>-тай холбохыг хүсэж буй харилцагчийг сонгоно уу:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Бүх харилцагчдыг харуулах"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Санал болгосон харилцагчид"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Бүх харилцагчид"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Харилцагчид холбогдсон"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Хонхны ая суулгах"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Бүх дуудлагыг дуут шуудан руу"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Та зөвхөн-унших акаунтаас харилцагчдыг устгаж чадахгүй, харин харилцагчдын жагсаалтаасаас нууцлаж болно."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Энэ харилцагчид олон акаунтын мэдээлэл агуулагдаж байна. Зөвхөн-унших акаунтуудын мэдээллийг харилцагчийн жагсаалтаас устгахгүйгээр нууцлах болно."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Энэ харилцагчийг устгаснаар олон акаунтаас мэдээллийг устгах болно."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Энэ харилцагч устгагдах болно."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"Цуцлах"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Харилцагч байхгүй байна."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Харилцагчийн виджетийг Үндсэн дэлгэцэнд нэмсэн."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Шинэ харилцагч үүсгэх"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Шинэ харилцагч үүсгэх"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Байгууллага"</item>
+ <item msgid="7196592230748086755">"Тэмдэглэл"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Таблетэнд зураг байхгүй байна."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Утсанд зураг байхгүй байна."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Харилцагчийн зураг"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Захиалгат шошгын нэр"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Дуут шуудан руу шууд дуудлага хийх"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Зургийг арилгах"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Харилцагч байхгүй."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Бүлгэм байхгүй байна."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Бүлгэм үүсгэхийн тулд танд акаунт хэрэгтэй."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Энэ бүлгэмд хүн алга."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Нэмэхийн тулд бүлгэмд өөрчлөлт оруулна уу."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Харилцагчийг хадгалж байна…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Харилцагчийг хадгалсан."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Харилцагчийн өөрчлөлтүүдийг хадгалж чадсангүй."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Бүлгэм хадгалагдлаа."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Бүлгэмийн өөрчлөлтүүдийг хадгалж чадсангүй."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"Утасны дугаартай 1 харилцагч"</item>
+ <item quantity="other" msgid="3299954047880968205">"Утасны дугаартай <xliff:g id="COUNT">%d</xliff:g> харилцагч"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Утасны дугаартай харилцагч байхгүй"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"1 харилцагч"</item>
+ <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> харилцагч"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 олдсон"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> олдсон"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Харилцагч байхгүй"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 олдсон"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> олдсон"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"Бүх харилцагчид"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"Бүлгэмүүд"</string>
+ <string name="callBack" msgid="5498224409038809224">"Буцааж залгах"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Дахин залгана уу"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Буцааж залгах"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\"-г харилцагчдад нэмэх үү?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"харилцагчийн зураг"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"нэмэх"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"нийт <xliff:g id="TOTAL_NUMBER">%s</xliff:g> харилцагчдын <xliff:g id="CURRENT_NUMBER">%s</xliff:g>"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Таны харилцагчдын нэрс"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Тус үйлдлийг гүйцэтгэх апп олдсонгүй."</string>
+ <string name="menu_share" msgid="943789700636542260">"Хуваалцах"</string>
+ <string name="share_via" msgid="563121028023030093">"Харилцагчийг дараахаар хуваалцах"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Акаунт дотор бүлгэм үүсгэх"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Дуут чат"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Видео чат"</string>
+ <string name="connections" msgid="8098440723172028350">"Холболтууд"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Холболт нэмэх"</string>
+ <string name="recent" msgid="2659189233141493004">"Саяхны"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Саяхны шинэчлэлтүүд"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> харилцагч"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Энэ зургийг ашиглах"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Тус апп-с засварлах боломжгүй."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Тус харилцагчтай холбоотой нэмэлт мэдээлэл байхгүй байна."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Энэ төхөөрөмж дээр засах боломжгүй."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Жагсаалтыг дараахаар эрэмбэлэх"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Өөрийн нэр"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Овгийн нэр"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Харилцагчийн нэрсийг харах"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Өөрийн нэрийг өмнө оруулах"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Овгийн нэрийг эхэнд нь"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Зураг авах"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Шинэ зураг авах"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"Галерейгаас зураг сонгох"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"Галерейгаас шинэ зураг сонгох"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Хэлний өөрчлөлтийг тусгахын тулд харилцагчдын жагсаалтыг шинэчилж байна."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Харилцагчдын жагсаалтыг шинэчилж байна."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Харилцагчдын жагсаалтыг сайжруулж байна. \n\nСайжруулах явцад ойролцоогоор <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB хэмжээтэй дотоод сан шаардагдана.\n\nДараах сонголтуудаас нэгийг нь сонгоно уу:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Зарим аппликешнүүдийг устгана уу"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Сайжруулахыг дахин эхлүүлэх"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Хайж байна..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Сонгоснуудыг харуулах"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Бүгдийг харуулах"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Бүгдийг сонгох"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Бүх сонголтыг цуцлах"</string>
+ <string name="add_field" msgid="2384260056674995230">"Өөр талбар нэмэх"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Шинийг нэмэх"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Байгууллага нэмэх"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Огноо"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Бүлгэмийн нэр"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>-р"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> <xliff:g id="SOURCE">%2$s</xliff:g>-р"</string>
+ <string name="description_star" msgid="2605854427360036550">"дуртай"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Харилцагчийг засварлах"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"нэгтгэгдээгүй"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> эх үүсвэрээс нийлүүлсэн"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Энэ харилцагчийг сонгосон харилцагчтай холбох уу?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Сонгосон харилцагчийг засварлах руу шилжих үү? Таны оруулсан мэдээллүүд хуулагдах болно."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Миний Харилцагчид руу хуулах"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Миний харилцагчдад нэмэх"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Директор <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"Хувийн хуулбар үүсгэж байна…"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Тохируулсан"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Тохиргоо"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Тохиргоо"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Тусламж"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Харуулах сонголтууд"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Утасны дугаар"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Харилцагчдад нэмэх"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Харилцагчид нэмэх"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Хаах"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Жилийг оруулах"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Харилцагч"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Ачаалж байна..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Шинэ акаунт үүсгэх"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Акаунт руу нэвтрэн орох"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Харилцагчид импорт хийх"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Шинэ бүлгэм үүсгэх"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Шинэ бүлгэм үүсгэх"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 бүлгэм"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> бүлгэм"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" бүлгэмийг устгах уу? (Доторх харилцагчид нь устахгүй.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-с <xliff:g id="COUNT_0">%1$d</xliff:g> хүн"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>-с <xliff:g id="COUNT_0">%1$d</xliff:g> хүн"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> хүн"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> хүн"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Өөр харилцагчтай холбохын өмнө харилцагчийн нэрийг оруулна уу."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Түр санах ойд хуулах"</string>
+ <string name="set_default" msgid="4417505153468300351">"Үндсэн болгох"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Үндсэнээс хасах"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Текст хуулагдав"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Өөрчлөлтүүдээ цуцлах уу?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Миний профайлийн тохиргоо"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Хүний нэрийг бичнэ үү"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Бүлгэмийн Нэр"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Миний дотоод профайл"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Миний <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> профайл"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Бүх харилцагчийг харуулж байна"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"People нь Google Акаунттай сайн ажиллана.\n\n• Та дурын вэб хөтчөөр нэвтэрч болно.\n• Өөрийн харилцагчдыг найдвартай нөөцлөөрэй."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Утсаа гээсэн ч харилцагчдаа найдвартай хадгалаарай: онлайн үйлчилгээгээр синк хийгээрэй."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Акаунт нэмэх"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Таны шинэ харилцагч нөөцлөгдөхгүй. Харилцагчдыг онлайнаар нөөцөлдөг акаунтыг нэмэх үү?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Таны шинэ харилцагч <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>-тай синк хийгдэх болно."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Та өөрийн шинэ харилцагчийг дараах акаунтуудын нэгтэй нь синк хийж болно. Алийг нь ашиглах вэ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Төхөөрөмжид хадгалах"</string>
+ <string name="add_account" msgid="8201790677994503186">"Акаунт нэмэх"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Шинэ акаунт нэмэх"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Өгөгдлийн сангийн файлуудыг экспорт хийх"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Зураг. Өөрчлөхийн тулд сонгоно уу"</string>
+</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..5ed7c2b
--- /dev/null
+++ b/res/values-ms-rMY/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"Kenalan"</string>
+ <string name="contactsList" msgid="8661624236494819731">"Kenalan"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"Kenalan"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"Dail terus"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"Mesej langsung"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"Pilih pintasan kenalan"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"Pilih nombor untuk memanggil"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"Pilih nombor untuk menghantar mesej"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"Pilih kenalan"</string>
+ <string name="starredList" msgid="4817256136413959463">"Dibintangkan"</string>
+ <string name="frequentList" msgid="7154768136473953056">"Kerap"</string>
+ <string name="strequentList" msgid="5640192862059373511">"Kegemaran"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"Butiran kenalan"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"Edit kenalan"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"Wujudkan kenalan"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"Edit kumpulan"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"Buat kumpulan"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"Perihal"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"Kemas kini"</string>
+ <string name="searchHint" msgid="8482945356247760701">"Cari dalam kenalan"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"Papar kenalan"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"Tambah ke kegemaran"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Alih keluar daripada kegemaran"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Padam"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Letakkan pada skrin Utama"</string>
+ <string name="menu_call" msgid="3992595586042260618">"Panggil kenalan"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"SMS kepada kenalan"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"Asingkan"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Edit"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Padam"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Tambah Kenalan"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"Tambah Kumpulan"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"Pisahkan kenalan?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"Kenalan ini akan dipisahkan kepada berbilang kenalan."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Sertai"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Gabungkan kenalan"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Pilih kenalan yang anda mahu untuk menyertai <xliff:g id="NAME">%s</xliff:g>:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Tunjukkan semua kenalan"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Kenalan cadangan"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Semua kenalan"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kenalan digabungkan"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"Ttpkn nd dering"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Semua panggilan ke mel suara"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"Anda tidak boleh memadamkan kenalan daripada akaun baca sahaja, tetapi anda boleh menyembunyikan mereka dalam senarai kenalan anda."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Kenalan ini mengandungi maklumat daripada berbilang akaun. Maklumat daripada akaun baca sahaja akan disembunyikan dalam senarai kenalan anda, dan bukannya dipadamkan."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Pemadaman kenalan ini akan turut memadamkan maklumat daripada berbilang akaun."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"Kenalan ini akan dipadamkan."</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Buang perubahan"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"Kenalan tidak wujud."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget kenalan telah ditambahkan ke skrin Utama."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"Wujudkan kenalan baru"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Buat kenalan baharu"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"Organisasi"</item>
+ <item msgid="7196592230748086755">"Nota"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"Tiada gambar yang tersedia pada tablet."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Tidak ada gambar yang tersedia pada telefon."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Foto kenalan"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"Label nama peribadi"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Hantar panggilan terus ke peti suara"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"Alih keluar foto"</string>
+ <string name="noContacts" msgid="8579310973261953559">"Tiada kenalan."</string>
+ <string name="noGroups" msgid="8614664663561385253">"Tiada kumpulan."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"Anda memerlukan akaun untuk membuat kumpulan."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"Tiada orang dalam kumpulan ini."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"Untuk menambah beberapa orang, edit kumpulan itu."</string>
+ <string name="savingContact" msgid="4075751076741924939">"Simpan kenalan..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"Kenalan disimpan."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Tidak dapat menyimpan perubahan kenalan."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"Kumpulan sudah disimpan."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Tidak dapat menyimpan perubahan kumpulan."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 kenalan dengan nombor telefon"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kenalan dengan nombor telefon"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Tiada kenalan dengan nombor telefon"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 ditemui"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> ditemui"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"Tiada kenalan"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 ditemui"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> ditemui"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Semua kenalan"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Kegemaran"</string>
+ <string name="callBack" msgid="5498224409038809224">"Panggil balik"</string>
+ <string name="callAgain" msgid="3197312117049874778">"Panggil semula"</string>
+ <string name="returnCall" msgid="8171961914203617813">"Balas panggilan"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Tambah \"<xliff:g id="EMAIL">%s</xliff:g>\" kepada kenalan?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"foto kenalan"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"tambah"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> daripada <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kenalan"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Nama kenalan anda"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Tiada aplikasi ditemui untuk mengendalikan tindakan ini."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Tiada apl ditemui untuk mengendalikan tindakan ini."</string>
+ <string name="menu_share" msgid="943789700636542260">"Kongsi"</string>
+ <string name="share_via" msgid="563121028023030093">"Kongsi gambar melalui"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"Buat kumpulan di bawah akaun"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"Sembang suara"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Sembang video"</string>
+ <string name="connections" msgid="8098440723172028350">"Sambungan"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"Tambah sambungan"</string>
+ <string name="recent" msgid="2659189233141493004">"Terbaru"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"Kemas kini terbaru"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> kenalan"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"Gunakan foto ini"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"Tidak boleh diedit dari aplikasi ini."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"Tiada maklumat tambahan untuk kenalan ini."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"Tidak boleh diedit pada peranti ini."</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"Isih senarai mengikut"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nama berian"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Nama keluarga"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Lihat nama kenalan"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nama berian dahulu"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nama keluarga dahulu"</string>
+ <string name="take_photo" msgid="7496128293167402354">"Ambil foto"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"Ambil foto baru"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Pilih foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Pilih foto baharu"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Senarai kenalan sedang dikemas kini untuk menggambarkan penukaran bahasa."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Senarai kenalan sedang dikemas kini."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kenalan sedang dalam proses peningkatan. \n\nProses peningkatan memerlukan lebih kurang <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB storan dalaman.\n\nPilih satu daripada pilihan yang berikut:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Nyahpasang beberapa aplikasi"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Cuba semula peningkatan"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"Mencari..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"Tunjukkan pilihan"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"Tunjukkan semua"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Pilih semua"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"Nyahpilih semua"</string>
+ <string name="add_field" msgid="2384260056674995230">"Tambah medan lain"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"Tambah baru"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Tambah organisasi"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tarikh"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nama kumpulan"</string>
+ <string name="description_star" msgid="2605854427360036550">"kegemaran"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"Edit kenalan"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"tidak digabungkan"</item>
+ <item quantity="other" msgid="425683718017380845">"digabungkan daripada <xliff:g id="COUNT">%0$d</xliff:g> sumber"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Gabungkan kenalan semasa dengan kenalan pilihan?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Bertukar kepada mengedit kenalan pilihan? Maklumat yang anda masukkan setakat ini akan disalin."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"Salin ke Kenalan Saya"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"Tambahkan pada Kenalan Saya"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"Direktori <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"Peribadi"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"Tetapan"</string>
+ <string name="menu_settings" msgid="377929915873428211">"Tetapan"</string>
+ <string name="menu_help" msgid="5123887102216637725">"Bantuan"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"Pilihan paparan"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Nombor telefon"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Tambah ke kenalan"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Tambah ke kenalan"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"Tutup"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"Berikan tahun"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"Kenalan"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"Memuatkan…"</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Buat kenalan baru"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Log masuk ke akaun"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Import kenalan"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"Buat kumpulan baru"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"Buat kumpulan baharu"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 kumpulan"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> kumpulan"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Padamkan kumpulan \" <xliff:g id="GROUP_LABEL">%1$s</xliff:g> \"? (Kenalan itu sendiri tidak akan dipadamkan.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> orang daripada <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> orang daripada <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> orang"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> orang"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Taip nama kenalan sebelum bergabung dengan yang lain."</string>
+ <string name="copy_text" msgid="3257145021583508761">"Salin ke papan keratan"</string>
+ <string name="set_default" msgid="4417505153468300351">"Tetapkan lalai"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Kosongkan lalai"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"Teks disalin"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Buang perubahan anda?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"Sediakan profil saya"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"Taip nama orang"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"Nama kumpulan"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"Profil setempat saya"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"Profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> saya"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Memaparkan semua kenalan"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kenalan berfungsi lebih baik dengan Akaun Google.\n\n• Akses dari mana-mana penyemak imbas web.\n• Buat sandaran untuk kenalan anda secara selamat."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"Pastikan kenalan anda selamat walaupun jika anda kehilangan telefon anda: segerakkan dengan perkhidmatan dalam talian."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"Tambah akaun"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Kenalan baharu anda tidak akan dibuat sandaran. Tambahkan akaun yang membuat sandaran kenalan dalam talian?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Kenalan baharu anda akan disegerakkan dengan <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Anda boleh menyegerakkan kenalan baharu anda dengan salah satu akaun berikut. Mana satu yang anda mahu gunakan?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"Simpan setempat"</string>
+ <string name="add_account" msgid="8201790677994503186">"Tambah akaun"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"Tambah akaun baharu"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"Eksport fail pangkalan data"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Gambar. Pilih untuk menukar"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"tambah kenalan baharu"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Lihat lagi"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Lihat kurang"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Lihat semua"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kenalan"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Terbaharu"</string>
+ <string name="send_message" msgid="8938418965550543196">"Hantar mesej"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Membuat salinan peribadi..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Semalam"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Esok"</string>
+ <string name="today" msgid="8041090779381781781">"Hari ini"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hari ini pada <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Esok pada <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Acara tidak bertajuk)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Tetapkan"</string>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 98f6e83..dc6174a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Personer"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakter"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Ring"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Mest brukt"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoritter"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Egenskaper for kontakt"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Se på kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Rediger kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Opprett kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Rediger gruppe"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Denne kontakten inneholder informasjon fra flere kontoer. Informasjon fra skrivebeskyttede kontoer vil bli skjult i kontaktlistene, ikke slettet."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Sletter du denne kontakten, vil du slette informasjon fra flere kontoer."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Denne kontakten vil bli slettet."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Forkast"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Forkast endringene"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakten finnes ikke."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kontaktmodulen ble lagt til på startsiden."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Opprett ny kontakt"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontakter med telefonnumre"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ingen kontakter med telefonnummer"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakter"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 funnet"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> funnet"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 funnet"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> funnet"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontakter"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alle kontaktene"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritter"</string>
<string name="callBack" msgid="5498224409038809224">"Ring tilbake"</string>
<string name="callAgain" msgid="3197312117049874778">"Ring på nytt"</string>
<string name="returnCall" msgid="8171961914203617813">"Ring tilbake"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Navn på kontakter"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Det ble ikke funnet noen app som kan håndtere denne handlingen."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Kunne ikke finne noen app som kan håndtere denne handlingen."</string>
<string name="menu_share" msgid="943789700636542260">"Del"</string>
<string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Opprett gruppe under konto"</string>
@@ -143,12 +139,12 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Etternavn først"</string>
<string name="take_photo" msgid="7496128293167402354">"Ta bilde"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Ta nytt bilde"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Velg bilde fra galleriet"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Velg nytt bilde fra galleriet"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Velg et bilde"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Velg et nytt bilde"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktlisten er oppdatert med nytt språk."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kontaktlisten er under oppdatering."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Oppgradering av kontakter pågår.\n\nOppgraderingsprosessen krever omtrent <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB intern lagringsplass.\n\nVelg ett av følgende alternativer:"</string>
- <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Avinstaller noen applikasjoner"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Avinstaller noen apper"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Prøv å oppgradere på nytt"</string>
<string name="search_results_searching" msgid="3984833028938569930">"Søker …"</string>
<string name="menu_display_selected" msgid="6470001164297969034">"Vis valgte"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Legg til organisasjon"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Dato"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Gruppenavn"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favoritt"</string>
<string name="edit_contact" msgid="7529281274005689512">"Rediger kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiér til mine kontakter"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Legg til i Mine kontakter"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Katalog <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Oppretter personlig kopi …"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Egendefinert"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Innstillinger"</string>
<string name="menu_settings" msgid="377929915873428211">"Innstillinger"</string>
@@ -189,7 +182,7 @@
<string name="social_widget_label" msgid="6378905543028924592">"Kontakt"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"Laster inn …"</string>
<string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Opprett en ny kontakt"</string>
- <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logg deg på en konto"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Logg på en konto"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Importer kontakter"</string>
<string name="create_group_dialog_title" msgid="6874527142828424475">"Opprett ny gruppe"</string>
<string name="create_group_item_label" msgid="4411981763169654825">"Opprett en ny gruppe"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Min lokale profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Min profil for <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Viser alle kontakter"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People fungerer bedre med en Google-konto.\n\n• Tilgang fra hvilken som helst nettleser.\n• Ta trygge sikkerhetskopier av kontaktene dine."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakter fungerer bedre med en Google-konto.\n\n• Tilgang fra hvilken som helst nettleser.\n• Sikkerhetskopiér kontaktene dine på en trygg måte."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Hold kontaktene dine trygge selv om du mister telefonen: synkroniser med en nettbasert tjeneste."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Legg til en konto"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Den nye kontakten din blir ikke sikkerhetskopiert. Vil du legge til en konto som sikkerhetskopierer kontakter på nettet?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Legg til ny konto"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksporter databasefilene"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Bilde. Velg for å endre"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"legg til ny kontakt"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Se mer"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Se mindre"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Se alle"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nylige"</string>
+ <string name="send_message" msgid="8938418965550543196">"Send melding"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Oppretter personlig kopi …"</string>
+ <string name="yesterday" msgid="6840858548955018569">"I går"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"I morgen"</string>
+ <string name="today" msgid="8041090779381781781">"I dag"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"I dag kl. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"I morgen kl.<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Aktivitet uten navn)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Still inn"</string>
</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..2ffc523
--- /dev/null
+++ b/res/values-ne-rNP/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"मानिसहरू"</string>
+ <string name="contactsList" msgid="8661624236494819731">"सम्पर्क"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ठेगाना"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"सिधा डायल गर्नुहोस्"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"सिधा सन्देश"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"सम्पर्क सर्टकट छान्नुहोस्"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"कल गर्नका लागि एउटा नम्बर छान्नुहोस्"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"सन्देश पठाउनका लागि एउटा नम्बर छान्नुहोस्"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"एउटा सम्पर्क छान्नुहोस्"</string>
+ <string name="starredList" msgid="4817256136413959463">"ताराङ्कित"</string>
+ <string name="frequentList" msgid="7154768136473953056">"कहिले कहीँ"</string>
+ <string name="strequentList" msgid="5640192862059373511">"मनपर्नेहरू"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"विवरणहरूलाई सम्पर्क गर्नुहोस्"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"सम्पर्क हेर्नुहोस्"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"सम्पर्क सम्पादन गर्नुहोस्"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"ठेगाना बनाउनुहोस्"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"समूह सम्पादन गर्नुहोस्"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"समूह सिर्जना गर्नुहोस्"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"बारेमा"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"अद्यावधिकहरू"</string>
+ <string name="searchHint" msgid="8482945356247760701">"सम्पर्कहरू खोज्नुहोस्"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"सम्पर्क हेर्नुहोस्"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"मनपर्नेहरूमा थप्नुहोस्"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"मनपर्नेहरूबाट हटाउनुहोस्"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"सम्पादन गर्नुहोस्"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"मेट्नुहोस्"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"होम स्क्रिनमा राख्नुहोस्"</string>
+ <string name="menu_call" msgid="3992595586042260618">"सम्पर्कलाई कल गर्नुहोस्"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"पाठ सम्पर्क"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"छुट्याउनुहोस्"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"सम्पादन गर्नुहोस्"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"मेट्नुहोस्"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"सम्पर्क थप्नुहोस्"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"समूह थप्नुहोस्"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"सम्पर्क अलग गर्ने हो?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"यो सम्पर्क अनेक सम्पर्कहरूमा अलग गरिने छ।"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"सामेल हुनुहोस्"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"सम्पर्कहरू जोड्नुहोस्"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"तपाईँले सहभागी हुन चाहनु भएको सम्पर्क <xliff:g id="NAME">%s</xliff:g>: चयन गर्नुहोस्"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"सबै सम्पर्कहरू देखाउनुहोस्"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"सुझाव गरिएका सम्पर्कहरू"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"सबै सम्पर्कहरू"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"सहभागी भएका सम्पर्कहरू"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"रिङ्टोन मिलाउनुहोस्"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"भ्वाइसमेलमा सम्पूर्ण कल"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"तपाईँले पढ्ने-मात्र खाताबाट सम्पर्कहरू हटाउन सक्नु हुन्न, तर तपाईँको सम्पर्क सूचीहरूबाट लुकाउन सक्नु हुन्छ।"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"यो सम्पर्कमा जानकारीहरू धेरै खाताहरूबाट उपलब्ध छन्। पढ्ने-मात्र खातामा भएका जानकारीहरू तपाईँको सम्पर्क सूचीमा लुकेका हुने छन्, हटाइने छैन।"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"यो सम्पर्कलाइ हटाउनाले धेरै खाताहरूबाट जानकारीहरू नष्ट गर्ने छ।"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"यो सम्पर्क हटाइने छ।"</string>
+ <string name="menu_discard" msgid="6456087569315685632">"वेवास्ता गर्नुहोस्"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"सम्पर्क उपलब्ध छैन।"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"सम्पर्क विजेट होम स्क्रिनमा थपियो।"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"संगठन"</item>
+ <item msgid="7196592230748086755">"नोट"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ट्याब्लेटमा कुनै पनि तस्वीरहरू उपलव्ध छैनन्।"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"कुनै चित्रहरू फोनमा उपलब्ध छैनन्।"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"सम्पर्क फोटो"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"कस्टम लेबल नाम"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"कलहरू सिधै भ्वाइसमेलमा पठाउनुहोस्"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"फोटो मेट्नुहोस्"</string>
+ <string name="noContacts" msgid="8579310973261953559">"कुनै सम्पर्क छैन।"</string>
+ <string name="noGroups" msgid="8614664663561385253">"कुनै समूहहरू छैनन्।"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"समूह बनाउनका लागि एउटा खाताको आवश्यक्ता हुन्छ।"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"यो समूहमा कोही छैन।"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"केही थपनका लागि, समुह सम्पादन गर्नुहोस्।"</string>
+ <string name="savingContact" msgid="4075751076741924939">"सम्पर्क बचत गर्दै..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"सम्पर्क बचत गरियो।"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"सम्पर्क परिवर्तनहरू सुरक्षित गर्न सकेन।"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"समूह बचत गरियो।"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"समूह परिवर्तनहरू बचत गर्न सकेन।"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"फोन नम्बरसहित १ सम्पर्क"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> फोन नम्बरसहित सम्पर्कहरू"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"फोन नम्बर भएका कुनै सम्पर्कहरू छैनन्"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"१ सम्पर्क"</item>
+ <item quantity="other" msgid="3578469907265375314">"( <xliff:g id="COUNT">%d</xliff:g> सम्पर्कहरू)"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"१ भेटियो"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> भेट्टियो"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"कुनै सम्पर्कहरू छैनन्।"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"१ भेट्टाइयो"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> भेटाइयो"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"सबै सम्पर्कहरू"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"समुहहरू"</string>
+ <string name="callBack" msgid="5498224409038809224">"कल ब्याक"</string>
+ <string name="callAgain" msgid="3197312117049874778">"फेरि कल गर्नुहोस्"</string>
+ <string name="returnCall" msgid="8171961914203617813">"कल फर्काउनुहोस्"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" लाई सम्पर्कमा थप्ने?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"फोटो सम्पर्क गर्नुहोस्"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"जोड"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>को <xliff:g id="TOTAL_NUMBER">%s</xliff:g> सम्पर्क"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"तपाईँका सम्पर्कहरूका नामहरू"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"यो कार्य सम्हाल्न कुनै पनि अनुप्रयोग पाइएन।"</string>
+ <string name="menu_share" msgid="943789700636542260">"साझेदारी गर्नुहोस्"</string>
+ <string name="share_via" msgid="563121028023030093">"मार्फत सम्पर्क साझेदारी गर्नुहोस्"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"खाता अन्तर्गत समूह बनाउनुहोस्"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"भ्वाइस च्याट"</string>
+ <string name="video_chat" msgid="1872255818640336072">"भिडियो च्याट"</string>
+ <string name="connections" msgid="8098440723172028350">"जडानहरू"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"जडान थप्नुहोस्"</string>
+ <string name="recent" msgid="2659189233141493004">"हालैको"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"हालसालैका अद्यावधिकहरू"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> सम्पर्क"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"यो फोटाको प्रयोग गर्नुहोस्"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"यो अनुप्रयोगबाट सम्पादन गर्न नमिल्ने।"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"यो सम्पर्कको कुनै अतिरिक्त जानकारी छैन।"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"यस उपकरणमा सम्पादनयोग्य छैन।"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"सूचिलाई क्रमबद्ध गर्नुहोस्"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"दिइएको नाम"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"परिवार नाम"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"सम्पर्क नामहरू हेर्नुहोस्"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"दिइएको नाम"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"थर पहिले"</string>
+ <string name="take_photo" msgid="7496128293167402354">"तस्वीर लिनुहोस्"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"नयाँ फोटो खिच्नुहोस्"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ग्यालरीबाट तस्वीर छान्नुहोस्"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ग्यालरीबाट नयाँ फोटो छान्नुहोस्"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"भाषा परिवर्तन प्रतिबिम्बित गर्नका लागि सम्पर्क सूची अद्यावधिक गरिदैं छ।"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"सम्पर्क सूची अद्यावधिक हुदै छ।"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"सम्पर्कहरू अद्यावधिक हुने प्रक्रियामा छन्। \n \n अद्यावधिक प्रक्रिया लगभग <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> आन्तरिक भण्डारण MB आवश्यकता पर्छ । \n \n निम्न विकल्पहरू मध्ये कुनै छान्नुहोस्:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"केही अनुप्रयोगहरू हटाउनुहोस्"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"अद्यावधिक गर्न पुनःप्रयास गर्नुहोस्"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"खोजी कार्य गर्दै..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"चयनित देखाउनुहोस्"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"सबै देखाउनुहोस्"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"सबैलाई चयन गर्नुहोस्"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"सबैलाई अचयन गर्नुहोस्"</string>
+ <string name="add_field" msgid="2384260056674995230">"अर्को फिल्ड थप्नुहोस्"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"नयाँ खाता थप्नुहोस्"</string>
+ <string name="add_organization" msgid="7311893231158291197">"संगठन थप्नुहोस्"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"मिति"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"समूह नाम"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>मार्फत"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> मार्फत <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"मनपर्ने"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"सम्पर्क सम्पादन गर्नुहोस्"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"मर्ज गरिएको छैन"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> स्रोतबाट मिसाइएको"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"हालको सम्पर्कलाई चयनित सम्पर्कसँग जोड्ने हो?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"चयनित सम्पर्कको सम्पादन गर्नका लागि स्विच गर्ने हो? तपाईँले अहिलेसम्म प्रविष्टि गरिएका जानकारीहरू प्रतिलिप हुने छन्।"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"मेरा सम्पर्कहरूमा प्रतिलिपि गर्नुहोस्"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"मेरो सम्पर्कहरूमा थप्नुहोस्"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"निर्देशिका<xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"एउटा व्यक्तिगत प्रतिलिपि बनाउँदै..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"अनुकूलन"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"सेटिङहरू"</string>
+ <string name="menu_settings" msgid="377929915873428211">"सेटिङहरू"</string>
+ <string name="menu_help" msgid="5123887102216637725">"मद्दत"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"विकल्पहरू प्रदर्शन गर्नुहोस्"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g> , <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"फोन नम्बर"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"सम्पर्कहरूमा जोड्नुहोस्"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"सम्पर्कमा थप्नुहोस्"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"बन्द गर्नुहोस्"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> ( <xliff:g id="PHONETIC_NAME">%2$s</xliff:g> )"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"एउटा वर्ष प्रदान गर्नुहोस्"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ठेगाना"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"लोड हुँदै..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एउटा नयाँ सम्पर्क बनाउनुहोस्"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"एउटा खातामा साइन इन गर्नुहोस्"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"सम्पर्क आयात गर्नुहोस्"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"नयाँ समूह बनाउनुहोस्"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"नयाँ समूह बनाउनुहोस्"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"१ समूह"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> समूहहरू"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" समूह हटाउने हो? (सम्पर्कहरू आफैँ हट्दैनन्।)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> व्यक्ति <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> बाट"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> मानिसहरू <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> बाट"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> व्यक्ति"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> मानिसहरू"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"अर्कोसँग सामेल हुनुअघि सम्पर्क नाम टाइप गर्नुहोस्।"</string>
+ <string name="copy_text" msgid="3257145021583508761">"क्लिपबोर्डमा प्रतिलिपि गर्नुहोस्"</string>
+ <string name="set_default" msgid="4417505153468300351">"पूर्वनिर्धारित मिलाउनुहोस्"</string>
+ <string name="clear_default" msgid="7193185801596678067">"पूर्वनिर्धारित हटाउनुहोस्"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"पाठको प्रतिलिपि गरियो"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"तपाईँका परिवर्तनहरू रद्द गर्ने?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"मेरो प्रोफाइल मिलाउनुहोस्"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"व्यक्तिको नाम टाइप गर्नुहोस्"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"समूहको नाम"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"मेरो स्थानीय प्रोफाइल"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"मेरो <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> प्रोफाइल"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"सबै सम्पर्कहरू प्रदर्शन गरिदै"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"मानिसहरू गुगल खातासँग राम्रो काम गर्छन् । \n \n कुनै पनि वेब ब्राउजरबाट पहुँच गर्न सकिन्छ \n तपाईँका सम्पर्कहरू सुरक्षित रूपमा जगेडा गर्नुहोस्।"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"तपाईँले फोन नै हराउनु भएको अवस्थामा पनि आफ्ना सम्पर्कहरूलाई सुरक्षित राख्नुहोस्: कुनै अनलाइन सेवासँग सिन्क्रोनाइज गर्नुहोस्।"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"एउटा खाता थप्नुहोस्"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"तपाईँको नयाँ सम्पर्क अद्यावधि गरिने छैन। अनलाइन अद्यावधिक गर्ने एउटा खाता थप्ने हो?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"<xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>सँग तपाईँको नयाँ सम्पर्क सिन्क्रोनाइज गरिने छ।"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"तपाईँले आफ्ना सम्पर्कहरू निम्न मध्ये कुनै एउटा खातासँग सिन्क्रोनाइज गर्न सक्नु हुन्छ। कुन चाहिँ प्रयोग गर्न चाहनु हुन्छ ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"स्थानीय राख्नुहोस्"</string>
+ <string name="add_account" msgid="8201790677994503186">"खाता थप गर्नुहोस्"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"नयाँ खाता थप्नुहोस्"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"डेटाबेस फाइलहरू निर्यात गर्नुहोस्"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"चित्र। परिवर्तन गर्न छान्नुहोस्"</string>
+</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
new file mode 100644
index 0000000..2ffc523
--- /dev/null
+++ b/res/values-ne/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"मानिसहरू"</string>
+ <string name="contactsList" msgid="8661624236494819731">"सम्पर्क"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"ठेगाना"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"सिधा डायल गर्नुहोस्"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"सिधा सन्देश"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"सम्पर्क सर्टकट छान्नुहोस्"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"कल गर्नका लागि एउटा नम्बर छान्नुहोस्"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"सन्देश पठाउनका लागि एउटा नम्बर छान्नुहोस्"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"एउटा सम्पर्क छान्नुहोस्"</string>
+ <string name="starredList" msgid="4817256136413959463">"ताराङ्कित"</string>
+ <string name="frequentList" msgid="7154768136473953056">"कहिले कहीँ"</string>
+ <string name="strequentList" msgid="5640192862059373511">"मनपर्नेहरू"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"विवरणहरूलाई सम्पर्क गर्नुहोस्"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"सम्पर्क हेर्नुहोस्"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"सम्पर्क सम्पादन गर्नुहोस्"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"ठेगाना बनाउनुहोस्"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"समूह सम्पादन गर्नुहोस्"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"समूह सिर्जना गर्नुहोस्"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"बारेमा"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"अद्यावधिकहरू"</string>
+ <string name="searchHint" msgid="8482945356247760701">"सम्पर्कहरू खोज्नुहोस्"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"सम्पर्क हेर्नुहोस्"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"मनपर्नेहरूमा थप्नुहोस्"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"मनपर्नेहरूबाट हटाउनुहोस्"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"सम्पादन गर्नुहोस्"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"मेट्नुहोस्"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"होम स्क्रिनमा राख्नुहोस्"</string>
+ <string name="menu_call" msgid="3992595586042260618">"सम्पर्कलाई कल गर्नुहोस्"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"पाठ सम्पर्क"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"छुट्याउनुहोस्"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"सम्पादन गर्नुहोस्"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"मेट्नुहोस्"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"सम्पर्क थप्नुहोस्"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"समूह थप्नुहोस्"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"सम्पर्क अलग गर्ने हो?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"यो सम्पर्क अनेक सम्पर्कहरूमा अलग गरिने छ।"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"सामेल हुनुहोस्"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"सम्पर्कहरू जोड्नुहोस्"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"तपाईँले सहभागी हुन चाहनु भएको सम्पर्क <xliff:g id="NAME">%s</xliff:g>: चयन गर्नुहोस्"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"सबै सम्पर्कहरू देखाउनुहोस्"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"सुझाव गरिएका सम्पर्कहरू"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"सबै सम्पर्कहरू"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"सहभागी भएका सम्पर्कहरू"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"रिङ्टोन मिलाउनुहोस्"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"भ्वाइसमेलमा सम्पूर्ण कल"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"तपाईँले पढ्ने-मात्र खाताबाट सम्पर्कहरू हटाउन सक्नु हुन्न, तर तपाईँको सम्पर्क सूचीहरूबाट लुकाउन सक्नु हुन्छ।"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"यो सम्पर्कमा जानकारीहरू धेरै खाताहरूबाट उपलब्ध छन्। पढ्ने-मात्र खातामा भएका जानकारीहरू तपाईँको सम्पर्क सूचीमा लुकेका हुने छन्, हटाइने छैन।"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"यो सम्पर्कलाइ हटाउनाले धेरै खाताहरूबाट जानकारीहरू नष्ट गर्ने छ।"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"यो सम्पर्क हटाइने छ।"</string>
+ <string name="menu_discard" msgid="6456087569315685632">"वेवास्ता गर्नुहोस्"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"सम्पर्क उपलब्ध छैन।"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"सम्पर्क विजेट होम स्क्रिनमा थपियो।"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"संगठन"</item>
+ <item msgid="7196592230748086755">"नोट"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ट्याब्लेटमा कुनै पनि तस्वीरहरू उपलव्ध छैनन्।"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"कुनै चित्रहरू फोनमा उपलब्ध छैनन्।"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"सम्पर्क फोटो"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"कस्टम लेबल नाम"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"कलहरू सिधै भ्वाइसमेलमा पठाउनुहोस्"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"फोटो मेट्नुहोस्"</string>
+ <string name="noContacts" msgid="8579310973261953559">"कुनै सम्पर्क छैन।"</string>
+ <string name="noGroups" msgid="8614664663561385253">"कुनै समूहहरू छैनन्।"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"समूह बनाउनका लागि एउटा खाताको आवश्यक्ता हुन्छ।"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"यो समूहमा कोही छैन।"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"केही थपनका लागि, समुह सम्पादन गर्नुहोस्।"</string>
+ <string name="savingContact" msgid="4075751076741924939">"सम्पर्क बचत गर्दै..."</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"सम्पर्क बचत गरियो।"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"सम्पर्क परिवर्तनहरू सुरक्षित गर्न सकेन।"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"समूह बचत गरियो।"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"समूह परिवर्तनहरू बचत गर्न सकेन।"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"फोन नम्बरसहित १ सम्पर्क"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> फोन नम्बरसहित सम्पर्कहरू"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"फोन नम्बर भएका कुनै सम्पर्कहरू छैनन्"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"१ सम्पर्क"</item>
+ <item quantity="other" msgid="3578469907265375314">"( <xliff:g id="COUNT">%d</xliff:g> सम्पर्कहरू)"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"१ भेटियो"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> भेट्टियो"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"कुनै सम्पर्कहरू छैनन्।"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"१ भेट्टाइयो"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> भेटाइयो"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"सबै सम्पर्कहरू"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"समुहहरू"</string>
+ <string name="callBack" msgid="5498224409038809224">"कल ब्याक"</string>
+ <string name="callAgain" msgid="3197312117049874778">"फेरि कल गर्नुहोस्"</string>
+ <string name="returnCall" msgid="8171961914203617813">"कल फर्काउनुहोस्"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" लाई सम्पर्कमा थप्ने?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"फोटो सम्पर्क गर्नुहोस्"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"जोड"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>को <xliff:g id="TOTAL_NUMBER">%s</xliff:g> सम्पर्क"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"तपाईँका सम्पर्कहरूका नामहरू"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"यो कार्य सम्हाल्न कुनै पनि अनुप्रयोग पाइएन।"</string>
+ <string name="menu_share" msgid="943789700636542260">"साझेदारी गर्नुहोस्"</string>
+ <string name="share_via" msgid="563121028023030093">"मार्फत सम्पर्क साझेदारी गर्नुहोस्"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"खाता अन्तर्गत समूह बनाउनुहोस्"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"भ्वाइस च्याट"</string>
+ <string name="video_chat" msgid="1872255818640336072">"भिडियो च्याट"</string>
+ <string name="connections" msgid="8098440723172028350">"जडानहरू"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"जडान थप्नुहोस्"</string>
+ <string name="recent" msgid="2659189233141493004">"हालैको"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"हालसालैका अद्यावधिकहरू"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> सम्पर्क"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"यो फोटाको प्रयोग गर्नुहोस्"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"यो अनुप्रयोगबाट सम्पादन गर्न नमिल्ने।"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"यो सम्पर्कको कुनै अतिरिक्त जानकारी छैन।"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"यस उपकरणमा सम्पादनयोग्य छैन।"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"सूचिलाई क्रमबद्ध गर्नुहोस्"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"दिइएको नाम"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"परिवार नाम"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"सम्पर्क नामहरू हेर्नुहोस्"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"दिइएको नाम"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"थर पहिले"</string>
+ <string name="take_photo" msgid="7496128293167402354">"तस्वीर लिनुहोस्"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"नयाँ फोटो खिच्नुहोस्"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ग्यालरीबाट तस्वीर छान्नुहोस्"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ग्यालरीबाट नयाँ फोटो छान्नुहोस्"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"भाषा परिवर्तन प्रतिबिम्बित गर्नका लागि सम्पर्क सूची अद्यावधिक गरिदैं छ।"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"सम्पर्क सूची अद्यावधिक हुदै छ।"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"सम्पर्कहरू अद्यावधिक हुने प्रक्रियामा छन्। \n \n अद्यावधिक प्रक्रिया लगभग <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> आन्तरिक भण्डारण MB आवश्यकता पर्छ । \n \n निम्न विकल्पहरू मध्ये कुनै छान्नुहोस्:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"केही अनुप्रयोगहरू हटाउनुहोस्"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"अद्यावधिक गर्न पुनःप्रयास गर्नुहोस्"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"खोजी कार्य गर्दै..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"चयनित देखाउनुहोस्"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"सबै देखाउनुहोस्"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"सबैलाई चयन गर्नुहोस्"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"सबैलाई अचयन गर्नुहोस्"</string>
+ <string name="add_field" msgid="2384260056674995230">"अर्को फिल्ड थप्नुहोस्"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"नयाँ खाता थप्नुहोस्"</string>
+ <string name="add_organization" msgid="7311893231158291197">"संगठन थप्नुहोस्"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"मिति"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"समूह नाम"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g>मार्फत"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> मार्फत <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"मनपर्ने"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"सम्पर्क सम्पादन गर्नुहोस्"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"मर्ज गरिएको छैन"</item>
+ <item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> स्रोतबाट मिसाइएको"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"हालको सम्पर्कलाई चयनित सम्पर्कसँग जोड्ने हो?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"चयनित सम्पर्कको सम्पादन गर्नका लागि स्विच गर्ने हो? तपाईँले अहिलेसम्म प्रविष्टि गरिएका जानकारीहरू प्रतिलिप हुने छन्।"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"मेरा सम्पर्कहरूमा प्रतिलिपि गर्नुहोस्"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"मेरो सम्पर्कहरूमा थप्नुहोस्"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"निर्देशिका<xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"एउटा व्यक्तिगत प्रतिलिपि बनाउँदै..."</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"अनुकूलन"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"सेटिङहरू"</string>
+ <string name="menu_settings" msgid="377929915873428211">"सेटिङहरू"</string>
+ <string name="menu_help" msgid="5123887102216637725">"मद्दत"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"विकल्पहरू प्रदर्शन गर्नुहोस्"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g> , <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"फोन नम्बर"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"सम्पर्कहरूमा जोड्नुहोस्"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"सम्पर्कमा थप्नुहोस्"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"बन्द गर्नुहोस्"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> ( <xliff:g id="PHONETIC_NAME">%2$s</xliff:g> )"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"एउटा वर्ष प्रदान गर्नुहोस्"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"ठेगाना"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"लोड हुँदै..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"एउटा नयाँ सम्पर्क बनाउनुहोस्"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"एउटा खातामा साइन इन गर्नुहोस्"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"सम्पर्क आयात गर्नुहोस्"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"नयाँ समूह बनाउनुहोस्"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"नयाँ समूह बनाउनुहोस्"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"१ समूह"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> समूहहरू"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" समूह हटाउने हो? (सम्पर्कहरू आफैँ हट्दैनन्।)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> व्यक्ति <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> बाट"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> मानिसहरू <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> बाट"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> व्यक्ति"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> मानिसहरू"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"अर्कोसँग सामेल हुनुअघि सम्पर्क नाम टाइप गर्नुहोस्।"</string>
+ <string name="copy_text" msgid="3257145021583508761">"क्लिपबोर्डमा प्रतिलिपि गर्नुहोस्"</string>
+ <string name="set_default" msgid="4417505153468300351">"पूर्वनिर्धारित मिलाउनुहोस्"</string>
+ <string name="clear_default" msgid="7193185801596678067">"पूर्वनिर्धारित हटाउनुहोस्"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"पाठको प्रतिलिपि गरियो"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"तपाईँका परिवर्तनहरू रद्द गर्ने?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"मेरो प्रोफाइल मिलाउनुहोस्"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"व्यक्तिको नाम टाइप गर्नुहोस्"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"समूहको नाम"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"मेरो स्थानीय प्रोफाइल"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"मेरो <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> प्रोफाइल"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"सबै सम्पर्कहरू प्रदर्शन गरिदै"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"मानिसहरू गुगल खातासँग राम्रो काम गर्छन् । \n \n कुनै पनि वेब ब्राउजरबाट पहुँच गर्न सकिन्छ \n तपाईँका सम्पर्कहरू सुरक्षित रूपमा जगेडा गर्नुहोस्।"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"तपाईँले फोन नै हराउनु भएको अवस्थामा पनि आफ्ना सम्पर्कहरूलाई सुरक्षित राख्नुहोस्: कुनै अनलाइन सेवासँग सिन्क्रोनाइज गर्नुहोस्।"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"एउटा खाता थप्नुहोस्"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"तपाईँको नयाँ सम्पर्क अद्यावधि गरिने छैन। अनलाइन अद्यावधिक गर्ने एउटा खाता थप्ने हो?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"<xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>सँग तपाईँको नयाँ सम्पर्क सिन्क्रोनाइज गरिने छ।"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"तपाईँले आफ्ना सम्पर्कहरू निम्न मध्ये कुनै एउटा खातासँग सिन्क्रोनाइज गर्न सक्नु हुन्छ। कुन चाहिँ प्रयोग गर्न चाहनु हुन्छ ?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"स्थानीय राख्नुहोस्"</string>
+ <string name="add_account" msgid="8201790677994503186">"खाता थप गर्नुहोस्"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"नयाँ खाता थप्नुहोस्"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"डेटाबेस फाइलहरू निर्यात गर्नुहोस्"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"चित्र। परिवर्तन गर्न छान्नुहोस्"</string>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 0386ca7..1ba6c98 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Personen"</string>
+ <string name="people" msgid="1190841469952343354">"Contacten"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacten"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacten"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direct bellen"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Vaak"</string>
<string name="strequentList" msgid="5640192862059373511">"Favorieten"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Details van contact"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Contact weergeven"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Contact bewerken"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Contact maken"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Groep bewerken"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Dit contact bevat gegevens uit meerdere accounts. Gegevens uit alleen-lezen accounts worden verborgen in uw contactenlijst, maar niet verwijderd."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Als u dit contact verwijdert, worden gegevens van meerdere accounts verwijderd."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Dit contact wordt verwijderd."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Annuleren"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Wijzigingen annuleren"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Het contact bestaat niet."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget voor contacten toegevoegd aan het startscherm."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Nieuw contact maken"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contacten met telefoonnummers"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Geen contacten met telefoonnummers"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contact"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacten"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 gevonden"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> gevonden"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 gevonden"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> gevonden"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alle contacten"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Groepen"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alle contacten"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoriet"</string>
<string name="callBack" msgid="5498224409038809224">"Terugbellen"</string>
<string name="callAgain" msgid="3197312117049874778">"Opnieuw bellen"</string>
<string name="returnCall" msgid="8171961914203617813">"Terugbellen"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> van <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacten"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Namen van uw contacten"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Er is geen app gevonden om deze actie uit te voeren."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Er is geen app gevonden om deze actie uit te voeren."</string>
<string name="menu_share" msgid="943789700636542260">"Delen"</string>
<string name="share_via" msgid="563121028023030093">"Contact delen via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Groep in account maken"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Achternaam eerst"</string>
<string name="take_photo" msgid="7496128293167402354">"Foto maken"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Nieuwe foto nemen"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Foto kiezen in Galerij"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Nieuwe foto selecteren in Galerij"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Foto kiezen"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Nieuwe foto selecteren"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Lijst met contacten wordt bijgewerkt om de gewijzigde taal te weerspiegelen."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Lijst met contactpersonen wordt bijgewerkt."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Contacten worden bijgewerkt. \n\nVoor het upgradeproces is ongeveer <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB interne opslagruimte vereist.\n\nKies een van de volgende opties:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Organisatie toevoegen"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Groepsnaam"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favoriet"</string>
<string name="edit_contact" msgid="7529281274005689512">"Contact bewerken"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiëren naar mijn contacten"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Toevoegen aan Mijn contacten"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directory <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Een persoonlijke kopie maken..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Aangepast"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Instellingen"</string>
<string name="menu_settings" msgid="377929915873428211">"Instellingen"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mijn lokale profiel"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mijn <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>-profiel"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Alle contacten worden weergegeven"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Personen werkt beter met een Google-account.\n\n• Toegang via elke webbrowser.\n• Maak beveiligde back-ups van uw contacten."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Contacten werkt beter met een Google-account.\n\n• Toegang via elke webbrowser.\n• Veilig een back-up van uw contacten maken."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Zorg dat uw contacten veilig zijn, zelfs wanneer u uw telefoon verliest: synchroniseer met een online service."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Account toevoegen"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Er wordt geen back-up van uw nieuwe contact gemaakt. Een account toevoegen waarmee online een back-up van contacten wordt gemaakt?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Nieuw account toevoegen"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Databasebestanden exporteren"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Foto. Selecteer om te wijzigen"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"nieuw contact toevoegen"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Meer weergeven"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Minder weergeven"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Alles weergeven"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recent"</string>
+ <string name="send_message" msgid="8938418965550543196">"Bericht verzenden"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Een persoonlijke kopie maken..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Gisteren"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Morgen"</string>
+ <string name="today" msgid="8041090779381781781">"Vandaag"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Vandaag om <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Morgen om <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Naamloze afspraak)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Instellen"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e978a6a..24e685e 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Osoby"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakty"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Telefon do osoby"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Częste"</string>
<string name="strequentList" msgid="5640192862059373511">"Ulubione"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Informacje kontaktowe"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Wyświetl kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Edytuj kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Utwórz kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Edytuj grupę"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ten kontakt zawiera informacje pochodzące z wielu kont. Informacje z kont przeznaczonych tylko do odczytu zostaną na listach kontaktów ukryte, a nie usunięte."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Usunięcie tego kontaktu spowoduje usunięcie informacji z wielu kont."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Ten kontakt zostanie usunięty."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Odrzuć"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Odrzuć zmiany"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt nie istnieje."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widżet kontaktu dodany do ekranu głównego."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Utwórz nowy kontakt"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Liczba kontaktów z numerami telefonów: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Brak kontaktów z numerami telefonów"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Liczba kontaktów: 1"</item>
- <item quantity="other" msgid="3578469907265375314">"Liczba kontaktów: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Znaleziono: 1"</item>
<item quantity="other" msgid="3852668542926965042">"Znaleziono: <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Znaleziono: 1"</item>
<item quantity="other" msgid="7988132539476575389">"Znaleziono: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Wszystkie kontakty"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupy"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Wszys. kontakty"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Ulubione"</string>
<string name="callBack" msgid="5498224409038809224">"Oddzwoń"</string>
<string name="callAgain" msgid="3197312117049874778">"Zadzwoń ponownie"</string>
<string name="returnCall" msgid="8171961914203617813">"Połączenie zwrotne"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"Kontakt <xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Imiona i nazwiska oraz nazwy w Twoich kontaktach"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nie znaleziono aplikacji do obsługi tego działania."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nie znaleziono aplikacji do obsługi tego działania."</string>
<string name="menu_share" msgid="943789700636542260">"Udostępnij"</string>
<string name="share_via" msgid="563121028023030093">"Udostępnij kontakt przez"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Utwórz grupę na koncie"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najpierw nazwisko"</string>
<string name="take_photo" msgid="7496128293167402354">"Zrób zdjęcie"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Zrób nowe zdjęcie"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Wybierz zdjęcie z galerii"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Wybierz nowe zdjęcie z galerii"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Wybierz zdjęcie"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Wybierz nowe zdjęcie"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Lista kontaktów jest aktualizowana, aby odzwierciedlić zmianę języka."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Lista kontaktów jest aktualizowana."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Trwa proces uaktualniania kontaktów. \n\nProces uaktualniania wymaga w przybliżeniu <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB pamięci wewnętrznej.\n\nWybierz jedną z następujących opcji:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizację"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nazwa grupy"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"przez: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>, przez: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"ulubione"</string>
<string name="edit_contact" msgid="7529281274005689512">"Edytuj kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiuj do moich kontaktów"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj do moich kontaktów"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Katalog <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Tworzenie kopii osobistej…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Niestandardowy"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ustawienia"</string>
<string name="menu_settings" msgid="377929915873428211">"Ustawienia"</string>
@@ -206,7 +199,7 @@
<item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> osoba"</item>
<item quantity="other" msgid="6251996206137048525">"Osoby: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
</plurals>
- <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Wpisz w kontakcie imię i nazwisko, zanim połączysz go z innym kontaktem."</string>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Wpisz imię i nazwisko, zanim połączysz ten kontakt z innym."</string>
<string name="copy_text" msgid="3257145021583508761">"Kopiuj do schowka"</string>
<string name="set_default" msgid="4417505153468300351">"Ustaw jako wartość domyślną"</string>
<string name="clear_default" msgid="7193185801596678067">"Wyczyść wartość domyślną"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Mój profil lokalny"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Mój profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Wyświetlanie wszystkich kontaktów"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Aplikacja Ludzie działa lepiej z kontem Google.\n\n• Używaj jej w dowolnej przeglądarce.\n• Twórz kopie zapasowe kontaktów."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakty działają lepiej, kiedy masz konto Google.\n\n• Dostęp w dowolnej przeglądarce internetowej.\n• Bezpieczne tworzenie kopii zapasowych kontaktów."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Zapewnij bezpieczeństwo swoich kontaktów nawet w przypadku utraty telefonu: włącz synchronizację z usługą online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Dodaj konto"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Kopia zapasowa nowego kontaktu nie zostanie utworzona. Dodać konto, na którym kopie zapasowe kontaktów będą tworzone online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Dodaj nowe konto"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportuj pliki bazy danych"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Zdjęcie. Wybierz, aby je zmienić"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"dodaj nowy kontakt"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Pokaż więcej"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Pokaż mniej"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Pokaż wszystkie"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Ostatnie"</string>
+ <string name="send_message" msgid="8938418965550543196">"Wyślij wiadomość"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Kopiuję do osobistych..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Wczoraj"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Jutro"</string>
+ <string name="today" msgid="8041090779381781781">"Dzisiaj"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Dzisiaj: <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Jutro: <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Wydarzenie bez nazwy)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Ustaw"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 1842cf3..b0958ac 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Pessoas"</string>
+ <string name="people" msgid="1190841469952343354">"Contactos"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Marcação directa"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frequentes"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoritos"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detalhes de contacto"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Visualizar contacto"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Editar contacto"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Criar contacto"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Editar grupo"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Este contacto contém informações de várias contas. As informações de contas só de leitura serão ocultadas nas suas listas de contactos, mas não eliminadas."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"A eliminação deste contacto eliminará informações de várias contas."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Este contacto será eliminado."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Rejeitar"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Rejeitar alterações"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"O contacto não existe."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget de contacto adicionado ao seu Ecrã principal."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Criar novo contacto"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contactos com números de telefone"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Sem contactos com números de telefone"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contacto"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 encontrado"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> encontrado(s)"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 encontrado"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> encontrado(s)"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Todos os contactos"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Todos os cont."</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritos"</string>
<string name="callBack" msgid="5498224409038809224">"Chamada de retorno"</string>
<string name="callAgain" msgid="3197312117049874778">"Ligar novamente"</string>
<string name="returnCall" msgid="8171961914203617813">"Devolver chamada"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contactos"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nomes dos contactos"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Não foram encontradas aplicações para executar esta ação"</string>
+ <string name="missing_app" msgid="1466111003546611387">"Não foram encontradas aplicações para executar esta ação."</string>
<string name="menu_share" msgid="943789700636542260">"Partilhar"</string>
<string name="share_via" msgid="563121028023030093">"Partilhar contacto através de"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Criar grupo na conta"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apelido em primeiro lugar"</string>
<string name="take_photo" msgid="7496128293167402354">"Tirar fotografia"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Tirar nova fotografia"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Escolher fotografia da Galeria"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Selecionar nova fotografia da Galeria"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Escolher fotografia"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Selecionar nova fotografia"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"A lista de contactos está a ser atualizada para reflectir a alteração do idioma."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"A lista de contactos está a ser atualizada."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Os contactos estão em processo de atualização. \n\nO processo de atualização requer aproximadamente <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB de armazenamento interno.\n\nEscolha uma das seguintes opções:"</string>
@@ -153,15 +149,13 @@
<string name="search_results_searching" msgid="3984833028938569930">"A pesquisar..."</string>
<string name="menu_display_selected" msgid="6470001164297969034">"Mostrar seleccionados"</string>
<string name="menu_display_all" msgid="8887488642609786198">"Mostrar tudo"</string>
- <string name="menu_select_all" msgid="621719255150713545">"Seleccionar tudo"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"Selecionar tudo"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Desmarcar tudo"</string>
<string name="add_field" msgid="2384260056674995230">"Adicionar outro campo"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Adicionar novo"</string>
<string name="add_organization" msgid="7311893231158291197">"Adicionar entidade"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nome do grupo"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"através do <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> através do <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorito"</string>
<string name="edit_contact" msgid="7529281274005689512">"Editar contacto"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copiar para Os Meus Contactos"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Adicionar aos Meus Contactos"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Directório <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"A criar uma cópia pessoal"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Definições"</string>
<string name="menu_settings" msgid="377929915873428211">"Definições"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"O meu perfil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"O meu perfil do <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"A apresentar todos os contactos"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"A aplicação Pessoas funciona melhor com uma Conta Google.\n\n• Aceda à Conta Google a partir de qualquer navegador de Internet.\n• Faça uma cópia de segurança dos seus contactos de forma segura."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"A aplicação Contactos funciona melhor com uma Conta Google.\n\n• Aceda a partir de qualquer navegador de Internet.\n• Faça uma cópia de segurança dos seus contactos de forma segura."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mantenha os seus contactos em segurança, mesmo em caso de perda do telemóvel: sincronize com um serviço on-line."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Adicionar uma conta"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Não será efetuada cópia de segurança do novo contacto. Adicionar uma conta que efetua a cópia de segurança dos contactos on-line?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar ficheiros da base de dados"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagem. Selecione para alterar"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"adicionar novo contacto"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Ver mais"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Ver menos"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Ver tudo"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contacto"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recentes"</string>
+ <string name="send_message" msgid="8938418965550543196">"Enviar mensagem"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"A criar uma cópia pessoal..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ontem"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Amanhã"</string>
+ <string name="today" msgid="8041090779381781781">"Hoje"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hoje, às <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Amanhã, às <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Evento sem nome)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Definir"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 74ccaf9..b6ec5af 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Pessoas"</string>
+ <string name="people" msgid="1190841469952343354">"Contatos"</string>
<string name="contactsList" msgid="8661624236494819731">"Contatos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contato"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Discagem direta"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frequente"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoritos"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detalhes do contato"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Ver contato"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Editar contato"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Criar contato"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Editar grupo"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Este contato contém informações de diversas contas. As informações de contas somente de leitura ficarão ocultas nas suas listas de contatos, mas não serão excluídas."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Excluir este contato irá excluir informações de várias contas."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Este contato será excluído."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Descartar alterações"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"O contato não existe."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget Contato adicionado à tela inicial."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Criar novo contato"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> contatos com números de telefone"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nenhum contato com números de telefone"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contato"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contatos"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Um encontrado"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> encontrados"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Um encontrado"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> encontrados"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Todos os contatos"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Todos"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoritos"</string>
<string name="callBack" msgid="5498224409038809224">"Retornar chamada"</string>
<string name="callAgain" msgid="3197312117049874778">"Chamar novamente"</string>
<string name="returnCall" msgid="8171961914203617813">"Retornar chamada"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> de <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contatos"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nomes dos seus contatos"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
<string name="menu_share" msgid="943789700636542260">"Compartilhar"</string>
<string name="share_via" msgid="563121028023030093">"Compartilhar contato via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Criar grupo na conta"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Sobrenome primeiro"</string>
<string name="take_photo" msgid="7496128293167402354">"Tirar foto"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Tirar outra foto"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Escolha fotos da Galeria"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Selecionar nova foto da Galeria"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Escolher foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Selecionar nova foto"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"A lista de contatos está sendo atualizada para incorporar a alteração do idioma."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"A lista de contatos está sendo atualizada."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Os contatos estão sendo atualizados no momento. \n\nO processo de atualização requer aproximadamente <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB de armazenamento interno.\n\nEscolha uma das seguintes opções:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Adicionar organização"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Data"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nome do grupo"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"por meio de <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorito"</string>
<string name="edit_contact" msgid="7529281274005689512">"Editar contato"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copiar para Meus contatos"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Adicionar a Meus contatos"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Diretório <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Criando uma cópia pessoal..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configurações"</string>
<string name="menu_settings" msgid="377929915873428211">"Configurações"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Meu perfil local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Meu perfil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Exibindo todos os contatos"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"O aplicativo Pessoas funciona melhor com uma Conta do Google.\n\n• Acesse-o a partir de qualquer navegador da web.\n• Faça backup de seus contatos com segurança."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Contatos funciona melhor com uma conta do Google.\n\n• Acesse-o a partir de qualquer navegador da web.\n• Faça backup de seus contatos com segurança."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Mantenha seus contatos seguros, mesmo se você perder seu telefone: sincronize com um serviço on-line."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Adicionar uma conta"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Não será possível fazer backup de seu novo contato. Deseja adicionar uma conta que faça backup de contatos on-line?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar arquivos do banco de dados"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagem. Selecione para alterar"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"adicionar novo contato"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Ver mais"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Ver menos"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Ver tudo"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contato"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recente"</string>
+ <string name="send_message" msgid="8938418965550543196">"Enviar mensagem"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Criando uma cópia pessoal..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ontem"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Amanhã"</string>
+ <string name="today" msgid="8041090779381781781">"Hoje"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hoje, às <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Amanhã, às <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Evento sem título)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Definir"</string>
</resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 5ab30f4..45ca3c4 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for people (1048457247435785074) -->
+ <!-- no translation found for people (1190841469952343354) -->
<skip />
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
@@ -31,7 +31,6 @@
<string name="frequentList" msgid="7154768136473953056">"Contacts frequents"</string>
<string name="strequentList" msgid="5640192862059373511">"Favurits"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detagls dal contact"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Mussar il contact"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Modifitgar il contact"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Crear in contact"</string>
<!-- no translation found for editGroupDescription (6321161304201540561) -->
@@ -84,7 +83,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"\"Quest contact cuntegna infurmaziuns da plirs contos. Infurmaziuns da contos mo per lectura vegnan betg stizzadas, mabain zuppentadas en Vossas glistas da contacts.\""</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"\"Sche Vus stizzais quest contact, vegnan infurmaziuns en plirs contos stizzads.\""</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Quest contact vegn stizzà."</string>
- <!-- no translation found for menu_discard (6456087569315685632) -->
+ <!-- no translation found for menu_discard (6854657936970228164) -->
<skip />
<!-- no translation found for invalidContactMessage (8215051456181842274) -->
<skip />
@@ -127,8 +126,6 @@
<!-- no translation found for listTotalPhoneContacts:other (3299954047880968205) -->
<!-- no translation found for listTotalPhoneContactsZero (6968813857632984319) -->
<skip />
- <!-- no translation found for listTotalAllContacts:one (3405747744700823280) -->
- <!-- no translation found for listTotalAllContacts:other (3578469907265375314) -->
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"chattà 1"</item>
<item quantity="other" msgid="3852668542926965042">"Chattà <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -139,9 +136,9 @@
<item quantity="one" msgid="4826918429708286628">"chattà 1"</item>
<item quantity="other" msgid="7988132539476575389">"Chattà <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <!-- no translation found for contactsAllLabel (6479708629170672169) -->
+ <!-- no translation found for all_contacts_tab_label (6250372293594147703) -->
<skip />
- <!-- no translation found for contactsGroupsLabel (2841971472518003524) -->
+ <!-- no translation found for favorites_tab_label (1524869648904016414) -->
<skip />
<string name="callBack" msgid="5498224409038809224">"Telefonar enavos"</string>
<string name="callAgain" msgid="3197312117049874778">"Telefonar anc ina giada"</string>
@@ -153,6 +150,8 @@
<string name="search_settings_description" msgid="2675223022992445813">"Num da Voss contacts"</string>
<!-- no translation found for quickcontact_missing_app (358168575340921552) -->
<skip />
+ <!-- no translation found for missing_app (1466111003546611387) -->
+ <skip />
<string name="menu_share" msgid="943789700636542260">"Cundivider"</string>
<string name="share_via" msgid="563121028023030093">"Cundivider in contact sur"</string>
<!-- no translation found for dialog_new_group_account (2318032089273496830) -->
@@ -191,9 +190,9 @@
<string name="take_photo" msgid="7496128293167402354">"Far ina foto"</string>
<!-- no translation found for take_new_photo (7341354729436576304) -->
<skip />
- <!-- no translation found for pick_photo (3746334626214970837) -->
+ <!-- no translation found for pick_photo (2129509985223564942) -->
<skip />
- <!-- no translation found for pick_new_photo (7962368009197147617) -->
+ <!-- no translation found for pick_new_photo (9122450996263688237) -->
<skip />
<!-- no translation found for locale_change_in_progress (7583992153091537467) -->
<skip />
@@ -219,8 +218,6 @@
<skip />
<!-- no translation found for group_edit_field_hint_text (3966441850870457808) -->
<skip />
- <string name="contact_status_update_attribution" msgid="752179367353018597">"entras <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> entras <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favurit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Modifitgar il contact"</string>
<plurals name="merge_info">
@@ -237,8 +234,6 @@
<skip />
<!-- no translation found for contact_directory_description (683398073603909119) -->
<skip />
- <!-- no translation found for toast_making_personal_copy (288549957278065542) -->
- <skip />
<!-- no translation found for list_filter_custom (8910173055702057002) -->
<skip />
<!-- no translation found for activity_title_settings (5464130076132770781) -->
@@ -312,7 +307,7 @@
<skip />
<!-- no translation found for toast_displaying_all_contacts (2737388783898593875) -->
<skip />
- <!-- no translation found for no_account_prompt (7061052512446855192) -->
+ <!-- no translation found for no_account_prompt (6424883302325061025) -->
<skip />
<!-- no translation found for generic_no_account_prompt (7218827704367325460) -->
<skip />
@@ -334,4 +329,36 @@
<skip />
<!-- no translation found for contact_detail_picture_description (6083230522651287030) -->
<skip />
+ <!-- no translation found for action_menu_add_new_contact_button (3180222523336380017) -->
+ <skip />
+ <!-- no translation found for expanding_entry_card_view_see_more (3779194067124758079) -->
+ <skip />
+ <!-- no translation found for expanding_entry_card_view_see_less (5344160551629714168) -->
+ <skip />
+ <!-- no translation found for expanding_entry_card_view_see_all (3845258737661412627) -->
+ <skip />
+ <!-- no translation found for communication_card_title (7842656156852232185) -->
+ <skip />
+ <!-- no translation found for recent_card_title (8982782042698001695) -->
+ <skip />
+ <!-- no translation found for send_message (8938418965550543196) -->
+ <skip />
+ <!-- no translation found for toast_making_personal_copy (6137651078366797938) -->
+ <skip />
+ <!-- no translation found for yesterday (6840858548955018569) -->
+ <skip />
+ <!-- no translation found for tomorrow (6241969467795308581) -->
+ <skip />
+ <!-- no translation found for today (8041090779381781781) -->
+ <skip />
+ <!-- no translation found for today_at_time_fmt (605665249491030460) -->
+ <skip />
+ <!-- no translation found for tomorrow_at_time_fmt (4856497969617819421) -->
+ <skip />
+ <!-- no translation found for date_time_fmt (5053178726906863812) -->
+ <skip />
+ <!-- no translation found for untitled_event (3484859385405939366) -->
+ <skip />
+ <!-- no translation found for date_time_set (4761419824439606690) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index c17b84e..eaa7b9c 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Persoane"</string>
+ <string name="people" msgid="1190841469952343354">"Agendă"</string>
<string name="contactsList" msgid="8661624236494819731">"Agendă"</string>
<string name="shortcutContact" msgid="749243779392912958">"Persoană din Agendă"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Apel direct"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Frecvent"</string>
<string name="strequentList" msgid="5640192862059373511">"Favorite"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Detalii ale persoanei din agendă"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Vizualizaţi persoana din agendă"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Modificaţi informaţiile despre persoana din agendă"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Creaţi persoana din agendă"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Editaţi grupul"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Informaţiile despre această persoană din agendă provin din mai multe conturi. Informaţiile provenite din conturile numai în citire nu vor fi şterse din lista dvs., ci doar ascunse."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Ștergerea acestei persoane din agendă va elimina informaţii din mai multe conturi."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Această persoană va fi ştearsă din agendă."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Renunţaţi"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Renunțați la modificări"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Persoana nu există în agendă."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widgetul Agendă a fost adăugat la ecranul de pornire."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Creaţi o persoană nouă în agendă"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> (de) persoane din agendă cu numere de telefon"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Nicio persoană din agendă cu numere de telefon"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 persoană din Agendă"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> (de) persoane din Agendă"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"A fost găsită 1 persoană din agendă"</item>
<item quantity="other" msgid="3852668542926965042">"Au fost găsite <xliff:g id="COUNT">%d</xliff:g> (de) persoane din agendă"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"A fost găsită 1 persoană din agendă"</item>
<item quantity="other" msgid="7988132539476575389">"Au fost găsite <xliff:g id="COUNT">%d</xliff:g> (de) persoane din agendă"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Toată Agenda"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupuri"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Toată agenda"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Preferate"</string>
<string name="callBack" msgid="5498224409038809224">"Apelaţi din nou"</string>
<string name="callAgain" msgid="3197312117049874778">"Apelaţi din nou"</string>
<string name="returnCall" msgid="8171961914203617813">"Apelaţi înapoi"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> din <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (de) persoane din agendă"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Numele persoanelor din agenda dvs."</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nu s-a găsit o aplicaţie care să gestioneze această acţiune."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Nu s-a găsit o aplicație care să îndeplinească această acțiune."</string>
<string name="menu_share" msgid="943789700636542260">"Distribuiţi"</string>
<string name="share_via" msgid="563121028023030093">"Distribuiţi persoana din agendă prin"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Creaţi un grup în contul"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Întâi numele de familie"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotografiaţi"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Creaţi o fotografie nouă"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Alegeţi o fotografie din Galerie"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Selectaţi o fotografie nouă din Galerie"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Alegeți o fotografie"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Selectați o fotografie nouă"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Se actualizează lista de persoane din agendă pentru a reflecta schimbarea limbii."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Se actualizează lista de persoane din agendă."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Agenda este în proces de trecere la o versiune superioară. \n\nAcest proces necesită aproximativ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MO din spaţiul de stocare intern.\n\nAlegeţi una dintre următoarele opţiuni:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Adăugaţi o organizaţie"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Dată"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Nume grup"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"de pe <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"La ora <xliff:g id="DATE">%1$s</xliff:g> de pe <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"preferate"</string>
<string name="edit_contact" msgid="7529281274005689512">"Editaţi informaţiile despre persoana din agendă"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Copiaţi în Agendă"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Adăugaţi în Agendă"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Director <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Se creează o copie personală..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizată"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Setări"</string>
<string name="menu_settings" msgid="377929915873428211">"Setări"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Profilul meu local"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Profilul meu <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Se afişează toată agenda"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Aplicaţia Persoane funcţionează mai bine cu un Cont Google.\n\n• Accesaţi aplicaţia din orice browser web.\n• Creaţi în siguranţă copii de rezervă pentru agendă."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Agenda funcționează mai bine cu un Cont Google.\n\n• O puteți accesa din orice browser web.\n• Creați în siguranță backup pentru persoanele de contact."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Păstraţi agenda dvs. în condiţii de siguranţă, chiar dacă pierdeţi telefonul, prin sincronizarea acesteia cu un serviciu online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Adăugaţi un cont"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Pentru noul contact nu se va crea o copie de rezervă. Adăugați un cont care creează online copii de rezervă pentru contacte?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Adăugaţi un cont nou"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportaţi fişierele bazei de date"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Fotografie. Selectați pentru a schimba."</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"adăugați o persoană de contact nouă"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Mai multe detalii"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Mai puține detalii"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Vedeți tot"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Recente"</string>
+ <string name="send_message" msgid="8938418965550543196">"Trimiteți mesajul"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Se creează o copie personală..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Ieri"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Mâine"</string>
+ <string name="today" msgid="8041090779381781781">"Astăzi"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Astăzi, la <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Mâine, la <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Eveniment fără titlu)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Setați"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index b88e546..9af2b15 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Контакты"</string>
+ <string name="people" msgid="1190841469952343354">"Контакты"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакты"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Быстрый звонок"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Часто вызываемые"</string>
<string name="strequentList" msgid="5640192862059373511">"Избранное"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Сведения о контакте"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Просмотреть контакт"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Изменить контакт"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Создать контакт"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Изменение группы"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Этот контакт содержит информацию из различных аккаунтов. Информация из аккаунтов, доступных только для чтения, будет скрыта в ваших списках контактов, но не удалена."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Удаление этого контакта приведет к потере данных из нескольких аккаунтов."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Этот контакт будет удален."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Отменить"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Отмена"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Нет такого контакта."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Виджет \"Контакты\" добавлен на главный экран."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Создать новый контакт"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Контакты с номерами телефонов: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Нет контактов с номерами телефонов"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Контактов: 1"</item>
- <item quantity="other" msgid="3578469907265375314">"Контактов: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Найдено: 1"</item>
<item quantity="other" msgid="3852668542926965042">"Найдено: <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Найдено: 1"</item>
<item quantity="other" msgid="7988132539476575389">"Найдено: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Все контакты"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Группы"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Все"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Избранные"</string>
<string name="callBack" msgid="5498224409038809224">"Перезвонить"</string>
<string name="callAgain" msgid="3197312117049874778">"Позвонить снова"</string>
<string name="returnCall" msgid="8171961914203617813">"Перезвонить"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"Контакт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> из <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена контактов"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Действие не поддерживается ни в одном приложении."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Действие не поддерживается ни в одном приложении."</string>
<string name="menu_share" msgid="943789700636542260">"Отправить"</string>
<string name="share_via" msgid="563121028023030093">"Способ отправки"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Создание группы в аккаунте"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Сначала фамилию"</string>
<string name="take_photo" msgid="7496128293167402354">"Сфотографировать"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Сфотографировать"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Выбрать из Галереи"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Выбрать из Галереи"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Выбрать фото"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Выбрать другое фото"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Список контактов обновляется после смены языка интерфейса."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Список контактов обновляется..."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Контакты обновляются.\n\nДля этого требуется около <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> МБ внутренней памяти.\n\nВыберите подходящую опцию:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Добавить организацию"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Название группы"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"с помощью <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> с помощью <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"избранное"</string>
<string name="edit_contact" msgid="7529281274005689512">"Изменить контакт"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Копировать в \"Мои контакты\""</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Добавить в группу \"Мои контакты\""</string>
<string name="contact_directory_description" msgid="683398073603909119">"Каталог <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Копирование..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Пользовательские"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
<string name="menu_settings" msgid="377929915873428211">"Настройки"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Мой профиль"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Мой профиль <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Отображаются все контакты"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Подключите Контакты к аккаунту Google, чтобы:\n\n• Всегда иметь под рукой обновленные данные – на любом устройстве.\n• Синхронизировать все контакты – вы никогда не потеряете их."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Подключите Контакты к аккаунту Google, чтобы:\n\n• Всегда иметь под рукой обновленные данные – на любом устройстве.\n• Синхронизировать все контакты – вы никогда не потеряете их."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Можно потерять телефон, но не контакты... если хранить их в Интернете!"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Добавить аккаунт"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Резервная копия нового контакта не будет сохранена. Добавить аккаунт для сохранения контактов в Интернете?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Добавить аккаунт"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Экспорт файлов базы данных"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Изображение (нажмите, чтобы изменить)"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"Добавить контакт"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Ещё"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Свернуть"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Показать все"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Контакт"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Недавние"</string>
+ <string name="send_message" msgid="8938418965550543196">"Отправить сообщение"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Копирование…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Вчера"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Завтра"</string>
+ <string name="today" msgid="8041090779381781781">"Сегодня"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Сегодня, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Завтра, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(мероприятие без названия)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Установить"</string>
</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..7022a17
--- /dev/null
+++ b/res/values-si-rLK/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"පුද්ගලයින්"</string>
+ <string name="contactsList" msgid="8661624236494819731">"සම්බන්ධතා"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"සම්බන්ධතාවය"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ඍජු ඇමතීම"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ඍජු පණිවිඩය"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"සම්බන්ධතා කෙටිමඟක් තෝරාගන්න"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ඇමතීමට අංකයක් තෝරාගන්න"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"පණිවිඩයක් යැවීමට අංකයක් තෝරාගන්න"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"සම්බන්ධතාවයක් තෝරාගන්න"</string>
+ <string name="starredList" msgid="4817256136413959463">"තරුව සලකුණු කළ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"නිතර"</string>
+ <string name="strequentList" msgid="5640192862059373511">"ප්රියතම"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"සම්බන්ධතා විස්තර"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"සම්බන්ධතාව පෙන්වන්න."</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"සම්බන්ධතාවයක් සාදන්න"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"කණ්ඩායම සංස්කරණය කරන්න"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"කණ්ඩායමක් සාදන්න"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"පිළිබඳ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"යාවත්කාලීන කිරීම්"</string>
+ <string name="searchHint" msgid="8482945356247760701">"සම්බන්ධතා සෙවීම"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"සම්බන්ධතාව පෙන්වන්න"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"ප්රියතම වලට එක් කරන්න"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"ප්රියතම වලින් ඉවත් කරන්න"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"සංස්කරණය කරන්න"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"මකන්න"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"මුල් තිරයෙහි තබන්න"</string>
+ <string name="menu_call" msgid="3992595586042260618">"සම්බන්ධතාව අමතන්න"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"සම්බන්ධතාවයට කෙටි පණිවිඩයක් යවන්න"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"වෙන් කරන්න"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"සංස්කරණය කරන්න"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"මකන්න"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"සම්බන්ධතාවය එක් කරන්න"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"කණ්ඩායමක් එක් කරන්න"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"සම්බන්ධතාව වෙන් කරන්නද?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"මෙම සම්බන්ධතාවය සම්බන්ධතා කිහිපයකට වෙන් කෙරෙනු ඇත."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"එකතු වන්න"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"සම්බන්ධතා එකතු කරන්න"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g> සමඟ එක් කළ යුතු සම්බන්ධතාවය තෝරන්න:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"සියලු සම්බන්ධතා පෙන්වන්න"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"යෝජිත සම්බන්ධතා"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"සියලුම සම්බන්ධතා"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"සම්බන්ධතා එක්වුණි"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"රිංග්ටෝනය සකසන්න"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"හඬ තැපෑල වෙත සියලු ඇමතුම්"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"ඔබට සම්බන්ධතා කියවීමට-පමණයි ගිණුම් වලින් මැකිය නොහැක, නමුත් ඔබගේ සම්බන්ධතා ලැයිස්තු තුළ ඔබට ඒවා සැඟවිය හැක."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"මෙම සම්බන්ධතාවයෙහි ගිණුම් කිහිපයකින් තොරතුරු අඩංගු වේ. කියවීමට-පමණයි ගිණුම් වලින් තොරතුරු ඔබගේ සම්බන්ධතා ලැයිස්තු තුළ සඟවා දැමෙන අතර, මකා දැමීම නොකරයි."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"මෙම සම්බන්ධතාවය මකා දැමීමෙන් ගිණුම් කිහිපයකින් තොරතුරු මකා දැමෙනු ඇත."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"මෙම සම්බන්ධතාවය මකා දැමෙනු ඇත."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"ඉවත ලන්න"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"සම්බන්ධතාවය නොපවතී."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"මුල් තිරයට සම්බන්ධතා විජටය එක් කරන ලදි."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"සංවිධානය"</item>
+ <item msgid="7196592230748086755">"සටහන"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ටැබ්ලටයේ පින්තූර කිසිවක් ලද නොහැක."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"දුරකථනයේ පින්තූර කිසිවක් ලද නොහැක."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"සම්බන්ධතා ඡායාරූපය"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"අභිරුචි ලේබල නම"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"හඬ තැපෑලට ඍජුවම ඇමතුම් යවන්න"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ඡායාරූපය මකන්න"</string>
+ <string name="noContacts" msgid="8579310973261953559">"සම්බන්ධතා නැත."</string>
+ <string name="noGroups" msgid="8614664663561385253">"කණ්ඩායම් නොමැත."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"කණ්ඩායම් නිර්මාණය කිරීමට ඔබට ගිණුමක් අවශ්ය වේ."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"මෙම කණ්ඩායම තුළ පුද්ගලයින් නොමැත."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"කිහිපයක් එක් කිරීමට, කණ්ඩායම සංස්කරණය කරන්න."</string>
+ <string name="savingContact" msgid="4075751076741924939">"සම්බන්ධතාවය සුරකමින්…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"සම්බන්ධතාවය සුරකින ලදි."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"සම්බන්ධතා වෙනස්කම් සුරැකීමට නොහැක."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"කණ්ඩායම සුරකින ලදි."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"කණ්ඩායම් වෙනස්කම් සුරැකීමට නොහැක."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"දුරකථන අංක සහිත සම්බන්ධතා 1"</item>
+ <item quantity="other" msgid="3299954047880968205">"දුරකථන අංක සහිත සම්බන්ධතා <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"දුරකථන අංක සහිත සම්බන්ධතා නැත"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"සම්බන්ධතා 1 ක්"</item>
+ <item quantity="other" msgid="3578469907265375314">"සම්බන්ධතා <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 ක් සොයාගන්නා ලදී"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> ක් සොයාගන්නා ලදී"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"සම්බන්ධතා නැත"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 ක් සොයාගන්නා ලදී"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> ක් සොයාගන්නා ලදී"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"සියලුම සම්බන්ධතා"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"කණ්ඩායම්"</string>
+ <string name="callBack" msgid="5498224409038809224">"නැවත අමතන්න"</string>
+ <string name="callAgain" msgid="3197312117049874778">"නැවත අමතන්න"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ඇමතුම නැවත ලබා දෙන්න"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"සම්බන්ධතා වලට \"<xliff:g id="EMAIL">%s</xliff:g>\" එක් කරන්නද?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"සම්බන්ධතා ඡායාරූපය"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"ධන"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"සම්බන්ධතා <xliff:g id="TOTAL_NUMBER">%s</xliff:g> කින් <xliff:g id="CURRENT_NUMBER">%s</xliff:g> ක්"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ඔබගේ සම්බන්ධතා වල නම්"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"මෙම ක්රියාව හැසිරවීමට යෙදුමක් සොයාගත්තේ නැත"</string>
+ <string name="menu_share" msgid="943789700636542260">"බෙදාගන්න"</string>
+ <string name="share_via" msgid="563121028023030093">"ඔස්සේ සම්බන්ධතාවය බෙදාගන්න"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ගිණුම යටතේ කණ්ඩායමක් නිර්මාණය කරන්න"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"හඬ කතාබහ"</string>
+ <string name="video_chat" msgid="1872255818640336072">"වීඩියෝ කතාබස්"</string>
+ <string name="connections" msgid="8098440723172028350">"සම්බන්ධතා"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"සම්බන්ධතාවයක් එක් කරන්න"</string>
+ <string name="recent" msgid="2659189233141493004">"මෑත"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"මෑත යාවත්කාලීන"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> සම්බන්ධතාව"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"මෙම ඡායාරූපය භාවිත කරන්න"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"මෙම යෙදුමෙන් සංස්කරණය කළ නොහැක."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"මෙම සම්බන්ධතාවයට අමතර තොරතුරු නොමැත."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"මෙම උපාංගයෙහි සංස්කරණය කළ නොහැක"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"මඟින් ලැයිස්තුව අනුපිළිවෙලට සකසන්න"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"ලබාදුන් නම"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"වාසගම"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"සම්බන්ධතා නම් පෙන්වන්න"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ලබාදුන් නම මුලින්"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"වාසගම මුලින්"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ඡායාරූපය ගන්න"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"නව ඡායාරූපයක් ගන්න"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ගැලරියෙන් ඡායාරූපයක් තෝරන්න"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ගැලරියෙන් නව ඡායාරූපයක් තෝරන්න"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"භාෂා වෙනස්වීම පෙන්වීමට සම්බන්ධතා ලැයිස්තුව යාවත්කාලීන වෙමින් පවතී"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"සම්බන්ධතා ලැයිස්තුව යාවත්කාලීන වෙමින් පවතී."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"සම්බන්ධතා උත්ශ්රේණි ක්රියාවලියක තිබේ. \n\nඋත්ශ්රේණි ක්රියාවට <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB ක අභ්යන්තර දුරකථන ආචයනයක් ආසන්න වශයෙන් අවශ්ය වේ.\n\nපහත විකල්ප වලින් එකක් තෝරාගන්න:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"සමහර යෙදුම් අස්ථාපනය කරන්න"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"උත්ශ්රේණි කිරීම නැවත උත්සාහ කරන්න"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"සොයමින්..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"තෝරාගත් ඒවා පෙන්වන්න"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"සියල්ල පෙන්වන්න"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"සියල්ල තෝරන්න"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"සියල්ල තේරීම ඉවත් කරන්න"</string>
+ <string name="add_field" msgid="2384260056674995230">"තවත් ක්ෂේත්රයක් එක් කරන්න"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"නව දෙයක් එක් කරන්න"</string>
+ <string name="add_organization" msgid="7311893231158291197">"සංවිධානය එක් කරන්න"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"දිනය"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"කණ්ඩායම් නම"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> හරහා"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> ඔස්සේ <xliff:g id="DATE">%1$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"ප්රියතම"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"ඒකාබද්ධ කර නැත"</item>
+ <item quantity="other" msgid="425683718017380845">"මූලාශ්ර <xliff:g id="COUNT">%0$d</xliff:g> කින් ඒකාබද්ධ කර ඇත"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"වත්මන් සම්බන්ධතාවය තෝරාගෙන ඇති සම්බන්ධතාවය සමඟ එකතු කරන්නද?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"තෝරාගෙන ඇති සම්බන්ධතාවය සංස්කරණය කිරීමට මාරු වෙන්නද? ඔබ දැනට ඇතුළු කළ තොරතුරු පිටපත් වනු ඇත."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"මගේ සම්බන්ධතා වෙතට පිටපත් කරන්න"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"මගේ සම්බන්ධතා වලට එක් කරන්න"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> නාමාවලිය"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"පුද්ගලික පිටපතක් නිර්මාණය කරමින්…"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"අභිරුචි"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"සැකසීම්"</string>
+ <string name="menu_settings" msgid="377929915873428211">"සැකසීම්"</string>
+ <string name="menu_help" msgid="5123887102216637725">"සහාය"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"පෙන්වීම් විකල්ප"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"දුරකථන අංකය"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"සම්බන්ධතා වලට එක් කරන්න"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"සම්බන්ධතාවය වෙත එක් කරන්න"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"වසන්න"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"අවුරුද්දක් සපයන්න"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"සම්බන්ධතාවය"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"පූරණය වෙමින්..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ගිණුමකට පුරනය වන්න"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"සම්බන්ධතා ආයාත කරන්න"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"නව කණ්ඩායමක් නිර්මාණය කරන්න"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"නව කණ්ඩායමක් නිර්මාණය කිරීම"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"කණ්ඩායම් 1"</item>
+ <item quantity="other" msgid="1276758425904917367">"කණ්ඩායම් <xliff:g id="COUNT">%0$d</xliff:g>"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" කණ්ඩායම මකා දමන්නද? (සම්බන්ධතා මකා දමන්නේ නැත.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> වෙතින් පුද්ගලයින් <xliff:g id="COUNT_0">%1$d</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> වෙතින් පුද්ගලයින් <xliff:g id="COUNT_0">%1$d</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"පුද්ගලයින් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
+ <item quantity="other" msgid="6251996206137048525">"පුද්ගලයින් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"වෙනත් එකක් සමඟ එක් කිරීමට කලින් සම්බන්ධතා නම ටයිප් කරන්න."</string>
+ <string name="copy_text" msgid="3257145021583508761">"පසුරු පුවරුවට පිටපත් කරන්න"</string>
+ <string name="set_default" msgid="4417505153468300351">"සුපුරුදු ලෙස සකසන්න"</string>
+ <string name="clear_default" msgid="7193185801596678067">"සුපුරුදු හිස් කරන්න"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"පෙළ පිටපත් කරන ලදී"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"ඔබගේ වෙනස්කම් ඉවතලන්නද?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"මගේ පැතිකඩ සකසන්න"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"පුද්ගලයාගේ නම ටයිප් කරන්න"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"කණ්ඩායමේ නම"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"මගේ දේශීය පැතිකඩ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"මගේ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> පැතිකඩ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"සියලු සම්බන්ධතා පෙන්වමින්"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"පුද්ගලයින් Google ගිණුමක් හා වඩාත් හොඳින් වැඩ කරයි.\n\n• ඕනෑම වෙබ් බ්රවුසරයක් වෙතින් එයට ප්රවේශ වන්න\n• ඔබගේ සම්බන්ධතා ආරක්ෂිතව උපස්ථ කරන්න."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"ඔබගේ දුරකථනය නොමැති වුවත් සම්බන්ධතා සුරක්ෂිතව තබන්න: සබැඳි සේවාවක් සමඟ සමමුහුර්ත කරන්න."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ගිණුමක් එක් කරන්න"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"ඔබගේ නව සම්බන්ධතාවය උපස්ථ නොවනු ඇත. ඔබගේ සම්බන්ධතා සබැඳිව උපස්ථ කරන ගිණුමක් එක් කරන්නද?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"ඔබගේ නව සම්බන්ධතාවය <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> සමඟ සමමුහුර්ත වනු ඇත."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ඔබගේ පහත ගිණුම් වලින් එකක් සමඟ ඔබගේ නව සම්බන්ධතාවය සමමුහුර්ත කළ හැක. ඔබට භාවිතා කිරීමට අවශ්ය කුමක්ද?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"පෙදෙසිව තබාගන්න"</string>
+ <string name="add_account" msgid="8201790677994503186">"ගිණුමක් එකතු කරන්න"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"නව ගිණුමක් එක් කරන්න"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"දත්ත සමුදා ගොනු නිර්යාත කරන්න"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"පින්තූරය. වෙනස් කිරීමට තෝරාගන්න"</string>
+</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
new file mode 100644
index 0000000..7022a17
--- /dev/null
+++ b/res/values-si/strings.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1048457247435785074">"පුද්ගලයින්"</string>
+ <string name="contactsList" msgid="8661624236494819731">"සම්බන්ධතා"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"සම්බන්ධතාවය"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"ඍජු ඇමතීම"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"ඍජු පණිවිඩය"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"සම්බන්ධතා කෙටිමඟක් තෝරාගන්න"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"ඇමතීමට අංකයක් තෝරාගන්න"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"පණිවිඩයක් යැවීමට අංකයක් තෝරාගන්න"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"සම්බන්ධතාවයක් තෝරාගන්න"</string>
+ <string name="starredList" msgid="4817256136413959463">"තරුව සලකුණු කළ"</string>
+ <string name="frequentList" msgid="7154768136473953056">"නිතර"</string>
+ <string name="strequentList" msgid="5640192862059373511">"ප්රියතම"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"සම්බන්ධතා විස්තර"</string>
+ <string name="viewContactDesription" msgid="214186610887547860">"සම්බන්ධතාව පෙන්වන්න."</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"සම්බන්ධතාවයක් සාදන්න"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"කණ්ඩායම සංස්කරණය කරන්න"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"කණ්ඩායමක් සාදන්න"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"පිළිබඳ"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"යාවත්කාලීන කිරීම්"</string>
+ <string name="searchHint" msgid="8482945356247760701">"සම්බන්ධතා සෙවීම"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"සම්බන්ධතාව පෙන්වන්න"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"ප්රියතම වලට එක් කරන්න"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"ප්රියතම වලින් ඉවත් කරන්න"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"සංස්කරණය කරන්න"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"මකන්න"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"මුල් තිරයෙහි තබන්න"</string>
+ <string name="menu_call" msgid="3992595586042260618">"සම්බන්ධතාව අමතන්න"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"සම්බන්ධතාවයට කෙටි පණිවිඩයක් යවන්න"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"වෙන් කරන්න"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"සංස්කරණය කරන්න"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"මකන්න"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"සම්බන්ධතාවය එක් කරන්න"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"කණ්ඩායමක් එක් කරන්න"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"සම්බන්ධතාව වෙන් කරන්නද?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"මෙම සම්බන්ධතාවය සම්බන්ධතා කිහිපයකට වෙන් කෙරෙනු ඇත."</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"එකතු වන්න"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"සම්බන්ධතා එකතු කරන්න"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"<xliff:g id="NAME">%s</xliff:g> සමඟ එක් කළ යුතු සම්බන්ධතාවය තෝරන්න:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"සියලු සම්බන්ධතා පෙන්වන්න"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"යෝජිත සම්බන්ධතා"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"සියලුම සම්බන්ධතා"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"සම්බන්ධතා එක්වුණි"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"රිංග්ටෝනය සකසන්න"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"හඬ තැපෑල වෙත සියලු ඇමතුම්"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"ඔබට සම්බන්ධතා කියවීමට-පමණයි ගිණුම් වලින් මැකිය නොහැක, නමුත් ඔබගේ සම්බන්ධතා ලැයිස්තු තුළ ඔබට ඒවා සැඟවිය හැක."</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"මෙම සම්බන්ධතාවයෙහි ගිණුම් කිහිපයකින් තොරතුරු අඩංගු වේ. කියවීමට-පමණයි ගිණුම් වලින් තොරතුරු ඔබගේ සම්බන්ධතා ලැයිස්තු තුළ සඟවා දැමෙන අතර, මකා දැමීම නොකරයි."</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"මෙම සම්බන්ධතාවය මකා දැමීමෙන් ගිණුම් කිහිපයකින් තොරතුරු මකා දැමෙනු ඇත."</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"මෙම සම්බන්ධතාවය මකා දැමෙනු ඇත."</string>
+ <string name="menu_discard" msgid="6456087569315685632">"ඉවත ලන්න"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"සම්බන්ධතාවය නොපවතී."</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"මුල් තිරයට සම්බන්ධතා විජටය එක් කරන ලදි."</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"සංවිධානය"</item>
+ <item msgid="7196592230748086755">"සටහන"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"ටැබ්ලටයේ පින්තූර කිසිවක් ලද නොහැක."</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"දුරකථනයේ පින්තූර කිසිවක් ලද නොහැක."</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"සම්බන්ධතා ඡායාරූපය"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"අභිරුචි ලේබල නම"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"හඬ තැපෑලට ඍජුවම ඇමතුම් යවන්න"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"ඡායාරූපය මකන්න"</string>
+ <string name="noContacts" msgid="8579310973261953559">"සම්බන්ධතා නැත."</string>
+ <string name="noGroups" msgid="8614664663561385253">"කණ්ඩායම් නොමැත."</string>
+ <string name="noAccounts" msgid="7768267764545265909">"කණ්ඩායම් නිර්මාණය කිරීමට ඔබට ගිණුමක් අවශ්ය වේ."</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"මෙම කණ්ඩායම තුළ පුද්ගලයින් නොමැත."</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"කිහිපයක් එක් කිරීමට, කණ්ඩායම සංස්කරණය කරන්න."</string>
+ <string name="savingContact" msgid="4075751076741924939">"සම්බන්ධතාවය සුරකමින්…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"සම්බන්ධතාවය සුරකින ලදි."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"සම්බන්ධතා වෙනස්කම් සුරැකීමට නොහැක."</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"කණ්ඩායම සුරකින ලදි."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"කණ්ඩායම් වෙනස්කම් සුරැකීමට නොහැක."</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"දුරකථන අංක සහිත සම්බන්ධතා 1"</item>
+ <item quantity="other" msgid="3299954047880968205">"දුරකථන අංක සහිත සම්බන්ධතා <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"දුරකථන අංක සහිත සම්බන්ධතා නැත"</string>
+ <plurals name="listTotalAllContacts">
+ <item quantity="one" msgid="3405747744700823280">"සම්බන්ධතා 1 ක්"</item>
+ <item quantity="other" msgid="3578469907265375314">"සම්බන්ධතා <xliff:g id="COUNT">%d</xliff:g>"</item>
+ </plurals>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"1 ක් සොයාගන්නා ලදී"</item>
+ <item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> ක් සොයාගන්නා ලදී"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"සම්බන්ධතා නැත"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"1 ක් සොයාගන්නා ලදී"</item>
+ <item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> ක් සොයාගන්නා ලදී"</item>
+ </plurals>
+ <string name="contactsAllLabel" msgid="6479708629170672169">"සියලුම සම්බන්ධතා"</string>
+ <string name="contactsGroupsLabel" msgid="2841971472518003524">"කණ්ඩායම්"</string>
+ <string name="callBack" msgid="5498224409038809224">"නැවත අමතන්න"</string>
+ <string name="callAgain" msgid="3197312117049874778">"නැවත අමතන්න"</string>
+ <string name="returnCall" msgid="8171961914203617813">"ඇමතුම නැවත ලබා දෙන්න"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"සම්බන්ධතා වලට \"<xliff:g id="EMAIL">%s</xliff:g>\" එක් කරන්නද?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"සම්බන්ධතා ඡායාරූපය"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"ධන"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"සම්බන්ධතා <xliff:g id="TOTAL_NUMBER">%s</xliff:g> කින් <xliff:g id="CURRENT_NUMBER">%s</xliff:g> ක්"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"ඔබගේ සම්බන්ධතා වල නම්"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"මෙම ක්රියාව හැසිරවීමට යෙදුමක් සොයාගත්තේ නැත"</string>
+ <string name="menu_share" msgid="943789700636542260">"බෙදාගන්න"</string>
+ <string name="share_via" msgid="563121028023030093">"ඔස්සේ සම්බන්ධතාවය බෙදාගන්න"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"ගිණුම යටතේ කණ්ඩායමක් නිර්මාණය කරන්න"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"හඬ කතාබහ"</string>
+ <string name="video_chat" msgid="1872255818640336072">"වීඩියෝ කතාබස්"</string>
+ <string name="connections" msgid="8098440723172028350">"සම්බන්ධතා"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"සම්බන්ධතාවයක් එක් කරන්න"</string>
+ <string name="recent" msgid="2659189233141493004">"මෑත"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"මෑත යාවත්කාලීන"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> සම්බන්ධතාව"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"මෙම ඡායාරූපය භාවිත කරන්න"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"මෙම යෙදුමෙන් සංස්කරණය කළ නොහැක."</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"මෙම සම්බන්ධතාවයට අමතර තොරතුරු නොමැත."</string>
+ <string name="group_read_only" msgid="1061762906115697637">"මෙම උපාංගයෙහි සංස්කරණය කළ නොහැක"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"මඟින් ලැයිස්තුව අනුපිළිවෙලට සකසන්න"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"ලබාදුන් නම"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"වාසගම"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"සම්බන්ධතා නම් පෙන්වන්න"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"ලබාදුන් නම මුලින්"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"වාසගම මුලින්"</string>
+ <string name="take_photo" msgid="7496128293167402354">"ඡායාරූපය ගන්න"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"නව ඡායාරූපයක් ගන්න"</string>
+ <string name="pick_photo" msgid="3746334626214970837">"ගැලරියෙන් ඡායාරූපයක් තෝරන්න"</string>
+ <string name="pick_new_photo" msgid="7962368009197147617">"ගැලරියෙන් නව ඡායාරූපයක් තෝරන්න"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"භාෂා වෙනස්වීම පෙන්වීමට සම්බන්ධතා ලැයිස්තුව යාවත්කාලීන වෙමින් පවතී"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"සම්බන්ධතා ලැයිස්තුව යාවත්කාලීන වෙමින් පවතී."</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"සම්බන්ධතා උත්ශ්රේණි ක්රියාවලියක තිබේ. \n\nඋත්ශ්රේණි ක්රියාවට <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB ක අභ්යන්තර දුරකථන ආචයනයක් ආසන්න වශයෙන් අවශ්ය වේ.\n\nපහත විකල්ප වලින් එකක් තෝරාගන්න:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"සමහර යෙදුම් අස්ථාපනය කරන්න"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"උත්ශ්රේණි කිරීම නැවත උත්සාහ කරන්න"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"සොයමින්..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"තෝරාගත් ඒවා පෙන්වන්න"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"සියල්ල පෙන්වන්න"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"සියල්ල තෝරන්න"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"සියල්ල තේරීම ඉවත් කරන්න"</string>
+ <string name="add_field" msgid="2384260056674995230">"තවත් ක්ෂේත්රයක් එක් කරන්න"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"නව දෙයක් එක් කරන්න"</string>
+ <string name="add_organization" msgid="7311893231158291197">"සංවිධානය එක් කරන්න"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"දිනය"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"කණ්ඩායම් නම"</string>
+ <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> හරහා"</string>
+ <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> ඔස්සේ <xliff:g id="DATE">%1$s</xliff:g>"</string>
+ <string name="description_star" msgid="2605854427360036550">"ප්රියතම"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"ඒකාබද්ධ කර නැත"</item>
+ <item quantity="other" msgid="425683718017380845">"මූලාශ්ර <xliff:g id="COUNT">%0$d</xliff:g> කින් ඒකාබද්ධ කර ඇත"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"වත්මන් සම්බන්ධතාවය තෝරාගෙන ඇති සම්බන්ධතාවය සමඟ එකතු කරන්නද?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"තෝරාගෙන ඇති සම්බන්ධතාවය සංස්කරණය කිරීමට මාරු වෙන්නද? ඔබ දැනට ඇතුළු කළ තොරතුරු පිටපත් වනු ඇත."</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"මගේ සම්බන්ධතා වෙතට පිටපත් කරන්න"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"මගේ සම්බන්ධතා වලට එක් කරන්න"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> නාමාවලිය"</string>
+ <string name="toast_making_personal_copy" msgid="288549957278065542">"පුද්ගලික පිටපතක් නිර්මාණය කරමින්…"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"අභිරුචි"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"සැකසීම්"</string>
+ <string name="menu_settings" msgid="377929915873428211">"සැකසීම්"</string>
+ <string name="menu_help" msgid="5123887102216637725">"සහාය"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"පෙන්වීම් විකල්ප"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>, <xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"දුරකථන අංකය"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"සම්බන්ධතා වලට එක් කරන්න"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"සම්බන්ධතාවය වෙත එක් කරන්න"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"වසන්න"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"අවුරුද්දක් සපයන්න"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"සම්බන්ධතාවය"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"පූරණය වෙමින්..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"නව සම්බන්ධතාවයක් නිර්මාණය කරන්න"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"ගිණුමකට පුරනය වන්න"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"සම්බන්ධතා ආයාත කරන්න"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"නව කණ්ඩායමක් නිර්මාණය කරන්න"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"නව කණ්ඩායමක් නිර්මාණය කිරීම"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"කණ්ඩායම් 1"</item>
+ <item quantity="other" msgid="1276758425904917367">"කණ්ඩායම් <xliff:g id="COUNT">%0$d</xliff:g>"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"\"<xliff:g id="GROUP_LABEL">%1$s</xliff:g>\" කණ්ඩායම මකා දමන්නද? (සම්බන්ධතා මකා දමන්නේ නැත.)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> වෙතින් පුද්ගලයින් <xliff:g id="COUNT_0">%1$d</xliff:g>"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> වෙතින් පුද්ගලයින් <xliff:g id="COUNT_0">%1$d</xliff:g>"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"පුද්ගලයින් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
+ <item quantity="other" msgid="6251996206137048525">"පුද්ගලයින් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"වෙනත් එකක් සමඟ එක් කිරීමට කලින් සම්බන්ධතා නම ටයිප් කරන්න."</string>
+ <string name="copy_text" msgid="3257145021583508761">"පසුරු පුවරුවට පිටපත් කරන්න"</string>
+ <string name="set_default" msgid="4417505153468300351">"සුපුරුදු ලෙස සකසන්න"</string>
+ <string name="clear_default" msgid="7193185801596678067">"සුපුරුදු හිස් කරන්න"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"පෙළ පිටපත් කරන ලදී"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"ඔබගේ වෙනස්කම් ඉවතලන්නද?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"මගේ පැතිකඩ සකසන්න"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"පුද්ගලයාගේ නම ටයිප් කරන්න"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"කණ්ඩායමේ නම"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"මගේ දේශීය පැතිකඩ"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"මගේ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> පැතිකඩ"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"සියලු සම්බන්ධතා පෙන්වමින්"</string>
+ <string name="no_account_prompt" msgid="7061052512446855192">"පුද්ගලයින් Google ගිණුමක් හා වඩාත් හොඳින් වැඩ කරයි.\n\n• ඕනෑම වෙබ් බ්රවුසරයක් වෙතින් එයට ප්රවේශ වන්න\n• ඔබගේ සම්බන්ධතා ආරක්ෂිතව උපස්ථ කරන්න."</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"ඔබගේ දුරකථනය නොමැති වුවත් සම්බන්ධතා සුරක්ෂිතව තබන්න: සබැඳි සේවාවක් සමඟ සමමුහුර්ත කරන්න."</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"ගිණුමක් එක් කරන්න"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"ඔබගේ නව සම්බන්ධතාවය උපස්ථ නොවනු ඇත. ඔබගේ සම්බන්ධතා සබැඳිව උපස්ථ කරන ගිණුමක් එක් කරන්නද?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"ඔබගේ නව සම්බන්ධතාවය <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> සමඟ සමමුහුර්ත වනු ඇත."</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"ඔබගේ පහත ගිණුම් වලින් එකක් සමඟ ඔබගේ නව සම්බන්ධතාවය සමමුහුර්ත කළ හැක. ඔබට භාවිතා කිරීමට අවශ්ය කුමක්ද?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"පෙදෙසිව තබාගන්න"</string>
+ <string name="add_account" msgid="8201790677994503186">"ගිණුමක් එකතු කරන්න"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"නව ගිණුමක් එක් කරන්න"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"දත්ත සමුදා ගොනු නිර්යාත කරන්න"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"පින්තූරය. වෙනස් කිරීමට තෝරාගන්න"</string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index df86a2e..b762ec5 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Ľudia"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakty"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Priame vytáčanie"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Časté"</string>
<string name="strequentList" msgid="5640192862059373511">"Obľúbené"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Podrobnosti kontaktu"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Zobraziť kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Upraviť kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Vytvoriť kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Upraviť skupinu"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Tento kontakt obsahuje informácie z niekoľkých účtov. Informácie z účtov iba na čítanie budú v zoznamoch kontaktov skryté, ale nebudú odstránené."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Odstránením tohto kontaktu odstránite informácie z viacerých účtov."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Tento kontakt bude odstránený."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Zahodiť"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Zahodiť zmeny"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakt neexistuje."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Miniaplikácia Kontakty bola pridaná na plochu."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Vytvoriť nový kontakt"</string>
@@ -76,7 +75,7 @@
</string-array>
<string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"V tablete nie sú k dispozícii žiadne fotografie."</string>
<string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"V telefónne nie sú žiadne fotografie."</string>
- <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Fotografie kontaktu"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"Fotka kontaktu"</string>
<string name="customLabelPickerTitle" msgid="1081475101983255212">"Vlastný názov menovky"</string>
<string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Presmerovať hovory priamo do hlasovej schránky"</string>
<string name="removePhoto" msgid="4898105274130284565">"Odstrániť fotografiu"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Počet kontaktov s telefónnymi číslami: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ku kontaktom nie sú priradené žiadne telefónne čísla"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Počet kontaktov: 1"</item>
- <item quantity="other" msgid="3578469907265375314">"Počet kontaktov: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Počet nájdených položiek: 1"</item>
<item quantity="other" msgid="3852668542926965042">"Počet nájdených položiek: <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Počet nájdených položiek: 1"</item>
<item quantity="other" msgid="7988132539476575389">"Počet nájdených položiek: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Všetky kontakty"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupiny"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Všetky"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Obľúbené"</string>
<string name="callBack" msgid="5498224409038809224">"Zavolať späť"</string>
<string name="callAgain" msgid="3197312117049874778">"Zavolať znova"</string>
<string name="returnCall" msgid="8171961914203617813">"Zavolať späť"</string>
@@ -119,11 +114,12 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> z <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontaktov"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Mená vašich kontaktov"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikácia potrebná na spracovanie tejto akcie sa nenašla."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Aplikácia potrebná na spracovanie tejto akcie sa nenašla."</string>
<string name="menu_share" msgid="943789700636542260">"Zdieľať"</string>
<string name="share_via" msgid="563121028023030093">"Zdieľať kontakt pomocou"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Vytvoriť skupinu v účte"</string>
<string name="audio_chat" msgid="2535716629358298691">"Hlasový rozhovor"</string>
- <string name="video_chat" msgid="1872255818640336072">"Videorozhovor"</string>
+ <string name="video_chat" msgid="1872255818640336072">"Videohovor"</string>
<string name="connections" msgid="8098440723172028350">"Spojenia"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Pridať spojenie"</string>
<string name="recent" msgid="2659189233141493004">"Nedávne"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najskôr priezvisko"</string>
<string name="take_photo" msgid="7496128293167402354">"Zaznamenať fotografiu"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Urobiť novú fotografiu"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Vybrať fotografiu z Galérie"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Vybrať novú fotografiu z Galérie"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Vybrať fotku"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Vybrať novú fotku"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"V súvislosti so zmenou jazyka prebieha aktualizácia zoznamu kontaktov."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Prebieha aktualizácia zoznamu kontaktov."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Prebieha inovácia kontaktov. \n\nInovácia vyžaduje približne <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB internej pamäte. \n\nZvoľte jednu z nasledujúcich možností:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Pridať organizáciu"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Dátum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Názov skupiny"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">", zdroj: <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g>, zdroj: <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"zaradiť medzi obľúbené"</string>
<string name="edit_contact" msgid="7529281274005689512">"Upraviť kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Skopírovať do priečinka Moje kontakty"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Pridať medzi moje kontakty"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Adresár <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Prebieha vytváranie osobnej kópie..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Vlastné"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavenia"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavenia"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Môj miestny profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Môj profil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Zobrazenie všetkých kontaktov"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Aplikácia Ľudia funguje lepšie s účtom Google.\n\n• Môžete k nej pristupovať z akéhokoľvek webového prehliadača\n• Bezpečne zálohujte svoje kontakty."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakty fungujú lepšie s účtom Google.\n\n• Môžete k nim pristupovať z akéhokoľvek webového prehliadača.\n• Zálohujte svoje kontatky bezpečne."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Uchovávajte svoje kontakty v bezpečí aj v prípade straty svojho telefónu: používajte synchronizáciu so službou online."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Pridať účet"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Váš nový kontakt nebude zálohovaný. Chcete pridať účet na zálohovanie kontaktov online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Pridať nový účet"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportovať súbory databázy"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Obrázok. Ak ho chcete zmeniť, vyberte ho"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"pridať nový kontakt"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Zobraziť viac"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Zobraziť menej"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Zobraziť všetko"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nedávne"</string>
+ <string name="send_message" msgid="8938418965550543196">"Odoslať správu"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Vytvára sa osobná kópia..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Včera"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Zajtra"</string>
+ <string name="today" msgid="8041090779381781781">"Dnes"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Dnes o <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Zajtra o <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Udalosť bez názvu)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Nastaviť"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index a28eaaa..4ea6dbf 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Ljudje"</string>
+ <string name="people" msgid="1190841469952343354">"Stiki"</string>
<string name="contactsList" msgid="8661624236494819731">"Stiki"</string>
<string name="shortcutContact" msgid="749243779392912958">"Vizitka"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Bližnjice za klicanje"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Pogosto"</string>
<string name="strequentList" msgid="5640192862059373511">"Priljubljene"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Podrobnosti o stiku"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Ogled stika"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Urejanje stika"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Ustvari stik"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Uredi skupino"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Ta stik vsebuje podatke iz več računov. Podatki iz računov samo za branje ne bodo izbrisani s seznamov stikov, temveč bodo samo skriti."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Če boste izbrisali ta stik, boste izbrisali podatke iz več računov."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Ta stik bo izbrisan."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Zavrzi"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Zavrzi spremembe"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Stik ne obstaja."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Pripomoček za stik dodan na začetni zaslon."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Ustvari nov stik"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> stikov s telefonskimi številkami"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Ni stikov s telefonskimi številkami"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 stik"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> stikov"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 najden"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> najdenih"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 najden"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> najdenih"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Vsi stiki"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupine"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Vsi stiki"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Priljubljeno"</string>
<string name="callBack" msgid="5498224409038809224">"Povratni klic"</string>
<string name="callAgain" msgid="3197312117049874778">"Ponovi klic"</string>
<string name="returnCall" msgid="8171961914203617813">"Povratni klic"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> od <xliff:g id="TOTAL_NUMBER">%s</xliff:g> stikov"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Imena stikov"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Programa za obravnavo tega dejanja ni mogoče najti."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Za to dejanje ni mogoče najti nobene aplikacije."</string>
<string name="menu_share" msgid="943789700636542260">"Skupna raba"</string>
<string name="share_via" msgid="563121028023030093">"Deli stik z drugimi prek"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Ustvari skupino v računu"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najprej priimek"</string>
<string name="take_photo" msgid="7496128293167402354">"Posnemi fotografijo"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Posnemi novo fotografijo"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Izberite fotografijo iz galerije"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Izberi novo fotografijo iz Galerije"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Izberite fotografijo"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Izberite novo fotografijo"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Seznam stikov se posodablja glede na izbrani jezik."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Seznam stikov se posodablja."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Stiki se nadgrajujejo.\n\nZa nadgradnjo je potrebno približno <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB notranjega pomnilnika telefona.\n\nIzberite eno od teh možnosti:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizacijo"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Ime skupine"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"prek <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> prek <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"priljubljeno"</string>
<string name="edit_contact" msgid="7529281274005689512">"Uredi stik"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiraj v moje stike"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Dodaj v skupino »Moji stiki«"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Imenik <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Ustvarjanje osebne kopije ..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Po meri"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavitve"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavitve"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Moj lokalni profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Moj profil za <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Prikaz vseh stikov"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Program Ljudje deluje bolje z Google Računom.\n\n• Do njega lahko dostopate v katerem koli spletnem brskalniku.\n• Varno varnostno kopiranje stikov."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Stiki delujejo bolje z Google Računom.\n\n• Dostop iz poljubnega brskalnika.\n• Varno varnostno kopiranje stikov."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Naj bodo vaš stiki na varnem, tudi če izgubite telefon: sinhronizirajte s spletno storitvijo."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Dodajanje računa"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Nov stik ne bo varnostno kopiran. Želite dodati račun za varnostno kopiranje stikov v internetu?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Dodaj nov račun"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Izvoz datotek zbirke"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Slika. Izberite, da spremenite"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"dodaj novi stik"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Pokaži več"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Pokaži manj"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Pokaži vse"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Stik"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Nedavno"</string>
+ <string name="send_message" msgid="8938418965550543196">"Pošlji sporočilo"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Ustvarjanje osebne kopije ..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Včeraj"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Jutri"</string>
+ <string name="today" msgid="8041090779381781781">"Danes"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Danes ob <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Jutri ob <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Neimenovani dogodek)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Nastavi"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 2ae4f2e..204f38a 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Особе"</string>
+ <string name="people" msgid="1190841469952343354">"Контакти"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Директно бирање"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Чести"</string>
<string name="strequentList" msgid="5640192862059373511">"Омиљено"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Детаљи о контакту"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Прикажи контакт"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Измени контакт"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Направи контакт"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Измени групу"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Овај контакт садржи информације из више налога. Информације из налога који су само за читање неће бити избрисане са листе контаката, него скривене."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Ако избришете овај контакт, биће избрисане информације са више налога."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Овај контакт ће бити избрисан."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Одбаци"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Одбаци промене"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Контакт не постоји."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Виџет за контакте је додат на Почетни екран."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Направите нови контакт"</string>
@@ -87,18 +86,14 @@
<string name="addPeopleToGroup" msgid="7879585947222263516">"Да бисте додали неке, измените групу."</string>
<string name="savingContact" msgid="4075751076741924939">"Чување контакта је у току..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Контакт је сачуван."</string>
- <string name="contactSavedErrorToast" msgid="3207250533172944892">"Није било могуће сачувати измене контаката."</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"Није могуће сачувати измене контаката."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Група је сачувана."</string>
- <string name="groupSavedErrorToast" msgid="7984466936615304740">"Није било могуће сачувати измене група."</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"Није могуће сачувати измене група."</string>
<plurals name="listTotalPhoneContacts">
<item quantity="one" msgid="3015357862286673986">"1 контакт са бројем телефона"</item>
<item quantity="other" msgid="3299954047880968205">"Бр. контаката са бројевима телефона: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Нема контаката са бројевима телефона"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
- <item quantity="other" msgid="3578469907265375314">"Kонтаката: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 пронађен"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> пронађено"</item>
@@ -108,17 +103,18 @@
<item quantity="one" msgid="4826918429708286628">"1 пронађен"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> пронађено"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Сви контакти"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Групе"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Сви контакти"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Омиљено"</string>
<string name="callBack" msgid="5498224409038809224">"Узврати позив"</string>
<string name="callAgain" msgid="3197312117049874778">"Позови поново"</string>
<string name="returnCall" msgid="8171961914203617813">"Узврати позив"</string>
- <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Желите ли да додате адресу е-поште „<xliff:g id="EMAIL">%s</xliff:g>“ у контакте?"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Желите ли да додате имејл адресу „<xliff:g id="EMAIL">%s</xliff:g>“ у контакте?"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"фотографија контакта"</string>
<string name="description_plus_button" msgid="515164827856229880">"плус"</string>
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> од <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контак(а)та"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена контаката"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Није пронађена ниједна апликација која би могла да изврши ову радњу."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Није пронађена ниједна апликација која би могла да обави ову радњу."</string>
<string name="menu_share" msgid="943789700636542260">"Дели"</string>
<string name="share_via" msgid="563121028023030093">"Дели контакт преко"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Прављење групе на налогу"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Прво презиме"</string>
<string name="take_photo" msgid="7496128293167402354">"Сними фотографију"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Направи нову фотографију"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Изаберите фотографију из Галерије"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Изаберите нову фотографију из галерије"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Изаберите слику"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Изаберите нову слику"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Контакт листа се ажурира у складу са променом језика."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Контакт листа се ажурира."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"У току је надоградња контаката. \n\nПроцес надоградње захтева око <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB интерне меморије.\n\nИзаберите једну од следећих опција:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Додај организацију"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Датум"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Назив групе"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"преко <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> преко <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"омиљено"</string>
<string name="edit_contact" msgid="7529281274005689512">"Измени контакт"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Копирај у моје контакте"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Додај у Моје контакте"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Каталог <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Прављење личне копије..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Прилагођено"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Подешавања"</string>
<string name="menu_settings" msgid="377929915873428211">"Подешавања"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Мој локални профил"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Мој <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> профил"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Приказани су сви контакти"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Апликација Људи боље функционише са Google налогом.\n\n• Приступајте из било ког веб прегледача.\n• Безбедно направите резервне копије контаката."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Контакти боље функционишу са Google налогом.\n\n• Приступајте из било ког веб-прегледача.\n• Безбедно направите резервне копије контаката."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Очувајте безбедност контаката чак и ако изгубите телефон – синхронизујте са услугом на мрежи."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Додавање налога"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Неће бити направљена резервна копија новог контакта. Желите ли да додате налог који прави резервну копију контаката на мрежи?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Додај нови налог"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Извези датотеке базе података"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Слика. Додирните да бисте променили"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"додавање новог контакта"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Прикажи више"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Прикажи мање"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Прикажи све"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Контакт"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Недавно"</string>
+ <string name="send_message" msgid="8938418965550543196">"Пошаљи поруку"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Прављење личне копије..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Јуче"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Сутра"</string>
+ <string name="today" msgid="8041090779381781781">"Данас"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Данас у <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Сутра у <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Ненасловљени догађај)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Подеси"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index d69091a..7d1af80 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Personer"</string>
+ <string name="people" msgid="1190841469952343354">"Kontakter"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direktval"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Ofta"</string>
<string name="strequentList" msgid="5640192862059373511">"Favoriter"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kontaktuppgifter"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Visa kontakt"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Redigera kontakt"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Skapa kontakt"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Redigera grupp"</string>
@@ -58,14 +57,14 @@
<string name="showAllContactsJoinItem" msgid="2189695051430392383">"Visa alla kontakter"</string>
<string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Föreslagna kontakter"</string>
<string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Alla kontakter"</string>
- <string name="contactsJoinedMessage" msgid="7208148163607047389">"Deltagande kontakter"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"Kontakterna har slagits ihop"</string>
<string name="menu_set_ring_tone" msgid="8728345772068064946">"Ställ in ringsignal"</string>
<string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Alla samtal till röstbrevlådan"</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"Du kan inte ta bort kontakter från skrivskyddade konton, men du kan dölja dem i kontaktlistorna."</string>
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Den här kontakten har information från flera konton. Information från skrivskyddade konton döljs i kontaktlistan, men tas inte bort."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Om du tar bort den här kontakten tar du bort information från flera konton."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Kontakten kommer att tas bort."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Ignorera"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Ignorera ändringar"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kontakten finns inte."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Widget för kontakt har lagts till på startskärmen."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Skapa ny kontakt"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> kontakter med telefonnummer"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Inga kontakter med telefonnummer"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakter"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 hittades"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> hittades"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 hittades"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> hittades"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Alla kontakter"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Alla kontakter"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoriter"</string>
<string name="callBack" msgid="5498224409038809224">"Ring upp"</string>
<string name="callAgain" msgid="3197312117049874778">"Ring igen"</string>
<string name="returnCall" msgid="8171961914203617813">"Ring upp"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> av <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kontakter"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Dina kontakters namn"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Ingen app som kan hantera åtgärden hittades."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Ingen app som kan hantera åtgärden hittades"</string>
<string name="menu_share" msgid="943789700636542260">"Dela"</string>
<string name="share_via" msgid="563121028023030093">"Dela kontakt via"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Skapa grupp under konto"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Efternamn först"</string>
<string name="take_photo" msgid="7496128293167402354">"Ta en bild"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Ta ny bild"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Välj ett foto från galleriet"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Välj nytt foto från galleriet"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Välj foto"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Välj ett nytt foto"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kontaktlistan uppdateras så att språkändringen visas."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kontaktlistan uppdateras."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kontakterna håller på att uppgraderas. \n\nUppgraderingen kräver ungefär <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB av det interna minnet.\n\nVälj något av följande alternativ:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Lägg till organisation"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Datum"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Gruppnamn"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"via <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> via <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favorit"</string>
<string name="edit_contact" msgid="7529281274005689512">"Redigera kontakt"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopiera till mina kontakter"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Lägg till i mina kontakter"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Katalog <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"En personlig kopia skapas ..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Anpassad"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Inställningar"</string>
<string name="menu_settings" msgid="377929915873428211">"Inställningar"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Min lokala profil"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Min <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>-profil"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Visar alla kontakter"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Appen People fungerar bättre med ett Google-konto.\n\n• Öppna den i valfri webbläsare.\n• Säkerhetskopiera dina kontakter säkert."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kontakter fungerar bättre med ett Google-konto.\n\n• Åtkomst från alla webbläsare.\n• Säkerhetskopiera dina kontakter på ett säkert sätt."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Skydda dina kontakter även om du förlorar mobilen. Synkronisera med en onlinetjänst."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Lägg till ett konto"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Din nya kontakt kommer inte att säkerhetskopieras. Vill du lägga till ett konto så att kontakterna säkerhetskopieras online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Lägg till ett nytt konto"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportera databasfiler"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Bild. Välj om du vill ändra"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"lägg till ny kontakt"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Visa mer"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Visa mindre"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Visa alla"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kontakt"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Senaste"</string>
+ <string name="send_message" msgid="8938418965550543196">"Skicka meddelande"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Skapar en personlig kopia ..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"I går"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"I morgon"</string>
+ <string name="today" msgid="8041090779381781781">"I dag"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"I dag kl. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"I morgon kl. <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(händelse utan titel)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Ange"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 70d2f0f..881c824 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Watu"</string>
+ <string name="people" msgid="1190841469952343354">"Anwani"</string>
<string name="contactsList" msgid="8661624236494819731">"Anwani"</string>
<string name="shortcutContact" msgid="749243779392912958">"Anwani"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Upigaji wa moja kwa moja"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Mara kwa mara"</string>
<string name="strequentList" msgid="5640192862059373511">"Vipendwa"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Maelezo ya anwani"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Angalia anwani"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Hariri anwani"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Unda anwani"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Hariri kikundi"</string>
@@ -39,14 +38,14 @@
<string name="searchHint" msgid="8482945356247760701">"Tafuta anwani"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Tazama anwani"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Ongeza kwa vipendwa"</string>
- <string name="menu_removeStar" msgid="5844227078364227030">"Ondoa kutoka kwa vipendwa vyako"</string>
- <string name="menu_editContact" msgid="9042415603857662633">"Hariri"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"Ondoa kwenye vipendwa"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"Badilisha"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Futa"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Weka kwenye skrini ya Kwanza"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Weka kwenye skrini ya Mwanzo"</string>
<string name="menu_call" msgid="3992595586042260618">"Mpigie"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Tuma ujumbe kwa anwani"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"Kando"</string>
- <string name="menu_editGroup" msgid="5062005185370983720">"Hariri"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"Badilisha"</string>
<string name="menu_deleteGroup" msgid="3486380004411482874">"Futa"</string>
<string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Ongeza Anwani"</string>
<string name="menu_new_group_action_bar" msgid="3520232877587377175">"Ongeza Kikundi"</string>
@@ -60,16 +59,16 @@
<string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Anwani zote"</string>
<string name="contactsJoinedMessage" msgid="7208148163607047389">"Anwani zimeunganishwa"</string>
<string name="menu_set_ring_tone" msgid="8728345772068064946">"Weka mlio wa simu"</string>
- <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Simu zote ziwekewe ujumbe wa sauti"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Simu zijibiwe kwa ujumbe-sauti"</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"Huwezi kufuta anwani kutoka kwa akaunti ya kusoma-tu, lakini unaweza kuzificha katika orodha zako za anwani."</string>
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Anwani hii ina maelezo kutoka kwa akaunti nyingi. Maelezo kutoka kwa akaunti za soma-tu zitafichwa katika orodha zako za anwani, sio kufutwa."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Kufuta anwani hii kutafuta maelezo kutoka kwa akaunti nyingi."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Mwasiliani huyu atafutwa."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Tupa"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Usihifadhi mabadiliko"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Mwasiliani hayupo."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Wijeti ya mawasiliano imeongezwa kwenye skrini ya Nyumbani."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Weka anwani mpya"</string>
- <string name="pickerNewContactText" msgid="6166997164401048211">"Anzisha mwasiliani mpya"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"Ongeza anwani mpya"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Shirika"</item>
<item msgid="7196592230748086755">"Hati"</item>
@@ -78,7 +77,7 @@
<string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"Hakuna picha zinazopatikana kwenye simu."</string>
<string name="attach_photo_dialog_title" msgid="5599827035558557169">"Picha ya anwani"</string>
<string name="customLabelPickerTitle" msgid="1081475101983255212">"Jina maalum la lebo"</string>
- <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Tuma simu moja kwa moja kwa barua ya sauti"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"Tuma simu moja kwa moja kwenye ujumbe wa sauti"</string>
<string name="removePhoto" msgid="4898105274130284565">"Ondoa picha"</string>
<string name="noContacts" msgid="8579310973261953559">"Hakuna anwani."</string>
<string name="noGroups" msgid="8614664663561385253">"Hakuna vikundi."</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Anwani <xliff:g id="COUNT">%d</xliff:g> zilizo na nambari ya simu"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Hakuna anwani zilizo na nambari za simu"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Anwani 1"</item>
- <item quantity="other" msgid="3578469907265375314">"Anwani <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Imepatikana 1"</item>
<item quantity="other" msgid="3852668542926965042">"Patikana <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Patikana 1"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> zimepatikana"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Anwani zote"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Vikundi"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Anwani zote"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Vipendwa"</string>
<string name="callBack" msgid="5498224409038809224">"Mpigie"</string>
<string name="callAgain" msgid="3197312117049874778">"Piga simu tena"</string>
<string name="returnCall" msgid="8171961914203617813">"Mpigie"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ya anwani <xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Majina ya anwani zako"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Hakuna programu iliyopatikana ya kushughulikia tendo hili."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Hakuna programu iliyopatikana ya kushughulikia tendo hili."</string>
<string name="menu_share" msgid="943789700636542260">"Shiriki"</string>
<string name="share_via" msgid="563121028023030093">"Shiriki anwani kupitia"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Buni kikundi chini ya akaunti"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Jina la familia kwanza"</string>
<string name="take_photo" msgid="7496128293167402354">"Piga picha"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Piga picha mpya"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Chagua picha kutoka kwa Ghala"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Chagua picha mpya kutoka kwa Matunzio"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Chagua picha"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Chagua picha mpya"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Orodha ya anwani inasasishwa ili kuangazia mabadiliko ya lugha."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Orodha ya anwani inasasishwa."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Anwani ziko katika harakati ya kupandishwa gredi. \n\nMchakato wa kupandisha gredi unahitaji takriban MB <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> za hifadhi ya ndani.\n\nChagua mojawapo ya chaguo zifwatazo:"</string>
@@ -157,11 +153,9 @@
<string name="menu_select_none" msgid="7093222469852132345">"Usichague zozote"</string>
<string name="add_field" msgid="2384260056674995230">"Ongeza sehemu nyingine"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Ongeza mpya"</string>
- <string name="add_organization" msgid="7311893231158291197">"Ongeza shirikisho"</string>
+ <string name="add_organization" msgid="7311893231158291197">"Ongeza shirika"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tarehe"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Jina la kikundi"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"kupitia <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> kupitia <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"kipendwa"</string>
<string name="edit_contact" msgid="7529281274005689512">"Hariri anwani"</string>
<plurals name="merge_info">
@@ -169,11 +163,10 @@
<item quantity="other" msgid="425683718017380845">"Zimeunganishwa kutoka kwa nyenzo <xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unganisha anwani ya sasa na anwani iliyochaguliwa?"</string>
- <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Badilisha kwa hariri anwani iliyochaguliwa? Maelezo uliyoyaingiza hadi sasa yatanakiliwa."</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Ungependa kubadilisha anwani uliyochagua? Maelezo uliyoweka kufikia sasa yatanakiliwa."</string>
<string name="menu_copyContact" msgid="1573960845106822639">"Nakili kwa Anwani Zangu"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Ongeza kwa Anwani Zangu"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Saraka <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Inaunda nakala ya kibinafsi..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Maalum"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Mipangilio"</string>
<string name="menu_settings" msgid="377929915873428211">"Mipangilio"</string>
@@ -219,10 +212,10 @@
<string name="local_profile_title" msgid="2021416826991393684">"Wasifu wangu wa ndani."</string>
<string name="external_profile_title" msgid="8034998767621359438">"Wasifu wangu wa <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Inaonyesha anwani zote"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Watu wanafanya kazi vizuri wakiwa na Akaunti ya Google. \n \n • Iangalie kwa kutumia kivinjari chochote. \n • Tunza mawasiliano yako kwa usalama."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Anwani hufanya kazi vizuri pamoja na Akaunti ya Google. \n \n • Zifikie kwa kutumia kivinjari chochote. \n • Hifadhi nakala rudufu ya anwani zako kwa usalama."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Weka anwani za unaowasiliana nao salama hata ukipoteza simu yako: sawazisha kwa huduma iliyo mtandaoni."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Ongeza akaunti"</string>
- <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Anwani yako mpya haitahifadhiwa. Je, ungetaka kuongeza akaunti ambayo inahifadhi nakala ya anwani katika mtandao?"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Anwani yako mpya haitakuwa na nakala rudufu. Je, ungependa kuongeza akaunti ambayo inahifadhi nakala rudufu ya anwani katika mtandao?"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"Mtu utakayemwongeza atasawazishwa na <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</string>
<string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"Unaweza kusawazisha anwani yako mpya na mojawapo ya akaunti zifuatazo. Unataka kutumia gani?"</string>
<string name="keep_local" msgid="1258761699192993322">"Weka karibu"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Ongeza akaunti mpya"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Hamisha faili za hifadhidata"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Picha. Chagua ili ubadilishe"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"ongeza anwani mpya"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Angalia zaidi"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Angalia chache"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Angalia zote"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Anwani"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Hivi majuzi"</string>
+ <string name="send_message" msgid="8938418965550543196">"Tuma ujumbe"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Inaunda nakala binafsi..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Jana"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Kesho"</string>
+ <string name="today" msgid="8041090779381781781">"Leo"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Leo saa <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Kesho saa <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Tukio lisilokuwa na kichwa)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Weka"</string>
</resources>
diff --git a/res/values-sw600dp-land/integers.xml b/res/values-sw600dp-land/integers.xml
index 8ce96de..bcc008d 100644
--- a/res/values-sw600dp-land/integers.xml
+++ b/res/values-sw600dp-land/integers.xml
@@ -14,6 +14,8 @@
limitations under the License.
-->
<resources>
+ <!-- Determines the number of columns in a ContactTileRow in the favorites tab -->
+ <integer name="contact_tile_column_count_in_favorites">4</integer>
+
<integer name="contact_tile_column_count">3</integer>
- <integer name="updates_tab_snippet_max_lines">7</integer>
</resources>
diff --git a/res/values-sw600dp-land/styles.xml b/res/values-sw600dp-land/styles.xml
deleted file mode 100644
index 01116d7..0000000
--- a/res/values-sw600dp-land/styles.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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>
- <style name="PeopleTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
- <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
- <item name="android:actionBarTabStyle">@style/ContactsActionBarTabView</item>
- <item name="android:actionDropDownStyle">@style/ContactsActionBarDropDownStyle</item>
- <item name="android:textColorPrimary">@color/primary_text_color</item>
- <item name="android:textColorSecondary">@color/secondary_text_color</item>
- <item name="android:listViewStyle">@style/ListViewStyle</item>
- <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
- <item name="activated_background">@drawable/list_item_activated_background</item>
- <item name="section_header_background">@drawable/list_title_holo</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
- <item name="list_item_padding_top">0dip</item>
- <item name="list_item_padding_right">24dip</item>
- <item name="list_item_padding_bottom">0dip</item>
- <item name="list_item_padding_left">0dip</item>
- <item name="list_item_gap_between_image_and_text">8dip</item>
- <item name="list_item_gap_between_label_and_data">5dip</item>
- <item name="list_item_presence_icon_margin">4dip</item>
- <item name="list_item_presence_icon_size">16dip</item>
- <item name="list_item_photo_size">64dip</item>
- <item name="list_item_profile_photo_size">80dip</item>
- <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
- <item name="list_item_header_text_indent">8dip</item>
- <item name="list_item_header_text_size">14sp</item>
- <item name="list_item_header_text_color">@color/people_app_theme_color</item>
- <item name="list_item_header_height">32dip</item>
- <item name="list_item_header_underline_height">1dip</item>
- <item name="list_item_header_underline_color">@color/main_header_separator_color</item>
- <item name="list_item_data_width_weight">5</item>
- <item name="list_item_label_width_weight">3</item>
- <item name="list_item_contacts_count_text_color">@color/people_app_theme_color</item>
- <item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_browser_list_padding_left">0dip</item>
- <item name="contact_browser_list_padding_right">0dip</item>
- <item name="contact_browser_background">@android:color/transparent</item>
- <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
- <!-- Favorites -->
- <item name="favorites_padding_bottom">0dip</item>
- </style>
-
-</resources>
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 3e55240..e99dccf 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -24,13 +24,8 @@
<dimen name="shortcut_icon_size">64dip</dimen>
<dimen name="list_section_height">37dip</dimen>
<dimen name="group_detail_border_padding">16dip</dimen>
- <dimen name="detail_update_section_side_padding">0dip</dimen>
- <dimen name="detail_update_section_item_horizontal_padding">8dip</dimen>
- <dimen name="detail_update_section_item_vertical_padding">16dip</dimen>
<dimen name="search_view_width">400dip</dimen>
<dimen name="contact_tile_list_padding_top">16dip</dimen>
- <!-- Center vertically -->
- <dimen name="quick_contact_top_position">-1px</dimen>
<!-- Contact list (vertical scroll bar comes left) -->
<dimen name="list_visible_scrollbar_padding">32dip</dimen>
<dimen name="list_header_extra_top_padding">@dimen/contact_browser_list_top_margin</dimen>
diff --git a/res/values-sw600dp/donottranslate_config.xml b/res/values-sw600dp/donottranslate_config.xml
index a8d428c..bbf37c1 100644
--- a/res/values-sw600dp/donottranslate_config.xml
+++ b/res/values-sw600dp/donottranslate_config.xml
@@ -23,6 +23,4 @@
<bool name="show_home_icon">true</bool>
<bool name="config_browse_list_show_images">false</bool>
<bool name="config_browse_list_reverse_images">false</bool>
- <item name="tab_width_screen_width_percentage" type="fraction">66.67%</item>
- <item name="tab_height_screen_width_percentage" type="fraction">66.67%</item>
</resources>
diff --git a/res/values-sw600dp/integers.xml b/res/values-sw600dp/integers.xml
index a62fa14..c629f7e 100644
--- a/res/values-sw600dp/integers.xml
+++ b/res/values-sw600dp/integers.xml
@@ -15,5 +15,4 @@
-->
<resources>
<integer name="contact_tile_column_count">2</integer>
- <integer name="updates_tab_snippet_max_lines">4</integer>
</resources>
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
index 7ab909e..a96aa5a 100644
--- a/res/values-sw600dp/styles.xml
+++ b/res/values-sw600dp/styles.xml
@@ -14,56 +14,13 @@
limitations under the License.
-->
<resources>
- <style name="PeopleTheme" parent="@android:style/Theme.Holo.Light">
- <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_menu_back</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
- <item name="android:actionBarTabStyle">@style/ContactsActionBarTabView</item>
- <item name="android:actionDropDownStyle">@style/ContactsActionBarDropDownStyle</item>
- <item name="android:textColorPrimary">@color/primary_text_color</item>
- <item name="android:textColorSecondary">@color/secondary_text_color</item>
- <item name="android:listViewStyle">@style/ListViewStyle</item>
- <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
- <item name="activated_background">@drawable/list_item_activated_background</item>
- <item name="section_header_background">@drawable/list_title_holo</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
- <item name="list_item_padding_top">8dip</item>
- <item name="list_item_padding_right">12dip</item>
- <item name="list_item_padding_bottom">8dip</item>
- <item name="list_item_padding_left">0dip</item>
- <item name="list_item_gap_between_image_and_text">8dip</item>
- <item name="list_item_gap_between_label_and_data">5dip</item>
- <item name="list_item_presence_icon_margin">4dip</item>
- <item name="list_item_presence_icon_size">16dip</item>
- <item name="list_item_photo_size">64dip</item>
- <item name="list_item_profile_photo_size">80dip</item>
- <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
- <item name="list_item_header_text_indent">8dip</item>
- <item name="list_item_header_text_size">14sp</item>
- <item name="list_item_header_text_color">@color/people_app_theme_color</item>
- <item name="list_item_header_height">30dip</item>
- <item name="list_item_header_underline_height">1dip</item>
- <item name="list_item_header_underline_color">@color/secondary_header_separator_color</item>
- <item name="list_item_data_width_weight">5</item>
- <item name="list_item_label_width_weight">3</item>
- <item name="list_item_contacts_count_text_color">@color/people_app_theme_color</item>
- <item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_browser_list_padding_left">0dip</item>
- <item name="contact_browser_list_padding_right">0dip</item>
- <item name="contact_browser_background">@android:color/transparent</item>
- <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
- <!-- Favorites -->
- <item name="favorites_padding_bottom">0dip</item>
- </style>
+
<style name="ContactPickerTheme" parent="@android:Theme.Holo.Light.Dialog">
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="android:listViewStyle">@style/ListViewStyle</item>
<item name="list_item_height">?android:attr/listPreferredItemHeight</item>
<item name="section_header_background">@drawable/list_title_holo</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">8dip</item>
<item name="list_item_padding_right">0dip</item>
<item name="list_item_padding_bottom">8dip</item>
@@ -73,16 +30,13 @@
<item name="list_item_presence_icon_margin">18dip</item>
<item name="list_item_photo_size">64dip</item>
<item name="list_item_profile_photo_size">80dip</item>
+ <item name="list_item_background_color">@color/holo_list_background_color</item>
<item name="list_item_header_text_indent">8dip</item>
<item name="list_item_header_text_size">14sp</item>
<item name="list_item_header_text_color">@color/dialtacts_secondary_text_color</item>
<item name="list_item_header_height">30dip</item>
- <item name="list_item_header_underline_height">2dip</item>
- <item name="list_item_header_underline_color">@color/secondary_header_separator_color</item>
<item name="list_item_data_width_weight">5</item>
<item name="list_item_label_width_weight">3</item>
- <item name="list_item_contacts_count_text_color">@color/people_app_theme_color</item>
- <item name="list_item_contacts_count_text_size">20sp</item>
<item name="contact_browser_list_padding_left">24dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
diff --git a/res/values-sw720dp/integers.xml b/res/values-sw720dp/integers.xml
index eaf5971..c629f7e 100644
--- a/res/values-sw720dp/integers.xml
+++ b/res/values-sw720dp/integers.xml
@@ -15,5 +15,4 @@
-->
<resources>
<integer name="contact_tile_column_count">2</integer>
- <integer name="updates_tab_snippet_max_lines">7</integer>
</resources>
diff --git a/res/values-sw720dp/styles.xml b/res/values-sw720dp/styles.xml
deleted file mode 100644
index 2265373..0000000
--- a/res/values-sw720dp/styles.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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>
- <style name="PeopleTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
- <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_menu_back</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
- <item name="android:actionBarTabStyle">@style/ContactsActionBarTabView</item>
- <item name="android:actionDropDownStyle">@style/ContactsActionBarDropDownStyle</item>
- <item name="android:textColorPrimary">@color/primary_text_color</item>
- <item name="android:textColorSecondary">@color/secondary_text_color</item>
- <item name="android:listViewStyle">@style/ListViewStyle</item>
- <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
- <item name="activated_background">@drawable/list_item_activated_background</item>
- <item name="section_header_background">@drawable/list_title_holo</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
- <item name="list_item_padding_top">8dip</item>
- <item name="list_item_padding_right">24dip</item>
- <item name="list_item_padding_bottom">8dip</item>
- <item name="list_item_padding_left">0dip</item>
- <item name="list_item_gap_between_image_and_text">16dip</item>
- <item name="list_item_gap_between_label_and_data">5dip</item>
- <item name="list_item_presence_icon_margin">4dip</item>
- <item name="list_item_presence_icon_size">16dip</item>
- <item name="list_item_photo_size">64dip</item>
- <item name="list_item_profile_photo_size">80dip</item>
- <item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
- <item name="list_item_header_text_indent">8dip</item>
- <item name="list_item_header_text_color">@color/people_app_theme_color</item>
- <item name="list_item_header_height">30dip</item>
- <item name="list_item_header_text_size">14sp</item>
- <item name="list_item_header_underline_color">@color/secondary_header_separator_color</item>
- <item name="list_item_header_underline_height">1dip</item>
- <item name="list_item_contacts_count_text_color">@color/people_app_theme_color</item>
- <item name="list_item_contacts_count_text_size">12sp</item>
- <item name="contact_browser_list_padding_left">0dip</item>
- <item name="contact_browser_list_padding_right">0dip</item>
- <item name="contact_browser_background">@android:color/transparent</item>
- <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
- <!-- Favorites -->
- <item name="favorites_padding_bottom">0dip</item>
- </style>
-</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index e4c12c4..6438dd0 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"บุคคล"</string>
+ <string name="people" msgid="1190841469952343354">"สมุดติดต่อ"</string>
<string name="contactsList" msgid="8661624236494819731">"รายชื่อในสมุดโทรศัพท์"</string>
<string name="shortcutContact" msgid="749243779392912958">"สมุดโทรศัพท์"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"โทรโดยตรง"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"บ่อยครั้ง"</string>
<string name="strequentList" msgid="5640192862059373511">"รายการโปรด"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"รายละเอียดของรายชื่อ"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"ดูรายชื่อในสมุดโทรศัพท์"</string>
<string name="editContactDescription" msgid="2947202828256214947">"แก้ไขรายชื่อในสมุดโทรศัพท์"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"สร้างรายชื่อ"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"แก้ไขกลุ่ม"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"สมุดโทรศัพท์นี้มีข้อมูลจากหลายบัญชี ข้อมูลจากบัญชีแบบอ่านอย่างเดียวจะถูกซ่อนในรายการรายชื่อของคุณโดยไม่ถูกลบออก"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"การลบสมุดโทรศัพท์นี้จะลบข้อมูลจากบัญชีแบบหลายรายการ"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"รายชื่อนี้จะถูกลบ"</string>
- <string name="menu_discard" msgid="6456087569315685632">"ยกเลิก"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"ยกเลิกการเปลี่ยนแปลง"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"ไม่มีรายชื่อติดต่อนี้"</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"เพิ่มวิดเจ็ตสมุดโทรศัพท์ในหน้าจอหลักแล้ว"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"สร้างรายชื่อในสมุดโทรศัพท์ใหม่"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> รายชื่อติดต่อที่มีหมายเลขโทรศัพท์"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"ไม่มีรายชื่อติดต่อที่มีหมายเลขโทรศัพท์"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 รายชื่อติดต่อ"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> รายชื่อติดต่อ"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"พบ 1 รายการ"</item>
<item quantity="other" msgid="3852668542926965042">"พบ <xliff:g id="COUNT">%d</xliff:g> รายการ"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"พบ 1 รายการ"</item>
<item quantity="other" msgid="7988132539476575389">"พบ <xliff:g id="COUNT">%d</xliff:g> รายการ"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"ที่อยู่ติดต่อทั้งหมด"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"กลุ่ม"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"รายชื่อทั้งหมด"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"รายการโปรด"</string>
<string name="callBack" msgid="5498224409038809224">"ติดต่อกลับ"</string>
<string name="callAgain" msgid="3197312117049874778">"โทรอีกครั้ง"</string>
<string name="returnCall" msgid="8171961914203617813">"โทรกลับ"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"รายชื่อในสมุดโทรศัพท์ <xliff:g id="CURRENT_NUMBER">%s</xliff:g> จาก <xliff:g id="TOTAL_NUMBER">%s</xliff:g> รายการ"</string>
<string name="search_settings_description" msgid="2675223022992445813">"ชื่อของรายชื่อในสมุดโทรศัพท์ของคุณ"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"ไม่พบแอปพลิเคชันสำหรับการทำงานนี้"</string>
+ <string name="missing_app" msgid="1466111003546611387">"ไม่พบแอปสำหรับการทำงานนี้"</string>
<string name="menu_share" msgid="943789700636542260">"ใช้ร่วมกัน"</string>
<string name="share_via" msgid="563121028023030093">"ใช้สมุดโทรศัพท์ร่วมกันทาง"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"สร้างกลุ่มภายในบัญชี"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"ขึ้นต้นด้วยนามสกุล"</string>
<string name="take_photo" msgid="7496128293167402354">"ถ่ายภาพ"</string>
<string name="take_new_photo" msgid="7341354729436576304">"ถ่ายภาพใหม่"</string>
- <string name="pick_photo" msgid="3746334626214970837">"เลือกรูปภาพจากแกลเลอรี"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"เลือกภาพใหม่จากแกลเลอรี"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"เลือกรูปภาพ"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"เลือกรูปภาพใหม่"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"กำลังอัปเดตรายการที่อยู่ติดต่อตามการเปลี่ยนภาษา"</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"กำลังอัปเดตรายการที่อยู่ติดต่อ"</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"กำลังดำเนินการอัปเกรดสมุดโทรศัพท์\n\nกระบวนการอัปเกรดจำเป็นต้องใช้พื้นที่ประมาณ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB ของที่จัดเก็บข้อมูลภายใน\n\nเลือกหนึ่งในตัวเลือกต่อไปนี้:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"เพิ่มองค์กร"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"วันที่"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"ชื่อกลุ่ม"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"ผ่านทาง <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> ผ่านทาง <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"รายการโปรด"</string>
<string name="edit_contact" msgid="7529281274005689512">"แก้ไขรายชื่อติดต่อ"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"คัดลอกไปยังสมุดโทรศัพท์ของฉัน"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"เพิ่มในสมุดโทรศัพท์ของฉัน"</string>
<string name="contact_directory_description" msgid="683398073603909119">"ไดเรกทอรี <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"กำลังสร้างสำเนาส่วนบุคคล..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"กำหนดเอง"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"การตั้งค่า"</string>
<string name="menu_settings" msgid="377929915873428211">"การตั้งค่า"</string>
@@ -219,15 +212,31 @@
<string name="local_profile_title" msgid="2021416826991393684">"โปรไฟล์ในอุปกรณ์ของฉัน"</string>
<string name="external_profile_title" msgid="8034998767621359438">"โปรไฟล์ <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> ของฉัน"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"แสดงที่อยู่ติดต่อทั้งหมด"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"People ทำงานได้ดีกว่าหากมีบัญชี Google\n\n•เข้าถึงจากทุกเว็บเบราว์เซอร์\n•สำรองข้อมูลสมุดโทรศัพท์ของคุณอย่างปลอดภัย"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"คุณจะใช้งานที่อยู่ติดต่อได้ดีขึ้นโดยผ่านบัญชี Google\n\n• เข้าถึงได้จากเว็บเบราว์เซอร์ทุกชนิด\n• สำรองข้อมูลที่อยู่ติดต่อของคุณอย่างปลอดภัย"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"เก็บที่อยู่ติดต่อของคุณไว้อย่างปลอดภัยด้วยการซิงค์กับบริการออนไลน์แม้ว่าคุณจะทำโทรศัพท์หาย"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"เพิ่มบัญชี"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"ผู้ติดต่อใหม่ของคุณจะไม่ได้รับการสำรองข้อมูล เพิ่มบัญชีที่สำรองข้อมูลผู้ติดต่อออนไลน์หรือไม่"</string>
<string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"ผู้ติดต่อใหม่ของคุณจะซิงค์กับ <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>"</string>
- <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"คุณสามารถซิงค์ผู้ติดต่อใหม่กับบัญชีใดบัญชีหนึ่งต่อไปนี้ได้ คุณต้องการใช้บัญชีใด"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"คุณสามารถซิงค์ผู้ติดต่อใหม่กับบัญชีใด บัญชีหนึ่งต่อไปนี้ได้ คุณต้องการใช้บัญชีใด"</string>
<string name="keep_local" msgid="1258761699192993322">"จัดเก็บในตัวเครื่อง"</string>
<string name="add_account" msgid="8201790677994503186">"เพิ่มบัญชี"</string>
<string name="add_new_account" msgid="5748627740680940264">"เพิ่มบัญชีใหม่"</string>
<string name="menu_export_database" msgid="2659719297530170820">"ส่งออกไฟล์ฐานข้อมูล"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"ภาพ เลือกเพื่อเปลี่ยน"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"เพิ่มที่อยู่ติดต่อใหม่"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"ดูเพิ่มเติม"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"ดูน้อยลง"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"ดูทั้งหมด"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"ที่อยู่ติดต่อ"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"ล่าสุด"</string>
+ <string name="send_message" msgid="8938418965550543196">"ส่งข้อความ"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"กำลังสร้างสำเนาส่วนตัว..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"เมื่อวานนี้"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"พรุ่งนี้"</string>
+ <string name="today" msgid="8041090779381781781">"วันนี้"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"วันนี้เวลา <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"พรุ่งนี้เวลา <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g> <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(กิจกรรมไม่มีชื่อ)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"ตั้งค่า"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 1c81a74..59fcde2 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Mga Tao"</string>
+ <string name="people" msgid="1190841469952343354">"Mga Contact"</string>
<string name="contactsList" msgid="8661624236494819731">"Mga Contact"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Direktang pag-dial"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Madalas"</string>
<string name="strequentList" msgid="5640192862059373511">"Mga Paborito"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Mga detalye ng contact"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Tingnan ang contact"</string>
<string name="editContactDescription" msgid="2947202828256214947">"I-edit ang contact"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Lumikha ng contact"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"I-edit ang pangkat"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Naglalaman ang contact na ito ng impormasyon mula sa maramihang account. Itatago ang impormasyon mula sa mga account na read-only sa mga listahan ng iyong mga contact, hindi tatanggalin."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Tatanggalin ng pagtanggal sa account na ito ang impormasyon mula sa maramihang account."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Tatanggalin ang contact na ito."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Itapon"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"I-discard ang mga pagbabago"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Hindi umiiral ang contact."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Idinagdag sa Home screen ang widget ng contact."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Lumikha ng bagong contact"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> (na) contact na may mga numero ng telepono"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Walang mga contact na may mga numero ng telepono"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 contact"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> (na) contact"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 ang nakita"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> ang nakita"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 ang nakita"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> ang nakita"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Lahat ng contact"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Mga Pangkat"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Lahat contact"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Mga Paborito"</string>
<string name="callBack" msgid="5498224409038809224">"Tumawag pabalik"</string>
<string name="callAgain" msgid="3197312117049874778">"Tawagan muli"</string>
<string name="returnCall" msgid="8171961914203617813">"Pabalik na tawag"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> ng <xliff:g id="TOTAL_NUMBER">%s</xliff:g> (na) contact"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Mga pangalan ng iyong mga contact"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Walang natagpuang app na mangangasiwa sa pagkilos na ito."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Walang nakitang app na gagawa sa aksyong ito."</string>
<string name="menu_share" msgid="943789700636542260">"Ibahagi"</string>
<string name="share_via" msgid="563121028023030093">"Ibahagi ang contact sa pamamagitan ng"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Lumikha ng pangkat sa ilalim ng account"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apelyido muna"</string>
<string name="take_photo" msgid="7496128293167402354">"Kumuha ng larawan"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Kumuha ng bagong larawan"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Pumili ng larawan mula sa Gallery"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Pumili ng bagong larawan mula sa Gallery"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Pumili ng larawan"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Pumili ng bagong larawan"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Ina-update ang listahan ng contact upang maipakita ang pagbabago ng wika."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Ina-update ang listahan ng contact."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Nasa proseso ng pag-upgrade ang mga contact. \n\nNangangailangan ng tinatayang <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB ng panloob na storage ang proseso ng pag-upgrade.\n\nPumili ng isa sa mga sumusunod na pagpipilian:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Magdagdag ng samahan"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Petsa"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Pangalan ng pangkat"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"sa pamamagitan ng <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> sa pamamagitan ng <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"paborito"</string>
<string name="edit_contact" msgid="7529281274005689512">"I-edit ang Contact"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopyahin sa Aking Mga Contact"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Idagdag sa Aking Mga Contact"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Direktoryo na <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Lumilikha ng personal na kopya…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Custom"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Mga Setting"</string>
<string name="menu_settings" msgid="377929915873428211">"Mga Setting"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Aking lokal na profile"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Aking <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> na profile"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Ipinapakita ang lahat ng contact"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Mas mahusay na nakakagawa ang mga tao gamit ang Google Account.\n\n• I-access ito mula sa anumang web browser.\n• I-back up nang secure ang iyong mga contact."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Mas mahusay na gumagana ang Mga Contact kapag may Google Account.\n\n• I-access mula sa anumang web browser.\n• Secure na i-back up ang iyong mga contact."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Panatilihing ligtas ang iyong mga contact kahit na mawala mo ang iyong telepono: mag-synchronize sa isang online na serbisyo."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Magdagdag ng account"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Hindi maba-back up ang iyong bagong contact. Magdagdag ng account na nagba-back up ng mga contact online?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Magdagdag ng bagong account"</string>
<string name="menu_export_database" msgid="2659719297530170820">"I-export ang mga file ng database"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Larawan. Piliin upang palitan"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"magdagdag ng bagong contact"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Tumingin nang higit pa"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Tumingin nang mas kaunti"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Tingnan lahat"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Contact"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Kamakailan"</string>
+ <string name="send_message" msgid="8938418965550543196">"Magpadala ng mensahe"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Gumagawa ng personal na kopya..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Kahapon"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Bukas"</string>
+ <string name="today" msgid="8041090779381781781">"Ngayon"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Ngayong <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Bukas nang <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Kaganapang walang pamagat)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Itakda"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index dbe69bb..080df6a 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Kişiler"</string>
+ <string name="people" msgid="1190841469952343354">"Kişiler"</string>
<string name="contactsList" msgid="8661624236494819731">"Kişiler"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kişi"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Doğrudan çevirme"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Sık sık"</string>
<string name="strequentList" msgid="5640192862059373511">"Sık Kullanılanlar"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Kişi ayrıntıları"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Kişiyi görüntüle"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Kişiyi düzenle"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Kişi oluştur"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Grubu düzenle"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Bu kişi birden fazla hesaptan bilgiler içeriyor. Salt okunur hesaplardaki bilgiler silinmez, kişiler listelerinizde gizlenir."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Bu kişiyi silmek, birden fazla hesaba ait bilgileri de siler."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Bu kişi silinecek."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Sil"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Değişiklikleri sil"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Kişi mevcut değil."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Kişi widget\'ı Ana ekranınıza eklendi."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Yeni kişi oluştur"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Telefon numarası olan <xliff:g id="COUNT">%d</xliff:g> kişi"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Telefon numarası olan hiçbir kişi yok"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 kişi"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kişi"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 kişi bulundu"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> kişi bulundu"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"1 kişi bulundu"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> kişi bulundu"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Tüm kişiler"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruplar"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tüm kişiler"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Favoriler"</string>
<string name="callBack" msgid="5498224409038809224">"Geri ara"</string>
<string name="callAgain" msgid="3197312117049874778">"Tekrar çağrı yap"</string>
<string name="returnCall" msgid="8171961914203617813">"Geri ara"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"Toplam <xliff:g id="TOTAL_NUMBER">%s</xliff:g> kişiden <xliff:g id="CURRENT_NUMBER">%s</xliff:g> kişi"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Kişilerinizin adları"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Bu işlemi gerçekleştirecek uygulama bulunamadı."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Bu işlemi gerçekleştirecek uygulama bulunamadı."</string>
<string name="menu_share" msgid="943789700636542260">"Paylaş"</string>
<string name="share_via" msgid="563121028023030093">"Şunu kullanarak kişi paylaş:"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Grubu şu hesabın altında oluştur:"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Önce soyadı"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotoğraf çek"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Yeni fotoğraf çek"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Galeri\'den fotoğraf seçin"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Galeri\'den yeni fotoğraf seç"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Fotoğraf seç"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Yeni fotoğraf seç"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Kişi listesi, dil değişikliğini yansıtmak üzere güncelleniyor."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Kişi listesi güncelleniyor."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Kişiler yeni sürüme geçiriliyor. \n\nYeni sürüme geçirme işlemi yaklaşık <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB dahili depolama alanı gerektirir.\n\nAşağıdaki seçeneklerden birini belirleyin:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Kuruluş ekle"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Tarih"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Grup adı"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"<xliff:g id="SOURCE">%1$s</xliff:g> aracılığıyla"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="SOURCE">%2$s</xliff:g> üzerinden şu saatte: <xliff:g id="DATE">%1$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"favori"</string>
<string name="edit_contact" msgid="7529281274005689512">"Kişiyi düzenle"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kişilerime kopyala"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Kişilerime ekle"</string>
<string name="contact_directory_description" msgid="683398073603909119">"<xliff:g id="TYPE">%1$s</xliff:g> dizini"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Kişisel kopya oluşturuluyor..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Özel"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ayarlar"</string>
<string name="menu_settings" msgid="377929915873428211">"Ayarlar"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Yerel profilim"</string>
<string name="external_profile_title" msgid="8034998767621359438">"<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> profilim"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Tüm içerik görüntüleniyor"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Kişi Arama bir Google Account hesabıyla daha iyi çalışır.\n\n• Kişi Arama\'ya Herhangi bir tarayıcıdan erişin.\n• Kişilerinizi güvenli bir şekilde yedekleyin."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Kişiler bir Google Hesabıyla daha iyi çalışır.\n\n• Herhangi bir tarayıcıdan erişin.\n• Kişilerinizi güvenli bir şekilde yedekleyin."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Telefonunuzu kaybetseniz dahi kişilerinizi güvenle saklayın: çevrimiçi bir hizmetle senkronize edin."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Hesap ekleyin"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Yeni kişiniz yedeklenmeyecek. Kişileri çevrimiçi olarak yedekleyen bir hesap eklensin mi?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Yeni hesap ekle"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Veritabanı dosyalarını dışarı aktar"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Resim. Değiştirmek için seçin"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"yeni kişi ekle"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Daha fazla göster"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Daha az göster"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Tümünü göster"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Kişi"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"En son"</string>
+ <string name="send_message" msgid="8938418965550543196">"İleti gönder"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Kişisel kopya oluşturuluyor..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Dün"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Yarın"</string>
+ <string name="today" msgid="8041090779381781781">"Bugün"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Bugün şu saatler arasında: <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Yarın şu saatler arasında: <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Başlıksız etkinlik)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Ayarla"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 75cf635..1ad4e8b 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Люди"</string>
+ <string name="people" msgid="1190841469952343354">"Контакти"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Прямий набір"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Найчастіші"</string>
<string name="strequentList" msgid="5640192862059373511">"Вибране"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Деталі контакту"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Див. контакт"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Редаг. контакт"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Створити контакт"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Редагувати групу"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Цей контакт містить інфор-цію з декількох обл. записів. Інф-цію із записів лише для читання буде сховано у ваших списках контактів, а не видалено."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Якщо видал. цей контакт, буде видалено інф-ю з декількох обл. записів."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Цей контакт буде видалено."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Відхилити"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Відхилити зміни"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Контакт не існує."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Віджет контакта додано на головний екран."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Створ. новий контакт"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"Контактів із номерами тел.: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Немає контактів з номерами телефону"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
- <item quantity="other" msgid="3578469907265375314">"Контактів: <xliff:g id="COUNT">%d</xliff:g>"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Знайдено 1"</item>
<item quantity="other" msgid="3852668542926965042">"Знайдено <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Знайдено 1"</item>
<item quantity="other" msgid="7988132539476575389">"Знайдено <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Усі контакти"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Групи"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Усі контакти"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Вибране"</string>
<string name="callBack" msgid="5498224409038809224">"Передзвонити"</string>
<string name="callAgain" msgid="3197312117049874778">"Набрати знову"</string>
<string name="returnCall" msgid="8171961914203617813">"Зворот. виклик"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> із <xliff:g id="TOTAL_NUMBER">%s</xliff:g> контактів"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Імена ваших контактів"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Не знайдено програму для обробки цієї дії."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Не знайдено програму для обробки цієї дії."</string>
<string name="menu_share" msgid="943789700636542260">"Надісл."</string>
<string name="share_via" msgid="563121028023030093">"Надісл. контакт через"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Створити групу в обліковому записі"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Спочатку прізвище"</string>
<string name="take_photo" msgid="7496128293167402354">"Зробити фото"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Зробити нове фото"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Вибрати фото з галереї"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Вибрати нове фото з Галереї"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Вибрати фото"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Вибрати нове фото"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Список контактів оновлено для відображення зміни мови."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Список контактів оновлюється."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Контакти проходять процес оновлення. \n\nДля процесу оновлення потрібно приблизно <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Мб внутрішньої пам’яті.\n\nВиберіть один із поданих нижче варіантів."</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Додати організацію"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Дата"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Назва групи"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"через <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> через <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"вибране"</string>
<string name="edit_contact" msgid="7529281274005689512">"Редаг. контакта"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Копіювати в мої контакти"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Додати до групи \"Мої контакти\""</string>
<string name="contact_directory_description" msgid="683398073603909119">"Каталог <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Створення особистої копії..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Спеціальні"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Налаштування"</string>
<string name="menu_settings" msgid="377929915873428211">"Налаштування"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Мій локальний профіль"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Мій профіль на <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Відображаються всі контакти"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Програма \"Люди\" пропонує більше можливостей, якщо у вас є обліковий запис Google.\n\n•Отримуйте доступ із будь-якого веб-переглядача\n•Створюйте надійні резервні копії своїх контактів"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Додаток Контакти корисніший, якщо у вас є обліковий запис Google.\n\n• Відкривайте в будь-якому веб-переглядачі.\n• Автоматично завантажуйте контакти."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Збережіть свої контакти на випадок втрати свого телефону: синхронізуйте їх з онлайновою службою."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Додати обліковий запис"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Для вашого нового контакта не буде створено резервні копії. Додати обліковий запис, у якому буде збережено резервні копії контактів в Інтернеті?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Додати новий обліковий запис"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Експортувати файли бази даних"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Зображення. Виберіть, щоб змінити"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"додати нового контакта"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Показати більше"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Показати менше"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Показати все"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Контакт"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Остання підказка"</string>
+ <string name="send_message" msgid="8938418965550543196">"Надіслати повідомлення"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Створення особистої копії…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"Учора"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Завтра"</string>
+ <string name="today" msgid="8041090779381781781">"Сьогодні"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Сьогодні о <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Завтра о <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Подія без назви)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Установити"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 05bd499..abc3462 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Danh bạ"</string>
+ <string name="people" msgid="1190841469952343354">"Danh bạ"</string>
<string name="contactsList" msgid="8661624236494819731">"Danh bạ"</string>
<string name="shortcutContact" msgid="749243779392912958">"Liên hệ"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Quay số trực tiếp"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Thường xuyên"</string>
<string name="strequentList" msgid="5640192862059373511">"Mục ưa thích"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Chi tiết liên hệ"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Xem liên hệ"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Chỉnh sửa liên hệ"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Tạo liên hệ"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Chỉnh sửa nhóm"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Liên hệ này chứa thông tin từ nhiều tài khoản. Thông tin từ các tài khoản ở chế độ chỉ đọc sẽ bị ẩn trong danh sách liên hệ của bạn, chứ không bị xóa."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Xóa liên hệ này sẽ xóa thông tin khỏi nhiều tài khoản."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Liên hệ này sẽ bị xóa."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Hủy bỏ"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Hủy các thay đổi"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Địa chỉ liên hệ không tồn tại."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"Đã thêm tiện ích liên hệ vào Màn hình chính."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Tạo liên hệ mới"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> liên hệ có số điện thoại"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Không có liên hệ nào có số điện thoại"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 địa chỉ liên hệ"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> địa chỉ liên hệ"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"Đã tìm thấy 1"</item>
<item quantity="other" msgid="3852668542926965042">"Đã tìm thấy <xliff:g id="COUNT">%d</xliff:g>"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"Đã tìm thấy 1"</item>
<item quantity="other" msgid="7988132539476575389">"Đã tìm thấy <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Tất cả liên hệ"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Nhóm"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Tất cả liên hệ"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Mục yêu thích"</string>
<string name="callBack" msgid="5498224409038809224">"Gọi lại"</string>
<string name="callAgain" msgid="3197312117049874778">"Gọi lại"</string>
<string name="returnCall" msgid="8171961914203617813">"Gọi lại"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> trong tổng số <xliff:g id="TOTAL_NUMBER">%s</xliff:g> liên hệ"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Tên danh bạ của bạn"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Không tìm thấy ứng dụng nào để xử lý tác vụ này."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Không tìm thấy ứng dụng nào để xử lý tác vụ này."</string>
<string name="menu_share" msgid="943789700636542260">"Chia sẻ"</string>
<string name="share_via" msgid="563121028023030093">"Chia sẻ liên hệ qua"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Tạo nhóm trong tài khoản"</string>
@@ -143,10 +139,10 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Họ trước tiên"</string>
<string name="take_photo" msgid="7496128293167402354">"Chụp ảnh"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Chụp ảnh mới"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Chọn ảnh từ Thư viện"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Chọn ảnh mới từ Thư viện"</string>
- <string name="locale_change_in_progress" msgid="7583992153091537467">"Danh sách liên hệ đang được cập nhật để phản ánh sự thay đổi ngôn ngữ."</string>
- <string name="upgrade_in_progress" msgid="474511436863451061">"Danh sách liên hệ đang được cập nhật."</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Chọn ảnh"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Chọn ảnh mới"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"Danh bạ đang được cập nhật để phản ánh sự thay đổi ngôn ngữ."</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"Danh bạ đang được cập nhật."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Danh bạ đang được nâng cấp. \n\nQuá trình nâng cấp yêu cầu khoảng <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB bộ nhớ trong.\n\nChọn một trong các tùy chọn sau:"</string>
<string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"Gỡ cài đặt một số ứng dụng"</string>
<string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"Thử lại nâng cấp"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Thêm tổ chức"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Ngày"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Tên nhóm"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">" qua <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> qua <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"Yêu thích"</string>
<string name="edit_contact" msgid="7529281274005689512">"Chỉnh sửa liên hệ"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Sao chép vào Danh bạ của tôi"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Thêm vào Danh bạ của tôi"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Thư mục <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Đang tạo bản sao cá nhân..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Tùy chỉnh"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Cài đặt"</string>
<string name="menu_settings" msgid="377929915873428211">"Cài đặt"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"T.sử cục bộ của tôi"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Tiểu sử <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> của tôi"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Đang hiển thị tất cả liên hệ"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"Ứng dụng Người hoạt động tốt hơn với Tài khoản Google.\n\n• Truy cập từ bất kỳ trình duyệt web nào.\n• Sao lưu danh sách liên hệ của bạn một cách an toàn."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Danh bạ hoạt động tốt hơn với tài khoản Google.\n\n• Truy cập từ bất kỳ trình duyệt web nào.\n• Sao lưu danh bạ của bạn một cách an toàn."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Đảm bảo an toàn cho danh sách liên hệ của bạn ngay cả khi bạn mất điện thoại: hãy đồng bộ hóa với một dịch vụ trực tuyến."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Thêm tài khoản"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Địa chỉ liên hệ mới của bạn sẽ không được sao lưu. Thêm tài khoản sao lưu danh bạ trực tuyến?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Thêm tài khoản mới"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Xuất các tệp cơ sở dữ liệu"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Ảnh. Chọn để thay đổi"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"thêm liên hệ mới"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Xem thêm"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Xem bớt"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Xem tất cả"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Liên hệ"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Gần đây"</string>
+ <string name="send_message" msgid="8938418965550543196">"Gửi tin nhắn"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Đang tạo bản sao cá nhân..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Hôm qua"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Ngày mai"</string>
+ <string name="today" msgid="8041090779381781781">"Hôm nay"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Hôm nay lúc <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Ngày mai lúc <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Sự kiện không có tiêu đề)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Đặt"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 9ed84b6..6a34d68 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"联系人"</string>
+ <string name="people" msgid="1190841469952343354">"通讯录"</string>
<string name="contactsList" msgid="8661624236494819731">"联系人"</string>
<string name="shortcutContact" msgid="749243779392912958">"联系人"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"直接拨打电话"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"经常联系"</string>
<string name="strequentList" msgid="5640192862059373511">"收藏"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"联系人详情"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"查看联系人"</string>
<string name="editContactDescription" msgid="2947202828256214947">"编辑联系人"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"创建联系人"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"修改群组"</string>
@@ -39,7 +38,7 @@
<string name="searchHint" msgid="8482945356247760701">"搜索联系人"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"查看联系人"</string>
<string name="menu_addStar" msgid="2908478235715404876">"添加到收藏"</string>
- <string name="menu_removeStar" msgid="5844227078364227030">"从收藏中删除"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"从收藏中移除"</string>
<string name="menu_editContact" msgid="9042415603857662633">"修改"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"删除"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"放在主屏幕上"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"该联系人的信息中包含来自多个帐户的信息。来自只读帐户的信息将在您的联系人列表中隐藏,但不会删除。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"删除该联系人将会删除多个帐户中的信息。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"将会删除此联系人。"</string>
- <string name="menu_discard" msgid="6456087569315685632">"舍弃"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"舍弃更改"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"该联系人不存在。"</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"联系人小部件已添加到主屏幕。"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"新建联系人"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> 位联系人有电话号码"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"没有联系人拥有电话号码"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 位联系人"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> 位联系人"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"找到 1 个联系人"</item>
<item quantity="other" msgid="3852668542926965042">"找到 <xliff:g id="COUNT">%d</xliff:g> 个联系人"</item>
@@ -108,17 +103,18 @@
<item quantity="one" msgid="4826918429708286628">"找到 1 个联系人"</item>
<item quantity="other" msgid="7988132539476575389">"找到 <xliff:g id="COUNT">%d</xliff:g> 个联系人"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"所有联系人"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"群组"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"所有联系人"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"收藏"</string>
<string name="callBack" msgid="5498224409038809224">"回电"</string>
<string name="callAgain" msgid="3197312117049874778">"重拨"</string>
<string name="returnCall" msgid="8171961914203617813">"回拨"</string>
- <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"将“<xliff:g id="EMAIL">%s</xliff:g>”添加到联系人?"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"将“<xliff:g id="EMAIL">%s</xliff:g>”添加到通讯录?"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"联系人照片"</string>
<string name="description_plus_button" msgid="515164827856229880">"添加"</string>
<string name="exporting_contact_list_progress" msgid="560522409559101193">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 个联系人(共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 个)"</string>
<string name="search_settings_description" msgid="2675223022992445813">"联系人姓名"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"未找到可处理此操作的应用。"</string>
+ <string name="missing_app" msgid="1466111003546611387">"未找到可处理此操作的应用。"</string>
<string name="menu_share" msgid="943789700636542260">"分享"</string>
<string name="share_via" msgid="563121028023030093">"联系人分享方式"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"要在哪个帐户下创建群组?"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"姓氏在前"</string>
<string name="take_photo" msgid="7496128293167402354">"拍照"</string>
<string name="take_new_photo" msgid="7341354729436576304">"拍摄新照片"</string>
- <string name="pick_photo" msgid="3746334626214970837">"从图库中选择照片"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"从图库中选择新照片"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"选择照片"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"选择新照片"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"正在更新联系人列表,以反映语言的变更。"</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"正在更新联系人列表。"</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"正在升级“联系人”。\n\n升级过程大约需要 <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB 的内存空间。\n\n请选择以下某个选项:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"添加工作单位"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"日期"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"群组名称"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"来源:<xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"时间:<xliff:g id="DATE">%1$s</xliff:g>,来源:<xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"收藏"</string>
<string name="edit_contact" msgid="7529281274005689512">"编辑联系人"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"复制到“我的联系人”"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"添加到“我的联系人”"</string>
<string name="contact_directory_description" msgid="683398073603909119">"目录类型:<xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"正在创建个人副本..."</string>
<string name="list_filter_custom" msgid="8910173055702057002">"自定义"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"设置"</string>
<string name="menu_settings" msgid="377929915873428211">"设置"</string>
@@ -181,7 +174,7 @@
<string name="preference_displayOptions" msgid="1341720270148252393">"显示选项"</string>
<string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>,<xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"电话号码"</string>
- <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"添加到联系人"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"添加到通讯录"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"添加至联系人"</string>
<string name="non_phone_close" msgid="7608506439725515667">"关闭"</string>
<string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"我的本地个人资料"</string>
<string name="external_profile_title" msgid="8034998767621359438">"我的<xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>个人资料"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"显示所有联系人"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"联系人应用与 Google 帐户结合使用效果更佳。\n\n• 通过任意网络浏览器查看您的联系人信息。\n• 安全地备份您的联系人信息。"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"登录Google帐户可获得更棒的通讯录使用体验。\n\n• 可通过任意浏览器访问。\n• 安全妥善地备份您的联系人数据。"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"即使手机丢了,也能确保您的联系人信息的安全性:与在线服务同步。"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"添加帐户"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"系统不会备份您的新联系人。要添加用于在线备份联系人的帐户吗?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"添加新帐户"</string>
<string name="menu_export_database" msgid="2659719297530170820">"导出数据库文件"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"照片(选择即可更换)"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"添加新联系人"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"查看更多"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"隐藏部分"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"查看全部"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"联系"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"最近"</string>
+ <string name="send_message" msgid="8938418965550543196">"发送短信"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"正在创建个人副本…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"昨天"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"明天"</string>
+ <string name="today" msgid="8041090779381781781">"今天"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"今天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"明天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>,<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(未命名的活动)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"设置"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..6609039
--- /dev/null
+++ b/res/values-zh-rHK/strings.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2006 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:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="people" msgid="1190841469952343354">"通訊錄"</string>
+ <string name="contactsList" msgid="8661624236494819731">"通訊錄"</string>
+ <string name="shortcutContact" msgid="749243779392912958">"聯絡人"</string>
+ <string name="shortcutDialContact" msgid="746622101599186779">"直接撥號"</string>
+ <string name="shortcutMessageContact" msgid="2460337253595976198">"私人訊息"</string>
+ <string name="shortcutActivityTitle" msgid="6642877210643565436">"選擇聯絡人捷徑"</string>
+ <string name="callShortcutActivityTitle" msgid="6065749861423648991">"選擇撥打號碼"</string>
+ <string name="messageShortcutActivityTitle" msgid="3084542316620335911">"選擇傳訊號碼"</string>
+ <string name="contactPickerActivityTitle" msgid="4301062192337417640">"選擇聯絡人"</string>
+ <string name="starredList" msgid="4817256136413959463">"已加星號"</string>
+ <string name="frequentList" msgid="7154768136473953056">"常用聯絡人"</string>
+ <string name="strequentList" msgid="5640192862059373511">"我的最愛"</string>
+ <string name="viewContactTitle" msgid="7989394521836644384">"聯絡人詳細資料"</string>
+ <string name="editContactDescription" msgid="2947202828256214947">"編輯聯絡人"</string>
+ <string name="insertContactDescription" msgid="4709878105452681987">"建立聯絡人"</string>
+ <string name="editGroupDescription" msgid="6321161304201540561">"編輯群組"</string>
+ <string name="insertGroupDescription" msgid="5658512271662210139">"建立群組"</string>
+ <string name="contactDetailAbout" msgid="5430408883907061400">"關於"</string>
+ <string name="contactDetailUpdates" msgid="3780588624763446941">"更新"</string>
+ <string name="searchHint" msgid="8482945356247760701">"搜尋聯絡人"</string>
+ <string name="menu_viewContact" msgid="2795575601596468581">"查看聯絡人"</string>
+ <string name="menu_addStar" msgid="2908478235715404876">"新增至我的最愛"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"從「我的最愛」中移除"</string>
+ <string name="menu_editContact" msgid="9042415603857662633">"編輯"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"刪除"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"新增到主畫面上"</string>
+ <string name="menu_call" msgid="3992595586042260618">"致電聯絡人"</string>
+ <string name="menu_sendSMS" msgid="5535886767547006515">"傳送簡訊至聯絡人"</string>
+ <string name="menu_splitAggregate" msgid="8368636463748691868">"分割"</string>
+ <string name="menu_editGroup" msgid="5062005185370983720">"編輯"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"刪除"</string>
+ <string name="menu_new_contact_action_bar" msgid="7263362129442119188">"新增聯絡人"</string>
+ <string name="menu_new_group_action_bar" msgid="3520232877587377175">"新增群組"</string>
+ <string name="splitConfirmation_title" msgid="633640935430370530">"要分拆聯絡人記錄嗎?"</string>
+ <string name="splitConfirmation" msgid="740190210499587175">"這個聯絡人記錄即將分拆為多個。"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"加入"</string>
+ <string name="titleJoinContactDataWith" msgid="7684875775798635354">"合併聯絡人"</string>
+ <string name="blurbJoinContactDataWith" msgid="8736488417422708236">"選擇要與<xliff:g id="NAME">%s</xliff:g>合併的聯絡人:"</string>
+ <string name="showAllContactsJoinItem" msgid="2189695051430392383">"顯示所有聯絡人"</string>
+ <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"建議的聯絡人"</string>
+ <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"所有聯絡人"</string>
+ <string name="contactsJoinedMessage" msgid="7208148163607047389">"已合併聯絡人"</string>
+ <string name="menu_set_ring_tone" msgid="8728345772068064946">"設定鈴聲"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"所有來電轉到留言信箱"</string>
+ <string name="readOnlyContactWarning" msgid="7808825687289848259">"您無法刪除唯讀帳戶的聯絡人,但可在聯絡人名單中隱藏這些聯絡人。"</string>
+ <string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"這個聯絡人包含來自多個帳戶的資訊。您的聯絡人清單不會顯示唯讀帳戶的資訊 (這些資訊並不會被刪除)。"</string>
+ <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"刪除這個聯絡人將刪除多個帳戶的資訊。"</string>
+ <string name="deleteConfirmation" msgid="811706994761610640">"刪除此聯絡人?"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"放棄變更"</string>
+ <string name="invalidContactMessage" msgid="8215051456181842274">"聯絡人不存在。"</string>
+ <string name="createContactShortcutSuccessful" msgid="7874133287558150877">"聯絡人小工具已新增到主畫面上。"</string>
+ <string name="pickerNewContactHeader" msgid="7750705279843568147">"建立新聯絡人"</string>
+ <string name="pickerNewContactText" msgid="6166997164401048211">"建立新聯絡人"</string>
+ <string-array name="otherLabels">
+ <item msgid="8287841928119937597">"機構"</item>
+ <item msgid="7196592230748086755">"備註"</item>
+ </string-array>
+ <string name="photoPickerNotFoundText" product="tablet" msgid="6247290728908599701">"平板電腦中沒有相片可供選用。"</string>
+ <string name="photoPickerNotFoundText" product="default" msgid="431331662154342581">"手機中沒有相片可供選用。"</string>
+ <string name="attach_photo_dialog_title" msgid="5599827035558557169">"聯絡人相片"</string>
+ <string name="customLabelPickerTitle" msgid="1081475101983255212">"自訂標籤名稱"</string>
+ <string name="send_to_voicemail_checkbox" msgid="9001686764070676353">"直接將來電轉到留言信箱"</string>
+ <string name="removePhoto" msgid="4898105274130284565">"移除相片"</string>
+ <string name="noContacts" msgid="8579310973261953559">"沒有聯絡人。"</string>
+ <string name="noGroups" msgid="8614664663561385253">"沒有群組。"</string>
+ <string name="noAccounts" msgid="7768267764545265909">"如要建立群組,您需要有一個帳戶。"</string>
+ <string name="emptyGroup" msgid="7502116218697177370">"這個群組中沒有成員。"</string>
+ <string name="addPeopleToGroup" msgid="7879585947222263516">"如要新增成員,請編輯群組。"</string>
+ <string name="savingContact" msgid="4075751076741924939">"正在儲存聯絡人…"</string>
+ <string name="contactSavedToast" msgid="7152589189385441091">"聯絡人已儲存。"</string>
+ <string name="contactSavedErrorToast" msgid="3207250533172944892">"無法儲存聯絡人變更。"</string>
+ <string name="groupSavedToast" msgid="1168756874239833756">"群組已儲存。"</string>
+ <string name="groupSavedErrorToast" msgid="7984466936615304740">"無法儲存群組變更。"</string>
+ <plurals name="listTotalPhoneContacts">
+ <item quantity="one" msgid="3015357862286673986">"1 個有電話號碼的聯絡人"</item>
+ <item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> 個有電話號碼的聯絡人"</item>
+ </plurals>
+ <string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"所有聯絡人資訊都沒有電話號碼"</string>
+ <plurals name="listFoundAllContacts">
+ <item quantity="one" msgid="5517063038754171134">"找到 1 位聯絡人"</item>
+ <item quantity="other" msgid="3852668542926965042">"找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
+ </plurals>
+ <string name="listFoundAllContactsZero" msgid="922980883593159444">"沒有聯絡人"</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="one" msgid="4826918429708286628">"找到 1 位聯絡人"</item>
+ <item quantity="other" msgid="7988132539476575389">"找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
+ </plurals>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"所有聯絡人"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"最愛聯絡人"</string>
+ <string name="callBack" msgid="5498224409038809224">"回撥電話"</string>
+ <string name="callAgain" msgid="3197312117049874778">"重撥"</string>
+ <string name="returnCall" msgid="8171961914203617813">"回覆來電"</string>
+ <string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"要將「<xliff:g id="EMAIL">%s</xliff:g>」加到通訊錄嗎?"</string>
+ <string name="description_contact_photo" msgid="3387458082667894062">"聯絡人相片"</string>
+ <string name="description_plus_button" msgid="515164827856229880">"加號"</string>
+ <string name="exporting_contact_list_progress" msgid="560522409559101193">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 位聯絡人,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 位"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"您的聯絡人姓名"</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"找不到可以處理這個操作的應用程式。"</string>
+ <string name="missing_app" msgid="1466111003546611387">"找不到可以處理這個操作的應用程式。"</string>
+ <string name="menu_share" msgid="943789700636542260">"分享"</string>
+ <string name="share_via" msgid="563121028023030093">"使用下列應用程式分享聯絡人資訊:"</string>
+ <string name="dialog_new_group_account" msgid="2318032089273496830">"選擇帳戶以建立群組"</string>
+ <string name="audio_chat" msgid="2535716629358298691">"話音通訊"</string>
+ <string name="video_chat" msgid="1872255818640336072">"視像通訊"</string>
+ <string name="connections" msgid="8098440723172028350">"聯繫"</string>
+ <string name="add_connection_button" msgid="4861308615789601727">"加入聯繫"</string>
+ <string name="recent" msgid="2659189233141493004">"近況"</string>
+ <string name="recent_updates" msgid="4267258535615860710">"近期動態"</string>
+ <string name="account_type_format" msgid="718948015590343010">"<xliff:g id="SOURCE">%1$s</xliff:g> 聯絡人"</string>
+ <!-- no translation found for from_account_format (4469138575127580203) -->
+ <skip />
+ <string name="use_photo_as_primary" msgid="8807110122951157246">"使用這張相片"</string>
+ <string name="contact_read_only" msgid="7421346527289472273">"無法以這個應用程式編輯。"</string>
+ <string name="no_contact_details" msgid="6636856378019344497">"沒有這位聯絡人的其他資訊。"</string>
+ <string name="group_read_only" msgid="1061762906115697637">"無法在這部裝置上編輯。"</string>
+ <string name="display_options_sort_list_by" msgid="6080091755852211076">"清單排序依據"</string>
+ <string name="display_options_sort_by_given_name" msgid="184916793466387067">"名字"</string>
+ <string name="display_options_sort_by_family_name" msgid="7857986975275712622">"姓氏"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"查看聯絡人姓名"</string>
+ <string name="display_options_view_given_name_first" msgid="6968288511197363292">"名字在前"</string>
+ <string name="display_options_view_family_name_first" msgid="1447288164951453714">"姓氏在前"</string>
+ <string name="take_photo" msgid="7496128293167402354">"拍照"</string>
+ <string name="take_new_photo" msgid="7341354729436576304">"拍攝新相片"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"選擇相片"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"選取新相片"</string>
+ <string name="locale_change_in_progress" msgid="7583992153091537467">"正在更新聯絡人名單,以反映語言變更。"</string>
+ <string name="upgrade_in_progress" msgid="474511436863451061">"正在更新聯絡人清單。"</string>
+ <string name="upgrade_out_of_memory" msgid="1209994418877625940">"正在升級通訊錄。\n\n升級程序需要大約 <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB 的內部儲存空間。\n\n請選擇下列其中一個選項:"</string>
+ <string name="upgrade_out_of_memory_uninstall" msgid="1721798828992091432">"解除安裝部分應用程式"</string>
+ <string name="upgrade_out_of_memory_retry" msgid="8431289830472724609">"重試升級"</string>
+ <string name="search_results_searching" msgid="3984833028938569930">"正在搜尋..."</string>
+ <string name="menu_display_selected" msgid="6470001164297969034">"顯示已選取的項目"</string>
+ <string name="menu_display_all" msgid="8887488642609786198">"顯示全部"</string>
+ <string name="menu_select_all" msgid="621719255150713545">"全選"</string>
+ <string name="menu_select_none" msgid="7093222469852132345">"全部取消選取"</string>
+ <string name="add_field" msgid="2384260056674995230">"新增其他欄位"</string>
+ <string name="add_new_entry_for_section" msgid="5223080690667565044">"新增"</string>
+ <string name="add_organization" msgid="7311893231158291197">"新增機構"</string>
+ <string name="event_edit_field_hint_text" msgid="5794424930242630477">"日期"</string>
+ <string name="group_edit_field_hint_text" msgid="3966441850870457808">"群組名稱"</string>
+ <string name="description_star" msgid="2605854427360036550">"我的最愛"</string>
+ <string name="edit_contact" msgid="7529281274005689512">"編輯聯絡人"</string>
+ <plurals name="merge_info">
+ <item quantity="one" msgid="148365587896371969">"未合併"</item>
+ <item quantity="other" msgid="425683718017380845">"從 <xliff:g id="COUNT">%0$d</xliff:g> 個來源合併"</item>
+ </plurals>
+ <string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"要將目前聯絡人與所選聯絡人合併嗎?"</string>
+ <string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"要切換至編輯所選聯絡人嗎?您目前已輸入的資訊將會被複製。"</string>
+ <string name="menu_copyContact" msgid="1573960845106822639">"複製到我的通訊錄"</string>
+ <string name="add_to_my_contacts" msgid="1068274916793627723">"新增至通訊錄"</string>
+ <string name="contact_directory_description" msgid="683398073603909119">"名錄 <xliff:g id="TYPE">%1$s</xliff:g>"</string>
+ <string name="list_filter_custom" msgid="8910173055702057002">"自訂"</string>
+ <string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
+ <string name="menu_settings" msgid="377929915873428211">"設定"</string>
+ <string name="menu_help" msgid="5123887102216637725">"說明"</string>
+ <string name="preference_displayOptions" msgid="1341720270148252393">"顯示選項"</string>
+ <string name="organization_company_and_title" msgid="6718207751363732025">"<xliff:g id="COMPANY_0">%2$s</xliff:g>,<xliff:g id="COMPANY_1">%1$s</xliff:g>"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"電話號碼"</string>
+ <string name="non_phone_add_to_contacts" msgid="6590985286250471169">"加入通訊錄"</string>
+ <string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"加入聯絡人記錄"</string>
+ <string name="non_phone_close" msgid="7608506439725515667">"關閉"</string>
+ <string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"提供年份"</string>
+ <string name="social_widget_label" msgid="6378905543028924592">"聯絡人"</string>
+ <string name="social_widget_loading" msgid="5327336597364074608">"正在載入..."</string>
+ <string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"建立新聯絡人"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"登入帳戶"</string>
+ <string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"匯入通訊錄"</string>
+ <string name="create_group_dialog_title" msgid="6874527142828424475">"建立新群組"</string>
+ <string name="create_group_item_label" msgid="4411981763169654825">"建立新群組"</string>
+ <plurals name="num_groups_in_account">
+ <item quantity="one" msgid="2944819210288517794">"1 個群組"</item>
+ <item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> 個群組"</item>
+ </plurals>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"要刪除「<xliff:g id="GROUP_LABEL">%1$s</xliff:g>」群組嗎?(這並不會刪除聯絡人本身。)"</string>
+ <plurals name="num_contacts_in_group">
+ <item quantity="one" msgid="1352418549951013448">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> 中有 <xliff:g id="COUNT_0">%1$d</xliff:g> 人"</item>
+ <item quantity="other" msgid="8146027769011086349">"<xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g> 中有 <xliff:g id="COUNT_0">%1$d</xliff:g> 人"</item>
+ </plurals>
+ <plurals name="group_list_num_contacts_in_group">
+ <item quantity="one" msgid="3323065321661972446">"<xliff:g id="COUNT">%1$d</xliff:g> 人"</item>
+ <item quantity="other" msgid="6251996206137048525">"<xliff:g id="COUNT">%1$d</xliff:g> 人"</item>
+ </plurals>
+ <string name="toast_join_with_empty_contact" msgid="2238581529864542985">"請先輸入聯絡人姓名,然後才能與另一個聯絡人合併。"</string>
+ <string name="copy_text" msgid="3257145021583508761">"複製到剪貼簿"</string>
+ <string name="set_default" msgid="4417505153468300351">"設為預設"</string>
+ <string name="clear_default" msgid="7193185801596678067">"清除預設值"</string>
+ <string name="toast_text_copied" msgid="5143776250008541719">"文字已複製"</string>
+ <string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"要丟棄更改嗎?"</string>
+ <string name="call_type_and_date" msgid="747163730039311423">"<xliff:g id="CALL_TYPE">%1$s</xliff:g> <xliff:g id="CALL_SHORT_DATE">%2$s</xliff:g>"</string>
+ <string name="profile_display_name" msgid="4127389543625918771">"設定我的個人資料"</string>
+ <string name="enter_contact_name" msgid="1738391320566349924">"輸入聯絡人名字"</string>
+ <string name="group_name_hint" msgid="238359485263401293">"群組名稱"</string>
+ <string name="local_profile_title" msgid="2021416826991393684">"我的本機個人資料"</string>
+ <string name="external_profile_title" msgid="8034998767621359438">"我的 <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> 個人資料"</string>
+ <string name="toast_displaying_all_contacts" msgid="2737388783898593875">"顯示所有聯絡人"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"聯絡人與 Google 帳戶搭配使用的效能更卓越。\n\n• 透過任何網絡瀏覽器皆可存取。\n• 安全備份您的聯絡人。"</string>
+ <string name="generic_no_account_prompt" msgid="7218827704367325460">"即使丟失手機,也要確保通訊錄安全:與網上服務保持同步。"</string>
+ <string name="generic_no_account_prompt_title" msgid="753783911899054860">"新增帳戶"</string>
+ <string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"您的新聯絡人資料不會備份。要新增可在網上備份聯絡人資料的帳戶嗎?"</string>
+ <string name="contact_editor_prompt_one_account" msgid="8669032699767375976">"您的新聯絡人資料將與 <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g> 同步處理。"</string>
+ <string name="contact_editor_prompt_multiple_accounts" msgid="611828200100438242">"您可以透過下列其中一個帳戶同步處理您的新聯絡人資料。要使用哪個帳戶?"</string>
+ <string name="keep_local" msgid="1258761699192993322">"保留在本機中"</string>
+ <string name="add_account" msgid="8201790677994503186">"新增帳戶"</string>
+ <string name="add_new_account" msgid="5748627740680940264">"新增帳戶"</string>
+ <string name="menu_export_database" msgid="2659719297530170820">"匯出資料庫檔案"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"圖片 (選取即可更改)"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"新增聯絡人"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"顯示更多"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"顯示較少"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"顯示全部"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"聯絡人"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"近期"</string>
+ <string name="send_message" msgid="8938418965550543196">"傳送訊息"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"正在建立個人副本…"</string>
+ <string name="yesterday" msgid="6840858548955018569">"昨天"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"明天"</string>
+ <string name="today" msgid="8041090779381781781">"今天"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"今天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"明天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g><xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(未命名活動)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"設定"</string>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 2b01fda..c6cc5de 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"使用者"</string>
+ <string name="people" msgid="1190841469952343354">"聯絡人"</string>
<string name="contactsList" msgid="8661624236494819731">"聯絡人"</string>
<string name="shortcutContact" msgid="749243779392912958">"聯絡人"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"直接撥號"</string>
@@ -27,9 +27,8 @@
<string name="contactPickerActivityTitle" msgid="4301062192337417640">"選擇聯絡人"</string>
<string name="starredList" msgid="4817256136413959463">"已加星號"</string>
<string name="frequentList" msgid="7154768136473953056">"經常聯絡"</string>
- <string name="strequentList" msgid="5640192862059373511">"我的最愛"</string>
+ <string name="strequentList" msgid="5640192862059373511">"我的收藏"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"聯絡人詳細資料"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"檢視聯絡人"</string>
<string name="editContactDescription" msgid="2947202828256214947">"編輯聯絡人"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"建立聯絡人"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"編輯群組"</string>
@@ -39,10 +38,10 @@
<string name="searchHint" msgid="8482945356247760701">"搜尋聯絡人"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"檢視聯絡人"</string>
<string name="menu_addStar" msgid="2908478235715404876">"加到我的收藏"</string>
- <string name="menu_removeStar" msgid="5844227078364227030">"從我的最愛中移除"</string>
+ <string name="menu_removeStar" msgid="5844227078364227030">"從我的收藏中移除"</string>
<string name="menu_editContact" msgid="9042415603857662633">"編輯"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"刪除"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"新增到主螢幕上"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"放在主螢幕上"</string>
<string name="menu_call" msgid="3992595586042260618">"去電聯絡人"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"傳送簡訊至聯絡人"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"分割"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"此聯絡人包含來自多個帳戶的資訊。您的聯絡人清單不會顯示唯讀帳戶的資訊 (這些資訊並不會被刪除)。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"刪除此聯絡人將會刪除多個帳戶的資訊。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"刪除此聯絡人?"</string>
- <string name="menu_discard" msgid="6456087569315685632">"捨棄"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"捨棄變更"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"聯絡人不存在。"</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"聯絡人小工具已新增到主螢幕上。"</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"建立新聯絡人"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> 位有電話號碼的聯絡人"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"所有聯絡人資訊中都沒有電話號碼"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"1 位聯絡人"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"找到 1 位聯絡人"</item>
<item quantity="other" msgid="3852668542926965042">"找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"找到 1 位聯絡人"</item>
<item quantity="other" msgid="7988132539476575389">"找到 <xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"所有聯絡人"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"群組"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"所有聯絡人"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"最愛聯絡人"</string>
<string name="callBack" msgid="5498224409038809224">"回播電話"</string>
<string name="callAgain" msgid="3197312117049874778">"重撥"</string>
<string name="returnCall" msgid="8171961914203617813">"回電"</string>
@@ -119,6 +114,7 @@
<string name="exporting_contact_list_progress" msgid="560522409559101193">"第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 位聯絡人,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 位"</string>
<string name="search_settings_description" msgid="2675223022992445813">"您的聯絡人姓名"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"找不到可以處理這個動作的應用程式。"</string>
+ <string name="missing_app" msgid="1466111003546611387">"找不到可以處理這個動作的應用程式。"</string>
<string name="menu_share" msgid="943789700636542260">"分享"</string>
<string name="share_via" msgid="563121028023030093">"使用下列應用程式分享聯絡人資訊:"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"選擇帳戶以建立群組"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"姓氏在前"</string>
<string name="take_photo" msgid="7496128293167402354">"拍照"</string>
<string name="take_new_photo" msgid="7341354729436576304">"拍攝新相片"</string>
- <string name="pick_photo" msgid="3746334626214970837">"從圖片庫選擇相片"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"從圖片庫選取新相片"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"選擇相片"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"選取新相片"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"正在更新聯絡人清單以反映語言變更。"</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"正在更新聯絡人清單。"</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"正在升級通訊錄。\n\n升級程序大約需要 <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> MB 的內部儲存空間。\n\n請選擇下列其中一個選項:"</string>
@@ -160,9 +156,7 @@
<string name="add_organization" msgid="7311893231158291197">"新增機構"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"日期"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"群組名稱"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"透過 <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> (透過 <xliff:g id="SOURCE">%2$s</xliff:g>)"</string>
- <string name="description_star" msgid="2605854427360036550">"我的最愛"</string>
+ <string name="description_star" msgid="2605854427360036550">"我的收藏"</string>
<string name="edit_contact" msgid="7529281274005689512">"編輯聯絡人"</string>
<plurals name="merge_info">
<item quantity="one" msgid="148365587896371969">"未合併"</item>
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"複製到我的通訊錄"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"新增至我的聯絡人"</string>
<string name="contact_directory_description" msgid="683398073603909119">"目錄:<xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"正在建立個人副本…"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"自訂"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
<string name="menu_settings" msgid="377929915873428211">"設定"</string>
@@ -185,7 +178,7 @@
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"加入聯絡人"</string>
<string name="non_phone_close" msgid="7608506439725515667">"關閉"</string>
<string name="widget_name_and_phonetic" msgid="8739586586600099979">"<xliff:g id="DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="PHONETIC_NAME">%2$s</xliff:g>)"</string>
- <string name="date_year_toggle" msgid="7356532842767854606">"提供年份"</string>
+ <string name="date_year_toggle" msgid="7356532842767854606">"輸入年份"</string>
<string name="social_widget_label" msgid="6378905543028924592">"聯絡人"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"載入中…"</string>
<string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"建立新聯絡人"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"我的本機個人資料"</string>
<string name="external_profile_title" msgid="8034998767621359438">"我的 <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> 個人資料"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"顯示所有聯絡人"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"透過「Google 帳戶」使用「Google 人物搜尋」可獲得更佳的效益。\n\n• 透過任何瀏覽器都可存取。\n• 安全備份您的聯絡人。"</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"聯絡人與 Google 帳戶搭配使用的效能更優異。\n\n• 透過任何網路瀏覽器皆可存取。\n• 安全備份您的聯絡人。"</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"即使手機遺失,聯絡人資訊依然萬無一失:與線上服務保持同步。"</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"新增帳戶"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"系統不會備份您新增的聯絡人資料。您是否要新建一個帳戶,將您的聯絡人資料另存在線上?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"新增帳戶"</string>
<string name="menu_export_database" msgid="2659719297530170820">"匯出資料庫檔案"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"圖片 (選取即可變更)"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"新增聯絡人"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"顯示更多"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"顯示較少"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"全部顯示"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"聯絡人"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"近期"</string>
+ <string name="send_message" msgid="8938418965550543196">"傳送簡訊"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"正在建立個人副本..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"昨天"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"明天"</string>
+ <string name="today" msgid="8041090779381781781">"今天"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"今天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"明天<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g><xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(未命名活動)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"設定"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index ba13444..8b3d9ed 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="people" msgid="1048457247435785074">"Abantu"</string>
+ <string name="people" msgid="1190841469952343354">"Oxhumana nabo"</string>
<string name="contactsList" msgid="8661624236494819731">"Othi tana nabo"</string>
<string name="shortcutContact" msgid="749243779392912958">"Othintana naye"</string>
<string name="shortcutDialContact" msgid="746622101599186779">"Ukudayela okuqondile"</string>
@@ -29,7 +29,6 @@
<string name="frequentList" msgid="7154768136473953056">"Okuvamile"</string>
<string name="strequentList" msgid="5640192862059373511">"Izintandokazi"</string>
<string name="viewContactTitle" msgid="7989394521836644384">"Imininingwane yothintana naye"</string>
- <string name="viewContactDesription" msgid="214186610887547860">"Buka othintana naye"</string>
<string name="editContactDescription" msgid="2947202828256214947">"Hlela othintana naye"</string>
<string name="insertContactDescription" msgid="4709878105452681987">"Dala othintana naye"</string>
<string name="editGroupDescription" msgid="6321161304201540561">"Hlela isigcawu"</string>
@@ -65,7 +64,7 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Lona othintana naye uqukethe ulwazi olusuka ema-akhawuntini amaningi. Ulwazi olusuka ema-akhawuntini okufunda kuphela kuzofihlwa ohlwini lwakho lothintana nabo, ngeke kususwe."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Ukususa lona othintana naye kuzosusa ulwazi olusuka kuma-akhawuntini amaningi."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Lo na othintana naye uzosuswa."</string>
- <string name="menu_discard" msgid="6456087569315685632">"Lahla"</string>
+ <string name="menu_discard" msgid="6854657936970228164">"Lahla izinguquko"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Oxhumana naye akekho."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"isinqunjwana soxhumana nabo singeziwe esikrinini sekhaya."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Dala othintana naye omusha"</string>
@@ -95,10 +94,6 @@
<item quantity="other" msgid="3299954047880968205">"<xliff:g id="COUNT">%d</xliff:g> Othintana nabo abanezinombolo zocingo"</item>
</plurals>
<string name="listTotalPhoneContactsZero" msgid="6968813857632984319">"Abekho othintana nabo abanezinombolo zocingo"</string>
- <plurals name="listTotalAllContacts">
- <item quantity="one" msgid="3405747744700823280">"Othintana naye ongu-1"</item>
- <item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> Othintana nabo"</item>
- </plurals>
<plurals name="listFoundAllContacts">
<item quantity="one" msgid="5517063038754171134">"1 okutholakele"</item>
<item quantity="other" msgid="3852668542926965042">"<xliff:g id="COUNT">%d</xliff:g> tholakele"</item>
@@ -108,8 +103,8 @@
<item quantity="one" msgid="4826918429708286628">"otholakele ongu-1"</item>
<item quantity="other" msgid="7988132539476575389">"<xliff:g id="COUNT">%d</xliff:g> tholakele"</item>
</plurals>
- <string name="contactsAllLabel" msgid="6479708629170672169">"Bonke oxhumana nabo"</string>
- <string name="contactsGroupsLabel" msgid="2841971472518003524">"Amaqembu"</string>
+ <string name="all_contacts_tab_label" msgid="6250372293594147703">"Bonke oxhumana nabo"</string>
+ <string name="favorites_tab_label" msgid="1524869648904016414">"Izintandokazi"</string>
<string name="callBack" msgid="5498224409038809224">"Phinda ushayele"</string>
<string name="callAgain" msgid="3197312117049874778">"Shayela futhi"</string>
<string name="returnCall" msgid="8171961914203617813">"Buyisela ikholi"</string>
@@ -118,7 +113,8 @@
<string name="description_plus_button" msgid="515164827856229880">"kuhlanganise"</string>
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> kothintana nabo abangu-<xliff:g id="TOTAL_NUMBER">%s</xliff:g>"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Amagama othintana nabo"</string>
- <string name="quickcontact_missing_app" msgid="358168575340921552">"Ayikho insiza etholakele ukubhekana nalengxenye."</string>
+ <string name="quickcontact_missing_app" msgid="358168575340921552">"Ayikho uhlelo lokusebenza etholakele ukubhekana nalengxenye."</string>
+ <string name="missing_app" msgid="1466111003546611387">"Alukho uhlelo lokusebenza olutholakalele ukuphatha lesi senzo."</string>
<string name="menu_share" msgid="943789700636542260">"Yabelana"</string>
<string name="share_via" msgid="563121028023030093">"Abelana nothintana naye nge"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Yenza isigcawu ngaphansi kwe-akhawunti"</string>
@@ -143,8 +139,8 @@
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Igama lomkhaya kuqala"</string>
<string name="take_photo" msgid="7496128293167402354">"Thatha isithombe"</string>
<string name="take_new_photo" msgid="7341354729436576304">"Thatha isithombe esisha"</string>
- <string name="pick_photo" msgid="3746334626214970837">"Khetha isithombe kwiGalari"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Khetha isithombe esisha kwiGalari"</string>
+ <string name="pick_photo" msgid="2129509985223564942">"Khetha isithombe"</string>
+ <string name="pick_new_photo" msgid="9122450996263688237">"Khetha isithombe"</string>
<string name="locale_change_in_progress" msgid="7583992153091537467">"Uhlu lothintana naye luyabuyekezwa ukubonisa ushintsho lolimi."</string>
<string name="upgrade_in_progress" msgid="474511436863451061">"Uhlu lothintana naye luyabuyekezwa."</string>
<string name="upgrade_out_of_memory" msgid="1209994418877625940">"Othintana nabo basenqubeni yokuthuthukiswa. \n\nInqubo yokuthuthukisa idinga okungenani i-MB engu-<xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> yesitoreji sangaphakathi.\n\nKhetha okukodwa kokukhethwa kukho:"</string>
@@ -160,8 +156,6 @@
<string name="add_organization" msgid="7311893231158291197">"Ngeza inhlangano"</string>
<string name="event_edit_field_hint_text" msgid="5794424930242630477">"Usuku"</string>
<string name="group_edit_field_hint_text" msgid="3966441850870457808">"Igama leqembu"</string>
- <string name="contact_status_update_attribution" msgid="752179367353018597">"nge <xliff:g id="SOURCE">%1$s</xliff:g>"</string>
- <string name="contact_status_update_attribution_with_date" msgid="7358045508107825068">"<xliff:g id="DATE">%1$s</xliff:g> nge- <xliff:g id="SOURCE">%2$s</xliff:g>"</string>
<string name="description_star" msgid="2605854427360036550">"intandokazi"</string>
<string name="edit_contact" msgid="7529281274005689512">"Hlela othintana naye"</string>
<plurals name="merge_info">
@@ -173,7 +167,6 @@
<string name="menu_copyContact" msgid="1573960845106822639">"Kopisha kwengithintana nabo"</string>
<string name="add_to_my_contacts" msgid="1068274916793627723">"Faka Kothintana Nabo"</string>
<string name="contact_directory_description" msgid="683398073603909119">"Uhla lwemibhalo <xliff:g id="TYPE">%1$s</xliff:g>"</string>
- <string name="toast_making_personal_copy" msgid="288549957278065542">"Idala ikhophi yomuntu siqu"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Ngokwezifiso"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Izilungiselelo"</string>
<string name="menu_settings" msgid="377929915873428211">"Izilungiselelo"</string>
@@ -219,7 +212,7 @@
<string name="local_profile_title" msgid="2021416826991393684">"Imininingwane yami yakuleli"</string>
<string name="external_profile_title" msgid="8034998767621359438">"Imininingwane <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g> yami"</string>
<string name="toast_displaying_all_contacts" msgid="2737388783898593875">"Ibonisa bonke abathintwayo"</string>
- <string name="no_account_prompt" msgid="7061052512446855192">"I-People isebenza kangcono nge-akhawunti yakwa-Google. \n\n• Finyelela kuyo nganoma iluphi uhlobo lwesiphequluli.\n• Londoloza oxhumana nabo ngokuphepha."</string>
+ <string name="no_account_prompt" msgid="6424883302325061025">"Oxhumana nabo basebenza kangcono nge-akhawunti ye-Google.\n\n• Finyelela kusuka kunoma isiphi isiphequluli sewebhu.\n• Yenza isipele oxhumana nabo ngokuvikelekile."</string>
<string name="generic_no_account_prompt" msgid="7218827704367325460">"Gcina oxhumana nabo bephephile noma ngabe ulahlekelwa yiselula yakho: lungelanisa nensiza yokusebenzisa i-inthanethi."</string>
<string name="generic_no_account_prompt_title" msgid="753783911899054860">"Yengeza i-akhawunti"</string>
<string name="contact_editor_prompt_zero_accounts" msgid="1785345895691886499">"Umxhumani wakho omusha akalondolozeki. Yngeza i-akhawunti ekwazi ukulondoloza abaxhumani emoyeni?"</string>
@@ -230,4 +223,20 @@
<string name="add_new_account" msgid="5748627740680940264">"Yengeza i-akhawunti enthsha"</string>
<string name="menu_export_database" msgid="2659719297530170820">"Khipha amafayela emininingo egciniwe"</string>
<string name="contact_detail_picture_description" msgid="6083230522651287030">"Isithombe. Khetha ukuze ushintshe"</string>
+ <string name="action_menu_add_new_contact_button" msgid="3180222523336380017">"engeza oxhumana naye omusha"</string>
+ <string name="expanding_entry_card_view_see_more" msgid="3779194067124758079">"Buka okuningi"</string>
+ <string name="expanding_entry_card_view_see_less" msgid="5344160551629714168">"Buka okuncane"</string>
+ <string name="expanding_entry_card_view_see_all" msgid="3845258737661412627">"Buka konke"</string>
+ <string name="communication_card_title" msgid="7842656156852232185">"Oxhumana naye"</string>
+ <string name="recent_card_title" msgid="8982782042698001695">"Okwakamuva"</string>
+ <string name="send_message" msgid="8938418965550543196">"Thumela umlayezo"</string>
+ <string name="toast_making_personal_copy" msgid="6137651078366797938">"Idala ikhophi yomuntu siqu..."</string>
+ <string name="yesterday" msgid="6840858548955018569">"Izolo"</string>
+ <string name="tomorrow" msgid="6241969467795308581">"Kusasa"</string>
+ <string name="today" msgid="8041090779381781781">"Namhlanje"</string>
+ <string name="today_at_time_fmt" msgid="605665249491030460">"Namhlanje ngo-<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="tomorrow_at_time_fmt" msgid="4856497969617819421">"Kusasa ngo-<xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="date_time_fmt" msgid="5053178726906863812">"<xliff:g id="DATE">%s</xliff:g>, <xliff:g id="TIME_INTERVAL">%s</xliff:g>"</string>
+ <string name="untitled_event" msgid="3484859385405939366">"(Umcimbi ongenasihloko)"</string>
+ <string name="date_time_set" msgid="4761419824439606690">"Setha"</string>
</resources>
diff --git a/res/drawable/quickcontact_track_background.xml b/res/values/bools.xml
similarity index 73%
copy from res/drawable/quickcontact_track_background.xml
copy to res/values/bools.xml
index fcf61fd..663845a 100644
--- a/res/drawable/quickcontact_track_background.xml
+++ b/res/values/bools.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2014 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.
@@ -13,7 +13,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+<resources>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/quickcon_background_texture"
- android:tileMode="repeat" />
+ <bool name="quickcontact_two_panel">false</bool>
+
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 362001d..89f39b8 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -15,11 +15,6 @@
-->
<resources>
- <color name="quickcontact_list_divider">#ffcdcdcd</color>
- <color name="quickcontact_list_background">#ffe2e2e2</color>
- <color name="quickcontact_tab_indicator">#ffc6c6c6</color>
- <color name="quickcontact_track_background">#fff5f5f5</color>
- <color name="quickcontact_activity_background">#fff5f5f5</color>
<color name="quickcontact_name_detail_background">#66000000</color>
<!-- Color of the background of the contact detail and editor pages -->
@@ -27,25 +22,34 @@
<color name="background_social_updates">#ffeeeeee</color>
- <!-- Color used for the letter in the A-Z section header -->
- <color name="section_header_text_color">#363636</color>
-
- <!-- Color of the text in the updates tab in the tab carousel on the contact detail page -->
- <color name="detail_update_tab_text_color">#777777</color>
-
- <!-- Color of the text of the tab carousel in the contact details -->
- <color name="detail_tab_carousel_tab_label_color">#EEEEEE</color>
-
<!-- Color of the background of the action bar -->
<color name="action_bar_background">#e6e6e6</color>
+ <!-- Color used for system bar and navigation bar. -->
+ <color name="primary_dark">#008aa1</color>
+
<!-- Color of the background of the action bar when highlighted (ie. pressed, focused) -->
<color name="action_bar_background_highlight">#cecece</color>
<!-- Color of the text for buttons in the action bar -->
<color name="action_bar_button_text_color">#FFFFFF</color>
- <!-- Color of the vertical stripe that goes on the left of a block quote inside a stream item -->
- <color name="stream_item_stripe_color">#CCCCCC</color>
+ <!-- Color of the selected tab underline (overriding value in ContactsCommon) -->
+ <color name="tab_selected_color">#ffeeff41</color>
+ <color name="contacts_accent_color">#00acc1</color>
+ <!-- Color of the separator between entries in an ExpandingEntryCardView -->
+ <color name="expanding_entry_card_item_separator_color">#e4e4e4</color>
+
+ <!-- Color of the text on an ExpandingEntryCard button -->
+ <color name="expanding_entry_card_button_text_color">@android:color/black</color>
+
+ <!-- Background color for an ExpandingEntryCard -->
+ <color name="expanding_entry_card_background_color">#ffffff</color>
+
+ <!-- Color of the margin for cards -->
+ <color name="card_margin_color">#f4f4f4</color>
+
+ <color name="call_arrow_green">#2aad6f</color>
+ <color name="call_arrow_red">#ff2e58</color>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 598846a..5a2f7ab 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -16,9 +16,12 @@
<resources>
<dimen name="account_selector_popup_width">400dip</dimen>
- <!-- Top position of quick contact. If this is -1, the vertical position is determined
- based on the source of the request -->
- <dimen name="quick_contact_top_position">48dip</dimen>
+ <!-- Initial height of transparent space above QuickContacts -->
+ <dimen name="quickcontact_starting_empty_height">150dp</dimen>
+ <!-- Initial size of QuickContact's title size -->
+ <dimen name="quickcontact_maximum_title_size">36dp</dimen>
+ <!-- When QC is uncollapsed, the title has this much margin on its left, right and bottom -->
+ <dimen name="quickcontact_title_initial_margin">16dp</dimen>
<!-- Top padding of the entire contact editor -->
<dimen name="editor_padding_top">0dip</dimen>
@@ -32,6 +35,12 @@
<!-- Minimum height of a row in the Editor -->
<dimen name="editor_min_line_item_height">48dip</dimen>
+ <!-- Top padding of an EditText in the Editor -->
+ <dimen name="editor_text_field_top_padding">8dip</dimen>
+
+ <!-- Bottom padding of an EditText in the Editor -->
+ <dimen name="editor_text_field_bottom_padding">7dip</dimen>
+
<!-- Right padding of a field in the Editor -->
<dimen name="editor_field_right_padding">4dip</dimen>
@@ -47,33 +56,6 @@
<!-- Height of the shadow asset under the photo on the contact detail page -->
<dimen name="detail_contact_photo_shadow_height">10dip</dimen>
- <!-- Height of the tab text label in the tab carousel on the contact detail page -->
- <dimen name="detail_tab_carousel_tab_label_height">45dip</dimen>
-
- <!-- Height of the tab text label in the tab carousel on the contact detail page -->
- <dimen name="detail_tab_carousel_tab_label_indent">24dip</dimen>
-
- <!-- Left and right padding of the text within the update tab in the tab carousel -->
- <dimen name="detail_update_tab_side_padding">24dip</dimen>
-
- <!-- Left and right padding of the update section in the contact detail card -->
- <dimen name="detail_update_section_side_padding">16dip</dimen>
-
- <!-- Vertical padding above and below individual stream items -->
- <dimen name="detail_update_section_item_vertical_padding">16dip</dimen>
-
- <!-- Vertical padding between text and images in a single stream item -->
- <dimen name="detail_update_section_between_items_vertical_padding">8dip</dimen>
-
- <!-- Horizontal padding for individual stream items -->
- <dimen name="detail_update_section_item_horizontal_padding">8dip</dimen>
-
- <!-- Padding between images in a single stream item -->
- <dimen name="detail_update_section_between_items_padding">1dip</dimen>
-
- <!-- Horizontal padding between attribution and comments -->
- <dimen name="detail_update_section_attribution_comments_padding">4dip</dimen>
-
<!-- Margin around the contact's photo on the contact card -->
<dimen name="detail_contact_photo_margin">8dip</dimen>
@@ -152,9 +134,6 @@
<dimen name="contact_filter_header_min_height">24dip</dimen>
- <!-- Width of the lead margin on the left of a block quote inside a stream item -->
- <dimen name="stream_item_stripe_width">8dip</dimen>
-
<!-- Max width of the SearchView when the contact picker is a dialog (on wide
screen devices). -->
<dimen name="contact_picker_search_view_max_width">550dip</dimen>
@@ -163,4 +142,43 @@
wide screen devices). -->
<dimen name="contact_picker_contact_list_min_height">550dip</dimen>
+
+ <!-- Margins for ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_marginStart">12dp</dimen>
+ <dimen name="expanding_entry_card_marginEnd">12dp</dimen>
+ <dimen name="expanding_entry_card_marginBottom">12dp</dimen>
+
+ <!-- Top margin for the communication card, used to add space from header. -->
+ <dimen name="communication_card_marginTop">12dp</dimen>
+
+ <!-- Elevation of an ExpandingEntryCard, for the sake of shadow casting -->
+ <dimen name="expanding_entry_card_elevation">1dp</dimen>
+ <!-- Elevation of the QuickContact's Toolbar, for the sake of shadow casting -->
+ <dimen name="quick_contact_toolbar_elevation">4.5dp</dimen>
+
+ <!-- Size of the title text for a ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_title_text_size">16sp</dimen>
+ <!-- Padding for the title text for a ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_title_padding">16dp</dimen>
+
+ <!-- Height of the separator between entries in an ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_item_separator_height">1dp</dimen>
+ <!-- Dimensions for an entry in ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_item_padding_start">67dp</dimen>
+ <dimen name="expanding_entry_card_item_padding_with_image_start">20dp</dimen>
+ <dimen name="expanding_entry_card_item_padding_end">20dp</dimen>
+ <dimen name="expanding_entry_card_item_padding_top">16dp</dimen>
+ <dimen name="expanding_entry_card_item_padding_bottom">16dp</dimen>
+ <dimen name="expanding_entry_card_item_image_spacing">16dp</dimen>
+
+ <!-- Dimensions for a button in ExpandingEntryCardView -->
+ <dimen name="expanding_entry_card_button_padding_start">20dp</dimen>
+ <dimen name="expanding_entry_card_button_padding_vertical">16dp</dimen>
+ <dimen name="expanding_entry_card_button_drawable_padding">20dp</dimen>
+
+ <dimen name="expanding_entry_card_item_text_icon_margin_top">7dp</dimen>
+ <dimen name="expanding_entry_card_item_text_icon_margin_right">7dp</dimen>
+ <dimen name="expanding_entry_card_item_sub_header_icon_margin_right">4dp</dimen>
+ <dimen name="expanding_entry_card_item_sub_header_icon_margin_bottom">14dp</dimen>
+
</resources>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index b74d8ce..0d09967 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -22,8 +22,8 @@
<!-- Flag indicating whether to show images in browse list -->
<bool name="config_browse_list_show_images">true</bool>
- <!-- Flag indicating whether to show images in browse list -->
- <bool name="config_browse_list_reverse_images">true</bool>
+ <!-- Whether to show images in the reverse from the default position in the browse list. -->
+ <bool name="config_browse_list_reverse_images">false</bool>
<!-- If true, phonetic name is included in the contact editor by default -->
<bool name="config_editor_include_phonetic_name">false</bool>
@@ -47,14 +47,6 @@
-->
<bool name="config_show_group_action_in_action_bar">false</bool>
- <!-- Width of a tab in the tab carousel as a percentage of the current screen width on the
- contact detail page -->
- <item name="tab_width_screen_width_percentage" type="fraction">75%</item>
-
- <!-- Height of the tab carousel as a percentage of the current screen width on the
- contact detail page -->
- <item name="tab_height_screen_width_percentage" type="fraction">50%</item>
-
<!-- Help URL pointing to main TOC for People. This is intentionally empty because
the overlay will fill this in during build time. -->
<string name="help_url_people_main"></string>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index e742ba0..ff34d11 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -15,9 +15,12 @@
-->
<resources>
+ <!-- Determines the number of columns in a ContactTileRow in the favorites tab -->
+ <integer name="contact_tile_column_count_in_favorites">3</integer>
+
<!-- Determines the number of columns in a ContactTileRow -->
<integer name="contact_tile_column_count">2</integer>
- <!-- Max lines to display of a contact's snippet in the "updates" tab of the contact card tab carousel -->
- <integer name="updates_tab_snippet_max_lines">3</integer>
+ <!-- Number of lines the QuickContact title can have -->
+ <integer name="quickcontact_title_lines">1</integer>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7cd8227..434a62b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -15,9 +15,9 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Title for the activity that opens the People app. This is the name
+ <!-- Title for the activity that opens the Contacts app. This is the name
used in the Launcher icon. -->
- <string name="people">People</string>
+ <string name="people">Contacts</string>
<!-- Directory partition name -->
<string name="contactsList">Contacts</string>
@@ -60,10 +60,6 @@
<string name="viewContactTitle">Contact details</string>
<!-- The description presented to the user in the Intent choose when there are multiple activities that allow
- viewing a contact. This string represents the built in way to view the contact. -->
- <string name="viewContactDesription">View contact</string>
-
- <!-- The description presented to the user in the Intent choose when there are multiple activities that allow
editing a contact. This string represents the built in way to edit the contact. -->
<string name="editContactDescription">Edit contact</string>
@@ -172,8 +168,8 @@
<!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
<string name="deleteConfirmation">This contact will be deleted.</string>
- <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=12] -->
- <string name="menu_discard">Discard</string>
+ <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+ <string name="menu_discard">Discard changes</string>
<!-- Message displayed in a toast when you try to view the details of a contact that
for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
@@ -258,12 +254,6 @@
<!-- Displayed at the top of the contacts showing the zero as total number of contacts visible when "Only contacts with phones" is selected [CHAR LIMIT=64]-->
<string name="listTotalPhoneContactsZero">No contacts with phone numbers</string>
- <!-- Displayed at the top of the contacts showing the total number of contacts visible when "Only contacts with phones" not selected -->
- <plurals name="listTotalAllContacts">
- <item quantity="one">1 contact</item>
- <item quantity="other"><xliff:g id="count">%d</xliff:g> contacts</item>
- </plurals>
-
<!-- Displayed at the top of the contacts showing the total number of contacts found when "Only contacts with phones" not selected [CHAR LIMIT=30] -->
<plurals name="listFoundAllContacts">
<item quantity="one">1 found</item>
@@ -279,21 +269,11 @@
<item quantity="other"><xliff:g id="count">%d</xliff:g> found</item>
</plurals>
- <!-- The content description for the "all contacts" tab.
+ <!-- The title of "all contacts" tab. [CHAR LIMIT=14] -->
+ <string name="all_contacts_tab_label">All contacts</string>
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
-
- [CHAR LIMIT=NONE] -->
- <string name="contactsAllLabel">All contacts</string>
-
- <!-- The content description text for the groups tab.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
-
- [CHAR LIMIT=NONE] -->
- <string name="contactsGroupsLabel">Groups</string>
+ <!-- The title of "favorites" tab. [CHAR LIMIT=14] -->
+ <string name="favorites_tab_label">Favorites</string>
<!-- Action string for calling back a number in the call log -->
<string name="callBack">Call back</string>
@@ -329,6 +309,9 @@
<!-- Shown as a toast when the user taps on a QuickContact icon, and no application
was found that could perform the selected action. [CHAR LIMIT=NONE] -->
<string name="quickcontact_missing_app">No app was found to handle this action.</string>
+ <!-- Content description for the transparent view above the visible section of QuickContacts.
+ Clicking this view causes Quick Contacts to close. [CHAR LIMIT=NONE] -->
+ <string name="quickcontact_transparent_view_description">Click to return to previous screen</string>
<!-- Shown as a toast when the user attempts an action (add contact, edit
contact, etc) and no application was found that could perform that
@@ -404,10 +387,10 @@
<string name="take_new_photo">Take new photo</string>
<!-- An option in the 'Contact photo' dialog, if there is no photo yet [CHAR LIMIT=50] -->
- <string name="pick_photo">Choose photo from Gallery</string>
+ <string name="pick_photo">Choose photo</string>
<!-- An option in the 'Contact photo' dialog, if there is already a photo [CHAR LIMIT=50] -->
- <string name="pick_new_photo">Select new photo from Gallery</string>
+ <string name="pick_new_photo">Select new photo</string>
<!-- Text shown in the contacts app while the background process updates contacts after a locale change [CHAR LIMIT=300] -->
<string name="locale_change_in_progress">Contact list is being updated to reflect the change of language.</string>
@@ -494,9 +477,6 @@
<!-- The description of the directory where the contact was found [CHAR LIMIT=100]-->
<string name="contact_directory_description">Directory <xliff:g id="type" example="Corporate Directory">%1$s</xliff:g></string>
- <!-- Toast shown when creating a personal copy of a contact [CHAR LIMIT=100] -->
- <string name="toast_making_personal_copy">Creating a personal copy\u2026</string>
-
<!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
<string name="list_filter_custom">Custom</string>
@@ -629,12 +609,12 @@
<string name="toast_displaying_all_contacts">Displaying all contacts</string>
<!-- Message in the standard "no account" prompt that encourages the user to add a Google account before continuing to use the People app [CHAR LIMIT=NONE] -->
- <string name="no_account_prompt">People works better with a Google Account.\n\n\u2022 Access from any web browser.\n\u2022 Back up your contacts securely.</string>
+ <string name="no_account_prompt">Contacts works better with a Google Account.\n\n\u2022 Access from any web browser.\n\u2022 Back up your contacts securely.</string>
<!-- Message in the standard "no account" prompt that encourages the user to add any account (non Google-specific) before continuing to use the People app [CHAR LIMIT=NONE] -->
<string name="generic_no_account_prompt">Keep your contacts safe even if you lose your phone: synchronize with an online service.</string>
- <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better People app experience [CHAR LIMIT=20] -->
+ <!-- Title of the screen that encourages the user to add any account (non Google-specific) for a better Contacts app experience [CHAR LIMIT=20] -->
<string name="generic_no_account_prompt_title">Add an account</string>
<!-- Message in the contact editor prompt that notifies the user that the newly created contact will not be saved to any account, and prompts addition of an account [CHAR LIMIT=NONE] -->
@@ -660,4 +640,46 @@
<!-- Description when picture in the contact detail view is selected. [CHAR LIMIT=NONE] -->
<string name="contact_detail_picture_description">Picture. Select to change</string>
+
+ <!-- Content description for the button that adds a new contact
+ [CHAR LIMIT=NONE] -->
+ <string name="action_menu_add_new_contact_button">add new contact</string>
+ <!-- Button Label to see more on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_more">See more</string>
+ <!-- Button Label to see less on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_less">See less</string>
+ <!-- Button Label to see all on an ExpandingEntryCardView [CHAR LIMIT=40] -->
+ <string name="expanding_entry_card_view_see_all">See all</string>
+
+ <!-- Title of communication card. [CHAR LIMIT=60] -->
+ <string name="communication_card_title">Contact</string>
+
+ <!-- Title of recent card. [CHAR LIMIT=60] -->
+ <string name="recent_card_title">Recent</string>
+
+ <!-- Title of sms action entry. [CHAR LIMIT=60] -->
+ <string name="send_message">Send message</string>
+
+ <!-- Toast that appears when you are copying a directory contact into your personal contacts -->
+ <string name="toast_making_personal_copy">Creating a personal copy...</string>
+ <!-- Timestamp string for interactions from yesterday. [CHAR LIMIT=40] -->
+ <string name="yesterday">Yesterday</string>
+ <string name="tomorrow">Tomorrow</string>
+ <!-- Timestamp string for interactions from today. [CHAR LIMIT=40] -->
+ <string name="today">Today</string>
+ <!-- Text for an event starting on the current day with a start and end time.
+ For ex, "Today at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="today_at_time_fmt">"Today at <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Text for an event starting on the next day with a start and end time.
+ For ex, "Tomorrow at 5:00pm-6:00pm" [CHAR LIMIT=NONE] -->
+ <string name="tomorrow_at_time_fmt">"Tomorrow at <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Format string for a date and time description. For ex:
+ "April 19, 2012, 3:00pm - 4:00pm" [CHAR LIMIT=NONE] -->
+ <string name="date_time_fmt">"<xliff:g id="date">%s</xliff:g>, <xliff:g id="time_interval">%s</xliff:g>"</string>
+ <!-- Title for untitled calendar interactions [CHAR LIMIT=40] -->
+ <string name="untitled_event">(Untitled event)</string>
+
+ <!-- Name of the button in the date/time picker to accept the date/time change [CHAR LIMIT=15] -->
+ <string name="date_time_set">Set</string>
+
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0c7c0ea..ef66126 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -26,22 +26,14 @@
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
- <style name="EditorActivityTheme" parent="@android:style/Theme.Holo.Light">
- <item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_menu_back</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
- <item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:textColorPrimary">@color/primary_text_color</item>
- <item name="android:textColorSecondary">@color/secondary_text_color</item>
+ <style name="EditorActivityTheme" parent="@style/PeopleTheme">
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
<style name="Theme">
</style>
- <style name="Theme.QuickContact" parent="@android:style/Theme.Holo.Light">
+ <style name="Theme.QuickContact" parent="@style/PeopleTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowFrame">@null</item>
@@ -53,24 +45,31 @@
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
- <style name="PeopleTheme" parent="@android:style/Theme.Holo.Light">
+ <style name="PeopleTheme" parent="@android:style/Theme.Material.Light">
<item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_menu_back</item>
- <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
- <item name="android:actionBarItemBackground">@drawable/action_bar_item_background</item>
- <item name="android:actionBarWidgetTheme">@style/ContactsActionBarTheme</item>
- <item name="android:actionBarTabStyle">@style/ContactsActionBarTabView</item>
- <item name="android:actionDropDownStyle">@style/ContactsActionBarDropDownStyle</item>
+ <!-- Style for the tabs -->
+ <item name="android:actionBarTabStyle">@style/ContactsActionBarTabStyle</item>
+ <!-- Style for the tab bar (for the divider between tabs) -->
+ <item name="android:actionBarTabBarStyle">@style/ContactsActionBarTabBarStyle</item>
+ <!-- Style for the tab bar text (for text on tabs) -->
+ <item name="android:actionBarTabTextStyle">@style/ContactsActionBarTabTextStyle</item>
+ <!-- Drawable for the back button -->
+ <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+ <!-- Style for the overflow button in the actionbar. -->
+ <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflowQP</item>
<item name="android:textColorPrimary">@color/primary_text_color</item>
<item name="android:textColorSecondary">@color/secondary_text_color</item>
+ <item name="android:icon">@android:color/transparent</item>
<item name="android:listViewStyle">@style/ListViewStyle</item>
+ <item name="android:windowBackground">@color/background_primary</item>
+ <item name="android:colorPrimaryDark">@color/primary_dark</item>
+ <item name="android:colorPrimary">@color/actionbar_background_color</item>
<item name="list_item_height">?android:attr/listPreferredItemHeight</item>
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
<item name="list_section_header_height">24dip</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
<item name="list_item_padding_top">8dip</item>
- <item name="list_item_padding_right">0dip</item>
+ <item name="list_item_padding_right">32dp</item>
<item name="list_item_padding_bottom">8dip</item>
<item name="list_item_padding_left">0dip</item>
<item name="list_item_gap_between_image_and_text">8dip</item>
@@ -80,20 +79,17 @@
<item name="list_item_photo_size">@dimen/contact_browser_list_item_photo_size</item>
<item name="list_item_profile_photo_size">70dip</item>
<item name="list_item_prefix_highlight_color">@color/people_app_theme_color</item>
+ <item name="list_item_background_color">@color/background_primary</item>
<item name="list_item_header_text_color">@color/people_app_theme_color</item>
<item name="list_item_header_text_size">14sp</item>
<item name="list_item_header_height">30dip</item>
- <item name="list_item_header_underline_height">1dip</item>
- <item name="list_item_header_underline_color">@color/secondary_header_separator_color</item>
<item name="list_item_data_width_weight">5</item>
<item name="list_item_label_width_weight">3</item>
- <item name="list_item_contacts_count_text_color">@color/people_app_theme_color</item>
<item name="list_item_header_text_indent">8dip</item>
<item name="contact_browser_list_padding_left">16dip</item>
<item name="contact_browser_list_padding_right">0dip</item>
<item name="contact_browser_background">@android:color/transparent</item>
<item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
- <item name="list_item_contacts_count_text_size">12sp</item>
<!-- Favorites -->
<item name="favorites_padding_bottom">0dip</item>
</style>
@@ -102,11 +98,47 @@
<item name="android:src">@drawable/ic_overflow_menu</item>
</style>
- <style name="ContactsActionBarStyle" parent="@android:Widget.Holo.Light.ActionBar">
+ <!-- Use the non-light style so that the up button & icons aren't black. If we use the
+ Light style, then it is impossible to tint the homeAsUp icon anything other than black -->
+ <style name="ContactsActionBarStyle" parent="@android:style/Widget.Material.ActionBar">
+ <item name="android:background">@color/actionbar_background_color</item>
+ <item name="android:titleTextStyle">@style/ContactsActionBarTitleText</item>
+ <item name="android:backgroundStacked">@color/actionbar_background_color</item>
+ <!-- Empty icon -->
+ <item name="android:icon">@android:color/transparent</item>
+ </style>
+
+ <!-- Styling for tabs. -->
+ <style name="ContactsActionBarTabStyle" parent="@android:style/Widget.Material.Light.ActionBar.TabView">
<item name="android:background">@drawable/action_bar_tab</item>
- <item name="android:backgroundSplit">@drawable/action_bar_tab</item>
- <item name="android:backgroundStacked">@drawable/action_bar_tab</item>
- <item name="android:displayOptions"></item>
+ <item name="android:showDividers">none</item>
+ </style>
+
+ <!-- Text in the action bar at the top of the screen -->
+ <style name="ContactsActionBarTitleText"
+ parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
+ <item name="android:textColor">@color/actionbar_text_color</item>
+ </style>
+
+ <!-- Styling for the tab bar; handles styling of the divider line. -->
+ <style name="ContactsActionBarTabBarStyle"
+ parent="@android:style/Widget.Material.ActionBar.TabBar">
+ <item name="android:showDividers">none</item>
+ </style>
+
+ <!-- Text style for tabs. -->
+ <style name="ContactsActionBarTabTextStyle"
+ parent="android:style/Widget.Material.Light.ActionBar.TabText">
+ <item name="android:textColor">@color/tab_text_color</item>
+ <item name="android:textSize">@dimen/tab_text_size</item>
+ <item name="android:fontFamily">@string/tab_font_family</item>
+ <item name="android:textStyle">bold</item>
+ </style>
+
+ <!-- Action bar overflow menu icon. -->
+ <style name="ContactsActionBarOverflowQP"
+ parent="@android:style/Widget.Material.Light.ActionButton.Overflow">
+ <item name="android:src">@drawable/ic_menu_overflow_lt</item>
</style>
<style name="ContactsActionBarDropDownStyle" parent="@android:style/Widget.Holo.Light.Spinner">
@@ -138,25 +170,25 @@
<style name="JoinContactActivityTheme" parent="ContactPickerTheme" >
</style>
- <style name="ContactsPreferencesTheme" parent="@android:Theme.Holo.Light">
+ <style name="ContactsPreferencesTheme" parent="@style/PeopleTheme">
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
- <style name="ContactListFilterTheme" parent="@android:Theme.Holo.Light">
+ <style name="ContactListFilterTheme" parent="@style/PeopleTheme">
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
<style name="NonPhoneActivityTheme" parent="@android:Theme.Translucent.NoTitleBar">
</style>
- <style name="NonPhoneDialogTheme" parent="@android:Theme.Holo.Light.Dialog">
+ <style name="NonPhoneDialogTheme" parent="@android:Theme.Material.Light.Dialog">
</style>
- <style name="ConfirmAddDetailDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog.MinWidth">
+ <style name="ConfirmAddDetailDialogTheme" parent="@android:style/Theme.Material.Light.Dialog.MinWidth">
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
- <style name="ContactEditorAccountsChangedActivityTheme" parent="@android:style/Theme.Holo.Light.Dialog.NoActionBar.MinWidth">
+ <style name="ContactEditorAccountsChangedActivityTheme" parent="@android:style/Theme.Material.Light.Dialog.NoActionBar.MinWidth">
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:textColorPrimary">@color/primary_text_color</item>
<item name="android:textColorSecondary">@color/secondary_text_color</item>
@@ -187,12 +219,7 @@
<item name="android:layout_height">150dip</item>
</style>
- <style name="QuickContactListItemStyle">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:minHeight">?android:attr/listPreferredItemHeight</item>
- <item name="android:orientation">horizontal</item>
- <item name="android:gravity">center_vertical</item>
+ <style name="SelectableItem" parent="@android:style/Theme.Material.Light">
<item name="android:background">?android:attr/selectableItemBackground</item>
</style>
@@ -208,12 +235,6 @@
<item name="android:orientation">vertical</item>
</style>
- <style name="QuickContactListBottomStyle">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">2dip</item>
- <item name="android:background">@color/quickcontact_tab_indicator</item>
- </style>
-
<style name="Theme.PhotoSelector" parent="@android:style/Theme.Holo.Light">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
@@ -236,4 +257,15 @@
<item name="android:textSize">18sp</item>
</style>
+ <style name="ExpandingEntryCardStyle">
+ <item name="android:elevation">@dimen/expanding_entry_card_elevation</item>
+ <item name="android:background">@color/expanding_entry_card_background_color</item>
+ <item name="android:layout_marginBottom">@dimen/expanding_entry_card_marginBottom</item>
+ <item name="android:layout_marginEnd">@dimen/expanding_entry_card_marginEnd</item>
+ <item name="android:layout_marginStart">@dimen/expanding_entry_card_marginStart</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ </style>
+
</resources>
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 8688a47..cc687ec 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -829,9 +829,8 @@
// Don't bother undemoting if this contact is the user's profile.
if (id < Profile.MIN_ID) {
- values.clear();
- values.put(String.valueOf(id), PinnedPositions.UNDEMOTE);
- getContentResolver().update(PinnedPositions.UPDATE_URI, values, null, null);
+ getContentResolver().call(ContactsContract.AUTHORITY_URI,
+ PinnedPositions.UNDEMOTE_METHOD, String.valueOf(id), null);
}
}
} finally {
diff --git a/src/com/android/contacts/ContactsActivity.java b/src/com/android/contacts/ContactsActivity.java
index b94a237..82d1f98 100644
--- a/src/com/android/contacts/ContactsActivity.java
+++ b/src/com/android/contacts/ContactsActivity.java
@@ -26,7 +26,7 @@
import android.view.View;
import com.android.contacts.common.activity.TransactionSafeActivity;
-import com.android.contacts.common.test.InjectedServices;
+import com.android.contacts.common.testing.InjectedServices;
/**
* A common superclass for Contacts activities that handles application-wide services.
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 95fad48..2d2a782 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -32,7 +32,7 @@
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.test.InjectedServices;
+import com.android.contacts.common.testing.InjectedServices;
import com.android.contacts.common.util.Constants;
import com.google.common.annotations.VisibleForTesting;
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index f184d12..ea05b73 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -17,23 +17,21 @@
package com.android.contacts.activities;
import android.app.ActionBar;
-import android.app.ActionBar.LayoutParams;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.text.Editable;
import android.text.TextUtils;
-import android.view.LayoutInflater;
+import android.text.TextWatcher;
import android.view.View;
-import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
-import android.widget.ArrayAdapter;
import android.widget.SearchView;
import android.widget.SearchView.OnCloseListener;
-import android.widget.SearchView.OnQueryTextListener;
-import android.widget.TextView;
+import android.view.View.OnClickListener;
+import android.widget.EditText;
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter.Listener.Action;
@@ -42,7 +40,7 @@
/**
* Adapter for the action bar at the top of the Contacts activity.
*/
-public class ActionBarAdapter implements OnQueryTextListener, OnCloseListener {
+public class ActionBarAdapter implements OnCloseListener {
public interface Listener {
public abstract class Action {
@@ -58,6 +56,8 @@
* {@link #getCurrentTab}.
*/
void onSelectedTabChanged();
+
+ void onUpButtonPressed();
}
private static final String EXTRA_KEY_SEARCH_MODE = "navBar.searchMode";
@@ -69,7 +69,8 @@
private boolean mSearchMode;
private String mQueryString;
- private SearchView mSearchView;
+ private EditText mSearchView;
+ private View mSearchContainer;
private final Context mContext;
private final SharedPreferences mPrefs;
@@ -79,52 +80,20 @@
private final ActionBar mActionBar;
private final int mActionBarNavigationMode;
private final MyTabListener mTabListener;
- private final MyNavigationListener mNavigationListener;
private boolean mShowHomeIcon;
- private boolean mShowTabsAsText;
public interface TabState {
public static int FAVORITES = 0;
public static int ALL = 1;
- public static int GROUPS = 2;
- public static int COUNT = 3;
+ public static int COUNT = 2;
public static int DEFAULT = ALL;
}
private int mCurrentTab = TabState.DEFAULT;
- /**
- * Extension of ArrayAdapter to be used for the action bar navigation drop list. It is not
- * possible to change the text appearance of a text item that is in the spinner header or
- * in the drop down list using a selector xml file. The only way to differentiate the two
- * is if the view is gotten via {@link #getView(int, View, ViewGroup)} or
- * {@link #getDropDownView(int, View, ViewGroup)}.
- */
- private class CustomArrayAdapter extends ArrayAdapter<String> {
-
- public CustomArrayAdapter(Context context, int textResId) {
- super(context, textResId);
- }
-
- public View getView (int position, View convertView, ViewGroup parent) {
- TextView textView = (TextView) super.getView(position, convertView, parent);
- textView.setTextAppearance(mContext,
- R.style.PeopleNavigationDropDownHeaderTextAppearance);
- return textView;
- }
-
- public View getDropDownView (int position, View convertView, ViewGroup parent) {
- TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
- textView.setTextAppearance(mContext,
- R.style.PeopleNavigationDropDownTextAppearance);
- return textView;
- }
- }
-
- public ActionBarAdapter(Context context, Listener listener, ActionBar actionBar,
- boolean isUsingTwoPanes) {
+ public ActionBarAdapter(Context context, Listener listener, ActionBar actionBar) {
mContext = context;
mListener = listener;
mActionBar = actionBar;
@@ -132,99 +101,43 @@
mShowHomeIcon = mContext.getResources().getBoolean(R.bool.show_home_icon);
- // On wide screens, show the tabs as text (instead of icons)
- mShowTabsAsText = isUsingTwoPanes;
- if (isUsingTwoPanes) {
- mActionBarNavigationMode = ActionBar.NAVIGATION_MODE_LIST;
- mTabListener = null;
- mNavigationListener = new MyNavigationListener();
- } else {
- mActionBarNavigationMode = ActionBar.NAVIGATION_MODE_TABS;
- mTabListener = new MyTabListener();
- mNavigationListener = null;
- }
+ mActionBarNavigationMode = ActionBar.NAVIGATION_MODE_TABS;
+ mTabListener = new MyTabListener();
- // Set up search view.
- View customSearchView = LayoutInflater.from(mActionBar.getThemedContext()).inflate(
- R.layout.custom_action_bar, null);
- int searchViewWidth = mContext.getResources().getDimensionPixelSize(
- R.dimen.search_view_width);
- if (searchViewWidth == 0) {
- searchViewWidth = LayoutParams.MATCH_PARENT;
- }
- LayoutParams layoutParams = new LayoutParams(searchViewWidth, LayoutParams.WRAP_CONTENT);
- mSearchView = (SearchView) customSearchView.findViewById(R.id.search_view);
- // Since the {@link SearchView} in this app is "click-to-expand", set the below mode on the
- // {@link SearchView} so that the magnifying glass icon appears inside the editable text
- // field. (In the "click-to-expand" search pattern, the user must explicitly expand the
- // search field and already knows a search is being conducted, so the icon is redundant
- // and can go away once the user starts typing.)
- mSearchView.setIconifiedByDefault(true);
- mSearchView.setQueryHint(mContext.getString(R.string.hint_findContacts));
- mSearchView.setOnQueryTextListener(this);
- mSearchView.setOnCloseListener(this);
- mSearchView.setQuery(mQueryString, false);
- mActionBar.setCustomView(customSearchView, layoutParams);
-
- // Set up tabs or navigation list
- switch(mActionBarNavigationMode) {
- case ActionBar.NAVIGATION_MODE_TABS:
- setupTabs();
- break;
- case ActionBar.NAVIGATION_MODE_LIST:
- setupNavigationList();
- break;
- }
+ setupSearchView();
+ setupTabs();
}
private void setupTabs() {
- addTab(TabState.FAVORITES, R.drawable.ic_tab_starred, R.string.contactsFavoritesLabel);
- addTab(TabState.ALL, R.drawable.ic_tab_all, R.string.contactsAllLabel);
- addTab(TabState.GROUPS, R.drawable.ic_tab_groups, R.string.contactsGroupsLabel);
+ addTab(TabState.FAVORITES, R.string.favorites_tab_label);
+ addTab(TabState.ALL, R.string.all_contacts_tab_label);
}
- private void setupNavigationList() {
- ArrayAdapter<String> navAdapter = new CustomArrayAdapter(mContext,
- R.layout.people_navigation_item);
- navAdapter.add(mContext.getString(R.string.contactsFavoritesLabel));
- navAdapter.add(mContext.getString(R.string.contactsAllLabel));
- navAdapter.add(mContext.getString(R.string.contactsGroupsLabel));
- mActionBar.setListNavigationCallbacks(navAdapter, mNavigationListener);
- }
-
- /**
- * Because the navigation list items are in a different order than tab items, this returns
- * the appropriate tab from the navigation item position.
- */
- private int getTabPositionFromNavigationItemPosition(int navItemPos) {
- switch(navItemPos) {
- case 0:
- return TabState.FAVORITES;
- case 1:
- return TabState.ALL;
- case 2:
- return TabState.GROUPS;
- }
- throw new IllegalArgumentException(
- "Parameter must be between 0 and " + Integer.toString(TabState.COUNT-1)
- + " inclusive.");
- }
-
- /**
- * This is the inverse of {@link getTabPositionFromNavigationItemPosition}.
- */
- private int getNavigationItemPositionFromTabPosition(int tabPos) {
- switch(tabPos) {
- case TabState.FAVORITES:
- return 0;
- case TabState.ALL:
- return 1;
- case TabState.GROUPS:
- return 2;
- }
- throw new IllegalArgumentException(
- "Parameter must be between 0 and " + Integer.toString(TabState.COUNT-1)
- + " inclusive.");
+ private void setupSearchView() {
+ mActionBar.setCustomView(R.layout.search_bar_expanded);
+ mSearchContainer = mActionBar.getCustomView();
+ mSearchContainer.setBackgroundColor(mContext.getResources().getColor(
+ R.color.searchbox_background_color));
+ mSearchView = (EditText) mSearchContainer.findViewById(R.id.search_view);
+ mSearchView.setHint(mContext.getString(R.string.hint_findContacts));
+ mSearchView.addTextChangedListener(new SearchTextWatcher());
+ mSearchContainer.findViewById(R.id.search_close_button).setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mSearchView.setText(null);
+ }
+ });
+ mSearchContainer.findViewById(R.id.search_back_button).setOnClickListener(
+ new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mListener != null) {
+ mListener.onUpButtonPressed();
+ }
+ }
+ });
+ mActionBar.setCustomView(mSearchContainer);
}
public void initialize(Bundle savedState, ContactsRequest request) {
@@ -245,7 +158,7 @@
}
// Show tabs or the expanded {@link SearchView}, depending on whether or not we are in
// search mode.
- update();
+ update(true /* skipAnimation */);
// Expanding the {@link SearchView} clears the query, so set the query from the
// {@link ContactsRequest} after it has been expanded, if applicable.
if (mSearchMode && !TextUtils.isEmpty(mQueryString)) {
@@ -257,15 +170,10 @@
mListener = listener;
}
- private void addTab(int expectedTabIndex, int icon, int description) {
+ private void addTab(int expectedTabIndex, int description) {
final Tab tab = mActionBar.newTab();
tab.setTabListener(mTabListener);
- if (mShowTabsAsText) {
- tab.setText(description);
- } else {
- tab.setIcon(icon);
- tab.setContentDescription(description);
- }
+ tab.setText(description);
mActionBar.addTab(tab);
if (expectedTabIndex != tab.getPosition()) {
throw new IllegalStateException("Tabs must be created in the right order");
@@ -290,15 +198,28 @@
}
}
- private class MyNavigationListener implements ActionBar.OnNavigationListener {
- public boolean mIgnoreNavigationItemSelected;
+ private class SearchTextWatcher implements TextWatcher {
- public boolean onNavigationItemSelected(int itemPosition, long itemId) {
- if (!mIgnoreNavigationItemSelected) {
- setCurrentTab(getTabPositionFromNavigationItemPosition(itemPosition));
+ @Override
+ public void onTextChanged(CharSequence queryString, int start, int before, int count) {
+ if (queryString.equals(mQueryString)) {
+ return;
}
- return true;
+ mQueryString = queryString.toString();
+ if (!mSearchMode) {
+ if (!TextUtils.isEmpty(queryString)) {
+ setSearchMode(true);
+ }
+ } else if (mListener != null) {
+ mListener.onAction(Action.CHANGE_SEARCH_QUERY);
+ }
}
+
+ @Override
+ public void afterTextChanged(Editable s) {}
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
}
/**
@@ -318,19 +239,8 @@
mCurrentTab = tab;
final int actionBarSelectedNavIndex = mActionBar.getSelectedNavigationIndex();
- switch(mActionBar.getNavigationMode()) {
- case ActionBar.NAVIGATION_MODE_TABS:
- if (mCurrentTab != actionBarSelectedNavIndex) {
- mActionBar.setSelectedNavigationItem(mCurrentTab);
- }
- break;
- case ActionBar.NAVIGATION_MODE_LIST:
- if (mCurrentTab != getTabPositionFromNavigationItemPosition(
- actionBarSelectedNavIndex)) {
- mActionBar.setSelectedNavigationItem(
- getNavigationItemPositionFromTabPosition(mCurrentTab));
- }
- break;
+ if (mCurrentTab != actionBarSelectedNavIndex) {
+ mActionBar.setSelectedNavigationItem(mCurrentTab);
}
if (notifyListener && mListener != null) mListener.onSelectedTabChanged();
@@ -354,14 +264,14 @@
public void setSearchMode(boolean flag) {
if (mSearchMode != flag) {
mSearchMode = flag;
- update();
+ update(false /* skipAnimation */);
if (mSearchView == null) {
return;
}
if (mSearchMode) {
setFocusOnSearchView();
} else {
- mSearchView.setQuery(null, false);
+ mSearchView.setText(null);
}
} else if (flag) {
// Everything is already set up. Still make sure the keyboard is up
@@ -376,7 +286,7 @@
public void setQueryString(String query) {
mQueryString = query;
if (mSearchView != null) {
- mSearchView.setQuery(query, false);
+ mSearchView.setText(query);
}
}
@@ -395,16 +305,14 @@
// Build the new flags...
int newFlags = 0;
- newFlags |= ActionBar.DISPLAY_SHOW_TITLE;
- if (mShowHomeIcon) {
+ if (mShowHomeIcon && !mSearchMode) {
newFlags |= ActionBar.DISPLAY_SHOW_HOME;
}
if (mSearchMode) {
- newFlags |= ActionBar.DISPLAY_SHOW_HOME;
- newFlags |= ActionBar.DISPLAY_HOME_AS_UP;
newFlags |= ActionBar.DISPLAY_SHOW_CUSTOM;
+ } else {
+ newFlags |= ActionBar.DISPLAY_SHOW_TITLE;
}
- mActionBar.setHomeButtonEnabled(mSearchMode);
if (current != newFlags) {
// Pass the mask here to preserve other flags that we're not interested here.
@@ -412,18 +320,48 @@
}
}
- private void update() {
- boolean isIconifiedChanging = mSearchView.isIconified() == mSearchMode;
+ private void update(boolean skipAnimation) {
+ final boolean isIconifiedChanging
+ = (mSearchContainer.getVisibility() == View.VISIBLE) != mSearchMode;
+ if (isIconifiedChanging && !skipAnimation) {
+ if (mSearchMode) {
+ mSearchContainer.setVisibility(View.VISIBLE);
+ mSearchContainer.setAlpha(0);
+ mSearchContainer.animate().alpha(1);
+ updateDisplayOptionsAndNavigationMode(isIconifiedChanging);
+ } else {
+ mSearchContainer.setAlpha(1);
+ mSearchContainer.animate().alpha(0).withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ updateDisplayOptions();
+ mSearchContainer.setVisibility(View.GONE);
+ updateDisplayOptionsAndNavigationMode(isIconifiedChanging);
+ }
+ });
+ }
+ return;
+ }
+ if (isIconifiedChanging && skipAnimation) {
+ if (mSearchMode) {
+ mSearchContainer.setVisibility(View.VISIBLE);
+ } else {
+ mSearchContainer.setVisibility(View.GONE);
+ }
+ }
+ updateDisplayOptionsAndNavigationMode(isIconifiedChanging);
+ }
+
+ private void updateDisplayOptionsAndNavigationMode(boolean isIconifiedChanging) {
if (mSearchMode) {
setFocusOnSearchView();
// Since we have the {@link SearchView} in a custom action bar, we must manually handle
// expanding the {@link SearchView} when a search is initiated. Note that a side effect
// of this method is that the {@link SearchView} query text is set to empty string.
if (isIconifiedChanging) {
- final CharSequence queryText = mSearchView.getQuery();
- mSearchView.onActionViewExpanded();
+ final CharSequence queryText = mSearchView.getText();
if (!TextUtils.isEmpty(queryText)) {
- mSearchView.setQuery(queryText, false);
+ mSearchView.setText(queryText);
}
}
if (mActionBar.getNavigationMode() != ActionBar.NAVIGATION_MODE_STANDARD) {
@@ -448,19 +386,6 @@
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mActionBar.setSelectedNavigationItem(mCurrentTab);
mTabListener.mIgnoreTabSelected = false;
- } else if (mActionBarNavigationMode == ActionBar.NAVIGATION_MODE_LIST
- && currentNavigationMode != ActionBar.NAVIGATION_MODE_LIST) {
- mNavigationListener.mIgnoreNavigationItemSelected = true;
- mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
- mActionBar.setSelectedNavigationItem(
- getNavigationItemPositionFromTabPosition(mCurrentTab));
- mNavigationListener.mIgnoreNavigationItemSelected = false;
- }
- mActionBar.setTitle(null);
- // Since we have the {@link SearchView} in a custom action bar, we must manually handle
- // collapsing the {@link SearchView} when search mode is exited.
- if (isIconifiedChanging) {
- mSearchView.onActionViewCollapsed();
}
if (mListener != null) {
mListener.onAction(Action.STOP_SEARCH_MODE);
@@ -471,41 +396,6 @@
}
@Override
- public boolean onQueryTextChange(String queryString) {
- // TODO: Clean up SearchView code because it keeps setting the SearchView query,
- // invoking onQueryChanged, setting up the fragment again, invalidating the options menu,
- // storing the SearchView again, and etc... unless we add in the early return statements.
- if (queryString.equals(mQueryString)) {
- return false;
- }
- mQueryString = queryString;
- if (!mSearchMode) {
- if (!TextUtils.isEmpty(queryString)) {
- setSearchMode(true);
- }
- } else if (mListener != null) {
- mListener.onAction(Action.CHANGE_SEARCH_QUERY);
- }
-
- return true;
- }
-
- @Override
- public boolean onQueryTextSubmit(String query) {
- // When the search is "committed" by the user, then hide the keyboard so the user can
- // more easily browse the list of results.
- if (mSearchView != null) {
- InputMethodManager imm = (InputMethodManager) mContext.getSystemService(
- Context.INPUT_METHOD_SERVICE);
- if (imm != null) {
- imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
- }
- mSearchView.clearFocus();
- }
- return true;
- }
-
- @Override
public boolean onClose() {
setSearchMode(false);
return false;
@@ -531,7 +421,15 @@
public void setFocusOnSearchView() {
mSearchView.requestFocus();
- mSearchView.setIconified(false); // Workaround for the "IME not popping up" issue.
+ showInputMethod(mSearchView); // Workaround for the "IME not popping up" issue.
+ }
+
+ private void showInputMethod(View view) {
+ final InputMethodManager imm = (InputMethodManager) mContext.getSystemService(
+ Context.INPUT_METHOD_SERVICE);
+ if (imm != null) {
+ imm.showSoftInput(view, 0);
+ }
}
private void saveLastTabPreference(int tab) {
diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index 25c23e0..4c4d4dc 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -16,6 +16,7 @@
package com.android.contacts.activities;
+import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.Loader;
@@ -30,9 +31,11 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.DisplayPhoto;
import android.util.Log;
+import android.widget.Toast;
import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsActivity;
+import com.android.contacts.R;
import com.android.contacts.common.model.Contact;
import com.android.contacts.common.model.ContactLoader;
import com.android.contacts.common.model.RawContactDelta;
@@ -152,7 +155,12 @@
ContactPhotoUtils.addPhotoPickerExtras(intent, mCroppedPhotoUri);
ContactPhotoUtils.addCropExtras(intent, mPhotoDim != 0 ? mPhotoDim : mDefaultPhotoDim);
- startActivityForResult(intent, REQUEST_CROP_PHOTO);
+ try {
+ startActivityForResult(intent, REQUEST_CROP_PHOTO);
+ } catch (ActivityNotFoundException ex) {
+ Toast.makeText(this, R.string.missing_app, Toast.LENGTH_SHORT).show();
+ return;
+ }
mContactUri = result.getData();
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index e613ec1..e3fa7e2 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -746,7 +746,8 @@
private void setDefaultContactImage(String displayName, String lookupKey) {
mPhotoView.setImageDrawable(ContactPhotoManager.getDefaultAvatarDrawableForContact(
- getResources(), false, new DefaultImageRequest(displayName, lookupKey)));
+ getResources(), false,
+ new DefaultImageRequest(displayName, lookupKey, false /* isCircular */)));
}
/**
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index a4e0470..c984b7a 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -66,35 +66,11 @@
@Override
protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
- if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
- // This activity must not be shown. We have to select the contact in the
- // PeopleActivity instead ==> Create a forward intent and finish
- final Intent originalIntent = getIntent();
- Intent intent = new Intent();
- intent.setAction(originalIntent.getAction());
- intent.setDataAndType(originalIntent.getData(), originalIntent.getType());
-
- // If we are launched from the outside, we should create a new task, because the user
- // can freely navigate the app (this is different from phones, where only the UP button
- // kicks the user into the full app)
- if (shouldUpRecreateTask(intent)) {
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- } else {
- intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS |
- Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_SINGLE_TOP |
- Intent.FLAG_ACTIVITY_CLEAR_TOP);
- }
- intent.setClass(this, PeopleActivity.class);
- startActivity(intent);
- finish();
- return;
- }
setContentView(R.layout.contact_detail_activity);
mContactDetailLayoutController = new ContactDetailLayoutController(this, savedState,
- getFragmentManager(), null, findViewById(R.id.contact_detail_container),
- mContactDetailFragmentListener);
+ getFragmentManager(), null, mContactDetailFragmentListener);
// We want the UP affordance but no app icon.
// Setting HOME_AS_UP, SHOW_TITLE and clearing SHOW_HOME does the trick.
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index d12da85..d47449d 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -39,6 +39,7 @@
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.util.DialogManager;
import java.util.ArrayList;
@@ -156,6 +157,12 @@
private final ContactEditorFragment.Listener mFragmentListener =
new ContactEditorFragment.Listener() {
+
+ @Override
+ public void onDeleteRequested(Uri contactUri) {
+ ContactDeletionInteraction.start(ContactEditorActivity.this, contactUri, true);
+ }
+
@Override
public void onReverted() {
finish();
diff --git a/src/com/android/contacts/activities/GroupEditorActivity.java b/src/com/android/contacts/activities/GroupEditorActivity.java
index ff9301b..b204418 100644
--- a/src/com/android/contacts/activities/GroupEditorActivity.java
+++ b/src/com/android/contacts/activities/GroupEditorActivity.java
@@ -145,20 +145,13 @@
@Override
public void onSaveFinished(int resultCode, Intent resultIntent) {
- // TODO: Collapse these 2 cases into 1 that will just launch an intent with the VIEW
- // action to see the group URI (when group URIs are supported)
- // For a 2-pane screen, set the activity result, so the original activity (that launched
- // the editor) can display the group detail page
- if (PhoneCapabilityTester.isUsingTwoPanes(GroupEditorActivity.this)) {
- setResult(resultCode, resultIntent);
- } else if (resultIntent != null) {
- // For a 1-pane screen, launch the group detail page
+ if (resultIntent != null) {
Intent intent = new Intent(GroupEditorActivity.this, GroupDetailActivity.class);
intent.setData(resultIntent.getData());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
+ finish();
}
- finish();
}
};
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index bfcd79e..db20540 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -19,13 +19,10 @@
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
-import android.content.ActivityNotFoundException;
-import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
import android.os.Parcelable;
import android.os.UserManager;
import android.preference.PreferenceActivity;
@@ -44,33 +41,21 @@
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Toast;
+import android.widget.ImageButton;
-import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
import com.android.contacts.activities.ActionBarAdapter.TabState;
-import com.android.contacts.detail.ContactDetailFragment;
-import com.android.contacts.detail.ContactDetailLayoutController;
-import com.android.contacts.detail.ContactDetailUpdatesFragment;
-import com.android.contacts.detail.ContactLoaderFragment;
-import com.android.contacts.detail.ContactLoaderFragment.ContactLoaderFragmentListener;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.dialog.ClearFrequentsDialog;
-import com.android.contacts.group.GroupBrowseListFragment;
-import com.android.contacts.group.GroupBrowseListFragment.OnGroupBrowserActionListener;
-import com.android.contacts.group.GroupDetailFragment;
import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.common.interactions.ImportExportDialogFragment;
-import com.android.contacts.list.ContactBrowseListFragment;
import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.ContactListFilterController;
import com.android.contacts.common.list.ContactTileAdapter.DisplayType;
-import com.android.contacts.list.ContactTileFrequentFragment;
import com.android.contacts.list.ContactTileListFragment;
import com.android.contacts.list.ContactsIntentResolver;
import com.android.contacts.list.ContactsRequest;
@@ -81,44 +66,36 @@
import com.android.contacts.list.OnContactsUnavailableActionListener;
import com.android.contacts.list.ProviderStatusWatcher;
import com.android.contacts.list.ProviderStatusWatcher.ProviderStatusListener;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.preference.ContactsPreferenceActivity;
import com.android.contacts.preference.DisplayOptionsPreferenceFragment;
import com.android.contacts.common.util.AccountFilterUtil;
+import com.android.contacts.common.util.ViewUtil;
+import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contacts.util.AccountPromptUtils;
import com.android.contacts.common.util.Constants;
import com.android.contacts.util.DialogManager;
import com.android.contacts.util.HelpUtils;
-import com.android.contacts.util.PhoneCapabilityTester;
-import com.android.contacts.common.util.UriUtils;
-import com.android.contacts.widget.TransitionAnimationView;
-import java.util.ArrayList;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
/**
- * Displays a list to browse contacts. For xlarge screens, this also displays a detail-pane on
- * the right.
+ * Displays a list to browse contacts.
*/
-public class PeopleActivity extends ContactsActivity
- implements View.OnCreateContextMenuListener, ActionBarAdapter.Listener,
+public class PeopleActivity extends ContactsActivity implements
+ View.OnCreateContextMenuListener,
+ View.OnClickListener,
+ ActionBarAdapter.Listener,
DialogManager.DialogShowingViewActivity,
- ContactListFilterController.ContactListFilterListener, ProviderStatusListener {
+ ContactListFilterController.ContactListFilterListener,
+ ProviderStatusListener {
private static final String TAG = "PeopleActivity";
- private static final int TAB_FADE_IN_DURATION = 500;
-
private static final String ENABLE_DEBUG_OPTIONS_HIDDEN_CODE = "debug debug!";
// These values needs to start at 2. See {@link ContactEntryListFragment}.
- private static final int SUBACTIVITY_NEW_CONTACT = 2;
- private static final int SUBACTIVITY_EDIT_CONTACT = 3;
- private static final int SUBACTIVITY_NEW_GROUP = 4;
- private static final int SUBACTIVITY_EDIT_GROUP = 5;
- private static final int SUBACTIVITY_ACCOUNT_FILTER = 6;
+ private static final int SUBACTIVITY_ACCOUNT_FILTER = 2;
private final DialogManager mDialogManager = new DialogManager(this);
@@ -127,16 +104,6 @@
private ActionBarAdapter mActionBarAdapter;
- private ContactDetailFragment mContactDetailFragment;
-
- private ContactLoaderFragment mContactDetailLoaderFragment;
- private final ContactDetailLoaderFragmentListener mContactDetailLoaderFragmentListener =
- new ContactDetailLoaderFragmentListener();
-
- private GroupDetailFragment mGroupDetailFragment;
- private final GroupDetailFragmentListener mGroupDetailFragmentListener =
- new GroupDetailFragmentListener();
-
private ContactTileListFragment.Listener mFavoritesFragmentListener =
new StrequentContactListFragmentListener();
@@ -153,26 +120,14 @@
*/
private DefaultContactBrowseListFragment mAllFragment;
private ContactTileListFragment mFavoritesFragment;
- private ContactTileFrequentFragment mFrequentFragment;
- private GroupBrowseListFragment mGroupsFragment;
- private View mFavoritesView;
- private View mBrowserView;
- private TransitionAnimationView mPeopleActivityView;
- private TransitionAnimationView mContactDetailsView;
- private TransitionAnimationView mGroupDetailsView;
-
- /** ViewPager for swipe, used only on the phone (i.e. one-pane mode) */
+ /** ViewPager for swipe */
private ViewPager mTabPager;
private TabPagerAdapter mTabPagerAdapter;
private final TabPagerListener mTabPagerListener = new TabPagerListener();
- private ContactDetailLayoutController mContactDetailLayoutController;
-
private boolean mEnableDebugMenuOptions;
- private final Handler mHandler = new Handler();
-
/**
* True if this activity instance is a re-created one. i.e. set true after orientation change.
* This is set in {@link #onCreate} for later use in {@link #onStart}.
@@ -188,14 +143,6 @@
private boolean mFragmentInitialized;
/**
- * Whether or not the current contact filter is valid or not. We need to do a check on
- * start of the app to verify that the user is not in single contact mode. If so, we should
- * dynamically change the filter, unless the incoming intent specifically requested a contact
- * that should be displayed in that mode.
- */
- private boolean mCurrentFilterIsValid;
-
- /**
* This is to disable {@link #onOptionsItemSelected} when we trying to stop the activity.
*/
private boolean mDisableOptionItemSelected;
@@ -235,18 +182,14 @@
* For the fragments that are in the layout, we initialize them in
* {@link #createViewsAndFragments(Bundle)} after inflating the layout.
*
- * However, there are special fragments which may not be in the layout, so we have to do the
- * initialization here.
- * The target fragments are:
- * - {@link ContactDetailFragment} and {@link ContactDetailUpdatesFragment}: They may not be
- * in the layout depending on the configuration. (i.e. portrait)
- * - {@link ContactsUnavailableFragment}: We always create it at runtime.
+ * However, the {@link ContactsUnavailableFragment} is a special fragment which may not
+ * be in the layout, so we have to do the initialization here.
+ *
+ * The ContactsUnavailableFragment is always created at runtime.
*/
@Override
public void onAttachFragment(Fragment fragment) {
- if (fragment instanceof ContactDetailFragment) {
- mContactDetailFragment = (ContactDetailFragment) fragment;
- } else if (fragment instanceof ContactsUnavailableFragment) {
+ if (fragment instanceof ContactsUnavailableFragment) {
mContactsUnavailableFragment = (ContactsUnavailableFragment)fragment;
mContactsUnavailableFragment.setOnContactsUnavailableActionListener(
new ContactsUnavailableFragmentListener());
@@ -272,7 +215,7 @@
mIsRecreatedInstance = (savedState != null);
createViewsAndFragments(savedState);
- getWindow().setBackgroundDrawableResource(R.color.background_primary);
+
if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate finish");
}
@@ -288,7 +231,6 @@
mActionBarAdapter.initialize(null, mRequest);
mContactListFilterController.checkFilterValidity(false);
- mCurrentFilterIsValid = true;
// Re-configure fragments.
configureFragments(true /* from request */);
@@ -323,8 +265,7 @@
return false;
}
- if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT
- && !PhoneCapabilityTester.isUsingTwoPanes(this)) {
+ if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT) {
redirect = new Intent(this, ContactDetailActivity.class);
redirect.setAction(Intent.ACTION_VIEW);
redirect.setData(mRequest.getContactUri());
@@ -342,112 +283,59 @@
// Hide all tabs (the current tab will later be reshown once a tab is selected)
final FragmentTransaction transaction = fragmentManager.beginTransaction();
- // Prepare the fragments which are used both on 1-pane and on 2-pane.
- final boolean isUsingTwoPanes = PhoneCapabilityTester.isUsingTwoPanes(this);
- if (isUsingTwoPanes) {
- mFavoritesFragment = getFragment(R.id.favorites_fragment);
- mAllFragment = getFragment(R.id.all_fragment);
- mGroupsFragment = getFragment(R.id.groups_fragment);
- } else {
- mTabPager = getView(R.id.tab_pager);
- mTabPagerAdapter = new TabPagerAdapter();
- mTabPager.setAdapter(mTabPagerAdapter);
- mTabPager.setOnPageChangeListener(mTabPagerListener);
+ mTabPager = getView(R.id.tab_pager);
+ mTabPagerAdapter = new TabPagerAdapter();
+ mTabPager.setAdapter(mTabPagerAdapter);
+ mTabPager.setOnPageChangeListener(mTabPagerListener);
- final String FAVORITE_TAG = "tab-pager-favorite";
- final String ALL_TAG = "tab-pager-all";
- final String GROUPS_TAG = "tab-pager-groups";
+ final String FAVORITE_TAG = "tab-pager-favorite";
+ final String ALL_TAG = "tab-pager-all";
- // Create the fragments and add as children of the view pager.
- // The pager adapter will only change the visibility; it'll never create/destroy
- // fragments.
- // However, if it's after screen rotation, the fragments have been re-created by
- // the fragment manager, so first see if there're already the target fragments
- // existing.
- mFavoritesFragment = (ContactTileListFragment)
- fragmentManager.findFragmentByTag(FAVORITE_TAG);
- mAllFragment = (DefaultContactBrowseListFragment)
- fragmentManager.findFragmentByTag(ALL_TAG);
- mGroupsFragment = (GroupBrowseListFragment)
- fragmentManager.findFragmentByTag(GROUPS_TAG);
+ // Create the fragments and add as children of the view pager.
+ // The pager adapter will only change the visibility; it'll never create/destroy
+ // fragments.
+ // However, if it's after screen rotation, the fragments have been re-created by
+ // the fragment manager, so first see if there're already the target fragments
+ // existing.
+ mFavoritesFragment = (ContactTileListFragment)
+ fragmentManager.findFragmentByTag(FAVORITE_TAG);
+ mAllFragment = (DefaultContactBrowseListFragment)
+ fragmentManager.findFragmentByTag(ALL_TAG);
- if (mFavoritesFragment == null) {
- mFavoritesFragment = new ContactTileListFragment();
- mAllFragment = new DefaultContactBrowseListFragment();
- mGroupsFragment = new GroupBrowseListFragment();
+ if (mFavoritesFragment == null) {
+ mFavoritesFragment = new ContactTileListFragment();
+ mAllFragment = new DefaultContactBrowseListFragment();
- transaction.add(R.id.tab_pager, mFavoritesFragment, FAVORITE_TAG);
- transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
- transaction.add(R.id.tab_pager, mGroupsFragment, GROUPS_TAG);
- }
+ transaction.add(R.id.tab_pager, mFavoritesFragment, FAVORITE_TAG);
+ transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
}
mFavoritesFragment.setListener(mFavoritesFragmentListener);
mAllFragment.setOnContactListActionListener(new ContactBrowserActionListener());
- mGroupsFragment.setListener(new GroupBrowserActionListener());
-
// Hide all fragments for now. We adjust visibility when we get onSelectedTabChanged()
// from ActionBarAdapter.
transaction.hide(mFavoritesFragment);
transaction.hide(mAllFragment);
- transaction.hide(mGroupsFragment);
- if (isUsingTwoPanes) {
- // Prepare 2-pane only fragments/views...
-
- // Container views for fragments
- mPeopleActivityView = getView(R.id.people_view);
- mFavoritesView = getView(R.id.favorites_view);
- mContactDetailsView = getView(R.id.contact_details_view);
- mGroupDetailsView = getView(R.id.group_details_view);
- mBrowserView = getView(R.id.browse_view);
-
- // Only favorites tab with two panes has a separate frequent fragment
- if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
- mFrequentFragment = getFragment(R.id.frequent_fragment);
- mFrequentFragment.setListener(mFavoritesFragmentListener);
- mFrequentFragment.setDisplayType(DisplayType.FREQUENT_ONLY);
- mFrequentFragment.enableQuickContact(true);
- }
-
- mContactDetailLoaderFragment = getFragment(R.id.contact_detail_loader_fragment);
- mContactDetailLoaderFragment.setListener(mContactDetailLoaderFragmentListener);
-
- mGroupDetailFragment = getFragment(R.id.group_detail_fragment);
- mGroupDetailFragment.setListener(mGroupDetailFragmentListener);
- mGroupDetailFragment.setQuickContact(true);
-
- if (mContactDetailFragment != null) {
- transaction.hide(mContactDetailFragment);
- }
- transaction.hide(mGroupDetailFragment);
-
- // Configure contact details
- mContactDetailLayoutController = new ContactDetailLayoutController(this, savedState,
- getFragmentManager(), mContactDetailsView,
- findViewById(R.id.contact_detail_container),
- new ContactDetailFragmentListener());
- }
transaction.commitAllowingStateLoss();
fragmentManager.executePendingTransactions();
// Setting Properties after fragment is created
- if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
- mFavoritesFragment.enableQuickContact(true);
- mFavoritesFragment.setDisplayType(DisplayType.STARRED_ONLY);
- } else {
- // For 2-pane in All and Groups but not in Favorites fragment, show the chevron
- // for quick contact popup
- mFavoritesFragment.enableQuickContact(isUsingTwoPanes);
- mFavoritesFragment.setDisplayType(DisplayType.STREQUENT);
- }
+ mFavoritesFragment.setDisplayType(DisplayType.STREQUENT);
// Configure action bar
- mActionBarAdapter = new ActionBarAdapter(this, this, getActionBar(), isUsingTwoPanes);
+ mActionBarAdapter = new ActionBarAdapter(this, this, getActionBar());
mActionBarAdapter.initialize(savedState, mRequest);
+ // Configure action button
+ final View floatingActionButtonContainer = findViewById(
+ R.id.floating_action_button_container);
+ ViewUtil.setupFloatingActionButton(floatingActionButtonContainer, getResources());
+ final ImageButton floatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
+ floatingActionButton.setOnClickListener(this);
+
invalidateOptionsMenuIfNeeded();
}
@@ -471,19 +359,6 @@
* (so the argument.)
*/
configureFragments(!mIsRecreatedInstance);
- } else if (PhoneCapabilityTester.isUsingTwoPanes(this) && !mCurrentFilterIsValid) {
- // We only want to do the filter check in onStart for wide screen devices where it
- // is often possible to get into single contact mode. Only do this check if
- // the filter hasn't already been set properly (i.e. onCreate or onActivityResult).
-
- // Since there is only one {@link ContactListFilterController} across multiple
- // activity instances, make sure the filter controller is in sync withthe current
- // contact list fragment filter.
- // TODO: Clean this up. Perhaps change {@link ContactListFilterController} to not be a
- // singleton?
- mContactListFilterController.setContactListFilter(mAllFragment.getFilter(), true);
- mContactListFilterController.checkFilterValidity(true);
- mCurrentFilterIsValid = true;
}
super.onStart();
}
@@ -517,7 +392,6 @@
@Override
protected void onStop() {
super.onStop();
- mCurrentFilterIsValid = false;
}
@Override
@@ -560,18 +434,8 @@
tabToOpen = TabState.FAVORITES;
break;
case ContactsRequest.ACTION_VIEW_CONTACT:
- // We redirect this intent to the detail activity on 1-pane, so we don't get
- // here. It's only for 2-pane.
- Uri currentlyLoadedContactUri = mContactDetailFragment.getUri();
- if (currentlyLoadedContactUri != null
- && !mRequest.getContactUri().equals(currentlyLoadedContactUri)) {
- mContactDetailsView.setMaskVisibility(true);
- }
tabToOpen = TabState.ALL;
break;
- case ContactsRequest.ACTION_GROUP:
- tabToOpen = TabState.GROUPS;
- break;
default:
tabToOpen = -1;
break;
@@ -594,7 +458,6 @@
}
configureContactListFragment();
- configureGroupListFragment();
invalidateOptionsMenuIfNeeded();
}
@@ -610,21 +473,6 @@
invalidateOptionsMenuIfNeeded();
}
- private void setupContactDetailFragment(final Uri contactLookupUri) {
- mContactDetailLoaderFragment.loadUri(contactLookupUri);
- invalidateOptionsMenuIfNeeded();
- }
-
- private void setupGroupDetailFragment(Uri groupUri) {
- // If we are switching from one group to another, do a cross-fade
- if (mGroupDetailFragment != null && mGroupDetailFragment.getGroupUri() != null &&
- !UriUtils.areEqual(mGroupDetailFragment.getGroupUri(), groupUri)) {
- mGroupDetailsView.startMaskTransition(false, -1);
- }
- mGroupDetailFragment.loadGroup(groupUri);
- invalidateOptionsMenuIfNeeded();
- }
-
/**
* Handler for action bar actions.
*/
@@ -658,6 +506,11 @@
updateFragmentsVisibility();
}
+ @Override
+ public void onUpButtonPressed() {
+ onBackPressed();
+ }
+
private void updateDebugOptionsVisibility(boolean visible) {
if (mEnableDebugMenuOptions != visible) {
mEnableDebugMenuOptions = visible;
@@ -672,96 +525,17 @@
private void updateFragmentsVisibility() {
int tab = mActionBarAdapter.getCurrentTab();
- // We use ViewPager on 1-pane.
- if (!PhoneCapabilityTester.isUsingTwoPanes(this)) {
- if (mActionBarAdapter.isSearchMode()) {
- mTabPagerAdapter.setSearchMode(true);
- } else {
- // No smooth scrolling if quitting from the search mode.
- final boolean wasSearchMode = mTabPagerAdapter.isSearchMode();
- mTabPagerAdapter.setSearchMode(false);
- if (mTabPager.getCurrentItem() != tab) {
- mTabPager.setCurrentItem(tab, !wasSearchMode);
- }
- }
- invalidateOptionsMenu();
- showEmptyStateForTab(tab);
- if (tab == TabState.GROUPS) {
- mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
- }
- return;
- }
-
- // for the tablet...
-
- // If in search mode, we use the all list + contact details to show the result.
if (mActionBarAdapter.isSearchMode()) {
- tab = TabState.ALL;
+ mTabPagerAdapter.setSearchMode(true);
+ } else {
+ // No smooth scrolling if quitting from the search mode.
+ final boolean wasSearchMode = mTabPagerAdapter.isSearchMode();
+ mTabPagerAdapter.setSearchMode(false);
+ if (mTabPager.getCurrentItem() != tab) {
+ mTabPager.setCurrentItem(tab, !wasSearchMode);
+ }
}
-
- switch (tab) {
- case TabState.FAVORITES:
- mFavoritesView.setVisibility(View.VISIBLE);
- mBrowserView.setVisibility(View.GONE);
- mGroupDetailsView.setVisibility(View.GONE);
- mContactDetailsView.setVisibility(View.GONE);
- break;
- case TabState.GROUPS:
- mFavoritesView.setVisibility(View.GONE);
- mBrowserView.setVisibility(View.VISIBLE);
- mGroupDetailsView.setVisibility(View.VISIBLE);
- mContactDetailsView.setVisibility(View.GONE);
- mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
- break;
- case TabState.ALL:
- mFavoritesView.setVisibility(View.GONE);
- mBrowserView.setVisibility(View.VISIBLE);
- mContactDetailsView.setVisibility(View.VISIBLE);
- mGroupDetailsView.setVisibility(View.GONE);
- break;
- }
- mPeopleActivityView.startMaskTransition(false, TAB_FADE_IN_DURATION);
- FragmentManager fragmentManager = getFragmentManager();
- FragmentTransaction ft = fragmentManager.beginTransaction();
-
- // Note mContactDetailLoaderFragment is an invisible fragment, but we still have to show/
- // hide it so its options menu will be shown/hidden.
- switch (tab) {
- case TabState.FAVORITES:
- showFragment(ft, mFavoritesFragment);
- showFragment(ft, mFrequentFragment);
- hideFragment(ft, mAllFragment);
- hideFragment(ft, mContactDetailLoaderFragment);
- hideFragment(ft, mContactDetailFragment);
- hideFragment(ft, mGroupsFragment);
- hideFragment(ft, mGroupDetailFragment);
- break;
- case TabState.ALL:
- hideFragment(ft, mFavoritesFragment);
- hideFragment(ft, mFrequentFragment);
- showFragment(ft, mAllFragment);
- showFragment(ft, mContactDetailLoaderFragment);
- showFragment(ft, mContactDetailFragment);
- hideFragment(ft, mGroupsFragment);
- hideFragment(ft, mGroupDetailFragment);
- break;
- case TabState.GROUPS:
- hideFragment(ft, mFavoritesFragment);
- hideFragment(ft, mFrequentFragment);
- hideFragment(ft, mAllFragment);
- hideFragment(ft, mContactDetailLoaderFragment);
- hideFragment(ft, mContactDetailFragment);
- showFragment(ft, mGroupsFragment);
- showFragment(ft, mGroupDetailFragment);
- break;
- }
- if (!ft.isEmpty()) {
- ft.commitAllowingStateLoss();
- fragmentManager.executePendingTransactions();
- // When switching tabs, we need to invalidate options menu, but executing a
- // fragment transaction does it implicitly. We don't have to call invalidateOptionsMenu
- // manually.
- }
+ invalidateOptionsMenu();
showEmptyStateForTab(tab);
}
@@ -772,10 +546,6 @@
mContactsUnavailableFragment.setMessageText(
R.string.listTotalAllContactsZeroStarred, -1);
break;
- case TabState.GROUPS:
- mContactsUnavailableFragment.setMessageText(R.string.noGroups,
- areGroupWritableAccountsAvailable() ? -1 : R.string.noAccounts);
- break;
case TabState.ALL:
mContactsUnavailableFragment.setMessageText(R.string.noContacts, -1);
break;
@@ -813,9 +583,6 @@
if (!mTabPagerAdapter.isSearchMode()) {
mActionBarAdapter.setCurrentTab(position, false);
showEmptyStateForTab(position);
- if (position == TabState.GROUPS) {
- mGroupsFragment.setAddAccountsVisibility(!areGroupWritableAccountsAvailable());
- }
invalidateOptionsMenu();
}
}
@@ -874,9 +641,6 @@
if (object == mAllFragment) {
return TabState.ALL;
}
- if (object == mGroupsFragment) {
- return TabState.GROUPS;
- }
}
return POSITION_NONE;
}
@@ -899,8 +663,6 @@
return mFavoritesFragment;
} else if (position == TabState.ALL) {
return mAllFragment;
- } else if (position == TabState.GROUPS) {
- return mGroupsFragment;
}
}
throw new IllegalArgumentException("position: " + position);
@@ -973,12 +735,6 @@
private void configureContactListFragmentForRequest() {
Uri contactUri = mRequest.getContactUri();
if (contactUri != null) {
- // For an incoming request, explicitly require a selection if we are on 2-pane UI,
- // (i.e. even if we view the same selected contact, the contact may no longer be
- // in the list, so we must refresh the list).
- if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
- mAllFragment.setSelectionRequired(true);
- }
mAllFragment.setSelectedContactUri(contactUri);
}
@@ -996,22 +752,12 @@
// Filter may be changed when this Activity is in background.
mAllFragment.setFilter(mContactListFilterController.getFilter());
- final boolean useTwoPane = PhoneCapabilityTester.isUsingTwoPanes(this);
-
- mAllFragment.setVerticalScrollbarPosition(getScrollBarPosition(useTwoPane));
- mAllFragment.setSelectionVisible(useTwoPane);
- mAllFragment.setQuickContactEnabled(!useTwoPane);
+ mAllFragment.setVerticalScrollbarPosition(getScrollBarPosition());
+ mAllFragment.setSelectionVisible(false);
}
- private int getScrollBarPosition(boolean useTwoPane) {
- final boolean isLayoutRtl = isRTL();
- final int position;
- if (useTwoPane) {
- position = isLayoutRtl ? View.SCROLLBAR_POSITION_RIGHT : View.SCROLLBAR_POSITION_LEFT;
- } else {
- position = isLayoutRtl ? View.SCROLLBAR_POSITION_LEFT : View.SCROLLBAR_POSITION_RIGHT;
- }
- return position;
+ private int getScrollBarPosition() {
+ return isRTL() ? View.SCROLLBAR_POSITION_LEFT : View.SCROLLBAR_POSITION_RIGHT;
}
private boolean isRTL() {
@@ -1019,12 +765,6 @@
return TextUtils.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL;
}
- private void configureGroupListFragment() {
- final boolean useTwoPane = PhoneCapabilityTester.isUsingTwoPanes(this);
- mGroupsFragment.setVerticalScrollbarPosition(getScrollBarPosition(useTwoPane));
- mGroupsFragment.setSelectionVisible(useTwoPane);
- }
-
@Override
public void onProviderStatusChange() {
updateViewConfiguration(false);
@@ -1037,7 +777,6 @@
mProviderStatus = providerStatus;
View contactsUnavailableView = findViewById(R.id.contacts_unavailable_view);
- View mainView = findViewById(R.id.main_view);
if (mProviderStatus.status == ProviderStatus.STATUS_NORMAL) {
// Ensure that the mTabPager is visible; we may have made it invisible below.
@@ -1046,9 +785,6 @@
mTabPager.setVisibility(View.VISIBLE);
}
- if (mainView != null) {
- mainView.setVisibility(View.VISIBLE);
- }
if (mAllFragment != null) {
mAllFragment.setEnabled(true);
}
@@ -1090,10 +826,6 @@
mTabPager.setVisibility(View.GONE);
}
- if (mainView != null) {
- mainView.setVisibility(View.INVISIBLE);
- }
-
showEmptyStateForTab(mActionBarAdapter.getCurrentTab());
}
@@ -1105,58 +837,17 @@
@Override
public void onSelectionChange() {
- if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
- setupContactDetailFragment(mAllFragment.getSelectedContactUri());
- }
+
}
@Override
public void onViewContactAction(Uri contactLookupUri) {
- if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
- setupContactDetailFragment(contactLookupUri);
- } else {
- Intent intent = new Intent(Intent.ACTION_VIEW, contactLookupUri);
- startActivity(intent);
- }
- }
-
- @Override
- public void onCreateNewContactAction() {
- Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- intent.putExtras(extras);
- }
+ Intent intent = QuickContact.composeQuickContactsIntent(PeopleActivity.this,
+ (Rect) null, contactLookupUri, QuickContactActivity.MODE_FULLY_EXPANDED, null);
startActivity(intent);
}
@Override
- public void onEditContactAction(Uri contactLookupUri) {
- Intent intent = new Intent(Intent.ACTION_EDIT, contactLookupUri);
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- intent.putExtras(extras);
- }
- intent.putExtra(
- ContactEditorActivity.INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);
- startActivityForResult(intent, SUBACTIVITY_EDIT_CONTACT);
- }
-
- @Override
- public void onAddToFavoritesAction(Uri contactUri) {
- ContentValues values = new ContentValues(1);
- values.put(Contacts.STARRED, 1);
- getContentResolver().update(contactUri, values, null, null);
- }
-
- @Override
- public void onRemoveFromFavoritesAction(Uri contactUri) {
- ContentValues values = new ContentValues(1);
- values.put(Contacts.STARRED, 0);
- getContentResolver().update(contactUri, values, null, null);
- }
-
- @Override
public void onDeleteContactAction(Uri contactUri) {
ContactDeletionInteraction.start(PeopleActivity.this, contactUri, false);
}
@@ -1184,75 +875,6 @@
}
}
- private class ContactDetailLoaderFragmentListener implements ContactLoaderFragmentListener {
- ContactDetailLoaderFragmentListener() {}
-
- @Override
- public void onContactNotFound() {
- // Nothing needs to be done here
- }
-
- @Override
- public void onDetailsLoaded(final Contact result) {
- if (result == null) {
- // Nothing is loaded. Show empty state.
- mContactDetailLayoutController.showEmptyState();
- return;
- }
- // Since {@link FragmentTransaction}s cannot be done in the onLoadFinished() of the
- // {@link LoaderCallbacks}, then post this {@link Runnable} to the {@link Handler}
- // on the main thread to execute later.
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- // If the activity is destroyed (or will be destroyed soon), don't update the UI
- if (isFinishing()) {
- return;
- }
- mContactDetailLayoutController.setContactData(result);
- }
- });
- }
-
- @Override
- public void onEditRequested(Uri contactLookupUri) {
- Intent intent = new Intent(Intent.ACTION_EDIT, contactLookupUri);
- intent.putExtra(
- ContactEditorActivity.INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);
- startActivityForResult(intent, SUBACTIVITY_EDIT_CONTACT);
- }
-
- @Override
- public void onDeleteRequested(Uri contactUri) {
- ContactDeletionInteraction.start(PeopleActivity.this, contactUri, false);
- }
- }
-
- public class ContactDetailFragmentListener implements ContactDetailFragment.Listener {
- @Override
- public void onItemClicked(Intent intent) {
- if (intent == null) {
- return;
- }
- try {
- startActivity(intent);
- } catch (ActivityNotFoundException e) {
- Log.e(TAG, "No activity found for intent: " + intent);
- }
- }
-
- @Override
- public void onCreateRawContactRequested(ArrayList<ContentValues> values,
- AccountWithDataSet account) {
- Toast.makeText(PeopleActivity.this, R.string.toast_making_personal_copy,
- Toast.LENGTH_LONG).show();
- Intent serviceIntent = ContactSaveService.createNewRawContactIntent(
- PeopleActivity.this, values, account,
- PeopleActivity.class, Intent.ACTION_VIEW);
- startService(serviceIntent);
- }
- }
-
private class ContactsUnavailableFragmentListener
implements OnContactsUnavailableActionListener {
ContactsUnavailableFragmentListener() {}
@@ -1289,11 +911,9 @@
@Override
public void onContactSelected(Uri contactUri, Rect targetRect) {
- if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
- QuickContact.showQuickContact(PeopleActivity.this, targetRect, contactUri, 0, null);
- } else {
- startActivity(new Intent(Intent.ACTION_VIEW, contactUri));
- }
+ Intent intent = QuickContact.composeQuickContactsIntent(PeopleActivity.this,
+ targetRect, contactUri, QuickContactActivity.MODE_FULLY_EXPANDED, null);
+ startActivity(intent);
}
@Override
@@ -1303,71 +923,6 @@
}
}
- private final class GroupBrowserActionListener implements OnGroupBrowserActionListener {
-
- GroupBrowserActionListener() {}
-
- @Override
- public void onViewGroupAction(Uri groupUri) {
- if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
- setupGroupDetailFragment(groupUri);
- } else {
- Intent intent = new Intent(PeopleActivity.this, GroupDetailActivity.class);
- intent.setData(groupUri);
- startActivity(intent);
- }
- }
- }
-
- private class GroupDetailFragmentListener implements GroupDetailFragment.Listener {
-
- GroupDetailFragmentListener() {}
-
- @Override
- public void onGroupSizeUpdated(String size) {
- // Nothing needs to be done here because the size will be displayed in the detail
- // fragment
- }
-
- @Override
- public void onGroupTitleUpdated(String title) {
- // Nothing needs to be done here because the title will be displayed in the detail
- // fragment
- }
-
- @Override
- public void onAccountTypeUpdated(String accountTypeString, String dataSet) {
- // Nothing needs to be done here because the group source will be displayed in the
- // detail fragment
- }
-
- @Override
- public void onEditRequested(Uri groupUri) {
- final Intent intent = new Intent(PeopleActivity.this, GroupEditorActivity.class);
- intent.setData(groupUri);
- intent.setAction(Intent.ACTION_EDIT);
- startActivityForResult(intent, SUBACTIVITY_EDIT_GROUP);
- }
-
- @Override
- public void onContactSelected(Uri contactUri) {
- // Nothing needs to be done here because either quickcontact will be displayed
- // or activity will take care of selection
- }
- }
-
- public void startActivityAndForwardResult(final Intent intent) {
- intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-
- // Forward extras to the new activity
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- intent.putExtras(extras);
- }
- startActivity(intent);
- finish();
- }
-
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!areContactsAvailable()) {
@@ -1397,15 +952,6 @@
return true;
}
- if (mContactDetailLoaderFragment != null &&
- mContactDetailLoaderFragment.isOptionsMenuChanged()) {
- return true;
- }
-
- if (mGroupDetailFragment != null && mGroupDetailFragment.isOptionsMenuChanged()) {
- return true;
- }
-
return false;
}
@@ -1417,46 +963,25 @@
}
// Get references to individual menu items in the menu
- final MenuItem addContactMenu = menu.findItem(R.id.menu_add_contact);
final MenuItem contactsFilterMenu = menu.findItem(R.id.menu_contacts_filter);
-
- MenuItem addGroupMenu = menu.findItem(R.id.menu_add_group);
-
final MenuItem clearFrequentsMenu = menu.findItem(R.id.menu_clear_frequents);
final MenuItem helpMenu = menu.findItem(R.id.menu_help);
final boolean isSearchMode = mActionBarAdapter.isSearchMode();
if (isSearchMode) {
- addContactMenu.setVisible(false);
- addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
clearFrequentsMenu.setVisible(false);
helpMenu.setVisible(false);
} else {
switch (mActionBarAdapter.getCurrentTab()) {
case TabState.FAVORITES:
- addContactMenu.setVisible(true);
- addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(false);
clearFrequentsMenu.setVisible(hasFrequents());
break;
case TabState.ALL:
- addContactMenu.setVisible(true);
- addGroupMenu.setVisible(false);
contactsFilterMenu.setVisible(true);
clearFrequentsMenu.setVisible(false);
break;
- case TabState.GROUPS:
- // Do not display the "new group" button if no accounts are available
- if (areGroupWritableAccountsAvailable()) {
- addGroupMenu.setVisible(true);
- } else {
- addGroupMenu.setVisible(false);
- }
- addContactMenu.setVisible(false);
- contactsFilterMenu.setVisible(false);
- clearFrequentsMenu.setVisible(false);
- break;
}
HelpUtils.prepareHelpMenuItem(this, helpMenu, R.string.help_url_people_main);
}
@@ -1478,11 +1003,7 @@
* @return
*/
private boolean hasFrequents() {
- if (PhoneCapabilityTester.isUsingTwoPanesInFavorites(this)) {
- return mFrequentFragment.hasFrequents();
- } else {
- return mFavoritesFragment.hasFrequents();
- }
+ return mFavoritesFragment.hasFrequents();
}
private void makeMenuItemVisible(Menu menu, int itemId, boolean visible) {
@@ -1509,17 +1030,16 @@
}
case R.id.menu_settings: {
final Intent intent = new Intent(this, ContactsPreferenceActivity.class);
- // as there is only one section right now, make sure it is selected
- // on small screens, this also hides the section selector
- // Due to b/5045558, this code unfortunately only works properly on phones
- boolean settingsAreMultiPane = getResources().getBoolean(
- com.android.internal.R.bool.preferences_prefer_dual_pane);
- if (!settingsAreMultiPane) {
- intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
- DisplayOptionsPreferenceFragment.class.getName());
- intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_TITLE,
- R.string.activity_title_settings);
- }
+ // Since there is only one section right now, make sure it is selected on
+ // small screens.
+ intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
+ DisplayOptionsPreferenceFragment.class.getName());
+ // By default, the title of the activity should be equivalent to the fragment
+ // title. We set this argument to avoid this. Because of a bug, the following
+ // line isn't necessary. But, once the bug is fixed this may become necessary.
+ // b/5045558 refers to this issue, as well as another.
+ intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_TITLE,
+ R.string.activity_title_settings);
startActivity(intent);
return true;
}
@@ -1533,26 +1053,6 @@
onSearchRequested();
return true;
}
- case R.id.menu_add_contact: {
- final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
- // On 2-pane UI, we can let the editor activity finish itself and return
- // to this activity to display the new contact.
- if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
- intent.putExtra(
- ContactEditorActivity.INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED,
- true);
- startActivityForResult(intent, SUBACTIVITY_NEW_CONTACT);
- } else {
- // Otherwise, on 1-pane UI, we need the editor to launch the view contact
- // intent itself.
- startActivity(intent);
- }
- return true;
- }
- case R.id.menu_add_group: {
- createNewGroup();
- return true;
- }
case R.id.menu_import_export: {
ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable(),
PeopleActivity.class);
@@ -1581,12 +1081,6 @@
return false;
}
- private void createNewGroup() {
- final Intent intent = new Intent(this, GroupEditorActivity.class);
- intent.setAction(Intent.ACTION_INSERT);
- startActivityForResult(intent, SUBACTIVITY_NEW_GROUP);
- }
-
@Override
public boolean onSearchRequested() { // Search key pressed.
mActionBarAdapter.setSearchMode(true);
@@ -1602,31 +1096,6 @@
break;
}
- case SUBACTIVITY_NEW_CONTACT:
- case SUBACTIVITY_EDIT_CONTACT: {
- if (resultCode == RESULT_OK && PhoneCapabilityTester.isUsingTwoPanes(this)) {
- mRequest.setActionCode(ContactsRequest.ACTION_VIEW_CONTACT);
- mAllFragment.setSelectionRequired(true);
- mAllFragment.setSelectedContactUri(data.getData());
- // Suppress IME if in search mode
- if (mActionBarAdapter != null) {
- mActionBarAdapter.clearFocusOnSearchView();
- }
- // No need to change the contact filter
- mCurrentFilterIsValid = true;
- }
- break;
- }
-
- case SUBACTIVITY_NEW_GROUP:
- case SUBACTIVITY_EDIT_GROUP: {
- if (resultCode == RESULT_OK && PhoneCapabilityTester.isUsingTwoPanes(this)) {
- mRequest.setActionCode(ContactsRequest.ACTION_GROUP);
- mGroupsFragment.setSelectedUri(data.getData());
- }
- break;
- }
-
// TODO: Using the new startActivityWithResultFromFragment API this should not be needed
// anymore
case ContactEntryListFragment.ACTIVITY_REQUEST_CODE_PICKER:
@@ -1709,9 +1178,6 @@
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mActionBarAdapter.onSaveInstanceState(outState);
- if (mContactDetailLayoutController != null) {
- mContactDetailLayoutController.onSaveInstanceState(outState);
- }
// Clear the listener to make sure we don't get callbacks after onSaveInstanceState,
// in order to avoid doing fragment transactions after it.
@@ -1739,13 +1205,19 @@
return mDialogManager;
}
- // Visible for testing
- public ContactBrowseListFragment getListFragment() {
- return mAllFragment;
- }
-
- // Visible for testing
- public ContactDetailFragment getDetailFragment() {
- return mContactDetailFragment;
+ @Override
+ public void onClick(View view) {
+ switch (view.getId()) {
+ case R.id.floating_action_button:
+ Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ intent.putExtras(extras);
+ }
+ startActivity(intent);
+ break;
+ default:
+ Log.wtf(TAG, "Unexpected onClick event from " + view);
+ }
}
}
diff --git a/src/com/android/contacts/activities/PhotoSelectionActivity.java b/src/com/android/contacts/activities/PhotoSelectionActivity.java
index c3b2eeb..da0d2e4 100644
--- a/src/com/android/contacts/activities/PhotoSelectionActivity.java
+++ b/src/com/android/contacts/activities/PhotoSelectionActivity.java
@@ -319,7 +319,7 @@
if (mPhotoUri != null) {
// If we have a URI, the bitmap should be cached directly.
ContactPhotoManager.getInstance(this).loadPhoto(mPhotoView, mPhotoUri, photoWidth,
- false, null);
+ false /* darkTheme */, false /* isCircular */, null);
} else {
// If we don't have a URI, just display an empty ImageView. The default image from the
// ContactDetailFragment will show up in the background instead.
diff --git a/src/com/android/contacts/datepicker/DatePicker.java b/src/com/android/contacts/datepicker/DatePicker.java
index d662c3a..1b3b807 100644
--- a/src/com/android/contacts/datepicker/DatePicker.java
+++ b/src/com/android/contacts/datepicker/DatePicker.java
@@ -171,6 +171,8 @@
updateDaySpinner();
}
});
+ mYearPicker.setMinValue(DEFAULT_START_YEAR);
+ mYearPicker.setMaxValue(DEFAULT_END_YEAR);
mYearToggle = (CheckBox) findViewById(R.id.yearToggle);
mYearToggle.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@@ -183,19 +185,6 @@
}
});
- // attributes
- TypedArray a = context.obtainStyledAttributes(attrs,
- com.android.internal.R.styleable.DatePicker);
-
- int mStartYear =
- a.getInt(com.android.internal.R.styleable.DatePicker_startYear, DEFAULT_START_YEAR);
- int mEndYear =
- a.getInt(com.android.internal.R.styleable.DatePicker_endYear, DEFAULT_END_YEAR);
- mYearPicker.setMinValue(mStartYear);
- mYearPicker.setMaxValue(mEndYear);
-
- a.recycle();
-
// initialize to current date
Calendar cal = Calendar.getInstance();
init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), null);
diff --git a/src/com/android/contacts/datepicker/DatePickerDialog.java b/src/com/android/contacts/datepicker/DatePickerDialog.java
index 5ed143b..2b470d5 100644
--- a/src/com/android/contacts/datepicker/DatePickerDialog.java
+++ b/src/com/android/contacts/datepicker/DatePickerDialog.java
@@ -17,18 +17,15 @@
package com.android.contacts.datepicker;
// This is a fork of the standard Android DatePicker that additionally allows toggling the year
-// on/off. It uses some private API so that not everything has to be copied.
+// on/off.
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
-import android.os.Build;
import android.os.Bundle;
-import android.text.TextUtils.TruncateAt;
import android.view.LayoutInflater;
import android.view.View;
-import android.widget.TextView;
import com.android.contacts.R;
import com.android.contacts.common.util.DateUtils;
@@ -108,10 +105,8 @@
int monthOfYear,
int dayOfMonth,
boolean yearOptional) {
- this(context, context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.HONEYCOMB
- ? com.android.internal.R.style.Theme_Holo_Light_Dialog_Alert
- : com.android.internal.R.style.Theme_Dialog_Alert,
- callBack, year, monthOfYear, dayOfMonth, yearOptional);
+ this(context, THEME_DEVICE_DEFAULT_LIGHT, callBack, year, monthOfYear, dayOfMonth,
+ yearOptional);
}
/**
@@ -160,7 +155,7 @@
mTitleNoYearDateFormat = DateUtils.getLocalizedDateFormatWithoutYear(getContext());
updateTitle(mInitialYear, mInitialMonth, mInitialDay);
- setButton(BUTTON_POSITIVE, context.getText(com.android.internal.R.string.date_time_set),
+ setButton(BUTTON_POSITIVE, context.getText(R.string.date_time_set),
this);
setButton(BUTTON_NEGATIVE, context.getText(android.R.string.cancel),
(OnClickListener) null);
@@ -174,19 +169,6 @@
}
@Override
- public void show() {
- super.show();
-
- /* Sometimes the full month is displayed causing the title
- * to be very long, in those cases ensure it doesn't wrap to
- * 2 lines (as that looks jumpy) and ensure we ellipsize the end.
- */
- TextView title = (TextView) findViewById(com.android.internal.R.id.alertTitle);
- title.setSingleLine();
- title.setEllipsize(TruncateAt.END);
- }
-
- @Override
public void onClick(DialogInterface dialog, int which) {
if (mCallBack != null) {
mDatePicker.clearFocus();
diff --git a/src/com/android/contacts/detail/CarouselTab.java b/src/com/android/contacts/detail/CarouselTab.java
deleted file mode 100644
index 09e097a..0000000
--- a/src/com/android/contacts/detail/CarouselTab.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.detail;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewPropertyAnimator;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.widget.FrameLayoutWithOverlay;
-
-/**
- * This is a tab in the {@link ContactDetailTabCarousel}.
- */
-public class CarouselTab extends FrameLayoutWithOverlay {
-
- private static final String TAG = CarouselTab.class.getSimpleName();
-
- private static final long FADE_TRANSITION_TIME = 150;
-
- private TextView mLabelView;
- private View mLabelBackgroundView;
-
- /**
- * This view adds an alpha layer over the entire tab (except for the label).
- */
- private View mAlphaLayer;
-
- public CarouselTab(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- mLabelView = (TextView) findViewById(R.id.label);
- mLabelBackgroundView = findViewById(R.id.label_background);
- mAlphaLayer = findViewById(R.id.alpha_overlay);
- setAlphaLayer(mAlphaLayer);
- }
-
- public void setLabel(String label) {
- mLabelView.setText(label);
- }
-
- public void showSelectedState() {
- mLabelView.setSelected(true);
- }
-
- public void showDeselectedState() {
- mLabelView.setSelected(false);
- }
-
- public void fadeInLabelViewAnimator(int startDelay, boolean fadeBackground) {
- final ViewPropertyAnimator labelAnimator = mLabelView.animate();
- mLabelView.setAlpha(0.0f);
- labelAnimator.alpha(1.0f);
- labelAnimator.setStartDelay(startDelay);
- labelAnimator.setDuration(FADE_TRANSITION_TIME);
-
- if (fadeBackground) {
- final ViewPropertyAnimator backgroundAnimator = mLabelBackgroundView.animate();
- mLabelBackgroundView.setAlpha(0.0f);
- backgroundAnimator.alpha(1.0f);
- backgroundAnimator.setStartDelay(startDelay);
- backgroundAnimator.setDuration(FADE_TRANSITION_TIME);
- }
- }
-}
diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
index 5adc57a..67d14e2 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
@@ -16,7 +16,16 @@
package com.android.contacts.detail;
-import android.content.ContentUris;
+import com.google.common.collect.Iterables;
+
+import com.android.contacts.R;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.OrganizationDataItem;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.util.MoreMath;
+
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -24,37 +33,17 @@
import android.content.res.Resources.NotFoundException;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.provider.ContactsContract;
import android.provider.ContactsContract.DisplayNameSources;
import android.provider.ContactsContract.Preferences;
-import android.provider.ContactsContract.StreamItems;
import android.text.Html;
-import android.text.Html.ImageGetter;
import android.text.TextUtils;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.R;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.RawContact;
-import com.android.contacts.common.model.dataitem.DataItem;
-import com.android.contacts.common.model.dataitem.OrganizationDataItem;
-import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.util.StreamItemEntry;
-import com.android.contacts.util.ContactBadgeUtil;
-import com.android.contacts.util.HtmlUtils;
-import com.android.contacts.util.MoreMath;
-import com.android.contacts.util.StreamItemPhotoEntry;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Iterables;
-
import java.util.List;
/**
@@ -66,31 +55,6 @@
private static final String TAG = "ContactDetailDisplayUtils";
/**
- * Tag object used for stream item photos.
- */
- public static class StreamPhotoTag {
- public final StreamItemEntry streamItem;
- public final StreamItemPhotoEntry streamItemPhoto;
-
- public StreamPhotoTag(StreamItemEntry streamItem, StreamItemPhotoEntry streamItemPhoto) {
- this.streamItem = streamItem;
- this.streamItemPhoto = streamItemPhoto;
- }
-
- public Uri getStreamItemPhotoUri() {
- final Uri.Builder builder = StreamItems.CONTENT_URI.buildUpon();
- ContentUris.appendId(builder, streamItem.getId());
- builder.appendPath(StreamItems.StreamItemPhotos.CONTENT_DIRECTORY);
- ContentUris.appendId(builder, streamItemPhoto.getId());
- return builder.build();
- }
- }
-
- private ContactDetailDisplayUtils() {
- // Disallow explicit creation of this class.
- }
-
- /**
* Returns the display name of the contact, using the current display order setting.
* Returns res/string/missing_name if there is no display name.
*/
@@ -212,8 +176,8 @@
if (!isDirectoryEntry && !isUserProfile) {
starredMenuItem.setVisible(true);
final int resId = isStarred
- ? R.drawable.btn_star_on_normal_holo_light
- : R.drawable.btn_star_off_normal_holo_light;
+ ? R.drawable.ic_star_24dp
+ : R.drawable.ic_star_outline_24dp;
starredMenuItem.setIcon(resId);
starredMenuItem.setChecked(isStarred);
starredMenuItem.setTitle(isStarred ? R.string.menu_removeStar : R.string.menu_addStar);
@@ -223,146 +187,6 @@
}
/**
- * Set the social snippet text. If there isn't one, then set the view to gone.
- */
- public static void setSocialSnippet(Context context, Contact contactData, TextView statusView,
- ImageView statusPhotoView) {
- if (statusView == null) {
- return;
- }
-
- CharSequence snippet = null;
- String photoUri = null;
- setDataOrHideIfNone(snippet, statusView);
- if (photoUri != null) {
- ContactPhotoManager.getInstance(context).loadPhoto(
- statusPhotoView, Uri.parse(photoUri), -1, false, null);
- statusPhotoView.setVisibility(View.VISIBLE);
- } else {
- statusPhotoView.setVisibility(View.GONE);
- }
- }
-
- /** Creates the view that represents a stream item. */
- public static View createStreamItemView(LayoutInflater inflater, Context context,
- View convertView, StreamItemEntry streamItem, View.OnClickListener photoClickListener) {
-
- // Try to recycle existing views.
- final View container;
- if (convertView != null) {
- container = convertView;
- } else {
- container = inflater.inflate(R.layout.stream_item_container, null, false);
- }
-
- final ContactPhotoManager contactPhotoManager = ContactPhotoManager.getInstance(context);
- final List<StreamItemPhotoEntry> photos = streamItem.getPhotos();
- final int photoCount = photos.size();
-
- // Add the text part.
- addStreamItemText(context, streamItem, container);
-
- // Add images.
- final ViewGroup imageRows = (ViewGroup) container.findViewById(R.id.stream_item_image_rows);
-
- if (photoCount == 0) {
- // This stream item only has text.
- imageRows.setVisibility(View.GONE);
- } else {
- // This stream item has text and photos.
- imageRows.setVisibility(View.VISIBLE);
-
- // Number of image rows needed, which is cailing(photoCount / 2)
- final int numImageRows = (photoCount + 1) / 2;
-
- // Actual image rows.
- final int numOldImageRows = imageRows.getChildCount();
-
- // Make sure we have enough stream_item_row_images.
- if (numOldImageRows == numImageRows) {
- // Great, we have the just enough number of rows...
-
- } else if (numOldImageRows < numImageRows) {
- // Need to add more image rows.
- for (int i = numOldImageRows; i < numImageRows; i++) {
- View imageRow = inflater.inflate(R.layout.stream_item_row_images, imageRows,
- true);
- }
- } else {
- // We have exceeding image rows. Hide them.
- for (int i = numImageRows; i < numOldImageRows; i++) {
- imageRows.getChildAt(i).setVisibility(View.GONE);
- }
- }
-
- // Put images, two by two.
- for (int i = 0; i < photoCount; i += 2) {
- final View imageRow = imageRows.getChildAt(i / 2);
- // Reused image rows may not visible, so make sure they're shown.
- imageRow.setVisibility(View.VISIBLE);
-
- // Show first image.
- loadPhoto(contactPhotoManager, streamItem, photos.get(i), imageRow,
- R.id.stream_item_first_image, photoClickListener);
- final View secondContainer = imageRow.findViewById(R.id.second_image_container);
- if (i + 1 < photoCount) {
- // Show the second image too.
- loadPhoto(contactPhotoManager, streamItem, photos.get(i + 1), imageRow,
- R.id.stream_item_second_image, photoClickListener);
- secondContainer.setVisibility(View.VISIBLE);
- } else {
- // Hide the second image, but it still has to occupy the space.
- secondContainer.setVisibility(View.INVISIBLE);
- }
- }
- }
-
- return container;
- }
-
- /** Loads a photo into an image view. The image view is identified by the given id. */
- private static void loadPhoto(ContactPhotoManager contactPhotoManager,
- final StreamItemEntry streamItem, final StreamItemPhotoEntry streamItemPhoto,
- View photoContainer, int imageViewId, View.OnClickListener photoClickListener) {
- final View frame = photoContainer.findViewById(imageViewId);
- final View pushLayerView = frame.findViewById(R.id.push_layer);
- final ImageView imageView = (ImageView) frame.findViewById(R.id.image);
- if (photoClickListener != null) {
- pushLayerView.setOnClickListener(photoClickListener);
- pushLayerView.setTag(new StreamPhotoTag(streamItem, streamItemPhoto));
- pushLayerView.setFocusable(true);
- pushLayerView.setEnabled(true);
- } else {
- pushLayerView.setOnClickListener(null);
- pushLayerView.setTag(null);
- pushLayerView.setFocusable(false);
- // setOnClickListener makes it clickable, so we need to overwrite it
- pushLayerView.setClickable(false);
- pushLayerView.setEnabled(false);
- }
- contactPhotoManager.loadPhoto(imageView, Uri.parse(streamItemPhoto.getPhotoUri()), -1,
- false, null);
- }
-
- @VisibleForTesting
- static View addStreamItemText(Context context, StreamItemEntry streamItem, View rootView) {
- TextView htmlView = (TextView) rootView.findViewById(R.id.stream_item_html);
- TextView attributionView = (TextView) rootView.findViewById(
- R.id.stream_item_attribution);
- TextView commentsView = (TextView) rootView.findViewById(R.id.stream_item_comments);
- ImageGetter imageGetter = new DefaultImageGetter(context.getPackageManager());
-
- // Stream item text
- setDataOrHideIfNone(streamItem.getDecodedText(), htmlView);
- // Attribution
- setDataOrHideIfNone(ContactBadgeUtil.getSocialDate(streamItem, context),
- attributionView);
- // Comments
- setDataOrHideIfNone(streamItem.getDecodedComments(), commentsView);
- return rootView;
- }
-
- /**
* Sets the display name of this contact to the given {@link TextView}. If
* there is none, then set the view to gone.
*/
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 629e36b..6573fa2 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -161,7 +161,6 @@
private Button mQuickFixButton;
private QuickFix mQuickFix;
- private boolean mContactHasSocialUpdates;
private boolean mShowStaticPhoto = true;
private final QuickFix[] mPotentialQuickFixes = new QuickFix[] {
diff --git a/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java b/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
deleted file mode 100644
index 434d8f5..0000000
--- a/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.detail;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewPropertyAnimator;
-import android.widget.HorizontalScrollView;
-
-import com.android.contacts.R;
-import com.android.contacts.widget.FrameLayoutWithOverlay;
-
-/**
- * This is a horizontally scrolling carousel with 2 fragments: one to see info about the contact and
- * one to see updates from the contact. Depending on the scroll position and user selection of which
- * fragment to currently view, the touch interceptors over each fragment are configured accordingly.
- */
-public class ContactDetailFragmentCarousel extends HorizontalScrollView implements OnTouchListener {
-
- private static final String TAG = ContactDetailFragmentCarousel.class.getSimpleName();
-
- /**
- * Number of pixels that this view can be scrolled horizontally.
- */
- private int mAllowedHorizontalScrollLength = Integer.MIN_VALUE;
-
- /**
- * Minimum X scroll position that must be surpassed (if the user is on the "about" page of the
- * contact card), in order for this view to automatically snap to the "updates" page.
- */
- private int mLowerThreshold = Integer.MIN_VALUE;
-
- /**
- * Maximum X scroll position (if the user is on the "updates" page of the contact card), below
- * which this view will automatically snap to the "about" page.
- */
- private int mUpperThreshold = Integer.MIN_VALUE;
-
- /**
- * Minimum width of a fragment (if there is more than 1 fragment in the carousel, then this is
- * the width of one of the fragments).
- */
- private int mMinFragmentWidth = Integer.MIN_VALUE;
-
- /**
- * Fragment width (if there are 1+ fragments in the carousel) as defined as a fraction of the
- * screen width.
- */
- private static final float FRAGMENT_WIDTH_SCREEN_WIDTH_FRACTION = 0.85f;
-
- private static final int ABOUT_PAGE = 0;
- private static final int UPDATES_PAGE = 1;
-
- private static final int MAX_FRAGMENT_VIEW_COUNT = 2;
-
- private boolean mEnableSwipe;
-
- private int mCurrentPage = ABOUT_PAGE;
- private int mLastScrollPosition;
-
- private FrameLayoutWithOverlay mAboutFragment;
- private FrameLayoutWithOverlay mUpdatesFragment;
-
- public ContactDetailFragmentCarousel(Context context) {
- this(context, null);
- }
-
- public ContactDetailFragmentCarousel(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public ContactDetailFragmentCarousel(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- final LayoutInflater inflater =
- (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- inflater.inflate(R.layout.contact_detail_fragment_carousel, this);
-
- setOnTouchListener(this);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int screenWidth = MeasureSpec.getSize(widthMeasureSpec);
- int screenHeight = MeasureSpec.getSize(heightMeasureSpec);
-
- // Take the width of this view as the width of the screen and compute necessary thresholds.
- // Only do this computation 1x.
- if (mAllowedHorizontalScrollLength == Integer.MIN_VALUE) {
- mMinFragmentWidth = (int) (FRAGMENT_WIDTH_SCREEN_WIDTH_FRACTION * screenWidth);
- mAllowedHorizontalScrollLength = (MAX_FRAGMENT_VIEW_COUNT * mMinFragmentWidth) -
- screenWidth;
- mLowerThreshold = (screenWidth - mMinFragmentWidth) / MAX_FRAGMENT_VIEW_COUNT;
- mUpperThreshold = mAllowedHorizontalScrollLength - mLowerThreshold;
- }
-
- if (getChildCount() > 0) {
- View child = getChildAt(0);
- // If we enable swipe, then the {@link LinearLayout} child width must be the sum of the
- // width of all its children fragments.
- // Or the current page may already be set to something other than the first. If so,
- // it also means there are multiple child fragments.
- if (mEnableSwipe || mCurrentPage == 1 ||
- (mCurrentPage == 0 && getLayoutDirection() == View.LAYOUT_DIRECTION_RTL)) {
- child.measure(MeasureSpec.makeMeasureSpec(
- mMinFragmentWidth * MAX_FRAGMENT_VIEW_COUNT, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(screenHeight, MeasureSpec.EXACTLY));
- } else {
- // Otherwise, the {@link LinearLayout} child width will just be the screen width
- // because it will only have 1 child fragment.
- child.measure(MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(screenHeight, MeasureSpec.EXACTLY));
- }
- }
-
- setMeasuredDimension(
- resolveSize(screenWidth, widthMeasureSpec),
- resolveSize(screenHeight, heightMeasureSpec));
- }
-
- /**
- * Set the current page. This dims out the non-selected page but doesn't do any scrolling of
- * the carousel.
- */
- public void setCurrentPage(int pageIndex) {
- mCurrentPage = pageIndex;
-
- updateTouchInterceptors();
- }
-
- /**
- * Set the view containers for the detail and updates fragment.
- */
- public void setFragmentViews(FrameLayoutWithOverlay about, FrameLayoutWithOverlay updates) {
- mAboutFragment = about;
- mUpdatesFragment = updates;
-
- mAboutFragment.setOverlayOnClickListener(mAboutFragTouchInterceptListener);
- mUpdatesFragment.setOverlayOnClickListener(mUpdatesFragTouchInterceptListener);
- }
-
- /**
- * Enable swiping if the detail and update fragments should be showing. Otherwise disable
- * swiping if only the detail fragment should be showing.
- */
- public void enableSwipe(boolean enable) {
- if (mEnableSwipe != enable) {
- mEnableSwipe = enable;
- if (mUpdatesFragment != null) {
- mUpdatesFragment.setVisibility(enable ? View.VISIBLE : View.GONE);
- snapToEdge();
- updateTouchInterceptors();
- }
- }
- }
-
- /**
- * Reset the fragment carousel to show the about page.
- */
- public void reset() {
- if (mCurrentPage != ABOUT_PAGE) {
- mCurrentPage = ABOUT_PAGE;
- snapToEdgeSmooth();
- }
- }
-
- public int getCurrentPage() {
- return mCurrentPage;
- }
-
- private final OnClickListener mAboutFragTouchInterceptListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- mCurrentPage = ABOUT_PAGE;
- snapToEdgeSmooth();
- }
- };
-
- private final OnClickListener mUpdatesFragTouchInterceptListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- mCurrentPage = UPDATES_PAGE;
- snapToEdgeSmooth();
- }
- };
-
- private void updateTouchInterceptors() {
- // Disable the touch-interceptor on the selected page, and enable it on the other.
- if (mAboutFragment != null) {
- mAboutFragment.setOverlayClickable(mCurrentPage != ABOUT_PAGE);
- }
- if (mUpdatesFragment != null) {
- mUpdatesFragment.setOverlayClickable(mCurrentPage != UPDATES_PAGE);
- }
- }
-
- @Override
- protected void onScrollChanged(int l, int t, int oldl, int oldt) {
- super.onScrollChanged(l, t, oldl, oldt);
- if (!mEnableSwipe) {
- return;
- }
- mLastScrollPosition = l;
- }
-
- /**
- * Used to set initial scroll offset. Not smooth.
- */
- private void snapToEdge() {
- setScrollX(calculateHorizontalOffset());
- updateTouchInterceptors();
- }
-
- /**
- * Smooth version of snapToEdge().
- */
- private void snapToEdgeSmooth() {
- smoothScrollTo(calculateHorizontalOffset(), 0);
- updateTouchInterceptors();
- }
-
- private int calculateHorizontalOffset() {
- int offset;
- if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
- offset = (mCurrentPage == ABOUT_PAGE) ? mAllowedHorizontalScrollLength : 0;
- } else {
- offset = (mCurrentPage == ABOUT_PAGE) ? 0 : mAllowedHorizontalScrollLength;
- }
- return offset;
- }
-
- /**
- * Returns the desired page we should scroll to based on the current X scroll position and the
- * current page.
- */
- private int getDesiredPage() {
- switch (mCurrentPage) {
- case ABOUT_PAGE:
- if (getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
- // If the user is on the "about" page, and the scroll position exceeds the lower
- // threshold, then we should switch to the "updates" page.
- return (mLastScrollPosition > mLowerThreshold) ? UPDATES_PAGE : ABOUT_PAGE;
- } else {
- return (mLastScrollPosition < mUpperThreshold) ? UPDATES_PAGE : ABOUT_PAGE;
- }
- case UPDATES_PAGE:
- if (getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
- // If the user is on the "updates" page, and the scroll position goes below the
- // upper threshold, then we should switch to the "about" page.
- return (mLastScrollPosition < mUpperThreshold) ? ABOUT_PAGE : UPDATES_PAGE;
- } else {
- return (mLastScrollPosition > mLowerThreshold) ? ABOUT_PAGE : UPDATES_PAGE;
- }
- }
- throw new IllegalStateException("Invalid current page " + mCurrentPage);
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (!mEnableSwipe) {
- return false;
- }
- if (event.getAction() == MotionEvent.ACTION_UP) {
- mCurrentPage = getDesiredPage();
- snapToEdgeSmooth();
- return true;
- }
- return false;
- }
-
- /**
- * Starts an "appear" animation by moving in the "Updates" from the right.
- */
- public void animateAppear() {
- final int x = Math.round((1.0f - FRAGMENT_WIDTH_SCREEN_WIDTH_FRACTION) * getWidth());
- mUpdatesFragment.setTranslationX(x);
- final ViewPropertyAnimator animator = mUpdatesFragment.animate();
- animator.translationX(0.0f);
- }
-}
diff --git a/src/com/android/contacts/detail/ContactDetailLayoutController.java b/src/com/android/contacts/detail/ContactDetailLayoutController.java
index 1ee31a5..098d950 100644
--- a/src/com/android/contacts/detail/ContactDetailLayoutController.java
+++ b/src/com/android/contacts/detail/ContactDetailLayoutController.java
@@ -16,104 +16,44 @@
package com.android.contacts.detail;
-import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
-import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewPropertyAnimator;
-import android.view.animation.AnimationUtils;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
import com.android.contacts.NfcHandler;
-import com.android.contacts.R;
+import com.android.contacts.R.id;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
import com.android.contacts.common.model.Contact;
-import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.common.util.UriUtils;
-import com.android.contacts.widget.FrameLayoutWithOverlay;
-import com.android.contacts.widget.TransitionAnimationView;
/**
- * Determines the layout of the contact card.
+ * Sets ContactDetailFragment data and performs animations when data changes.
+ *
+ * TODO: rename, move some of this logic into ContactDetailFragment and/or delete this class. This
+ * class used to have more responsibility: the ContactDetailFragment was used beside social update
+ * Fragments.
*/
public class ContactDetailLayoutController {
private static final String KEY_CONTACT_URI = "contactUri";
- private static final String KEY_CONTACT_HAS_UPDATES = "contactHasUpdates";
- private static final String KEY_CURRENT_PAGE_INDEX = "currentPageIndex";
-
- private static final int TAB_INDEX_DETAIL = 0;
- private static final int TAB_INDEX_UPDATES = 1;
private final int SINGLE_PANE_FADE_IN_DURATION = 275;
- /**
- * There are 4 possible layouts for the contact detail screen: TWO_COLUMN,
- * VIEW_PAGER_AND_TAB_CAROUSEL, FRAGMENT_CAROUSEL, and TWO_COLUMN_FRAGMENT_CAROUSEL.
- */
- private interface LayoutMode {
- /**
- * Tall and wide screen with details and updates shown side-by-side.
- */
- static final int TWO_COLUMN = 0;
- /**
- * Tall and narrow screen to allow swipe between the details and updates.
- */
- static final int VIEW_PAGER_AND_TAB_CAROUSEL = 1;
- /**
- * Short and wide screen to allow part of the other page to show.
- */
- static final int FRAGMENT_CAROUSEL = 2;
- /**
- * Same as FRAGMENT_CAROUSEL (allowing part of the other page to show) except the details
- * layout is similar to the details layout in TWO_COLUMN mode.
- */
- static final int TWO_COLUMN_FRAGMENT_CAROUSEL = 3;
- }
-
private final Activity mActivity;
- private final LayoutInflater mLayoutInflater;
private final FragmentManager mFragmentManager;
-
- private final View mViewContainer;
- private final TransitionAnimationView mTransitionAnimationView;
- private ContactDetailFragment mDetailFragment;
- private ContactDetailUpdatesFragment mUpdatesFragment;
-
- private View mDetailFragmentView;
- private View mUpdatesFragmentView;
-
- private final ViewPager mViewPager;
- private ContactDetailViewPagerAdapter mViewPagerAdapter;
- private int mViewPagerState;
-
- private final ContactDetailTabCarousel mTabCarousel;
- private final ContactDetailFragmentCarousel mFragmentCarousel;
-
private final ContactDetailFragment.Listener mContactDetailFragmentListener;
+ private final View mViewContainer;
+ private ContactDetailFragment mDetailFragment;
private Contact mContactData;
private Uri mContactUri;
- private boolean mTabCarouselIsAnimating;
-
- private boolean mContactHasUpdates;
-
- private int mLayoutMode;
-
public ContactDetailLayoutController(Activity activity, Bundle savedState,
- FragmentManager fragmentManager, TransitionAnimationView animationView,
- View viewContainer, ContactDetailFragment.Listener contactDetailFragmentListener) {
+ FragmentManager fragmentManager, View viewContainer,
+ ContactDetailFragment.Listener contactDetailFragmentListener) {
if (fragmentManager == null) {
throw new IllegalStateException("Cannot initialize a ContactDetailLayoutController "
@@ -121,230 +61,58 @@
}
mActivity = activity;
- mLayoutInflater = (LayoutInflater) activity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
mFragmentManager = fragmentManager;
mContactDetailFragmentListener = contactDetailFragmentListener;
-
- mTransitionAnimationView = animationView;
-
- // Retrieve views in case this is view pager and carousel mode
mViewContainer = viewContainer;
- mViewPager = (ViewPager) viewContainer.findViewById(R.id.pager);
- mTabCarousel = (ContactDetailTabCarousel) viewContainer.findViewById(R.id.tab_carousel);
-
- // Retrieve view in case this is in fragment carousel mode
- mFragmentCarousel = (ContactDetailFragmentCarousel) viewContainer.findViewById(
- R.id.fragment_carousel);
-
- // Retrieve container views in case they are already in the XML layout
- mDetailFragmentView = viewContainer.findViewById(R.id.about_fragment_container);
- mUpdatesFragmentView = viewContainer.findViewById(R.id.updates_fragment_container);
-
- // Determine the layout mode based on the presence of certain views in the layout XML.
- if (mViewPager != null) {
- mLayoutMode = LayoutMode.VIEW_PAGER_AND_TAB_CAROUSEL;
- } else if (mFragmentCarousel != null) {
- if (PhoneCapabilityTester.isUsingTwoPanes(mActivity)) {
- mLayoutMode = LayoutMode.TWO_COLUMN_FRAGMENT_CAROUSEL;
- } else {
- mLayoutMode = LayoutMode.FRAGMENT_CAROUSEL;
- }
- } else {
- mLayoutMode = LayoutMode.TWO_COLUMN;
- }
-
initialize(savedState);
}
private void initialize(Bundle savedState) {
- boolean fragmentsAddedToFragmentManager = true;
- mDetailFragment = (ContactDetailFragment) mFragmentManager.findFragmentByTag(
- ContactDetailViewPagerAdapter.ABOUT_FRAGMENT_TAG);
- mUpdatesFragment = (ContactDetailUpdatesFragment) mFragmentManager.findFragmentByTag(
- ContactDetailViewPagerAdapter.UPDATES_FRAGMENT_TAG);
-
- // If the detail fragment was found in the {@link FragmentManager} then we don't need to add
- // it again. Otherwise, create the fragments dynamically and remember to add them to the
- // {@link FragmentManager}.
- if (mDetailFragment == null) {
- mDetailFragment = new ContactDetailFragment();
- mUpdatesFragment = new ContactDetailUpdatesFragment();
- fragmentsAddedToFragmentManager = false;
- }
+ mDetailFragment = (ContactDetailFragment) mFragmentManager
+ .findFragmentById(id.contact_detail_about_fragment);
mDetailFragment.setListener(mContactDetailFragmentListener);
NfcHandler.register(mActivity, mDetailFragment);
- // Read from savedState if possible
- int currentPageIndex = 0;
if (savedState != null) {
mContactUri = savedState.getParcelable(KEY_CONTACT_URI);
- mContactHasUpdates = savedState.getBoolean(KEY_CONTACT_HAS_UPDATES);
- currentPageIndex = savedState.getInt(KEY_CURRENT_PAGE_INDEX, 0);
- }
- switch (mLayoutMode) {
- case LayoutMode.VIEW_PAGER_AND_TAB_CAROUSEL: {
- // Inflate 2 view containers to pass in as children to the {@link ViewPager},
- // which will in turn be the parents to the mDetailFragment and mUpdatesFragment
- // since the fragments must have the same parent view IDs in both landscape and
- // portrait layouts.
- mDetailFragmentView = mLayoutInflater.inflate(
- R.layout.contact_detail_about_fragment_container, mViewPager, false);
- mUpdatesFragmentView = mLayoutInflater.inflate(
- R.layout.contact_detail_updates_fragment_container, mViewPager, false);
-
- mViewPagerAdapter = new ContactDetailViewPagerAdapter();
- mViewPagerAdapter.setAboutFragmentView(mDetailFragmentView);
- mViewPagerAdapter.setUpdatesFragmentView(mUpdatesFragmentView);
-
- mViewPager.addView(mDetailFragmentView);
- mViewPager.addView(mUpdatesFragmentView);
- mViewPager.setAdapter(mViewPagerAdapter);
- mViewPager.setOnPageChangeListener(mOnPageChangeListener);
-
- if (!fragmentsAddedToFragmentManager) {
- FragmentTransaction transaction = mFragmentManager.beginTransaction();
- transaction.add(R.id.about_fragment_container, mDetailFragment,
- ContactDetailViewPagerAdapter.ABOUT_FRAGMENT_TAG);
- transaction.add(R.id.updates_fragment_container, mUpdatesFragment,
- ContactDetailViewPagerAdapter.UPDATES_FRAGMENT_TAG);
- transaction.commitAllowingStateLoss();
- mFragmentManager.executePendingTransactions();
- }
-
- mTabCarousel.setListener(mTabCarouselListener);
- mTabCarousel.restoreCurrentTab(currentPageIndex);
- mDetailFragment.setVerticalScrollListener(
- new VerticalScrollListener(TAB_INDEX_DETAIL));
- mUpdatesFragment.setVerticalScrollListener(
- new VerticalScrollListener(TAB_INDEX_UPDATES));
- mViewPager.setCurrentItem(currentPageIndex);
- break;
- }
- case LayoutMode.TWO_COLUMN: {
- if (!fragmentsAddedToFragmentManager) {
- FragmentTransaction transaction = mFragmentManager.beginTransaction();
- transaction.add(R.id.about_fragment_container, mDetailFragment,
- ContactDetailViewPagerAdapter.ABOUT_FRAGMENT_TAG);
- transaction.add(R.id.updates_fragment_container, mUpdatesFragment,
- ContactDetailViewPagerAdapter.UPDATES_FRAGMENT_TAG);
- transaction.commitAllowingStateLoss();
- mFragmentManager.executePendingTransactions();
- }
- break;
- }
- case LayoutMode.FRAGMENT_CAROUSEL:
- case LayoutMode.TWO_COLUMN_FRAGMENT_CAROUSEL: {
- // Add the fragments to the fragment containers in the carousel using a
- // {@link FragmentTransaction} if they haven't already been added to the
- // {@link FragmentManager}.
- if (!fragmentsAddedToFragmentManager) {
- FragmentTransaction transaction = mFragmentManager.beginTransaction();
- transaction.add(R.id.about_fragment_container, mDetailFragment,
- ContactDetailViewPagerAdapter.ABOUT_FRAGMENT_TAG);
- transaction.add(R.id.updates_fragment_container, mUpdatesFragment,
- ContactDetailViewPagerAdapter.UPDATES_FRAGMENT_TAG);
- transaction.commitAllowingStateLoss();
- mFragmentManager.executePendingTransactions();
- }
-
- mFragmentCarousel.setFragmentViews(
- (FrameLayoutWithOverlay) mDetailFragmentView,
- (FrameLayoutWithOverlay) mUpdatesFragmentView);
- mFragmentCarousel.setCurrentPage(currentPageIndex);
-
- break;
- }
- }
-
- // Setup the layout if we already have a saved state
- if (savedState != null) {
- if (mContactHasUpdates) {
- showContactWithUpdates(false);
- } else {
- showContactWithoutUpdates();
- }
+ // Immediately setup layout since we have saved state
+ showContact();
}
}
public void setContactData(Contact data) {
final boolean contactWasLoaded;
- final boolean contactHadUpdates;
final boolean isDifferentContact;
if (mContactData == null) {
- contactHadUpdates = false;
contactWasLoaded = false;
isDifferentContact = true;
} else {
- contactHadUpdates = mContactHasUpdates;
contactWasLoaded = true;
isDifferentContact =
!UriUtils.areEqual(mContactData.getLookupUri(), data.getLookupUri());
}
mContactData = data;
- if (PhoneCapabilityTester.isUsingTwoPanes(mActivity)) {
- // Tablet: If we already showed data before, we want to cross-fade from screen to screen
- if (contactWasLoaded && mTransitionAnimationView != null && isDifferentContact) {
- mTransitionAnimationView.startMaskTransition(mContactData == null, -1);
- }
- } else {
- // Small screen: We are on our own screen. Fade the data in, but only the first time
- if (!contactWasLoaded) {
- mViewContainer.setAlpha(0.0f);
- final ViewPropertyAnimator animator = mViewContainer.animate();
- animator.alpha(1.0f);
- animator.setDuration(SINGLE_PANE_FADE_IN_DURATION);
- }
+ // Small screen: We are on our own screen. Fade the data in, but only the first time
+ if (!contactWasLoaded) {
+ mViewContainer.setAlpha(0.0f);
+ final ViewPropertyAnimator animator = mViewContainer.animate();
+ animator.alpha(1.0f);
+ animator.setDuration(SINGLE_PANE_FADE_IN_DURATION);
}
- showContactWithoutUpdates();
+ showContact();
}
public void showEmptyState() {
- switch (mLayoutMode) {
- case LayoutMode.FRAGMENT_CAROUSEL: {
- mFragmentCarousel.setCurrentPage(0);
- mFragmentCarousel.enableSwipe(false);
- mDetailFragment.showEmptyState();
- break;
- }
- case LayoutMode.TWO_COLUMN: {
- mDetailFragment.setShowStaticPhoto(false);
- mUpdatesFragmentView.setVisibility(View.GONE);
- mDetailFragment.showEmptyState();
- break;
- }
- case LayoutMode.TWO_COLUMN_FRAGMENT_CAROUSEL: {
- mFragmentCarousel.setCurrentPage(0);
- mFragmentCarousel.enableSwipe(false);
- mDetailFragment.setShowStaticPhoto(false);
- mUpdatesFragmentView.setVisibility(View.GONE);
- mDetailFragment.showEmptyState();
- break;
- }
- case LayoutMode.VIEW_PAGER_AND_TAB_CAROUSEL: {
- mDetailFragment.setShowStaticPhoto(false);
- mDetailFragment.showEmptyState();
- mTabCarousel.loadData(null);
- mTabCarousel.setVisibility(View.GONE);
- mViewPagerAdapter.enableSwipe(false);
- mViewPager.setCurrentItem(0);
- break;
- }
- default:
- throw new IllegalStateException("Invalid LayoutMode " + mLayoutMode);
- }
+ mDetailFragment.setShowStaticPhoto(false);
+ mDetailFragment.showEmptyState();
}
- /**
- * Setup the layout for the contact with updates.
- * TODO: Clean up this method so it's easier to understand.
- */
- private void showContactWithUpdates(boolean animateStateChange) {
+ private void showContact() {
if (mContactData == null) {
return;
}
@@ -353,390 +121,20 @@
mContactUri = mContactData.getLookupUri();
boolean isDifferentContact = !UriUtils.areEqual(previousContactUri, mContactUri);
- switch (mLayoutMode) {
- case LayoutMode.TWO_COLUMN: {
- if (!isDifferentContact && animateStateChange) {
- // This is screen is very hard to animate properly, because there is such a hard
- // cut from the regular version. A proper animation would have to reflow text
- // and move things around. Doing a simple cross-fade instead.
- mTransitionAnimationView.startMaskTransition(false, -1);
- }
-
- // Set the contact data (hide the static photo because the photo will already be in
- // the header that scrolls with contact details).
- mDetailFragment.setShowStaticPhoto(false);
- // Show the updates fragment
- mUpdatesFragmentView.setVisibility(View.VISIBLE);
- break;
- }
- case LayoutMode.VIEW_PAGER_AND_TAB_CAROUSEL: {
- // Update and show the tab carousel (also restore its last saved position)
- mTabCarousel.loadData(mContactData);
- mTabCarousel.restoreYCoordinate();
- mTabCarousel.setVisibility(View.VISIBLE);
- // Update ViewPager to allow swipe between all the fragments (to see updates)
- mViewPagerAdapter.enableSwipe(true);
- // If this is a different contact than before, then reset some views.
- if (isDifferentContact) {
- resetViewPager();
- resetTabCarousel();
- }
- if (!isDifferentContact && animateStateChange) {
- mTabCarousel.animateAppear(mViewContainer.getWidth(),
- mDetailFragment.getFirstListItemOffset());
- }
- break;
- }
- case LayoutMode.FRAGMENT_CAROUSEL: {
- // Allow swiping between all fragments
- mFragmentCarousel.enableSwipe(true);
- if (!isDifferentContact && animateStateChange) {
- mFragmentCarousel.animateAppear();
- }
- break;
- }
- case LayoutMode.TWO_COLUMN_FRAGMENT_CAROUSEL: {
- // Allow swiping between all fragments
- mFragmentCarousel.enableSwipe(true);
- if (isDifferentContact) {
- mFragmentCarousel.reset();
- }
- if (!isDifferentContact && animateStateChange) {
- mFragmentCarousel.animateAppear();
- }
- mDetailFragment.setShowStaticPhoto(false);
- break;
- }
- default:
- throw new IllegalStateException("Invalid LayoutMode " + mLayoutMode);
- }
+ mDetailFragment.setShowStaticPhoto(true);
if (isDifferentContact) {
- resetFragments();
+ mDetailFragment.resetAdapter();
}
mDetailFragment.setData(mContactUri, mContactData);
- mUpdatesFragment.setData(mContactUri, mContactData);
- }
-
- /**
- * Setup the layout for the contact without updates.
- * TODO: Clean up this method so it's easier to understand.
- */
- private void showContactWithoutUpdates() {
- if (mContactData == null) {
- return;
- }
-
- Uri previousContactUri = mContactUri;
- mContactUri = mContactData.getLookupUri();
- boolean isDifferentContact = !UriUtils.areEqual(previousContactUri, mContactUri);
-
- switch (mLayoutMode) {
- case LayoutMode.TWO_COLUMN:
- // Show the static photo which is next to the list of scrolling contact details
- mDetailFragment.setShowStaticPhoto(true);
- // Hide the updates fragment
- mUpdatesFragmentView.setVisibility(View.GONE);
- break;
- case LayoutMode.VIEW_PAGER_AND_TAB_CAROUSEL:
- // Hide the tab carousel
- mTabCarousel.setVisibility(View.GONE);
- // Update ViewPager to disable swipe so that it only shows the detail fragment
- // and switch to the detail fragment
- mViewPagerAdapter.enableSwipe(false);
- mViewPager.setCurrentItem(0, false /* smooth transition */);
- break;
- case LayoutMode.FRAGMENT_CAROUSEL:
- // Disable swipe so only the detail fragment shows
- mFragmentCarousel.setCurrentPage(0);
- mFragmentCarousel.enableSwipe(false);
- break;
- case LayoutMode.TWO_COLUMN_FRAGMENT_CAROUSEL:
- mFragmentCarousel.setCurrentPage(0);
- mFragmentCarousel.enableSwipe(false);
- mDetailFragment.setShowStaticPhoto(true);
- break;
- default:
- throw new IllegalStateException("Invalid LayoutMode " + mLayoutMode);
- }
-
- if (isDifferentContact) {
- resetFragments();
- }
-
- mDetailFragment.setData(mContactUri, mContactData);
- }
-
- private void resetTabCarousel() {
- mTabCarousel.reset();
- }
-
- private void resetViewPager() {
- mViewPager.setCurrentItem(0, false /* smooth transition */);
- }
-
- private void resetFragments() {
- mDetailFragment.resetAdapter();
- mUpdatesFragment.resetAdapter();
}
public FragmentKeyListener getCurrentPage() {
- switch (getCurrentPageIndex()) {
- case 0:
- return mDetailFragment;
- case 1:
- return mUpdatesFragment;
- default:
- throw new IllegalStateException("Invalid current item for ViewPager");
- }
- }
-
- private int getCurrentPageIndex() {
- // If the contact has social updates, then retrieve the current page based on the
- // {@link ViewPager} or fragment carousel.
- if (mContactHasUpdates) {
- if (mViewPager != null) {
- return mViewPager.getCurrentItem();
- } else if (mFragmentCarousel != null) {
- return mFragmentCarousel.getCurrentPage();
- }
- }
- // Otherwise return the default page (detail fragment).
- return 0;
+ return mDetailFragment;
}
public void onSaveInstanceState(Bundle outState) {
outState.putParcelable(KEY_CONTACT_URI, mContactUri);
- outState.putBoolean(KEY_CONTACT_HAS_UPDATES, mContactHasUpdates);
- outState.putInt(KEY_CURRENT_PAGE_INDEX, getCurrentPageIndex());
- }
-
- private final OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() {
-
- private ObjectAnimator mTabCarouselAnimator;
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- // The user is horizontally dragging the {@link ViewPager}, so send
- // these scroll changes to the tab carousel. Ignore these events though if the carousel
- // is actually controlling the {@link ViewPager} scrolls because it will already be
- // in the correct position.
- if (mViewPager.isFakeDragging()) return;
-
- int x = (int) ((position + positionOffset) *
- mTabCarousel.getAllowedHorizontalScrollLength());
- mTabCarousel.scrollTo(x, 0);
- }
-
- @Override
- public void onPageSelected(int position) {
- // Since the {@link ViewPager} has committed to a new page now (but may not have
- // finished scrolling yet), update the tab selection in the carousel.
- mTabCarousel.setCurrentTab(position);
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- if (mViewPagerState == ViewPager.SCROLL_STATE_IDLE) {
-
- // If we are leaving the IDLE state, we are starting a swipe.
- // First cancel any pending animations on the tab carousel.
- cancelTabCarouselAnimator();
-
- // Sync the two lists because the list on the other page will start to show as
- // we swipe over more.
- syncScrollStateBetweenLists(mViewPager.getCurrentItem());
-
- } else if (state == ViewPager.SCROLL_STATE_IDLE) {
-
- // Otherwise if the {@link ViewPager} is idle now, a page has been selected and
- // scrolled into place. Perform an animation of the tab carousel is needed.
- int currentPageIndex = mViewPager.getCurrentItem();
- int tabCarouselOffset = (int) mTabCarousel.getY();
- boolean shouldAnimateTabCarousel;
-
- // Find the offset position of the first item in the list of the current page.
- int listOffset = getOffsetOfFirstItemInList(currentPageIndex);
-
- // If the list was able to successfully offset by the tab carousel amount, then
- // log this as the new Y coordinate for that page, and no animation is needed.
- if (listOffset == tabCarouselOffset) {
- mTabCarousel.storeYCoordinate(currentPageIndex, tabCarouselOffset);
- shouldAnimateTabCarousel = false;
- } else if (listOffset == Integer.MIN_VALUE) {
- // If the offset of the first item in the list is unknown (i.e. the item
- // is no longer visible on screen) then just animate the tab carousel to the
- // previously logged position.
- shouldAnimateTabCarousel = true;
- } else if (Math.abs(listOffset) < Math.abs(tabCarouselOffset)) {
- // If the list could not offset the full amount of the tab carousel offset (i.e.
- // the list can only be scrolled a tiny amount), then animate the carousel down
- // to compensate.
- mTabCarousel.storeYCoordinate(currentPageIndex, listOffset);
- shouldAnimateTabCarousel = true;
- } else {
- // By default, animate back to the Y coordinate of the tab carousel the last
- // time the other page was selected.
- shouldAnimateTabCarousel = true;
- }
-
- if (shouldAnimateTabCarousel) {
- float desiredOffset = mTabCarousel.getStoredYCoordinateForTab(currentPageIndex);
- if (desiredOffset != tabCarouselOffset) {
- createTabCarouselAnimator(desiredOffset);
- mTabCarouselAnimator.start();
- }
- }
- }
- mViewPagerState = state;
- }
-
- private void createTabCarouselAnimator(float desiredValue) {
- mTabCarouselAnimator = ObjectAnimator.ofFloat(
- mTabCarousel, "y", desiredValue).setDuration(75);
- mTabCarouselAnimator.setInterpolator(AnimationUtils.loadInterpolator(
- mActivity, android.R.anim.accelerate_decelerate_interpolator));
- mTabCarouselAnimator.addListener(mTabCarouselAnimatorListener);
- }
-
- private void cancelTabCarouselAnimator() {
- if (mTabCarouselAnimator != null) {
- mTabCarouselAnimator.cancel();
- mTabCarouselAnimator = null;
- mTabCarouselIsAnimating = false;
- }
- }
- };
-
- private void syncScrollStateBetweenLists(int currentPageIndex) {
- // Since the user interacted with the currently visible page, we need to sync the
- // list on the other page (i.e. if the updates page is the current page, modify the
- // list in the details page).
- if (currentPageIndex == TAB_INDEX_UPDATES) {
- mDetailFragment.requestToMoveToOffset((int) mTabCarousel.getY());
- } else {
- mUpdatesFragment.requestToMoveToOffset((int) mTabCarousel.getY());
- }
- }
-
- private int getOffsetOfFirstItemInList(int currentPageIndex) {
- if (currentPageIndex == TAB_INDEX_DETAIL) {
- return mDetailFragment.getFirstListItemOffset();
- } else {
- return mUpdatesFragment.getFirstListItemOffset();
- }
- }
-
- /**
- * This listener keeps track of whether the tab carousel animation is currently going on or not,
- * in order to prevent other simultaneous changes to the Y position of the tab carousel which
- * can cause flicker.
- */
- private final AnimatorListener mTabCarouselAnimatorListener = new AnimatorListener() {
-
- @Override
- public void onAnimationCancel(Animator animation) {
- mTabCarouselIsAnimating = false;
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mTabCarouselIsAnimating = false;
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
- mTabCarouselIsAnimating = true;
- }
-
- @Override
- public void onAnimationStart(Animator animation) {
- mTabCarouselIsAnimating = true;
- }
- };
-
- private final ContactDetailTabCarousel.Listener mTabCarouselListener
- = new ContactDetailTabCarousel.Listener() {
-
- @Override
- public void onTouchDown() {
- // The user just started scrolling the carousel, so begin
- // "fake dragging" the {@link ViewPager} if it's not already
- // doing so.
- if (!mViewPager.isFakeDragging()) mViewPager.beginFakeDrag();
- }
-
- @Override
- public void onTouchUp() {
- // The user just stopped scrolling the carousel, so stop
- // "fake dragging" the {@link ViewPager} if it was doing so
- // before.
- if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag();
- }
-
- @Override
- public void onScrollChanged(int l, int t, int oldl, int oldt) {
- // The user is scrolling the carousel, so send the scroll
- // deltas to the {@link ViewPager} so it can move in sync.
- if (mViewPager.isFakeDragging()) {
- mViewPager.fakeDragBy(oldl - l);
- }
- }
-
- @Override
- public void onTabSelected(int position) {
- // The user selected a tab, so update the {@link ViewPager}
- mViewPager.setCurrentItem(position);
- }
- };
-
- private final class VerticalScrollListener implements OnScrollListener {
-
- private final int mPageIndex;
-
- public VerticalScrollListener(int pageIndex) {
- mPageIndex = pageIndex;
- }
-
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
- int totalItemCount) {
- int currentPageIndex = mViewPager.getCurrentItem();
- // Don't move the carousel if: 1) the contact does not have social updates because then
- // tab carousel must not be visible, 2) if the view pager is still being scrolled,
- // 3) if the current page being viewed is not this one, or 4) if the tab carousel
- // is already being animated vertically.
- if (!mContactHasUpdates || mViewPagerState != ViewPager.SCROLL_STATE_IDLE ||
- mPageIndex != currentPageIndex || mTabCarouselIsAnimating) {
- return;
- }
- // If the FIRST item is not visible on the screen, then the carousel must be pinned
- // at the top of the screen.
- if (firstVisibleItem != 0) {
- mTabCarousel.moveToYCoordinate(mPageIndex,
- -mTabCarousel.getAllowedVerticalScrollLength());
- return;
- }
- View topView = view.getChildAt(firstVisibleItem);
- if (topView == null) {
- return;
- }
- int amtToScroll = Math.max((int) view.getChildAt(firstVisibleItem).getY(),
- -mTabCarousel.getAllowedVerticalScrollLength());
- mTabCarousel.moveToYCoordinate(mPageIndex, amtToScroll);
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- // Once the list has become IDLE, check if we need to sync the scroll position of
- // the other list now. This will make swiping faster by doing the re-layout now
- // (instead of at the start of a swipe). However, there will still be another check
- // when we start swiping if the scroll positions are correct (to catch the edge case
- // where the user flings and immediately starts a swipe so we never get the idle state).
- if (scrollState == SCROLL_STATE_IDLE) {
- syncScrollStateBetweenLists(mPageIndex);
- }
- }
}
}
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
deleted file mode 100644
index 25bcac6..0000000
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.detail;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-import android.view.ViewPropertyAnimator;
-import android.widget.HorizontalScrollView;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.util.MoreMath;
-import com.android.contacts.util.SchedulingUtils;
-
-/**
- * This is a horizontally scrolling carousel with 2 tabs: one to see info about the contact and
- * one to see updates from the contact.
- */
-public class ContactDetailTabCarousel extends HorizontalScrollView implements OnTouchListener {
-
- private static final String TAG = ContactDetailTabCarousel.class.getSimpleName();
-
- private static final int TRANSITION_TIME = 200;
- private static final int TRANSITION_MOVE_IN_TIME = 150;
-
- private static final int TAB_INDEX_ABOUT = 0;
- private static final int TAB_INDEX_UPDATES = 1;
- private static final int TAB_COUNT = 2;
-
- /** Tab width as defined as a fraction of the screen width */
- private float mTabWidthScreenWidthFraction;
-
- /** Tab height as defined as a fraction of the screen width */
- private float mTabHeightScreenWidthFraction;
-
- /** Height in pixels of the shadow under the tab carousel */
- private int mTabShadowHeight;
-
- private ImageView mPhotoView;
- private View mPhotoViewOverlay;
- private TextView mStatusView;
- private ImageView mStatusPhotoView;
- private final ContactDetailPhotoSetter mPhotoSetter = new ContactDetailPhotoSetter();
-
- private Listener mListener;
-
- private int mCurrentTab = TAB_INDEX_ABOUT;
-
- private View mTabAndShadowContainer;
- private View mShadow;
- private CarouselTab mAboutTab;
- private View mTabDivider;
- private CarouselTab mUpdatesTab;
-
- /** Last Y coordinate of the carousel when the tab at the given index was selected */
- private final float[] mYCoordinateArray = new float[TAB_COUNT];
-
- private int mTabDisplayLabelHeight;
-
- private boolean mScrollToCurrentTab = false;
- private int mLastScrollPosition = Integer.MIN_VALUE;
- private int mAllowedHorizontalScrollLength = Integer.MIN_VALUE;
- private int mAllowedVerticalScrollLength = Integer.MIN_VALUE;
-
- /** Factor to scale scroll-amount sent to listeners. */
- private float mScrollScaleFactor = 1.0f;
-
- private static final float MAX_ALPHA = 0.5f;
-
- /**
- * Interface for callbacks invoked when the user interacts with the carousel.
- */
- public interface Listener {
- public void onTouchDown();
- public void onTouchUp();
-
- public void onScrollChanged(int l, int t, int oldl, int oldt);
- public void onTabSelected(int position);
- }
-
- public ContactDetailTabCarousel(Context context, AttributeSet attrs) {
- super(context, attrs);
-
- setOnTouchListener(this);
-
- Resources resources = mContext.getResources();
- mTabDisplayLabelHeight = resources.getDimensionPixelSize(
- R.dimen.detail_tab_carousel_tab_label_height);
- mTabShadowHeight = resources.getDimensionPixelSize(
- R.dimen.detail_contact_photo_shadow_height);
- mTabWidthScreenWidthFraction = resources.getFraction(
- R.fraction.tab_width_screen_width_percentage, 1, 1);
- mTabHeightScreenWidthFraction = resources.getFraction(
- R.fraction.tab_height_screen_width_percentage, 1, 1);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mTabAndShadowContainer = findViewById(R.id.tab_and_shadow_container);
- mAboutTab = (CarouselTab) findViewById(R.id.tab_about);
- mAboutTab.setLabel(mContext.getString(R.string.contactDetailAbout));
- mAboutTab.setOverlayOnClickListener(mAboutTabTouchInterceptListener);
-
- mTabDivider = findViewById(R.id.tab_divider);
-
- mUpdatesTab = (CarouselTab) findViewById(R.id.tab_update);
- mUpdatesTab.setLabel(mContext.getString(R.string.contactDetailUpdates));
- mUpdatesTab.setOverlayOnClickListener(mUpdatesTabTouchInterceptListener);
-
- mShadow = findViewById(R.id.shadow);
-
- // Retrieve the photo view for the "about" tab
- // TODO: This should be moved down to mAboutTab, so that it hosts its own controls
- mPhotoView = (ImageView) mAboutTab.findViewById(R.id.photo);
- mPhotoViewOverlay = mAboutTab.findViewById(R.id.photo_overlay);
-
- // Retrieve the social update views for the "updates" tab
- // TODO: This should be moved down to mUpdatesTab, so that it hosts its own controls
- mStatusView = (TextView) mUpdatesTab.findViewById(R.id.status);
- mStatusPhotoView = (ImageView) mUpdatesTab.findViewById(R.id.status_photo);
-
- // Workaround for framework issue... it shouldn't be necessary to have a
- // clickable object in the hierarchy, but if not the horizontal scroll
- // behavior doesn't work. Note: the "About" tab doesn't need this
- // because we set a real click-handler elsewhere.
- mStatusView.setClickable(true);
- mStatusPhotoView.setClickable(true);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int screenWidth = MeasureSpec.getSize(widthMeasureSpec);
- // Compute the width of a tab as a fraction of the screen width
- int tabWidth = Math.round(mTabWidthScreenWidthFraction * screenWidth);
-
- // Find the allowed scrolling length by subtracting the current visible screen width
- // from the total length of the tabs.
- mAllowedHorizontalScrollLength = tabWidth * TAB_COUNT - screenWidth;
-
- // Scrolling by mAllowedHorizontalScrollLength causes listeners to
- // scroll by the entire screen amount; compute the scale-factor
- // necessary to make this so.
- if (mAllowedHorizontalScrollLength == 0) {
- // Guard against divide-by-zero.
- // Note: this hard-coded value prevents a crash, but won't result in the
- // desired scrolling behavior. We rely on the framework calling onMeasure()
- // again with a non-zero screen width.
- mScrollScaleFactor = 1.0f;
- Log.w(TAG, "set scale-factor to 1.0 to avoid divide-by-zero");
- } else {
- mScrollScaleFactor = screenWidth / mAllowedHorizontalScrollLength;
- }
-
- int tabHeight = Math.round(screenWidth * mTabHeightScreenWidthFraction) + mTabShadowHeight;
- // Set the child {@link LinearLayout} to be TAB_COUNT * the computed tab width so that the
- // {@link LinearLayout}'s children (which are the tabs) will evenly split that width.
- if (getChildCount() > 0) {
- View child = getChildAt(0);
-
- // add 1 dip of separation between the tabs
- final int seperatorPixels =
- (int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
- getResources().getDisplayMetrics()) + 0.5f);
-
- child.measure(
- MeasureSpec.makeMeasureSpec(
- TAB_COUNT * tabWidth +
- (TAB_COUNT - 1) * seperatorPixels, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(tabHeight, MeasureSpec.EXACTLY));
- }
-
- mAllowedVerticalScrollLength = tabHeight - mTabDisplayLabelHeight - mTabShadowHeight;
- setMeasuredDimension(
- resolveSize(screenWidth, widthMeasureSpec),
- resolveSize(tabHeight, heightMeasureSpec));
- }
-
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
- super.onLayout(changed, l, t, r, b);
-
- // Defer this stuff until after the layout has finished. This is because
- // updateAlphaLayers() ultimately results in another layout request, and
- // the framework currently can't handle this safely.
- if (!mScrollToCurrentTab) return;
- mScrollToCurrentTab = false;
- SchedulingUtils.doAfterLayout(this, new Runnable() {
- @Override
- public void run() {
- scrollTo(mCurrentTab == TAB_INDEX_ABOUT ? 0 : mAllowedHorizontalScrollLength, 0);
- updateAlphaLayers();
- }
- });
- }
-
- /** When clicked, selects the corresponding tab. */
- private class TabClickListener implements OnClickListener {
- private final int mTab;
-
- public TabClickListener(int tab) {
- super();
- mTab = tab;
- }
-
- @Override
- public void onClick(View v) {
- mListener.onTabSelected(mTab);
- }
- }
-
- private final TabClickListener mAboutTabTouchInterceptListener =
- new TabClickListener(TAB_INDEX_ABOUT);
-
- private final TabClickListener mUpdatesTabTouchInterceptListener =
- new TabClickListener(TAB_INDEX_UPDATES);
-
- /**
- * Does in "appear" animation to allow a seamless transition from
- * the "No updates" mode.
- * @param width Width of the container. As we haven't been layed out yet, we can't know
- * @param scrollOffset The offset by how far we scrolled, where 0=not scrolled, -x=scrolled by
- * x pixels, Integer.MIN_VALUE=scrolled so far that the image is not visible in "no updates"
- * mode of this screen
- */
- public void animateAppear(int width, int scrollOffset) {
- final float photoHeight = mTabHeightScreenWidthFraction * width;
- final boolean animateZoomAndFade;
- int pixelsToScrollVertically = 0;
-
- // Depending on how far we are scrolled down, there is one of three animations:
- // - Zoom and fade the picture (if it is still visible)
- // - Scroll, zoom and fade (if the picture is mostly invisible and we now have a
- // bigger visible region due to the pinning)
- // - Just scroll if the picture is completely invisible. This time, no zoom is needed
- if (scrollOffset == Integer.MIN_VALUE) {
- // animate in completely by scrolling. no need for zooming here
- pixelsToScrollVertically = mTabDisplayLabelHeight;
- animateZoomAndFade = false;
- } else {
- final int pixelsOfPhotoLeft = Math.round(photoHeight) + scrollOffset;
- if (pixelsOfPhotoLeft > mTabDisplayLabelHeight) {
- // nothing to scroll
- pixelsToScrollVertically = 0;
- } else {
- pixelsToScrollVertically = mTabDisplayLabelHeight - pixelsOfPhotoLeft;
- }
- animateZoomAndFade = true;
- }
-
- if (pixelsToScrollVertically != 0) {
- // We can't animate ourselves here, because our own translation is needed for the user's
- // scrolling. Instead, we use our only child. As we are transparent, that is just as
- // good
- mTabAndShadowContainer.setTranslationY(-pixelsToScrollVertically);
- final ViewPropertyAnimator animator = mTabAndShadowContainer.animate();
- animator.translationY(0.0f);
- animator.setDuration(TRANSITION_MOVE_IN_TIME);
- }
-
- if (animateZoomAndFade) {
- // Hack: We have two types of possible layouts:
- // If the picture is square, it is square in both "with updates" and "without updates"
- // --> no need for scale animation here
- // example: 10inch tablet portrait
- // If the picture is non-square, it is full-width in "without updates" and something
- // arbitrary in "with updates"
- // --> do animation with container
- // example: 4.6inch phone portrait
- final boolean squarePicture =
- mTabWidthScreenWidthFraction == mTabHeightScreenWidthFraction;
- final int firstTransitionTime;
- if (squarePicture) {
- firstTransitionTime = 0;
- } else {
- // For x, we need to scale our container so we'll animate the whole tab
- // (unfortunately, we need to have the text invisible during this transition as it
- // would also be stretched)
- float revScale = 1.0f/mTabWidthScreenWidthFraction;
- mAboutTab.setScaleX(revScale);
- mAboutTab.setPivotX(0.0f);
- final ViewPropertyAnimator aboutAnimator = mAboutTab.animate();
- aboutAnimator.setDuration(TRANSITION_TIME);
- aboutAnimator.scaleX(1.0f);
-
- // For y, we need to scale only the picture itself because we want it to be cropped
- mPhotoView.setScaleY(revScale);
- mPhotoView.setPivotY(photoHeight * 0.5f);
- final ViewPropertyAnimator photoAnimator = mPhotoView.animate();
- photoAnimator.setDuration(TRANSITION_TIME);
- photoAnimator.scaleY(1.0f);
- firstTransitionTime = TRANSITION_TIME;
- }
-
- // Animate in the labels after the above transition is finished
- mAboutTab.fadeInLabelViewAnimator(firstTransitionTime, true);
- mUpdatesTab.fadeInLabelViewAnimator(firstTransitionTime, false);
-
- final float pixelsToTranslate = (1.0f - mTabWidthScreenWidthFraction) * width;
- // Views to translate
- for (View view : new View[] { mUpdatesTab, mTabDivider }) {
- view.setTranslationX(pixelsToTranslate);
- final ViewPropertyAnimator translateAnimator = view.animate();
- translateAnimator.translationX(0.0f);
- translateAnimator.setDuration(TRANSITION_TIME);
- }
-
- // Another hack: If the picture is square, there is no shadow in "Without updates"
- // --> fade it in after the translations are done
- if (squarePicture) {
- mShadow.setAlpha(0.0f);
- mShadow.animate().setStartDelay(TRANSITION_TIME).alpha(1.0f);
- }
- }
- }
-
- private void updateAlphaLayers() {
- float alpha = mLastScrollPosition * MAX_ALPHA / mAllowedHorizontalScrollLength;
- alpha = MoreMath.clamp(alpha, 0.0f, 1.0f);
- mAboutTab.setAlphaLayerValue(alpha);
- mUpdatesTab.setAlphaLayerValue(MAX_ALPHA - alpha);
- }
-
- @Override
- protected void onScrollChanged(int x, int y, int oldX, int oldY) {
- super.onScrollChanged(x, y, oldX, oldY);
-
- // Guard against framework issue where onScrollChanged() is called twice
- // for each touch-move event. This wreaked havoc on the tab-carousel: the
- // view-pager moved twice as fast as it should because we called fakeDragBy()
- // twice with the same value.
- if (mLastScrollPosition == x) return;
-
- // Since we never completely scroll the about/updates tabs off-screen,
- // the draggable range is less than the width of the carousel. Our
- // listeners don't care about this... if we scroll 75% percent of our
- // draggable range, they want to scroll 75% of the entire carousel
- // width, not the same number of pixels that we scrolled.
- int scaledL = (int) (x * mScrollScaleFactor);
- int oldScaledL = (int) (oldX * mScrollScaleFactor);
- mListener.onScrollChanged(scaledL, y, oldScaledL, oldY);
-
- mLastScrollPosition = x;
- updateAlphaLayers();
- }
-
- /**
- * Reset the carousel to the start position (i.e. because new data will be loaded in for a
- * different contact).
- */
- public void reset() {
- scrollTo(0, 0);
- setCurrentTab(0);
- moveToYCoordinate(0, 0);
- }
-
- /**
- * Set the current tab that should be restored when the view is first laid out.
- */
- public void restoreCurrentTab(int position) {
- setCurrentTab(position);
- // It is only possible to scroll the view after onMeasure() has been called (where the
- // allowed horizontal scroll length is determined). Hence, set a flag that will be read
- // in onLayout() after the children and this view have finished being laid out.
- mScrollToCurrentTab = true;
- }
-
- /**
- * Restore the Y position of this view to the last manually requested value. This can be done
- * after the parent has been re-laid out again, where this view's position could have been
- * lost if the view laid outside its parent's bounds.
- */
- public void restoreYCoordinate() {
- setY(getStoredYCoordinateForTab(mCurrentTab));
- }
-
- /**
- * Request that the view move to the given Y coordinate. Also store the Y coordinate as the
- * last requested Y coordinate for the given tabIndex.
- */
- public void moveToYCoordinate(int tabIndex, float y) {
- setY(y);
- storeYCoordinate(tabIndex, y);
- }
-
- /**
- * Store this information as the last requested Y coordinate for the given tabIndex.
- */
- public void storeYCoordinate(int tabIndex, float y) {
- mYCoordinateArray[tabIndex] = y;
- }
-
- /**
- * Returns the stored Y coordinate of this view the last time the user was on the selected
- * tab given by tabIndex.
- */
- public float getStoredYCoordinateForTab(int tabIndex) {
- return mYCoordinateArray[tabIndex];
- }
-
- /**
- * Returns the number of pixels that this view can be scrolled horizontally.
- */
- public int getAllowedHorizontalScrollLength() {
- return mAllowedHorizontalScrollLength;
- }
-
- /**
- * Returns the number of pixels that this view can be scrolled vertically while still allowing
- * the tab labels to still show.
- */
- public int getAllowedVerticalScrollLength() {
- return mAllowedVerticalScrollLength;
- }
-
- /**
- * Updates the tab selection.
- */
- public void setCurrentTab(int position) {
- final CarouselTab selected, deselected;
-
- switch (position) {
- case TAB_INDEX_ABOUT:
- selected = mAboutTab;
- deselected = mUpdatesTab;
- break;
- case TAB_INDEX_UPDATES:
- selected = mUpdatesTab;
- deselected = mAboutTab;
- break;
- default:
- throw new IllegalStateException("Invalid tab position " + position);
- }
- selected.showSelectedState();
- selected.setOverlayClickable(false);
- deselected.showDeselectedState();
- deselected.setOverlayClickable(true);
- mCurrentTab = position;
- }
-
- /**
- * Loads the data from the Loader-Result. This is the only function that has to be called
- * from the outside to fully setup the View
- */
- public void loadData(Contact contactData) {
- if (contactData == null) return;
-
- // TODO: Move this into the {@link CarouselTab} class when the updates
- // fragment code is more finalized.
- final boolean expandOnClick = contactData.getPhotoUri() != null;
- final OnClickListener listener = mPhotoSetter.setupContactPhotoForClick(
- mContext, contactData, mPhotoView, expandOnClick);
-
- if (expandOnClick || contactData.isWritableContact(mContext)) {
- mPhotoViewOverlay.setOnClickListener(listener);
- } else {
- // Work around framework issue... if we instead use
- // setClickable(false), then we can't swipe horizontally.
- mPhotoViewOverlay.setOnClickListener(null);
- }
-
- ContactDetailDisplayUtils.setSocialSnippet(
- mContext, contactData, mStatusView, mStatusPhotoView);
- }
-
- /**
- * Set the given {@link Listener} to handle carousel events.
- */
- public void setListener(Listener listener) {
- mListener = listener;
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- mListener.onTouchDown();
- return true;
- case MotionEvent.ACTION_UP:
- mListener.onTouchUp();
- return true;
- }
- return super.onTouchEvent(event);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- boolean interceptTouch = super.onInterceptTouchEvent(ev);
- if (interceptTouch) {
- mListener.onTouchDown();
- }
- return interceptTouch;
- }
-}
diff --git a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java b/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
deleted file mode 100644
index 71186fe..0000000
--- a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2011 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
- */
-
-package com.android.contacts.detail;
-
-import android.app.ListFragment;
-import android.content.ContentUris;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract.StreamItems;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.ListView;
-
-import com.android.contacts.R;
-import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
-import com.android.contacts.detail.ContactDetailDisplayUtils.StreamPhotoTag;
-import com.android.contacts.util.StreamItemEntry;
-import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.account.AccountType;
-
-public class ContactDetailUpdatesFragment extends ListFragment implements FragmentKeyListener {
-
- private static final String TAG = "ContactDetailUpdatesFragment";
-
- private Contact mContactData;
- private Uri mLookupUri;
-
- private LayoutInflater mInflater;
- private StreamItemAdapter mStreamItemAdapter;
-
- private OnScrollListener mVerticalScrollListener;
-
- /**
- * Listener on clicks on a stream item.
- * <p>
- * It assumes the view has a tag of type {@link StreamItemEntry} associated with it.
- */
- private final View.OnClickListener mStreamItemClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- StreamItemEntry streamItemEntry = (StreamItemEntry) view.getTag();
- if (streamItemEntry == null) {
- // Ignore if this item does not have a stream item associated with it.
- return;
- }
- final AccountType accountType = getAccountTypeForStreamItemEntry(streamItemEntry);
-
- final Uri uri = ContentUris.withAppendedId(StreamItems.CONTENT_URI,
- streamItemEntry.getId());
- final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- intent.setClassName(accountType.syncAdapterPackageName,
- accountType.getViewStreamItemActivity());
- startActivity(intent);
- }
- };
-
- private final View.OnClickListener mStreamItemPhotoItemClickListener
- = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- StreamPhotoTag tag = (StreamPhotoTag) view.getTag();
- if (tag == null) {
- return;
- }
- final AccountType accountType = getAccountTypeForStreamItemEntry(tag.streamItem);
-
- final Intent intent = new Intent(Intent.ACTION_VIEW, tag.getStreamItemPhotoUri());
- intent.setClassName(accountType.syncAdapterPackageName,
- accountType.getViewStreamItemPhotoActivity());
- startActivity(intent);
- }
- };
-
- private AccountType getAccountTypeForStreamItemEntry(StreamItemEntry streamItemEntry) {
- return AccountTypeManager.getInstance(getActivity()).getAccountType(
- streamItemEntry.getAccountType(), streamItemEntry.getDataSet());
- }
-
- public ContactDetailUpdatesFragment() {
- // Explicit constructor for inflation
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- mInflater = inflater;
- return mInflater.inflate(R.layout.contact_detail_updates_fragment, container, false);
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- mStreamItemAdapter = new StreamItemAdapter(getActivity(), mStreamItemClickListener,
- mStreamItemPhotoItemClickListener);
- setListAdapter(mStreamItemAdapter);
- getListView().setOnScrollListener(mVerticalScrollListener);
- }
-
- public void setData(Uri lookupUri, Contact result) {
- if (result == null) {
- return;
- }
- mLookupUri = lookupUri;
- mContactData = result;
- }
-
- /**
- * Reset the list adapter in this {@link Fragment} to get rid of any saved scroll position
- * from a previous contact.
- */
- public void resetAdapter() {
- setListAdapter(mStreamItemAdapter);
- }
-
- @Override
- public boolean handleKeyDown(int keyCode) {
- return false;
- }
-
- public void setVerticalScrollListener(OnScrollListener listener) {
- mVerticalScrollListener = listener;
- }
-
- /**
- * Returns the top coordinate of the first item in the {@link ListView}. If the first item
- * in the {@link ListView} is not visible or there are no children in the list, then return
- * Integer.MIN_VALUE. Note that the returned value will be <= 0 because the first item in the
- * list cannot have a positive offset.
- */
- public int getFirstListItemOffset() {
- return ContactDetailDisplayUtils.getFirstListItemOffset(getListView());
- }
-
- /**
- * Tries to scroll the first item to the given offset (this can be a no-op if the list is
- * already in the correct position).
- * @param offset which should be <= 0
- */
- public void requestToMoveToOffset(int offset) {
- ContactDetailDisplayUtils.requestToMoveToOffset(getListView(), offset);
- }
-}
diff --git a/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java b/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java
deleted file mode 100644
index 4213490..0000000
--- a/src/com/android/contacts/detail/ContactDetailViewPagerAdapter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-package com.android.contacts.detail;
-
-import android.os.Parcelable;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * Adapter for the {@link ViewPager} for the contact detail page for a contact in 2 cases:
- * 1) without social updates, and 2) with social updates. The default initial case is for
- * the contact with social updates which uses all possible pages.
- */
-public class ContactDetailViewPagerAdapter extends PagerAdapter {
-
- public static final String ABOUT_FRAGMENT_TAG = "view-pager-about-fragment";
- public static final String UPDATES_FRAGMENT_TAG = "view-pager-updates-fragment";
-
- private static final int INDEX_ABOUT_FRAGMENT = 0;
- private static final int INDEX_UPDATES_FRAGMENT = 1;
-
- private static final int MAX_FRAGMENT_VIEW_COUNT = 2;
-
- /**
- * The initial value for the view count needs to be MAX_FRAGMENT_VIEW_COUNT,
- * otherwise anything smaller would break screen rotation functionality for a user viewing
- * a contact with social updates (i.e. the user was viewing the second page, rotates the
- * device, the view pager requires the second page to exist immediately on launch).
- */
- private int mFragmentViewCount = MAX_FRAGMENT_VIEW_COUNT;
-
- private View mAboutFragmentView;
- private View mUpdatesFragmentView;
-
- public ContactDetailViewPagerAdapter() {
- }
-
- public void setAboutFragmentView(View view) {
- mAboutFragmentView = view;
- }
-
- public void setUpdatesFragmentView(View view) {
- mUpdatesFragmentView = view;
- }
-
- /**
- * Enable swiping if the detail and update fragments should be showing. Otherwise diable
- * swiping if only the detail fragment should be showing.
- */
- public void enableSwipe(boolean enable) {
- mFragmentViewCount = enable ? MAX_FRAGMENT_VIEW_COUNT : 1;
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return mFragmentViewCount;
- }
-
- /** Gets called when the number of items changes. */
- @Override
- public int getItemPosition(Object object) {
- // Always return a valid index for the about fragment view because it's always shown
- // whether the contact has social updates or not.
- if (object == mAboutFragmentView) {
- return INDEX_ABOUT_FRAGMENT;
- }
- // Only return a valid index for the updates fragment view if our view count > 1.
- if (object == mUpdatesFragmentView && mFragmentViewCount > 1) {
- return INDEX_UPDATES_FRAGMENT;
- }
- // Otherwise the view should have no position.
- return POSITION_NONE;
- }
-
- @Override
- public void startUpdate(ViewGroup container) {
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- switch (position) {
- case INDEX_ABOUT_FRAGMENT:
- mAboutFragmentView.setVisibility(View.VISIBLE);
- return mAboutFragmentView;
- case INDEX_UPDATES_FRAGMENT:
- mUpdatesFragmentView.setVisibility(View.VISIBLE);
- return mUpdatesFragmentView;
- }
- throw new IllegalArgumentException("Invalid position: " + position);
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- ((View) object).setVisibility(View.GONE);
- }
-
- @Override
- public void finishUpdate(ViewGroup container) {
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return ((View) object) == view;
- }
-
- @Override
- public Parcelable saveState() {
- return null;
- }
-
- @Override
- public void restoreState(Parcelable state, ClassLoader loader) {
- }
-}
diff --git a/src/com/android/contacts/detail/ContactLoaderFragment.java b/src/com/android/contacts/detail/ContactLoaderFragment.java
index 0b420f7..1288cf7 100644
--- a/src/com/android/contacts/detail/ContactLoaderFragment.java
+++ b/src/com/android/contacts/detail/ContactLoaderFragment.java
@@ -439,7 +439,11 @@
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
// Launch!
- startActivityForResult(intent, REQUEST_CODE_PICK_RINGTONE);
+ try {
+ startActivityForResult(intent, REQUEST_CODE_PICK_RINGTONE);
+ } catch (ActivityNotFoundException ex) {
+ Toast.makeText(mContext, R.string.missing_app, Toast.LENGTH_SHORT).show();
+ }
}
@Override
diff --git a/src/com/android/contacts/detail/StreamItemAdapter.java b/src/com/android/contacts/detail/StreamItemAdapter.java
deleted file mode 100644
index 6e1adc5..0000000
--- a/src/com/android/contacts/detail/StreamItemAdapter.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2011 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
- */
-
-package com.android.contacts.detail;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-
-import com.android.contacts.R;
-import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.model.account.AccountType;
-import com.android.contacts.util.StreamItemEntry;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * List adapter for stream items of a given contact.
- */
-public class StreamItemAdapter extends BaseAdapter {
- /** The header view, hidden under the tab carousel, if present. */
- private static final int ITEM_VIEW_TYPE_HEADER = 0;
- /** The updates in the list. */
- private static final int ITEM_VIEW_TYPE_STREAM_ITEM = 1;
-
- private final Context mContext;
- private final View.OnClickListener mItemClickListener;
- private final View.OnClickListener mPhotoClickListener;
- private final LayoutInflater mInflater;
-
- private List<StreamItemEntry> mStreamItems;
-
- public StreamItemAdapter(Context context, View.OnClickListener itemClickListener,
- View.OnClickListener photoClickListener) {
- mContext = context;
- mItemClickListener = itemClickListener;
- mPhotoClickListener = photoClickListener;
- mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mStreamItems = Lists.newArrayList();
- }
-
- @Override
- public int getCount() {
- // The header should only be included as items in the list if there are other
- // stream items.
- int count = mStreamItems.size();
- return (count == 0) ? 0 : (count + 1);
- }
-
- @Override
- public Object getItem(int position) {
- if (position == 0) {
- return null;
- }
- return mStreamItems.get(position - 1);
- }
-
- @Override
- public long getItemId(int position) {
- if (position == 0) {
- return -1;
- }
- return position - 1;
- }
-
- @Override
- public boolean isEnabled(int position) {
- // Make all list items disabled, so they're not clickable.
- // We make child views clickable in getvView() if the account type supports
- // viewStreamItemActivity or viewStreamItemPhotoActivity.
- return false;
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- // See isEnabled().
- return false;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (position == 0) {
- return mInflater.inflate(R.layout.updates_header_contact, null);
- }
- final StreamItemEntry streamItem = (StreamItemEntry) getItem(position);
- final AccountTypeManager manager = AccountTypeManager.getInstance(mContext);
- final AccountType accountType =
- manager.getAccountType(streamItem.getAccountType(), streamItem.getDataSet());
-
- final View view = ContactDetailDisplayUtils.createStreamItemView(
- mInflater, mContext, convertView, streamItem,
- // Only pass the photo click listener if the account type has the photo
- // view activity.
- (accountType.getViewStreamItemPhotoActivity() == null) ? null : mPhotoClickListener
- );
- final View contentView = view.findViewById(R.id.stream_item_content);
-
- // If the account type has the stream item view activity, make the stream container
- // clickable.
- if (accountType.getViewStreamItemActivity() != null) {
- contentView.setTag(streamItem);
- contentView.setFocusable(true);
- contentView.setOnClickListener(mItemClickListener);
- contentView.setEnabled(true);
- } else {
- contentView.setTag(null);
- contentView.setFocusable(false);
- contentView.setOnClickListener(null);
- // setOnClickListener makes it clickable, so we need to overwrite it.
- contentView.setClickable(false);
- contentView.setEnabled(false);
- }
- return view;
- }
-
- @Override
- public int getViewTypeCount() {
- // ITEM_VIEW_TYPE_HEADER and ITEM_VIEW_TYPE_STREAM_ITEM
- return 2;
- }
-
- @Override
- public int getItemViewType(int position) {
- if (position == 0) {
- return ITEM_VIEW_TYPE_HEADER;
- }
- return ITEM_VIEW_TYPE_STREAM_ITEM;
- }
-
- public void setStreamItems(List<StreamItemEntry> streamItems) {
- mStreamItems = streamItems;
- notifyDataSetChanged();
- }
-}
diff --git a/src/com/android/contacts/editor/AggregationSuggestionEngine.java b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
index f121605..91df272 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionEngine.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
@@ -335,25 +335,24 @@
}
}
- private boolean updateSuggestedContactIds(Cursor cursor) {
- int count = cursor.getCount();
+ private boolean updateSuggestedContactIds(final Cursor cursor) {
+ final int count = cursor.getCount();
boolean changed = count != mSuggestedContactIds.length;
- if (!changed) {
- while (cursor.moveToNext()) {
- long contactId = cursor.getLong(0);
- if (Arrays.binarySearch(mSuggestedContactIds, contactId) < 0) {
- changed = true;
- break;
- }
+ final ArrayList<Long> newIds = new ArrayList<Long>(count);
+ while (cursor.moveToNext()) {
+ final long contactId = cursor.getLong(0);
+ if (!changed &&
+ Arrays.binarySearch(mSuggestedContactIds, contactId) < 0) {
+ changed = true;
}
+ newIds.add(contactId);
}
if (changed) {
- mSuggestedContactIds = new long[count];
- cursor.moveToPosition(-1);
- for (int i = 0; i < count; i++) {
- cursor.moveToNext();
- mSuggestedContactIds[i] = cursor.getLong(0);
+ mSuggestedContactIds = new long[newIds.size()];
+ int i = 0;
+ for (final Long newId : newIds) {
+ mSuggestedContactIds[i++] = newId;
}
Arrays.sort(mSuggestedContactIds);
}
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 54c9d3b..1b950d2 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -24,6 +24,7 @@
import android.app.Fragment;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
+import android.content.ActivityNotFoundException;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
@@ -34,6 +35,8 @@
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.graphics.Rect;
+import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
@@ -46,6 +49,7 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Groups;
import android.provider.ContactsContract.Intents;
+import android.provider.ContactsContract.QuickContact;
import android.provider.ContactsContract.RawContacts;
import android.text.TextUtils;
import android.util.Log;
@@ -84,13 +88,14 @@
import com.android.contacts.common.model.RawContactDelta;
import com.android.contacts.common.model.RawContactDeltaList;
import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.quickcontact.QuickContactActivity;
import com.android.contacts.util.ContactPhotoUtils;
import com.android.contacts.util.HelpUtils;
+import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.util.UiClosables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
@@ -201,6 +206,7 @@
private static final int REQUEST_CODE_JOIN = 0;
private static final int REQUEST_CODE_ACCOUNTS_CHANGED = 1;
+ private static final int REQUEST_CODE_PICK_RINGTONE = 2;
/**
* The raw contact for which we started "take photo" or "choose photo from gallery" most
@@ -252,6 +258,11 @@
private boolean mIsEdit = false;
private boolean mExistingContactDataReady = false;
+ // Variables related to phone specific option menus
+ private boolean mSendToVoicemailState;
+ private boolean mArePhoneOptionsChangable;
+ private String mCustomRingtone;
+
// This is used to pre-populate the editor with a display name when a user edits a read-only
// contact.
private String mDefaultDisplayName;
@@ -552,6 +563,8 @@
// If displayName is null at this point it is simply ignored later on by the editor.
bindEditorsForExistingContact(displayName, contact.isUserProfile(),
mRawContacts);
+
+ bindMenuItemsForPhone(contact);
}
@Override
@@ -597,6 +610,17 @@
bindEditors();
}
+ private void bindMenuItemsForPhone(Contact contact) {
+ mSendToVoicemailState = contact.isSendToVoicemail();
+ mCustomRingtone = contact.getCustomRingtone();
+ mArePhoneOptionsChangable = arePhoneOptionsChangable(contact);
+ }
+
+ private boolean arePhoneOptionsChangable(Contact contact) {
+ return contact != null && !contact.isDirectoryEntry()
+ && PhoneCapabilityTester.isPhone(mContext);
+ }
+
/**
* Merges extras from the intent.
*/
@@ -892,7 +916,7 @@
*/
private Bitmap updatedBitmapForRawContact(long rawContactId) {
String path = mUpdatedPhotos.getString(String.valueOf(rawContactId));
- return BitmapFactory.decodeFile(path);
+ return path == null ? null : BitmapFactory.decodeFile(path);
}
private void bindPhotoHandler(BaseRawContactEditorView editor, AccountType type,
@@ -1020,32 +1044,40 @@
final MenuItem joinMenu = menu.findItem(R.id.menu_join);
final MenuItem helpMenu = menu.findItem(R.id.menu_help);
final MenuItem discardMenu = menu.findItem(R.id.menu_discard);
+ final MenuItem sendToVoiceMailMenu = menu.findItem(R.id.menu_send_to_voicemail);
+ final MenuItem ringToneMenu = menu.findItem(R.id.menu_set_ringtone);
+ final MenuItem deleteMenu = menu.findItem(R.id.menu_delete);
// Set visibility of menus
doneMenu.setVisible(false);
- // Split only if more than one raw profile and not a user profile
- splitMenu.setVisible(mState.size() > 1 && !isEditingUserProfile());
-
- // Cannot join a user profile
- joinMenu.setVisible(!isEditingUserProfile());
-
// Discard menu is only available if at least one raw contact is editable
discardMenu.setVisible(mState != null &&
mState.getFirstWritableRawContact(mContext) != null);
// help menu depending on whether this is inserting or editing
if (Intent.ACTION_INSERT.equals(mAction)) {
- // inserting
HelpUtils.prepareHelpMenuItem(mContext, helpMenu, R.string.help_url_people_add);
+ splitMenu.setVisible(false);
+ joinMenu.setVisible(false);
+ deleteMenu.setVisible(false);
} else if (Intent.ACTION_EDIT.equals(mAction)) {
- // editing
HelpUtils.prepareHelpMenuItem(mContext, helpMenu, R.string.help_url_people_edit);
+ // Split only if more than one raw profile and not a user profile
+ splitMenu.setVisible(mState.size() > 1 && !isEditingUserProfile());
+ // Cannot join a user profile
+ joinMenu.setVisible(!isEditingUserProfile());
} else {
// something else, so don't show the help menu
helpMenu.setVisible(false);
}
+ // Hide telephony-related settings (ringtone, send to voicemail)
+ // if we don't have a telephone or are editing a new contact.
+ sendToVoiceMailMenu.setChecked(mSendToVoicemailState);
+ sendToVoiceMailMenu.setVisible(mArePhoneOptionsChangable);
+ ringToneMenu.setVisible(mArePhoneOptionsChangable);
+
int size = menu.size();
for (int i = 0; i < size; i++) {
menu.getItem(i).setEnabled(mEnabled);
@@ -1059,11 +1091,26 @@
return save(SaveMode.CLOSE);
case R.id.menu_discard:
return revert();
+ case R.id.menu_delete:
+ if (mListener != null) mListener.onDeleteRequested(mLookupUri);
+ return true;
case R.id.menu_split:
return doSplitContactAction();
case R.id.menu_join:
return doJoinContactAction();
+ case R.id.menu_set_ringtone:
+ doPickRingtone();
+ return true;
+ case R.id.menu_send_to_voicemail:
+ // Update state and save
+ mSendToVoicemailState = !mSendToVoicemailState;
+ item.setChecked(mSendToVoicemailState);
+ final Intent intent = ContactSaveService.createSetSendToVoicemail(
+ mContext, mLookupUri, mSendToVoicemailState);
+ mContext.startService(intent);
+ return true;
}
+
return false;
}
@@ -1155,6 +1202,46 @@
return true;
}
+ private void doPickRingtone() {
+
+ final Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
+ // Allow user to pick 'Default'
+ intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
+ // Show only ringtones
+ intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
+ // Allow the user to pick a silent ringtone
+ intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
+
+ final Uri ringtoneUri;
+ if (mCustomRingtone != null) {
+ ringtoneUri = Uri.parse(mCustomRingtone);
+ } else {
+ // Otherwise pick default ringtone Uri so that something is selected.
+ ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
+ }
+
+ // Put checkmark next to the current ringtone for this contact
+ intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
+
+ // Launch!
+ try {
+ startActivityForResult(intent, REQUEST_CODE_PICK_RINGTONE);
+ } catch (ActivityNotFoundException ex) {
+ Toast.makeText(mContext, R.string.missing_app, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private void handleRingtonePicked(Uri pickedUri) {
+ if (pickedUri == null || RingtoneManager.isDefault(pickedUri)) {
+ mCustomRingtone = null;
+ } else {
+ mCustomRingtone = pickedUri.toString();
+ }
+ Intent intent = ContactSaveService.createSetRingtone(
+ mContext, mLookupUri, mCustomRingtone);
+ mContext.startService(intent);
+ }
+
public static class CancelEditDialogFragment extends DialogFragment {
public static void show(ContactEditorFragment fragment) {
@@ -1225,9 +1312,7 @@
mLookupUri == null ? null : mLookupUri.getAuthority();
final String legacyAuthority = "contacts";
-
- resultIntent = new Intent();
- resultIntent.setAction(Intent.ACTION_VIEW);
+ final Uri lookupUri;
if (legacyAuthority.equals(requestAuthority)) {
// Build legacy Uri when requested by caller
final long contactId = ContentUris.parseId(Contacts.lookupContact(
@@ -1235,12 +1320,15 @@
final Uri legacyContentUri = Uri.parse("content://contacts/people");
final Uri legacyUri = ContentUris.withAppendedId(
legacyContentUri, contactId);
- resultIntent.setData(legacyUri);
+ lookupUri = legacyUri;
} else {
// Otherwise pass back a lookup-style Uri
- resultIntent.setData(contactLookupUri);
+ lookupUri = contactLookupUri;
}
-
+ resultIntent = QuickContact.composeQuickContactsIntent(getActivity(),
+ (Rect) null, lookupUri, QuickContactActivity.MODE_FULLY_EXPANDED, null);
+ // Make sure not to show QuickContacts on top of another QuickContacts.
+ resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
} else {
resultIntent = null;
}
@@ -1371,6 +1459,8 @@
*/
void onCustomEditContactActivityRequested(AccountWithDataSet account, Uri rawContactUri,
Bundle intentExtras, boolean redirect);
+
+ void onDeleteRequested(Uri contactUri);
}
private class EntityDeltaComparator implements Comparator<RawContactDelta> {
@@ -1728,6 +1818,14 @@
createContact();
break;
}
+ case REQUEST_CODE_PICK_RINGTONE: {
+ if (data != null) {
+ final Uri pickedUri = data.getParcelableExtra(
+ RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
+ handleRingtonePicked(pickedUri);
+ }
+ break;
+ }
}
}
diff --git a/src/com/android/contacts/editor/ContactEditorUtils.java b/src/com/android/contacts/editor/ContactEditorUtils.java
index e93d3c8..b132217 100644
--- a/src/com/android/contacts/editor/ContactEditorUtils.java
+++ b/src/com/android/contacts/editor/ContactEditorUtils.java
@@ -26,7 +26,7 @@
import android.text.TextUtils;
import android.util.Log;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index 85cbac8..e658f53 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -58,6 +58,8 @@
private boolean mHideOptional = true;
private boolean mHasShortAndLongForms;
private int mMinFieldHeight;
+ private int mEditTextTopPadding;
+ private int mEditTextBottomPadding;
private int mPreviousViewHeight;
public TextFieldsEditorView(Context context) {
@@ -82,6 +84,10 @@
mMinFieldHeight = mContext.getResources().getDimensionPixelSize(
R.dimen.editor_min_line_item_height);
+ mEditTextBottomPadding = mContext.getResources().getDimensionPixelSize(
+ R.dimen.editor_text_field_bottom_padding);
+ mEditTextTopPadding = mContext.getResources().getDimensionPixelSize(
+ R.dimen.editor_text_field_top_padding);
mFields = (ViewGroup) findViewById(R.id.editors);
mExpansionView = (ImageView) findViewById(R.id.expansion_view);
mExpansionViewContainer = findViewById(R.id.expansion_view_container);
@@ -196,7 +202,7 @@
final EditField field = kind.fieldList.get(index);
final EditText fieldView = new EditText(mContext);
fieldView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- field.isMultiLine() ? LayoutParams.WRAP_CONTENT : mMinFieldHeight));
+ LayoutParams.WRAP_CONTENT));
// Set either a minimum line requirement or a minimum height (because {@link TextView}
// only takes one or the other at a single time).
if (field.minLines != 0) {
@@ -205,6 +211,9 @@
fieldView.setMinHeight(mMinFieldHeight);
}
fieldView.setTextAppearance(getContext(), android.R.style.TextAppearance_Medium);
+ fieldView.setPadding(fieldView.getPaddingLeft(), mEditTextTopPadding,
+ fieldView.getPaddingRight(), mEditTextBottomPadding);
+ fieldView.setHintTextColor(R.color.secondary_text_color);
fieldView.setGravity(Gravity.TOP);
mFieldEditTexts[index] = fieldView;
fieldView.setId(vig.getId(state, kind, entry, index));
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index 9d46583..c12595d 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -245,6 +245,10 @@
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+ if (data == null || data.isClosed()) {
+ Log.e(TAG, "Failed to load group metadata");
+ return;
+ }
data.moveToPosition(-1);
if (data.moveToNext()) {
boolean deleted = data.getInt(GroupMetaDataLoader.DELETED) == 1;
@@ -277,6 +281,10 @@
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+ if (data == null || data.isClosed()) {
+ Log.e(TAG, "Failed to load group members");
+ return;
+ }
updateSize(data.getCount());
mAdapter.setContactCursor(data);
mMemberListView.setEmptyView(mEmptyView);
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index 91800f8..3d13bdd 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -974,9 +974,10 @@
});
}
DefaultImageRequest request = new DefaultImageRequest(member.getDisplayName(),
- member.getLookupKey());
+ member.getLookupKey(), true /* isCircular */);
mPhotoManager.loadPhoto(badge, member.getPhotoUri(),
- ViewUtil.getConstantPreLayoutWidth(badge), false, request);
+ ViewUtil.getConstantPreLayoutWidth(badge), false, true /* isCircular */,
+ request);
return result;
}
diff --git a/src/com/android/contacts/interactions/CalendarInteraction.java b/src/com/android/contacts/interactions/CalendarInteraction.java
new file mode 100644
index 0000000..4b766f8
--- /dev/null
+++ b/src/com/android/contacts/interactions/CalendarInteraction.java
@@ -0,0 +1,279 @@
+package com.android.contacts.interactions;
+
+import com.android.contacts.R;
+
+import android.content.ContentValues;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.CalendarContract.Attendees;
+import android.provider.CalendarContract.Events;
+import android.text.TextUtils;
+import android.text.format.Time;
+import android.util.Log;
+
+/**
+ * Represents a calendar event interaction, wrapping the columns in
+ * {@link android.provider.CalendarContract.Attendees}.
+ */
+public class CalendarInteraction implements ContactInteraction {
+ private static final String TAG = CalendarInteraction.class.getSimpleName();
+
+ private static final int CALENDAR_ICON_RES = R.drawable.ic_event_24dp;
+
+ private ContentValues mValues;
+
+ public CalendarInteraction(ContentValues values) {
+ mValues = values;
+ }
+
+ @Override
+ public Intent getIntent() {
+ return new Intent(Intent.ACTION_VIEW).setData(
+ ContentUris.withAppendedId(Events.CONTENT_URI, getEventId()));
+ }
+
+ @Override
+ public long getInteractionDate() {
+ return getDtstart();
+ }
+
+ @Override
+ public String getViewHeader(Context context) {
+ String title = getTitle();
+ if (TextUtils.isEmpty(title)) {
+ return context.getResources().getString(R.string.untitled_event);
+ }
+ return title;
+ }
+
+ @Override
+ public String getViewBody(Context context) {
+ return null;
+ }
+
+ @Override
+ public String getViewFooter(Context context) {
+ // Pulled from com.android.calendar.EventInfoFragment.updateEvent(View view)
+ // TODO: build callback to update time zone if different than preferences
+ String localTimezone = Time.getCurrentTimezone();
+
+ Long dateEnd = getDtend();
+ Long dateStart = getDtstart();
+ if (dateStart == null && dateEnd == null) {
+ return null;
+ } else if (dateEnd == null) {
+ dateEnd = dateStart;
+ } else if (dateStart == null) {
+ dateStart = dateEnd;
+ }
+
+ String displayedDatetime = CalendarInteractionUtils.getDisplayedDatetime(
+ getDtstart(), getDtend(), System.currentTimeMillis(), localTimezone,
+ getAllDay(), context);
+
+ return displayedDatetime;
+ }
+
+ @Override
+ public Drawable getIcon(Context context) {
+ return context.getResources().getDrawable(CALENDAR_ICON_RES);
+ }
+
+ @Override
+ public Drawable getBodyIcon(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getFooterIcon(Context context) {
+ return null;
+ }
+
+ public String getAttendeeEmail() {
+ return mValues.getAsString(Attendees.ATTENDEE_EMAIL);
+ }
+
+ public String getAttendeeIdentity() {
+ return mValues.getAsString(Attendees.ATTENDEE_IDENTITY);
+ }
+
+ public String getAttendeeIdNamespace() {
+ return mValues.getAsString(Attendees.ATTENDEE_ID_NAMESPACE);
+ }
+
+ public String getAttendeeName() {
+ return mValues.getAsString(Attendees.ATTENDEE_NAME);
+ }
+
+ public Integer getAttendeeRelationship() {
+ return mValues.getAsInteger(Attendees.ATTENDEE_RELATIONSHIP);
+ }
+
+ public Integer getAttendeeStatus() {
+ return mValues.getAsInteger(Attendees.ATTENDEE_STATUS);
+ }
+
+ public Integer getAttendeeType() {
+ return mValues.getAsInteger(Attendees.ATTENDEE_TYPE);
+ }
+
+ public Integer getEventId() {
+ return mValues.getAsInteger(Attendees.EVENT_ID);
+ }
+
+ public Integer getAccessLevel() {
+ return mValues.getAsInteger(Attendees.ACCESS_LEVEL);
+ }
+
+ public Boolean getAllDay() {
+ return mValues.getAsBoolean(Attendees.ALL_DAY);
+ }
+
+ public Integer getAvailability() {
+ return mValues.getAsInteger(Attendees.AVAILABILITY);
+ }
+
+ public Integer getCalendarId() {
+ return mValues.getAsInteger(Attendees.CALENDAR_ID);
+ }
+
+ public Boolean getCanInviteOthers() {
+ return mValues.getAsBoolean(Attendees.CAN_INVITE_OTHERS);
+ }
+
+ public String getCustomAppPackage() {
+ return mValues.getAsString(Attendees.CUSTOM_APP_PACKAGE);
+ }
+
+ public String getCustomAppUri() {
+ return mValues.getAsString(Attendees.CUSTOM_APP_URI);
+ }
+
+ public String getDescription() {
+ return mValues.getAsString(Attendees.DESCRIPTION);
+ }
+
+ public Integer getDisplayColor() {
+ return mValues.getAsInteger(Attendees.DISPLAY_COLOR);
+ }
+
+ public Long getDtend() {
+ return mValues.getAsLong(Attendees.DTEND);
+ }
+
+ public Long getDtstart() {
+ return mValues.getAsLong(Attendees.DTSTART);
+ }
+
+ public String getDuration() {
+ return mValues.getAsString(Attendees.DURATION);
+ }
+
+ public Integer getEventColor() {
+ return mValues.getAsInteger(Attendees.EVENT_COLOR);
+ }
+
+ public String getEventColorKey() {
+ return mValues.getAsString(Attendees.EVENT_COLOR_KEY);
+ }
+
+ public String getEventEndTimezone() {
+ return mValues.getAsString(Attendees.EVENT_END_TIMEZONE);
+ }
+
+ public String getEventLocation() {
+ return mValues.getAsString(Attendees.EVENT_LOCATION);
+ }
+
+ public String getExdate() {
+ return mValues.getAsString(Attendees.EXDATE);
+ }
+
+ public String getExrule() {
+ return mValues.getAsString(Attendees.EXRULE);
+ }
+
+ public Boolean getGuestsCanInviteOthers() {
+ return mValues.getAsBoolean(Attendees.GUESTS_CAN_INVITE_OTHERS);
+ }
+
+ public Boolean getGuestsCanModify() {
+ return mValues.getAsBoolean(Attendees.GUESTS_CAN_MODIFY);
+ }
+
+ public Boolean getGuestsCanSeeGuests() {
+ return mValues.getAsBoolean(Attendees.GUESTS_CAN_SEE_GUESTS);
+ }
+
+ public Boolean getHasAlarm() {
+ return mValues.getAsBoolean(Attendees.HAS_ALARM);
+ }
+
+ public Boolean getHasAttendeeData() {
+ return mValues.getAsBoolean(Attendees.HAS_ATTENDEE_DATA);
+ }
+
+ public Boolean getHasExtendedProperties() {
+ return mValues.getAsBoolean(Attendees.HAS_EXTENDED_PROPERTIES);
+ }
+
+ public String getIsOrganizer() {
+ return mValues.getAsString(Attendees.IS_ORGANIZER);
+ }
+
+ public Long getLastDate() {
+ return mValues.getAsLong(Attendees.LAST_DATE);
+ }
+
+ public Boolean getLastSynced() {
+ return mValues.getAsBoolean(Attendees.LAST_SYNCED);
+ }
+
+ public String getOrganizer() {
+ return mValues.getAsString(Attendees.ORGANIZER);
+ }
+
+ public Boolean getOriginalAllDay() {
+ return mValues.getAsBoolean(Attendees.ORIGINAL_ALL_DAY);
+ }
+
+ public String getOriginalId() {
+ return mValues.getAsString(Attendees.ORIGINAL_ID);
+ }
+
+ public Long getOriginalInstanceTime() {
+ return mValues.getAsLong(Attendees.ORIGINAL_INSTANCE_TIME);
+ }
+
+ public String getOriginalSyncId() {
+ return mValues.getAsString(Attendees.ORIGINAL_SYNC_ID);
+ }
+
+ public String getRdate() {
+ return mValues.getAsString(Attendees.RDATE);
+ }
+
+ public String getRrule() {
+ return mValues.getAsString(Attendees.RRULE);
+ }
+
+ public Integer getSelfAttendeeStatus() {
+ return mValues.getAsInteger(Attendees.SELF_ATTENDEE_STATUS);
+ }
+
+ public Integer getStatus() {
+ return mValues.getAsInteger(Attendees.STATUS);
+ }
+
+ public String getTitle() {
+ return mValues.getAsString(Attendees.TITLE);
+ }
+
+ public String getUid2445() {
+ return mValues.getAsString(Attendees.UID_2445);
+ }
+}
diff --git a/src/com/android/contacts/interactions/CalendarInteractionUtils.java b/src/com/android/contacts/interactions/CalendarInteractionUtils.java
new file mode 100644
index 0000000..c7943f0
--- /dev/null
+++ b/src/com/android/contacts/interactions/CalendarInteractionUtils.java
@@ -0,0 +1,192 @@
+package com.android.contacts.interactions;
+
+import com.android.contacts.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.text.format.DateFormat;
+import android.text.format.DateUtils;
+import android.text.format.Time;
+
+import java.util.Formatter;
+import java.util.Locale;
+
+/**
+ * The following methods were pulled from
+ * {@link com.android.calendar.EventInfoFragment.updateEvent(View view)}
+ * TODO: Move this to frameworks/opt
+ */
+public class CalendarInteractionUtils {
+
+ // Using int constants as a return value instead of an enum to minimize resources.
+ private static final int TODAY = 1;
+ private static final int TOMORROW = 2;
+ private static final int NONE = 0;
+
+ /**
+ * Returns a string description of the specified time interval.
+ */
+ public static String getDisplayedDatetime(long startMillis, long endMillis, long currentMillis,
+ String localTimezone, boolean allDay, Context context) {
+ // Configure date/time formatting.
+ int flagsDate = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY;
+ int flagsTime = DateUtils.FORMAT_SHOW_TIME;
+ if (DateFormat.is24HourFormat(context)) {
+ flagsTime |= DateUtils.FORMAT_24HOUR;
+ }
+
+ Time currentTime = new Time(localTimezone);
+ currentTime.set(currentMillis);
+ Resources resources = context.getResources();
+ String datetimeString = null;
+ if (allDay) {
+ // All day events require special timezone adjustment.
+ long localStartMillis = convertAlldayUtcToLocal(null, startMillis, localTimezone);
+ long localEndMillis = convertAlldayUtcToLocal(null, endMillis, localTimezone);
+ if (singleDayEvent(localStartMillis, localEndMillis, currentTime.gmtoff)) {
+ // If possible, use "Today" or "Tomorrow" instead of a full date string.
+ int todayOrTomorrow = isTodayOrTomorrow(context.getResources(),
+ localStartMillis, currentMillis, currentTime.gmtoff);
+ if (TODAY == todayOrTomorrow) {
+ datetimeString = resources.getString(R.string.today);
+ } else if (TOMORROW == todayOrTomorrow) {
+ datetimeString = resources.getString(R.string.tomorrow);
+ }
+ }
+ if (datetimeString == null) {
+ // For multi-day allday events or single-day all-day events that are not
+ // today or tomorrow, use framework formatter.
+ Formatter f = new Formatter(new StringBuilder(50), Locale.getDefault());
+ datetimeString = DateUtils.formatDateRange(context, f, startMillis,
+ endMillis, flagsDate, Time.TIMEZONE_UTC).toString();
+ }
+ } else {
+ if (singleDayEvent(startMillis, endMillis, currentTime.gmtoff)) {
+ // Format the time.
+ String timeString = formatDateRange(context, startMillis, endMillis,
+ flagsTime);
+
+ // If possible, use "Today" or "Tomorrow" instead of a full date string.
+ int todayOrTomorrow = isTodayOrTomorrow(context.getResources(), startMillis,
+ currentMillis, currentTime.gmtoff);
+ if (TODAY == todayOrTomorrow) {
+ // Example: "Today at 1:00pm - 2:00 pm"
+ datetimeString = resources.getString(R.string.today_at_time_fmt,
+ timeString);
+ } else if (TOMORROW == todayOrTomorrow) {
+ // Example: "Tomorrow at 1:00pm - 2:00 pm"
+ datetimeString = resources.getString(R.string.tomorrow_at_time_fmt,
+ timeString);
+ } else {
+ // Format the full date. Example: "Thursday, April 12, 1:00pm - 2:00pm"
+ String dateString = formatDateRange(context, startMillis, endMillis,
+ flagsDate);
+ datetimeString = resources.getString(R.string.date_time_fmt, dateString,
+ timeString);
+ }
+ } else {
+ // For multiday events, shorten day/month names.
+ // Example format: "Fri Apr 6, 5:00pm - Sun, Apr 8, 6:00pm"
+ int flagsDatetime = flagsDate | flagsTime | DateUtils.FORMAT_ABBREV_MONTH |
+ DateUtils.FORMAT_ABBREV_WEEKDAY;
+ datetimeString = formatDateRange(context, startMillis, endMillis,
+ flagsDatetime);
+ }
+ }
+ return datetimeString;
+ }
+
+ /**
+ * Convert given UTC time into current local time. This assumes it is for an
+ * allday event and will adjust the time to be on a midnight boundary.
+ *
+ * @param recycle Time object to recycle, otherwise null.
+ * @param utcTime Time to convert, in UTC.
+ * @param tz The time zone to convert this time to.
+ */
+ private static long convertAlldayUtcToLocal(Time recycle, long utcTime, String tz) {
+ if (recycle == null) {
+ recycle = new Time();
+ }
+ recycle.timezone = Time.TIMEZONE_UTC;
+ recycle.set(utcTime);
+ recycle.timezone = tz;
+ return recycle.normalize(true);
+ }
+
+ public static long convertAlldayLocalToUTC(Time recycle, long localTime, String tz) {
+ if (recycle == null) {
+ recycle = new Time();
+ }
+ recycle.timezone = tz;
+ recycle.set(localTime);
+ recycle.timezone = Time.TIMEZONE_UTC;
+ return recycle.normalize(true);
+ }
+
+ /**
+ * Returns whether the specified time interval is in a single day.
+ */
+ private static boolean singleDayEvent(long startMillis, long endMillis, long localGmtOffset) {
+ if (startMillis == endMillis) {
+ return true;
+ }
+
+ // An event ending at midnight should still be a single-day event, so check
+ // time end-1.
+ int startDay = Time.getJulianDay(startMillis, localGmtOffset);
+ int endDay = Time.getJulianDay(endMillis - 1, localGmtOffset);
+ return startDay == endDay;
+ }
+
+ /**
+ * Returns TODAY or TOMORROW if applicable. Otherwise returns NONE.
+ */
+ private static int isTodayOrTomorrow(Resources r, long dayMillis,
+ long currentMillis, long localGmtOffset) {
+ int startDay = Time.getJulianDay(dayMillis, localGmtOffset);
+ int currentDay = Time.getJulianDay(currentMillis, localGmtOffset);
+
+ int days = startDay - currentDay;
+ if (days == 1) {
+ return TOMORROW;
+ } else if (days == 0) {
+ return TODAY;
+ } else {
+ return NONE;
+ }
+ }
+
+ /**
+ * Formats a date or a time range according to the local conventions.
+ *
+ * This formats a date/time range using Calendar's time zone and the
+ * local conventions for the region of the device.
+ *
+ * If the {@link DateUtils#FORMAT_UTC} flag is used it will pass in
+ * the UTC time zone instead.
+ *
+ * @param context the context is required only if the time is shown
+ * @param startMillis the start time in UTC milliseconds
+ * @param endMillis the end time in UTC milliseconds
+ * @param flags a bit mask of options See
+ * {@link DateUtils#formatDateRange(Context, Formatter, long, long, int, String) formatDateRange}
+ * @return a string containing the formatted date/time range.
+ */
+ private static String formatDateRange(Context context, long startMillis,
+ long endMillis, int flags) {
+ String date;
+ String tz;
+ if ((flags & DateUtils.FORMAT_UTC) != 0) {
+ tz = Time.TIMEZONE_UTC;
+ } else {
+ tz = Time.getCurrentTimezone();
+ }
+ StringBuilder sb = new StringBuilder(50);
+ Formatter f = new Formatter(sb, Locale.getDefault());
+ sb.setLength(0);
+ date = DateUtils.formatDateRange(context, f, startMillis, endMillis, flags,
+ tz).toString();
+ return date;
+ }
+}
diff --git a/src/com/android/contacts/interactions/CalendarInteractionsLoader.java b/src/com/android/contacts/interactions/CalendarInteractionsLoader.java
new file mode 100644
index 0000000..941698c
--- /dev/null
+++ b/src/com/android/contacts/interactions/CalendarInteractionsLoader.java
@@ -0,0 +1,231 @@
+package com.android.contacts.interactions;
+
+import com.google.common.base.Preconditions;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import android.content.AsyncTaskLoader;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.provider.CalendarContract;
+import android.provider.CalendarContract.Calendars;
+import android.util.Log;
+
+
+/**
+ * Loads a list of calendar interactions showing shared calendar events with everyone passed in
+ * {@param emailAddresses}.
+ *
+ * Note: the calendar provider treats mailing lists as atomic email addresses.
+ */
+public class CalendarInteractionsLoader extends AsyncTaskLoader<List<ContactInteraction>> {
+ private static final String TAG = CalendarInteractionsLoader.class.getSimpleName();
+
+ private List<String> mEmailAddresses;
+ private int mMaxFutureToRetrieve;
+ private int mMaxPastToRetrieve;
+ private long mNumberFutureMillisecondToSearchLocalCalendar;
+ private long mNumberPastMillisecondToSearchLocalCalendar;
+ private List<ContactInteraction> mData;
+
+
+ /**
+ * @param maxFutureToRetrieve The maximum number of future events to retrieve
+ * @param maxPastToRetrieve The maximum number of past events to retrieve
+ */
+ public CalendarInteractionsLoader(Context context, List<String> emailAddresses,
+ int maxFutureToRetrieve, int maxPastToRetrieve,
+ long numberFutureMillisecondToSearchLocalCalendar,
+ long numberPastMillisecondToSearchLocalCalendar) {
+ super(context);
+ for (String address: emailAddresses) {
+ Log.v(TAG, address);
+ }
+ mEmailAddresses = emailAddresses;
+ mMaxFutureToRetrieve = maxFutureToRetrieve;
+ mMaxPastToRetrieve = maxPastToRetrieve;
+ mNumberFutureMillisecondToSearchLocalCalendar =
+ numberFutureMillisecondToSearchLocalCalendar;
+ mNumberPastMillisecondToSearchLocalCalendar = numberPastMillisecondToSearchLocalCalendar;
+ }
+
+ @Override
+ public List<ContactInteraction> loadInBackground() {
+ if (mEmailAddresses == null || mEmailAddresses.size() < 1) {
+ return Collections.emptyList();
+ }
+ // Perform separate calendar queries for events in the past and future.
+ Cursor cursor = getSharedEventsCursor(/* isFuture= */ true, mMaxFutureToRetrieve);
+ List<ContactInteraction> interactions = getInteractionsFromEventsCursor(cursor);
+ cursor = getSharedEventsCursor(/* isFuture= */ false, mMaxPastToRetrieve);
+ List<ContactInteraction> interactions2 = getInteractionsFromEventsCursor(cursor);
+
+ ArrayList<ContactInteraction> allInteractions = new ArrayList<ContactInteraction>(
+ interactions.size() + interactions2.size());
+ allInteractions.addAll(interactions);
+ allInteractions.addAll(interactions2);
+
+ Log.v(TAG, "# ContactInteraction Loaded: " + allInteractions.size());
+ return allInteractions;
+ }
+
+ /**
+ * @return events inside phone owners' calendars, that are shared with people inside mEmails
+ */
+ private Cursor getSharedEventsCursor(boolean isFuture, int limit) {
+ List<String> calendarIds = getOwnedCalendarIds();
+ if (calendarIds == null) {
+ return null;
+ }
+ long timeMillis = System.currentTimeMillis();
+
+ List<String> selectionArgs = new ArrayList<>();
+ selectionArgs.addAll(mEmailAddresses);
+ selectionArgs.addAll(calendarIds);
+
+ // Add time constraints to selectionArgs
+ String timeOperator = isFuture ? " > " : " < ";
+ long pastTimeCutoff = timeMillis - mNumberPastMillisecondToSearchLocalCalendar;
+ long futureTimeCutoff = timeMillis
+ + mNumberFutureMillisecondToSearchLocalCalendar;
+ String[] timeArguments = {String.valueOf(timeMillis), String.valueOf(pastTimeCutoff),
+ String.valueOf(futureTimeCutoff)};
+ selectionArgs.addAll(Arrays.asList(timeArguments));
+
+ String orderBy = CalendarContract.Attendees.DTSTART + (isFuture ? " ASC " : " DESC ");
+ String selection = caseAndDotInsensitiveEmailComparisonClause(mEmailAddresses.size())
+ + " AND " + CalendarContract.Attendees.CALENDAR_ID
+ + " IN " + ContactInteractionUtil.questionMarks(calendarIds.size())
+ + " AND " + CalendarContract.Attendees.DTSTART + timeOperator + " ? "
+ + " AND " + CalendarContract.Attendees.DTSTART + " > ? "
+ + " AND " + CalendarContract.Attendees.DTSTART + " < ? ";
+
+ return getContext().getContentResolver().query(CalendarContract.Attendees.CONTENT_URI,
+ /* projection = */ null, selection,
+ selectionArgs.toArray(new String[selectionArgs.size()]),
+ orderBy + " LIMIT " + limit);
+ }
+
+ /**
+ * Returns a clause that checks whether an attendee's email is equal to one of
+ * {@param count} values. The comparison is insensitive to dots and case.
+ *
+ * NOTE #1: This function is only needed for supporting non google accounts. For calendars
+ * synced by a google account, attendee email values will be be modified by the server to ensure
+ * they match an entry in contacts.google.com.
+ *
+ * NOTE #2: This comparison clause can result in false positives. Ex#1, test@gmail.com will
+ * match test@gmailco.m. Ex#2, a.2@exchange.com will match a2@exchange.com (exchange addresses
+ * should be dot sensitive). This probably isn't a large concern.
+ */
+ private String caseAndDotInsensitiveEmailComparisonClause(int count) {
+ Preconditions.checkArgument(count > 0, "Count needs to be positive");
+ final String COMPARISON
+ = " REPLACE(" + CalendarContract.Attendees.ATTENDEE_EMAIL
+ + ", '.', '') = REPLACE(?, '.', '') COLLATE NOCASE";
+ StringBuilder sb = new StringBuilder("( " + COMPARISON);
+ for (int i = 1; i < count; i++) {
+ sb.append(" OR " + COMPARISON);
+ }
+ return sb.append(")").toString();
+ }
+
+ /**
+ * @return A list with upto one Card. The Card contains events from {@param Cursor}.
+ * Only returns unique events.
+ */
+ private List<ContactInteraction> getInteractionsFromEventsCursor(Cursor cursor) {
+ try {
+ if (cursor == null || cursor.getCount() == 0) {
+ return Collections.emptyList();
+ }
+ Set<String> uniqueUris = new HashSet<String>();
+ ArrayList<ContactInteraction> interactions = new ArrayList<ContactInteraction>();
+ while (cursor.moveToNext()) {
+ ContentValues values = new ContentValues();
+ DatabaseUtils.cursorRowToContentValues(cursor, values);
+ CalendarInteraction calendarInteraction = new CalendarInteraction(values);
+ if (!uniqueUris.contains(calendarInteraction.getIntent().getData().toString())) {
+ uniqueUris.add(calendarInteraction.getIntent().getData().toString());
+ interactions.add(calendarInteraction);
+ }
+ }
+
+ return interactions;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ /**
+ * @return the Ids of calendars that are owned by accounts on the phone.
+ */
+ private List<String> getOwnedCalendarIds() {
+ String[] projection = new String[] {Calendars._ID, Calendars.CALENDAR_ACCESS_LEVEL};
+ Cursor cursor = getContext().getContentResolver().query(Calendars.CONTENT_URI, projection,
+ Calendars.VISIBLE + " = 1 AND " + Calendars.CALENDAR_ACCESS_LEVEL + " = ? ",
+ new String[] {String.valueOf(Calendars.CAL_ACCESS_OWNER)}, null);
+ try {
+ if (cursor == null || cursor.getCount() < 1) {
+ return null;
+ }
+ cursor.moveToPosition(-1);
+ List<String> calendarIds = new ArrayList<>(cursor.getCount());
+ while (cursor.moveToNext()) {
+ calendarIds.add(String.valueOf(cursor.getInt(0)));
+ }
+ return calendarIds;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+
+ if (mData != null) {
+ deliverResult(mData);
+ }
+
+ if (takeContentChanged() || mData == null) {
+ forceLoad();
+ }
+ }
+
+ @Override
+ protected void onStopLoading() {
+ // Attempt to cancel the current load task if possible.
+ cancelLoad();
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+
+ // Ensure the loader is stopped
+ onStopLoading();
+ if (mData != null) {
+ mData.clear();
+ }
+ }
+
+ @Override
+ public void deliverResult(List<ContactInteraction> data) {
+ mData = data;
+ if (isStarted()) {
+ super.deliverResult(data);
+ }
+ }
+}
diff --git a/src/com/android/contacts/interactions/CallLogInteraction.java b/src/com/android/contacts/interactions/CallLogInteraction.java
new file mode 100644
index 0000000..28b9655
--- /dev/null
+++ b/src/com/android/contacts/interactions/CallLogInteraction.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import com.android.contacts.R;
+import com.android.contacts.common.util.BitmapUtil;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.util.Log;
+
+/**
+ * Represents a call log event interaction, wrapping the columns in
+ * {@link android.provider.CallLog.Calls}.
+ *
+ * This class does not return log entries related to voicemail or SIP calls. Additionally,
+ * this class ignores number presentation. Number presentation affects how to identify phone
+ * numbers. Since, we already know the identity of the phone number owner we can ignore number
+ * presentation.
+ *
+ * As a result of ignoring voicemail and number presentation, we don't need to worry about API
+ * version.
+ */
+public class CallLogInteraction implements ContactInteraction {
+
+ private static final String URI_TARGET_PREFIX = "tel:";
+ private static final int CALL_LOG_ICON_RES = R.drawable.ic_phone_24dp;
+ private static final int CALL_ARROW_ICON_RES = R.drawable.ic_call_arrow;
+
+ private ContentValues mValues;
+
+ public CallLogInteraction(ContentValues values) {
+ mValues = values;
+ }
+
+ @Override
+ public Intent getIntent() {
+ String number = getNumber();
+ return number == null ? null : new Intent(Intent.ACTION_CALL).setData(
+ Uri.parse(URI_TARGET_PREFIX + number));
+ }
+
+ @Override
+ public String getViewHeader(Context context) {
+ return getNumber();
+ }
+
+ @Override
+ public long getInteractionDate() {
+ Long date = getDate();
+ return date == null ? -1 : date;
+ }
+
+ @Override
+ public String getViewBody(Context context) {
+ Integer numberType = getCachedNumberType();
+ if (numberType == null) {
+ return null;
+ }
+ return Phone.getTypeLabel(context.getResources(), getCachedNumberType(),
+ getCachedNumberLabel()).toString();
+ }
+
+ @Override
+ public String getViewFooter(Context context) {
+ Long date = getDate();
+ return date == null ? null : ContactInteractionUtil.formatDateStringFromTimestamp(
+ date, context);
+ }
+
+ @Override
+ public Drawable getIcon(Context context) {
+ return context.getResources().getDrawable(CALL_LOG_ICON_RES);
+ }
+
+ @Override
+ public Drawable getBodyIcon(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getFooterIcon(Context context) {
+ Drawable callArrow = null;
+ Resources res = context.getResources();
+ Integer type = getType();
+ if (type == null) {
+ return null;
+ }
+ switch (type) {
+ case Calls.INCOMING_TYPE:
+ callArrow = res.getDrawable(CALL_ARROW_ICON_RES);
+ callArrow.setColorFilter(res.getColor(R.color.call_arrow_green),
+ PorterDuff.Mode.MULTIPLY);
+ break;
+ case Calls.MISSED_TYPE:
+ callArrow = res.getDrawable(CALL_ARROW_ICON_RES);
+ callArrow.setColorFilter(res.getColor(R.color.call_arrow_red),
+ PorterDuff.Mode.MULTIPLY);
+ break;
+ case Calls.OUTGOING_TYPE:
+ callArrow = BitmapUtil.getRotatedDrawable(res, CALL_ARROW_ICON_RES, 180f);
+ callArrow.setColorFilter(res.getColor(R.color.call_arrow_green),
+ PorterDuff.Mode.MULTIPLY);
+ break;
+ }
+ return callArrow;
+ }
+
+ public String getCachedName() {
+ return mValues.getAsString(Calls.CACHED_NAME);
+ }
+
+ public String getCachedNumberLabel() {
+ return mValues.getAsString(Calls.CACHED_NUMBER_LABEL);
+ }
+
+ public Integer getCachedNumberType() {
+ return mValues.getAsInteger(Calls.CACHED_NUMBER_TYPE);
+ }
+
+ public Long getDate() {
+ return mValues.getAsLong(Calls.DATE);
+ }
+
+ public Long getDuration() {
+ return mValues.getAsLong(Calls.DURATION);
+ }
+
+ public Boolean getIsRead() {
+ return mValues.getAsBoolean(Calls.IS_READ);
+ }
+
+ public Integer getLimitParamKey() {
+ return mValues.getAsInteger(Calls.LIMIT_PARAM_KEY);
+ }
+
+ public Boolean getNew() {
+ return mValues.getAsBoolean(Calls.NEW);
+ }
+
+ public String getNumber() {
+ return mValues.getAsString(Calls.NUMBER);
+ }
+
+ public Integer getNumberPresentation() {
+ return mValues.getAsInteger(Calls.NUMBER_PRESENTATION);
+ }
+
+ public Integer getOffsetParamKey() {
+ return mValues.getAsInteger(Calls.OFFSET_PARAM_KEY);
+ }
+
+ public Integer getType() {
+ return mValues.getAsInteger(Calls.TYPE);
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/interactions/CallLogInteractionsLoader.java b/src/com/android/contacts/interactions/CallLogInteractionsLoader.java
new file mode 100644
index 0000000..8172232
--- /dev/null
+++ b/src/com/android/contacts/interactions/CallLogInteractionsLoader.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import android.content.AsyncTaskLoader;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInteraction>> {
+
+ private final String[] mPhoneNumbers;
+ private final int mMaxToRetrieve;
+ private List<ContactInteraction> mData;
+
+ public CallLogInteractionsLoader(Context context, String[] phoneNumbers,
+ int maxToRetrieve) {
+ super(context);
+ mPhoneNumbers = phoneNumbers;
+ mMaxToRetrieve = maxToRetrieve;
+ }
+
+ @Override
+ public List<ContactInteraction> loadInBackground() {
+ if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ || mPhoneNumbers == null || mPhoneNumbers.length == 0) {
+ return Collections.emptyList();
+ }
+
+ final List<ContactInteraction> interactions = new ArrayList<>();
+ for (String number : mPhoneNumbers) {
+ interactions.addAll(getCallLogInteractions(number));
+ }
+ // Sort the call log interactions by date for duplicate removal
+ Collections.sort(interactions, new Comparator<ContactInteraction>() {
+ @Override
+ public int compare(ContactInteraction i1, ContactInteraction i2) {
+ if (i2.getInteractionDate() - i1.getInteractionDate() > 0) {
+ return 1;
+ } else if (i2.getInteractionDate() == i1.getInteractionDate()) {
+ return 0;
+ } else {
+ return -1;
+ }
+ }
+ });
+
+ return pruneDuplicateCallLogInteractions(interactions, mMaxToRetrieve);
+ }
+
+ /**
+ * Two different phone numbers can match the same call log entry (since phone number
+ * matching is inexact). Therefore, we need to remove duplicates. In a reasonable call log,
+ * every entry should have a distinct date. Therefore, we can assume duplicate entries are
+ * adjacent entries.
+ * @param interactions The interaction list potentially containing duplicates
+ * @return The list with duplicates removed
+ */
+ @VisibleForTesting
+ static List<ContactInteraction> pruneDuplicateCallLogInteractions(
+ List<ContactInteraction> interactions, int maxToRetrieve) {
+ final List<ContactInteraction> subsetInteractions = new ArrayList<>();
+ for (int i = 0; i < interactions.size(); i++) {
+ if (i >= 1 && interactions.get(i).getInteractionDate() ==
+ interactions.get(i-1).getInteractionDate()) {
+ continue;
+ }
+ subsetInteractions.add(interactions.get(i));
+ if (subsetInteractions.size() >= maxToRetrieve) {
+ break;
+ }
+ }
+ return subsetInteractions;
+ }
+
+ private List<ContactInteraction> getCallLogInteractions(String phoneNumber) {
+ final Uri uri = Uri.withAppendedPath(Calls.CONTENT_FILTER_URI, phoneNumber);
+ final String orderBy = Calls.DATE + " DESC";
+ final Cursor cursor = getContext().getContentResolver().query(uri, null, null, null,
+ orderBy);
+ try {
+ if (cursor == null || cursor.getCount() < 1) {
+ return Collections.emptyList();
+ }
+ cursor.moveToPosition(-1);
+ List<ContactInteraction> interactions = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ final ContentValues values = new ContentValues();
+ DatabaseUtils.cursorRowToContentValues(cursor, values);
+ interactions.add(new CallLogInteraction(values));
+ }
+ return interactions;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+
+ if (mData != null) {
+ deliverResult(mData);
+ }
+
+ if (takeContentChanged() || mData == null) {
+ forceLoad();
+ }
+ }
+
+ @Override
+ protected void onStopLoading() {
+ // Attempt to cancel the current load task if possible.
+ cancelLoad();
+ }
+
+ @Override
+ public void deliverResult(List<ContactInteraction> data) {
+ mData = data;
+ if (isStarted()) {
+ super.deliverResult(data);
+ }
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+
+ // Ensure the loader is stopped
+ onStopLoading();
+ if (mData != null) {
+ mData.clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index 2880f77..458556e 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -54,6 +54,7 @@
private static final String KEY_CONTACT_URI = "contactUri";
private static final String KEY_FINISH_WHEN_DONE = "finishWhenDone";
public static final String ARG_CONTACT_URI = "contactUri";
+ public static final int RESULT_CODE_DELETED = 3;
private static final String[] ENTITY_PROJECTION = new String[] {
Entity.RAW_CONTACT_ID, //0
@@ -317,6 +318,7 @@
protected void doDeleteContact(Uri contactUri) {
mContext.startService(ContactSaveService.createDeleteContactIntent(mContext, contactUri));
if (isAdded() && mFinishActivityWhenDone) {
+ getActivity().setResult(RESULT_CODE_DELETED);
getActivity().finish();
}
}
diff --git a/src/com/android/contacts/interactions/ContactInteraction.java b/src/com/android/contacts/interactions/ContactInteraction.java
new file mode 100644
index 0000000..3f7a842
--- /dev/null
+++ b/src/com/android/contacts/interactions/ContactInteraction.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+
+/**
+ * Represents a default interaction between the phone's owner and a contact
+ */
+public interface ContactInteraction {
+ Intent getIntent();
+ long getInteractionDate();
+ String getViewHeader(Context context);
+ String getViewBody(Context context);
+ String getViewFooter(Context context);
+ Drawable getIcon(Context context);
+ Drawable getBodyIcon(Context context);
+ Drawable getFooterIcon(Context context);
+}
diff --git a/src/com/android/contacts/interactions/ContactInteractionUtil.java b/src/com/android/contacts/interactions/ContactInteractionUtil.java
new file mode 100644
index 0000000..98d45ee
--- /dev/null
+++ b/src/com/android/contacts/interactions/ContactInteractionUtil.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import com.google.common.base.Preconditions;
+
+import android.content.Context;
+import android.text.format.DateUtils;
+
+import com.android.contacts.common.testing.NeededForTesting;
+
+import java.text.DateFormat;
+
+import java.util.Calendar;
+
+import com.android.contacts.R;
+
+
+/**
+ * Utility methods for interactions and their loaders
+ */
+public class ContactInteractionUtil {
+
+ /**
+ * @return a string like (?,?,?...) with {@param count} question marks.
+ */
+ @NeededForTesting
+ public static String questionMarks(int count) {
+ Preconditions.checkArgument(count > 0);
+ StringBuilder sb = new StringBuilder("(?");
+ for (int i = 1; i < count; i++) {
+ sb.append(",?");
+ }
+ return sb.append(")").toString();
+ }
+
+ /**
+ * Same as {@link formatDateStringFromTimestamp(long, Context, Calendar)} but uses the current
+ * time.
+ */
+ @NeededForTesting
+ public static String formatDateStringFromTimestamp(long timestamp, Context context) {
+ return formatDateStringFromTimestamp(timestamp, context, Calendar.getInstance());
+ }
+
+ /**
+ * Takes in a timestamp and outputs a human legible date. This checks the timestamp against
+ * compareCalendar.
+ * This formats the date based on a few conditions:
+ * 1. If the timestamp is today, the time is shown
+ * 2. If the timestamp occurs tomorrow or yesterday, that is displayed
+ * 3. Otherwise {Month Date} format is used
+ */
+ @NeededForTesting
+ public static String formatDateStringFromTimestamp(long timestamp, Context context,
+ Calendar compareCalendar) {
+ Calendar interactionCalendar = Calendar.getInstance();
+ interactionCalendar.setTimeInMillis(timestamp);
+
+ // compareCalendar is initialized to today
+ if (compareCalendarDayYear(interactionCalendar, compareCalendar)) {
+ return DateFormat.getTimeInstance(DateFormat.SHORT).format(
+ interactionCalendar.getTime());
+ }
+
+ // Turn compareCalendar to yesterday
+ compareCalendar.add(Calendar.DAY_OF_YEAR, -1);
+ if (compareCalendarDayYear(interactionCalendar, compareCalendar)) {
+ return context.getString(R.string.yesterday);
+ }
+
+ // Turn compareCalendar to tomorrow
+ compareCalendar.add(Calendar.DAY_OF_YEAR, 2);
+ if (compareCalendarDayYear(interactionCalendar, compareCalendar)) {
+ return context.getString(R.string.tomorrow);
+ }
+ return DateUtils.formatDateTime(context, interactionCalendar.getTimeInMillis(),
+ DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR);
+ }
+
+ /**
+ * Compares the day and year of two calendars.
+ */
+ private static boolean compareCalendarDayYear(Calendar c1, Calendar c2) {
+ return c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) &&
+ c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR);
+ }
+}
diff --git a/src/com/android/contacts/interactions/SmsInteraction.java b/src/com/android/contacts/interactions/SmsInteraction.java
new file mode 100644
index 0000000..ac83786
--- /dev/null
+++ b/src/com/android/contacts/interactions/SmsInteraction.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import com.android.contacts.R;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.provider.Telephony.Sms;
+
+/**
+ * Represents an sms interaction, wrapping the columns in
+ * {@link android.provider.Telephony.Sms}.
+ */
+public class SmsInteraction implements ContactInteraction {
+
+ private static final String URI_TARGET_PREFIX = "smsto:";
+ private static final int SMS_ICON_RES = R.drawable.ic_message_24dp;
+
+ private ContentValues mValues;
+
+ public SmsInteraction(ContentValues values) {
+ mValues = values;
+ }
+
+ @Override
+ public Intent getIntent() {
+ String address = getAddress();
+ return address == null ? null : new Intent(Intent.ACTION_VIEW).setData(
+ Uri.parse(URI_TARGET_PREFIX + address));
+ }
+
+ @Override
+ public long getInteractionDate() {
+ Long date = getDate();
+ return date == null ? -1 : date;
+ }
+
+ @Override
+ public String getViewHeader(Context context) {
+ return getBody();
+ }
+
+ @Override
+ public String getViewBody(Context context) {
+ return getAddress();
+ }
+
+ @Override
+ public String getViewFooter(Context context) {
+ Long date = getDate();
+ return date == null ? null : ContactInteractionUtil.formatDateStringFromTimestamp(
+ date, context);
+ }
+
+ @Override
+ public Drawable getIcon(Context context) {
+ return context.getResources().getDrawable(SMS_ICON_RES);
+ }
+
+ @Override
+ public Drawable getBodyIcon(Context context) {
+ return null;
+ }
+
+ @Override
+ public Drawable getFooterIcon(Context context) {
+ return null;
+ }
+
+ public String getAddress() {
+ return mValues.getAsString(Sms.ADDRESS);
+ }
+
+ public String getBody() {
+ return mValues.getAsString(Sms.BODY);
+ }
+
+ public Long getDate() {
+ return mValues.getAsLong(Sms.DATE);
+ }
+
+
+ public Long getDateSent() {
+ return mValues.getAsLong(Sms.DATE_SENT);
+ }
+
+ public Integer getErrorCode() {
+ return mValues.getAsInteger(Sms.ERROR_CODE);
+ }
+
+ public Boolean getLocked() {
+ return mValues.getAsBoolean(Sms.LOCKED);
+ }
+
+ public Integer getPerson() {
+ return mValues.getAsInteger(Sms.PERSON);
+ }
+
+ public Integer getProtocol() {
+ return mValues.getAsInteger(Sms.PROTOCOL);
+ }
+
+ public Boolean getRead() {
+ return mValues.getAsBoolean(Sms.READ);
+ }
+
+ public Boolean getReplyPathPresent() {
+ return mValues.getAsBoolean(Sms.REPLY_PATH_PRESENT);
+ }
+
+ public Boolean getSeen() {
+ return mValues.getAsBoolean(Sms.SEEN);
+ }
+
+ public String getServiceCenter() {
+ return mValues.getAsString(Sms.SERVICE_CENTER);
+ }
+
+ public Integer getStatus() {
+ return mValues.getAsInteger(Sms.STATUS);
+ }
+
+ public String getSubject() {
+ return mValues.getAsString(Sms.SUBJECT);
+ }
+
+ public Integer getThreadId() {
+ return mValues.getAsInteger(Sms.THREAD_ID);
+ }
+
+ public Integer getType() {
+ return mValues.getAsInteger(Sms.TYPE);
+ }
+}
diff --git a/src/com/android/contacts/interactions/SmsInteractionsLoader.java b/src/com/android/contacts/interactions/SmsInteractionsLoader.java
new file mode 100644
index 0000000..295c99a
--- /dev/null
+++ b/src/com/android/contacts/interactions/SmsInteractionsLoader.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import android.content.AsyncTaskLoader;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.provider.Telephony;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Loads the most recent sms between the passed in phone numbers.
+ *
+ * This is a two part process. The first step is retrieving the threadIds for each of the phone
+ * numbers using fuzzy matching. The next step is to run another query against these threadIds
+ * to retrieve the actual sms.
+ */
+public class SmsInteractionsLoader extends AsyncTaskLoader<List<ContactInteraction>> {
+
+ private static final String TAG = SmsInteractionsLoader.class.getSimpleName();
+
+ private String[] mPhoneNums;
+ private int mMaxToRetrieve;
+ private List<ContactInteraction> mData;
+
+ /**
+ * Loads a list of SmsInteraction from the supplied phone numbers.
+ */
+ public SmsInteractionsLoader(Context context, String[] phoneNums,
+ int maxToRetrieve) {
+ super(context);
+ Log.v(TAG, "SmsInteractionsLoader");
+ mPhoneNums = phoneNums;
+ mMaxToRetrieve = maxToRetrieve;
+ }
+
+ @Override
+ public List<ContactInteraction> loadInBackground() {
+ Log.v(TAG, "loadInBackground");
+ // Confirm the device has Telephony and numbers were provided before proceeding
+ if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ || mPhoneNums == null || mPhoneNums.length == 0) {
+ return Collections.emptyList();
+ }
+
+ // Retrieve the thread IDs
+ List<String> threadIdStrings = new ArrayList<>();
+ for (String phone : mPhoneNums) {
+ threadIdStrings.add(String.valueOf(
+ Telephony.Threads.getOrCreateThreadId(getContext(), phone)));
+ }
+
+ // Query the SMS database for the threads
+ Cursor cursor = getSmsCursorFromThreads(threadIdStrings);
+ if (cursor != null) {
+ try {
+ List<ContactInteraction> interactions = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ ContentValues values = new ContentValues();
+ DatabaseUtils.cursorRowToContentValues(cursor, values);
+ interactions.add(new SmsInteraction(values));
+ }
+
+ return interactions;
+ } finally {
+ cursor.close();
+ }
+ }
+
+ return Collections.emptyList();
+ }
+
+ /**
+ * Return the most recent messages between a list of threads
+ */
+ private Cursor getSmsCursorFromThreads(List<String> threadIds) {
+ String selection = Telephony.Sms.THREAD_ID + " IN "
+ + ContactInteractionUtil.questionMarks(threadIds.size());
+
+ return getContext().getContentResolver().query(
+ Telephony.Sms.CONTENT_URI,
+ /* projection = */ null,
+ selection,
+ threadIds.toArray(new String[threadIds.size()]),
+ Telephony.Sms.DEFAULT_SORT_ORDER
+ + " LIMIT " + mMaxToRetrieve);
+ }
+
+ @Override
+ protected void onStartLoading() {
+ super.onStartLoading();
+
+ if (mData != null) {
+ deliverResult(mData);
+ }
+
+ if (takeContentChanged() || mData == null) {
+ forceLoad();
+ }
+ }
+
+ @Override
+ protected void onStopLoading() {
+ // Attempt to cancel the current load task if possible.
+ cancelLoad();
+ }
+
+ @Override
+ public void deliverResult(List<ContactInteraction> data) {
+ mData = data;
+ if (isStarted()) {
+ super.deliverResult(data);
+ }
+ }
+
+ @Override
+ protected void onReset() {
+ super.onReset();
+
+ // Ensure the loader is stopped
+ onStopLoading();
+ if (mData != null) {
+ mData.clear();
+ }
+ }
+}
diff --git a/src/com/android/contacts/interactions/TestLoaderManager.java b/src/com/android/contacts/interactions/TestLoaderManager.java
index fb6a49b..a85bf8f 100644
--- a/src/com/android/contacts/interactions/TestLoaderManager.java
+++ b/src/com/android/contacts/interactions/TestLoaderManager.java
@@ -93,6 +93,7 @@
private LoaderManager mDelegate;
+ @VisibleForTesting
public TestLoaderManager() {
mFinishedLoaders = new HashSet<Integer>();
}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 14e8949..855f923 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -597,31 +597,15 @@
mListener = listener;
}
- public void createNewContact() {
- if (mListener != null) mListener.onCreateNewContactAction();
- }
-
public void viewContact(Uri contactUri) {
setSelectedContactUri(contactUri, false, false, true, false);
if (mListener != null) mListener.onViewContactAction(contactUri);
}
- public void editContact(Uri contactUri) {
- if (mListener != null) mListener.onEditContactAction(contactUri);
- }
-
public void deleteContact(Uri contactUri) {
if (mListener != null) mListener.onDeleteContactAction(contactUri);
}
- public void addToFavorites(Uri contactUri) {
- if (mListener != null) mListener.onAddToFavoritesAction(contactUri);
- }
-
- public void removeFromFavorites(Uri contactUri) {
- if (mListener != null) mListener.onRemoveFromFavoritesAction(contactUri);
- }
-
private void notifyInvalidSelection() {
if (mListener != null) mListener.onInvalidSelection();
}
diff --git a/src/com/android/contacts/list/ContactNameHighlightingAnimation.java b/src/com/android/contacts/list/ContactNameHighlightingAnimation.java
deleted file mode 100644
index 46fe88b..0000000
--- a/src/com/android/contacts/list/ContactNameHighlightingAnimation.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-package com.android.contacts.list;
-
-import android.view.View;
-import android.widget.ListView;
-
-import com.android.contacts.common.list.ContactListItemView;
-import com.android.contacts.widget.TextHighlightingAnimation;
-
-/**
- * A {@link TextHighlightingAnimation} that redraws just the contact display name in a
- * list item.
- */
-public class ContactNameHighlightingAnimation extends TextHighlightingAnimation {
- private final ListView mListView;
- private boolean mSavedScrollingCacheEnabledFlag;
-
- public ContactNameHighlightingAnimation(ListView listView, int duration) {
- super(duration);
- this.mListView = listView;
- }
-
- /**
- * Redraws all visible items of the list corresponding to contacts
- */
- @Override
- protected void invalidate() {
- int childCount = mListView.getChildCount();
- for (int i = 0; i < childCount; i++) {
- View itemView = mListView.getChildAt(i);
- if (itemView instanceof ContactListItemView) {
- final ContactListItemView view = (ContactListItemView)itemView;
- view.getNameTextView().invalidate();
- }
- }
- }
-
- @Override
- protected void onAnimationStarted() {
- mSavedScrollingCacheEnabledFlag = mListView.isScrollingCacheEnabled();
- mListView.setScrollingCacheEnabled(false);
- }
-
- @Override
- protected void onAnimationEnded() {
- mListView.setScrollingCacheEnabled(mSavedScrollingCacheEnabledFlag);
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileFrequentFragment.java b/src/com/android/contacts/list/ContactTileFrequentFragment.java
deleted file mode 100644
index 605bdd3..0000000
--- a/src/com/android/contacts/list/ContactTileFrequentFragment.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-package com.android.contacts.list;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.contacts.R;
-import com.android.contacts.common.MoreContactUtils;
-
-/**
- * Fragment containing a list of frequently contacted people.
- */
-public class ContactTileFrequentFragment extends ContactTileListFragment {
- private static final String TAG = ContactTileFrequentFragment.class.getSimpleName();
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View listLayout = inflateAndSetupView(inflater, container, savedInstanceState,
- R.layout.contact_tile_list_frequent);
- View headerView = MoreContactUtils.createHeaderView(getActivity(),
- R.string.favoritesFrequentContacted);
- ViewGroup headerContainer = (ViewGroup) listLayout.findViewById(R.id.header_container);
- headerContainer.addView(headerView);
- return listLayout;
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index 55c87f3..d4d4c20 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -26,6 +26,7 @@
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -151,8 +152,6 @@
return ContactTileLoaderFactory.createStarredLoader(getActivity());
case STREQUENT:
return ContactTileLoaderFactory.createStrequentLoader(getActivity());
- case STREQUENT_PHONE_ONLY:
- return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(getActivity());
case FREQUENT_ONLY:
return ContactTileLoaderFactory.createFrequentLoader(getActivity());
default:
@@ -163,6 +162,10 @@
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+ if (data == null || data.isClosed()) {
+ Log.e(TAG, "Failed to load contacts");
+ return;
+ }
mAdapter.setContactCursor(data);
mEmptyView.setText(getEmptyStateText());
mListView.setEmptyView(mEmptyView);
@@ -189,7 +192,6 @@
String emptyText;
switch (mDisplayType) {
case STREQUENT:
- case STREQUENT_PHONE_ONLY:
case STARRED_ONLY:
emptyText = getString(R.string.listTotalAllContactsZeroStarred);
break;
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 90495fa..36d1f6e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -19,9 +19,11 @@
import android.content.CursorLoader;
import android.content.Intent;
import android.database.Cursor;
+import android.graphics.Color;
import android.provider.ContactsContract.Contacts;
import android.text.TextUtils;
import android.util.Log;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -39,6 +41,7 @@
import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.DefaultContactListAdapter;
import com.android.contacts.common.list.ProfileAndContactsLoader;
+import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.common.util.AccountFilterUtil;
@@ -51,13 +54,11 @@
private static final int REQUEST_CODE_ACCOUNT_FILTER = 1;
- private TextView mCounterHeaderView;
private View mSearchHeaderView;
private View mAccountFilterHeader;
private FrameLayout mProfileHeaderContainer;
private View mProfileHeader;
private Button mProfileMessage;
- private FrameLayout mMessageContainer;
private TextView mProfileTitle;
private View mSearchProgress;
private TextView mSearchProgressText;
@@ -75,6 +76,9 @@
public DefaultContactBrowseListFragment() {
setPhotoLoaderEnabled(true);
+ // Don't use a QuickContactBadge. Just use a regular ImageView. Using a QuickContactBadge
+ // inside the ListView prevents us from using MODE_FULLY_EXPANDED and messes up ripples.
+ setQuickContactEnabled(false);
setSectionHeaderDisplayEnabled(true);
setVisibleScrollbarEnabled(true);
}
@@ -113,7 +117,6 @@
mAccountFilterHeader = getView().findViewById(R.id.account_filter_header_container);
mAccountFilterHeader.setOnClickListener(mFilterHeaderClickListener);
- mCounterHeaderView = (TextView) getView().findViewById(R.id.contacts_count);
// Create an empty user profile header and hide it for now (it will be visible if the
// contacts list will have no user profile).
@@ -141,16 +144,15 @@
/** Show or hide the directory-search progress spinner. */
private void showSearchProgress(boolean show) {
- mSearchProgress.setVisibility(show ? View.VISIBLE : View.GONE);
+ if (mSearchProgress != null) {
+ mSearchProgress.setVisibility(show ? View.VISIBLE : View.GONE);
+ }
}
private void checkHeaderViewVisibility() {
- if (mCounterHeaderView != null) {
- mCounterHeaderView.setVisibility(isSearchMode() ? View.GONE : View.VISIBLE);
- }
updateFilterHeaderView();
- // Hide the search header by default. See showCount().
+ // Hide the search header by default.
if (mSearchHeaderView != null) {
mSearchHeaderView.setVisibility(View.GONE);
}
@@ -177,43 +179,11 @@
}
@Override
- protected void showCount(int partitionIndex, Cursor data) {
- if (!isSearchMode() && data != null) {
- int count = data.getCount();
- if (count != 0) {
- count -= (mUserProfileExists ? 1: 0);
- String format = getResources().getQuantityText(
- R.plurals.listTotalAllContacts, count).toString();
- // Do not count the user profile in the contacts count
- if (mUserProfileExists) {
- getAdapter().setContactsCount(String.format(format, count));
- } else {
- mCounterHeaderView.setText(String.format(format, count));
- }
- } else {
- ContactListFilter filter = getFilter();
- int filterType = filter != null ? filter.filterType
- : ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
- switch (filterType) {
- case ContactListFilter.FILTER_TYPE_ACCOUNT:
- mCounterHeaderView.setText(getString(
- R.string.listTotalAllContactsZeroGroup, filter.accountName));
- break;
- case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
- mCounterHeaderView.setText(R.string.listTotalPhoneContactsZero);
- break;
- case ContactListFilter.FILTER_TYPE_STARRED:
- mCounterHeaderView.setText(R.string.listTotalAllContactsZeroStarred);
- break;
- case ContactListFilter.FILTER_TYPE_CUSTOM:
- mCounterHeaderView.setText(R.string.listTotalAllContactsZeroCustom);
- break;
- default:
- mCounterHeaderView.setText(R.string.listTotalAllContactsZero);
- break;
- }
- }
- } else {
+ protected void setProfileHeader() {
+ mUserProfileExists = getAdapter().hasProfile();
+ showEmptyUserProfile(!mUserProfileExists && !isSearchMode());
+
+ if (isSearchMode()) {
ContactListAdapter adapter = getAdapter();
if (adapter == null) {
return;
@@ -240,12 +210,6 @@
}
@Override
- protected void setProfileHeader() {
- mUserProfileExists = getAdapter().hasProfile();
- showEmptyUserProfile(!mUserProfileExists && !isSearchMode());
- }
-
- @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_ACCOUNT_FILTER) {
if (getActivity() != null) {
@@ -263,9 +227,7 @@
// and mProfileTitle
mProfileHeaderContainer.setVisibility(show ? View.VISIBLE : View.GONE);
mProfileHeader.setVisibility(show ? View.VISIBLE : View.GONE);
- mCounterHeaderView.setVisibility(show ? View.VISIBLE : View.GONE);
mProfileTitle.setVisibility(show ? View.VISIBLE : View.GONE);
- mMessageContainer.setVisibility(show ? View.VISIBLE : View.GONE);
mProfileMessage.setVisibility(show ? View.VISIBLE : View.GONE);
}
@@ -276,24 +238,17 @@
* 2. A button that prompts the user to create a local profile
*/
private void addEmptyUserProfileHeader(LayoutInflater inflater) {
-
ListView list = getListView();
- // Put a header with the "ME" name and a view for the number of contacts
- // The view is embedded in a frame view since you cannot change the visibility of a
- // view in a ListView without having a parent view.
- mProfileHeaderContainer = new FrameLayout(inflater.getContext());
+ // Add a header with the "ME" name. The view is embedded in a frame view since you cannot
+ // change the visibility of a view in a ListView without having a parent view.
mProfileHeader = inflater.inflate(R.layout.user_profile_header, null, false);
- mCounterHeaderView = (TextView) mProfileHeader.findViewById(R.id.contacts_count);
mProfileTitle = (TextView) mProfileHeader.findViewById(R.id.profile_title);
+ mProfileHeaderContainer = new FrameLayout(inflater.getContext());
mProfileHeaderContainer.addView(mProfileHeader);
list.addHeaderView(mProfileHeaderContainer, null, false);
- // Add a selectable view with a message inviting the user to create a local profile
- mMessageContainer = new FrameLayout(inflater.getContext());
- mProfileMessage = (Button)inflater.inflate(R.layout.user_profile_button, null, false);
- mMessageContainer.addView(mProfileMessage);
- list.addHeaderView(mMessageContainer, null, true);
-
+ // Add a button with a message inviting the user to create a local profile
+ mProfileMessage = (Button) mProfileHeader.findViewById(R.id.user_profile_button);
mProfileMessage.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
diff --git a/src/com/android/contacts/list/EmailAddressListAdapter.java b/src/com/android/contacts/list/EmailAddressListAdapter.java
index 960f29a..9d5ae7a 100644
--- a/src/com/android/contacts/list/EmailAddressListAdapter.java
+++ b/src/com/android/contacts/list/EmailAddressListAdapter.java
@@ -122,9 +122,9 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
- final ContactListItemView view = new ContactListItemView(context, null);
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+ ContactListItemView view = super.newView(context, partition, cursor, position, parent);
view.setUnknownNameText(mUnknownNameText);
view.setQuickContactEnabled(isQuickContactEnabled());
return view;
@@ -158,16 +158,8 @@
String title = (String)getSections()[section];
view.setSectionHeader(title);
} else {
- view.setDividerVisible(false);
view.setSectionHeader(null);
}
-
- // move the divider for the last item in a section
- if (getPositionForSection(section + 1) - 1 == position) {
- view.setDividerVisible(false);
- } else {
- view.setDividerVisible(true);
- }
}
protected void bindName(final ContactListItemView view, Cursor cursor) {
@@ -184,7 +176,8 @@
request = getDefaultImageRequestFromCursor(cursor, EmailQuery.EMAIL_DISPLAY_NAME,
EmailQuery.EMAIL_LOOKUP_KEY);
}
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, request);
+ getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, getCircularPhotos(),
+ request);
}
//
// protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
diff --git a/src/com/android/contacts/list/JoinContactListAdapter.java b/src/com/android/contacts/list/JoinContactListAdapter.java
index 88259c1..597a7c3 100644
--- a/src/com/android/contacts/list/JoinContactListAdapter.java
+++ b/src/com/android/contacts/list/JoinContactListAdapter.java
@@ -165,8 +165,8 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
switch (partition) {
case PARTITION_SUGGESTIONS:
case PARTITION_ALL_CONTACTS:
diff --git a/src/com/android/contacts/list/LegacyContactListAdapter.java b/src/com/android/contacts/list/LegacyContactListAdapter.java
index defc4e7..27f0a8b 100644
--- a/src/com/android/contacts/list/LegacyContactListAdapter.java
+++ b/src/com/android/contacts/list/LegacyContactListAdapter.java
@@ -73,8 +73,8 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
final ContactListItemView view = new ContactListItemView(context, null);
view.setUnknownNameText(mUnknownNameText);
return view;
diff --git a/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java b/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
index 6c310a6..85b9872 100644
--- a/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
@@ -77,9 +77,10 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
- final ContactListItemView view = new ContactListItemView(context, null);
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+ final ContactListItemView view =
+ super.newView(context, partition, cursor, position, parent);
view.setUnknownNameText(mUnknownNameText);
return view;
}
@@ -106,6 +107,6 @@
label = Phone.getTypeLabel(getContext().getResources(), type, customLabel);
}
view.setLabel(label);
- view.showPhoneNumber(cursor, PHONE_NUMBER_COLUMN_INDEX);
+ view.setPhoneNumber(cursor.getString(PHONE_NUMBER_COLUMN_INDEX), /* countryIso */ null);
}
}
diff --git a/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java b/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
index 2819ed6..86a4c4a 100644
--- a/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
@@ -78,8 +78,8 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
final ContactListItemView view = new ContactListItemView(context, null);
view.setUnknownNameText(mUnknownNameText);
return view;
diff --git a/src/com/android/contacts/list/OnContactBrowserActionListener.java b/src/com/android/contacts/list/OnContactBrowserActionListener.java
index 6d28bac..d91fee4 100644
--- a/src/com/android/contacts/list/OnContactBrowserActionListener.java
+++ b/src/com/android/contacts/list/OnContactBrowserActionListener.java
@@ -36,31 +36,11 @@
void onViewContactAction(Uri contactLookupUri);
/**
- * Creates a new contact.
- */
- void onCreateNewContactAction();
-
- /**
- * Opens the specified contact for editing.
- */
- void onEditContactAction(Uri contactLookupUri);
-
- /**
* Initiates the contact deletion process.
*/
void onDeleteContactAction(Uri contactUri);
/**
- * Adds the specified contact to favorites
- */
- void onAddToFavoritesAction(Uri contactUri);
-
- /**
- * Removes the specified contact from favorites.
- */
- void onRemoveFromFavoritesAction(Uri contactUri);
-
- /**
* Closes the contact browser.
*/
void onFinishAction();
diff --git a/src/com/android/contacts/list/PostalAddressListAdapter.java b/src/com/android/contacts/list/PostalAddressListAdapter.java
index 42c73bc..d011430 100644
--- a/src/com/android/contacts/list/PostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/PostalAddressListAdapter.java
@@ -112,11 +112,12 @@
}
@Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
- final ContactListItemView view = new ContactListItemView(context, null);
+ protected ContactListItemView newView(
+ Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
+ ContactListItemView view = super.newView(context, partition, cursor, position, parent);
view.setUnknownNameText(mUnknownNameText);
view.setQuickContactEnabled(isQuickContactEnabled());
+ view.setIsSectionHeaderEnabled(isSectionHeaderDisplayEnabled());
return view;
}
@@ -148,16 +149,8 @@
String title = (String)getSections()[section];
view.setSectionHeader(title);
} else {
- view.setDividerVisible(false);
view.setSectionHeader(null);
}
-
- // move the divider for the last item in a section
- if (getPositionForSection(section + 1) - 1 == position) {
- view.setDividerVisible(false);
- } else {
- view.setDividerVisible(true);
- }
}
protected void bindName(final ContactListItemView view, Cursor cursor) {
@@ -176,7 +169,8 @@
PostalQuery.POSTAL_LOOKUP_KEY);
}
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, request);
+ getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false, getCircularPhotos(),
+ request);
}
//
// protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
diff --git a/src/com/android/contacts/quickcontact/Action.java b/src/com/android/contacts/quickcontact/Action.java
index fa23286..7d904ab 100644
--- a/src/com/android/contacts/quickcontact/Action.java
+++ b/src/com/android/contacts/quickcontact/Action.java
@@ -45,7 +45,10 @@
public Intent getAlternateIntent();
/** Checks if the contact data for this action is primary. */
- public Boolean isPrimary();
+ public boolean isPrimary();
+
+ /** Checks if the contact data for this action is super primary. */
+ public boolean isSuperPrimary();
/**
* Returns a lookup (@link Uri) for the contact data item or null if there is no data item
@@ -61,4 +64,14 @@
/** Returns the presence of this item or -1 if it was never set */
public int getPresence();
+
+ /**
+ * Returns the number of times this action has been used.
+ */
+ public Integer getTimesUsed();
+
+ /**
+ * Returns the last time this action was used.
+ */
+ public Long getLastTimeUsed();
}
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index e29b3ef..a0df1e6 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -29,9 +29,9 @@
import android.text.TextUtils;
import android.util.Log;
+import com.android.contacts.R;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.ContactsUtils;
-import com.android.contacts.R;
import com.android.contacts.common.MoreContactUtils;
import com.android.contacts.common.model.account.AccountType.EditType;
import com.android.contacts.common.model.dataitem.DataItem;
@@ -55,6 +55,8 @@
private final Context mContext;
private final DataKind mKind;
private final String mMimeType;
+ private final Integer mTimesUsed;
+ private final Long mLastTimeUsed;
private CharSequence mBody;
private CharSequence mSubtitle;
@@ -67,6 +69,7 @@
private Uri mDataUri;
private long mDataId;
private boolean mIsPrimary;
+ private boolean mIsSuperPrimary;
/**
* Create an action from common {@link Data} elements.
@@ -75,6 +78,8 @@
mContext = context;
mKind = kind;
mMimeType = item.getMimeType();
+ mTimesUsed = item.getTimesUsed();
+ mLastTimeUsed = item.getLastTimeUsed();
// Determine type for subtitle
mSubtitle = "";
@@ -96,7 +101,8 @@
}
}
- mIsPrimary = item.isSuperPrimary();
+ mIsPrimary = item.isPrimary();
+ mIsSuperPrimary = item.isSuperPrimary();
mBody = item.buildDataStringForDisplay(context, kind);
mDataId = item.getId();
@@ -265,11 +271,16 @@
}
@Override
- public Boolean isPrimary() {
+ public boolean isPrimary() {
return mIsPrimary;
}
@Override
+ public boolean isSuperPrimary() {
+ return mIsSuperPrimary;
+ }
+
+ @Override
public Drawable getAlternateIcon() {
if (mAlternateIconRes == 0) return null;
@@ -322,4 +333,14 @@
}
return true;
}
+
+ @Override
+ public Integer getTimesUsed() {
+ return mTimesUsed;
+ }
+
+ @Override
+ public Long getLastTimeUsed() {
+ return mLastTimeUsed;
+ }
}
diff --git a/src/com/android/contacts/quickcontact/DirectoryContactUtil.java b/src/com/android/contacts/quickcontact/DirectoryContactUtil.java
new file mode 100644
index 0000000..d483af3
--- /dev/null
+++ b/src/com/android/contacts/quickcontact/DirectoryContactUtil.java
@@ -0,0 +1,83 @@
+package com.android.contacts.quickcontact;
+
+import com.android.contacts.ContactSaveService;
+import com.android.contacts.R;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.quickcontact.QuickContactActivity.SelectAccountDialogFragmentListener;
+
+import android.app.FragmentManager;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.ContactsContract.Directory;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utility class to support adding directory contacts.
+ *
+ * This class is coupled with {@link QuickContactActivity}, but is left out of
+ * QuickContactActivity.java to avoid ballooning the size of the file.
+ */
+public class DirectoryContactUtil {
+
+ public static boolean isDirectoryContact(Contact contactData) {
+ // Not a directory contact? Nothing to fix here
+ if (contactData == null || !contactData.isDirectoryEntry()) return false;
+
+ // No export support? Too bad
+ return contactData.getDirectoryExportSupport() != Directory.EXPORT_SUPPORT_NONE;
+ }
+
+ public static void addToMyContacts(Contact contactData, Context context,
+ FragmentManager fragmentManager,
+ SelectAccountDialogFragmentListener selectAccountCallbacks) {
+ int exportSupport = contactData.getDirectoryExportSupport();
+ switch (exportSupport) {
+ case Directory.EXPORT_SUPPORT_SAME_ACCOUNT_ONLY: {
+ createCopy(contactData.getContentValues(),
+ new AccountWithDataSet(contactData.getDirectoryAccountName(),
+ contactData.getDirectoryAccountType(), null),
+ context);
+ break;
+ }
+ case Directory.EXPORT_SUPPORT_ANY_ACCOUNT: {
+ final List<AccountWithDataSet> accounts =
+ AccountTypeManager.getInstance(context).getAccounts(true);
+ if (accounts.isEmpty()) {
+ createCopy(contactData.getContentValues(), null, context);
+ return; // Don't show a dialog.
+ }
+
+ // In the common case of a single writable account, auto-select
+ // it without showing a dialog.
+ if (accounts.size() == 1) {
+ createCopy(contactData.getContentValues(), accounts.get(0), context);
+ return; // Don't show a dialog.
+ }
+
+ SelectAccountDialogFragment.show(fragmentManager,
+ selectAccountCallbacks, R.string.dialog_new_contact_account,
+ AccountListFilter.ACCOUNTS_CONTACT_WRITABLE, null);
+ break;
+ }
+ }
+ }
+
+ public static void createCopy(
+ ArrayList<ContentValues> values, AccountWithDataSet account,
+ Context context) {
+ Toast.makeText(context, R.string.toast_making_personal_copy,
+ Toast.LENGTH_LONG).show();
+ Intent serviceIntent = ContactSaveService.createNewRawContactIntent(
+ context, values, account,
+ QuickContactActivity.class, Intent.ACTION_VIEW);
+ context.startService(serviceIntent);
+ }
+}
diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
new file mode 100644
index 0000000..209284f
--- /dev/null
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -0,0 +1,482 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.quickcontact;
+
+import com.android.contacts.R;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.ColorFilter;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnPreDrawListener;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Display entries in a LinearLayout that can be expanded to show all entries.
+ */
+public class ExpandingEntryCardView extends LinearLayout {
+
+ private static final String TAG = "ExpandingEntryCardView";
+
+ /**
+ * Entry data.
+ */
+ public static final class Entry {
+
+ private final Drawable mIcon;
+ private final String mHeader;
+ private final String mSubHeader;
+ private final Drawable mSubHeaderIcon;
+ private final String mText;
+ private final Drawable mTextIcon;
+ private final Intent mIntent;
+ private final boolean mIsEditable;
+
+ public Entry(Drawable icon, String header, String subHeader, String text,
+ Intent intent, boolean isEditable) {
+ this(icon, header, subHeader, null, text, null, intent, isEditable);
+ }
+
+ public Entry(Drawable mainIcon, String header, String subHeader,
+ Drawable subHeaderIcon, String text, Drawable textIcon, Intent intent,
+ boolean isEditable) {
+ mIcon = mainIcon;
+ mHeader = header;
+ mSubHeader = subHeader;
+ mSubHeaderIcon = subHeaderIcon;
+ mText = text;
+ mTextIcon = textIcon;
+ mIntent = intent;
+ mIsEditable = isEditable;
+ }
+
+ Drawable getIcon() {
+ return mIcon;
+ }
+
+ String getHeader() {
+ return mHeader;
+ }
+
+ String getSubHeader() {
+ return mSubHeader;
+ }
+
+ Drawable getSubHeaderIcon() {
+ return mSubHeaderIcon;
+ }
+
+ public String getText() {
+ return mText;
+ }
+
+ Drawable getTextIcon() {
+ return mTextIcon;
+ }
+
+ Intent getIntent() {
+ return mIntent;
+ }
+
+ boolean isEditable() {
+ return mIsEditable;
+ }
+ }
+
+ private View mExpandCollapseButton;
+ private TextView mExpandCollapseTextView;
+ private TextView mTitleTextView;
+ private CharSequence mExpandButtonText;
+ private CharSequence mCollapseButtonText;
+ private OnClickListener mOnClickListener;
+ private boolean mIsExpanded = false;
+ private int mCollapsedEntriesCount;
+ private List<Entry> mEntries;
+ private List<View> mEntryViews;
+ private LinearLayout mEntriesViewGroup;
+ private final Drawable mCollapseArrowDrawable;
+ private final Drawable mExpandArrowDrawable;
+ private int mThemeColor;
+ private ColorFilter mThemeColorFilter;
+
+ private final OnClickListener mExpandCollapseButtonListener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mIsExpanded) {
+ collapse();
+ } else {
+ expand();
+ }
+ }
+ };
+
+ public ExpandingEntryCardView(Context context) {
+ this(context, null);
+ }
+
+ public ExpandingEntryCardView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ LayoutInflater inflater = LayoutInflater.from(context);
+ View expandingEntryCardView = inflater.inflate(R.layout.expanding_entry_card_view, this);
+ mEntriesViewGroup = (LinearLayout)
+ expandingEntryCardView.findViewById(R.id.content_area_linear_layout);
+ mTitleTextView = (TextView) expandingEntryCardView.findViewById(R.id.title);
+ mCollapseArrowDrawable =
+ getResources().getDrawable(R.drawable.expanding_entry_card_collapse_white_24);
+ mExpandArrowDrawable =
+ getResources().getDrawable(R.drawable.expanding_entry_card_expand_white_24);
+
+ mExpandCollapseButton = inflater.inflate(
+ R.layout.quickcontact_expanding_entry_card_button, this, false);
+ mExpandCollapseTextView = (TextView) mExpandCollapseButton.findViewById(R.id.text);
+ mExpandCollapseButton.setOnClickListener(mExpandCollapseButtonListener);
+
+
+ }
+
+ /**
+ * Sets the Entry list to display.
+ *
+ * @param entries The Entry list to display.
+ */
+ public void initialize(List<Entry> entries, int numInitialVisibleEntries,
+ boolean isExpanded) {
+ LayoutInflater layoutInflater = LayoutInflater.from(getContext());
+ mIsExpanded = isExpanded;
+ mEntries = entries;
+ mEntryViews = new ArrayList<View>(entries.size());
+ mCollapsedEntriesCount = Math.min(numInitialVisibleEntries, entries.size());
+
+ if (mIsExpanded) {
+ updateExpandCollapseButton(getCollapseButtonText());
+ } else {
+ updateExpandCollapseButton(getExpandButtonText());
+ }
+ inflateViewsIfNeeded(layoutInflater);
+ insertEntriesIntoViewGroup();
+ applyColor();
+ }
+
+ /**
+ * Sets the text for the expand button.
+ *
+ * @param expandButtonText The expand button text.
+ */
+ public void setExpandButtonText(CharSequence expandButtonText) {
+ mExpandButtonText = expandButtonText;
+ if (mExpandCollapseTextView != null && !mIsExpanded) {
+ mExpandCollapseTextView.setText(expandButtonText);
+ }
+ }
+
+ /**
+ * Sets the text for the expand button.
+ *
+ * @param expandButtonText The expand button text.
+ */
+ public void setCollapseButtonText(CharSequence expandButtonText) {
+ mCollapseButtonText = expandButtonText;
+ if (mExpandCollapseTextView != null && mIsExpanded) {
+ mExpandCollapseTextView.setText(mCollapseButtonText);
+ }
+ }
+
+ @Override
+ public void setOnClickListener(OnClickListener listener) {
+ mOnClickListener = listener;
+ }
+
+ private void insertEntriesIntoViewGroup() {
+ mEntriesViewGroup.removeAllViews();
+ for (int i = 0; i < mCollapsedEntriesCount; ++i) {
+ addEntry(mEntryViews.get(i));
+ }
+ if (mIsExpanded) {
+ for (int i = mCollapsedEntriesCount; i < mEntryViews.size(); ++i) {
+ addEntry(mEntryViews.get(i));
+ }
+ }
+
+ removeView(mExpandCollapseButton);
+ if (mCollapsedEntriesCount < mEntries.size()
+ && mExpandCollapseButton.getParent() == null) {
+ addView(mExpandCollapseButton, -1);
+ }
+ }
+
+ private void addEntry(View entry) {
+ if (mEntriesViewGroup.getChildCount() > 0) {
+ View separator = new View(getContext());
+ separator.setBackgroundColor(getResources().getColor(
+ R.color.expanding_entry_card_item_separator_color));
+ LayoutParams layoutParams = generateDefaultLayoutParams();
+ Resources resources = getResources();
+ layoutParams.height = resources.getDimensionPixelSize(
+ R.dimen.expanding_entry_card_item_separator_height);
+ if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
+ layoutParams.rightMargin = resources.getDimensionPixelSize(
+ R.dimen.expanding_entry_card_item_padding_start);
+ layoutParams.leftMargin = resources.getDimensionPixelSize(
+ R.dimen.expanding_entry_card_item_padding_end);
+ } else {
+ layoutParams.leftMargin = resources.getDimensionPixelSize(
+ R.dimen.expanding_entry_card_item_padding_start);
+ layoutParams.rightMargin = resources.getDimensionPixelSize(
+ R.dimen.expanding_entry_card_item_padding_end);
+ }
+ separator.setLayoutParams(layoutParams);
+ mEntriesViewGroup.addView(separator);
+ }
+ mEntriesViewGroup.addView(entry);
+ }
+
+ private CharSequence getExpandButtonText() {
+ if (!TextUtils.isEmpty(mExpandButtonText)) {
+ return mExpandButtonText;
+ } else {
+ // Default to "See more".
+ return getResources().getText(R.string.expanding_entry_card_view_see_more);
+ }
+ }
+
+ private CharSequence getCollapseButtonText() {
+ if (!TextUtils.isEmpty(mCollapseButtonText)) {
+ return mCollapseButtonText;
+ } else {
+ // Default to "See less".
+ return getResources().getText(R.string.expanding_entry_card_view_see_less);
+ }
+ }
+
+ /**
+ * Lazily inflate the number of views currently needed, and bind data from
+ * mEntries into these views.
+ */
+ private void inflateViewsIfNeeded(LayoutInflater layoutInflater) {
+ final int viewsToInflate = mIsExpanded ? mEntries.size() : mCollapsedEntriesCount;
+ for (int i = mEntryViews.size(); i < viewsToInflate; i++) {
+ mEntryViews.add(createEntryView(layoutInflater, mEntries.get(i)));
+ }
+ }
+
+ public void setColorAndFilter(int color, ColorFilter colorFilter) {
+ mThemeColor = color;
+ mThemeColorFilter = colorFilter;
+ applyColor();
+ }
+
+ /**
+ * The ColorFilter is passed in along with the color so that a new one only needs to be created
+ * once for the entire activity.
+ * 1. Title
+ * 2. Entry icons
+ * 3. Expand/Collapse Text
+ * 4. Expand/Collapse Button
+ */
+ public void applyColor() {
+ if (mThemeColor != 0 && mThemeColorFilter != null) {
+ // Title
+ if (mTitleTextView != null) {
+ mTitleTextView.setTextColor(mThemeColor);
+ }
+
+ // Entry icons
+ if (mEntries != null) {
+ for (Entry entry : mEntries) {
+ entry.getIcon().setColorFilter(mThemeColorFilter);
+ }
+ }
+
+ // Expand/Collapse
+ mExpandCollapseTextView.setTextColor(mThemeColor);
+ mCollapseArrowDrawable.setColorFilter(mThemeColorFilter);
+ mExpandArrowDrawable.setColorFilter(mThemeColorFilter);
+ }
+ }
+
+ private View createEntryView(LayoutInflater layoutInflater, Entry entry) {
+ View view = layoutInflater.inflate(
+ R.layout.expanding_entry_card_item, this, false);
+
+ ImageView icon = (ImageView) view.findViewById(R.id.icon);
+ icon.setImageDrawable(entry.getIcon());
+
+ TextView header = (TextView) view.findViewById(R.id.header);
+ if (entry.getHeader() != null) {
+ header.setText(entry.getHeader());
+ } else {
+ header.setVisibility(View.GONE);
+ }
+
+ TextView subHeader = (TextView) view.findViewById(R.id.sub_header);
+ if (entry.getSubHeader() != null) {
+ subHeader.setText(entry.getSubHeader());
+ } else {
+ subHeader.setVisibility(View.GONE);
+ }
+
+ ImageView subHeaderIcon = (ImageView) view.findViewById(R.id.icon_sub_header);
+ if (entry.getSubHeaderIcon() != null) {
+ subHeaderIcon.setImageDrawable(entry.getSubHeaderIcon());
+ } else {
+ subHeaderIcon.setVisibility(View.GONE);
+ }
+
+ TextView text = (TextView) view.findViewById(R.id.text);
+ if (entry.getText() != null) {
+ text.setText(entry.getText());
+ } else {
+ text.setVisibility(View.GONE);
+ }
+
+ ImageView textIcon = (ImageView) view.findViewById(R.id.icon_text);
+ if (entry.getTextIcon() != null) {
+ textIcon.setImageDrawable(entry.getTextIcon());
+ } else {
+ textIcon.setVisibility(View.GONE);
+ }
+
+ if (entry.getIntent() != null) {
+ View entryLayout = view.findViewById(R.id.entry_layout);
+ entryLayout.setOnClickListener(mOnClickListener);
+ entryLayout.setTag(entry.getIntent());
+ }
+
+ return view;
+ }
+
+ private void updateExpandCollapseButton(CharSequence buttonText) {
+ final Drawable arrow = mIsExpanded ? mCollapseArrowDrawable : mExpandArrowDrawable;
+ if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
+ mExpandCollapseTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, arrow,
+ null);
+ } else {
+ mExpandCollapseTextView.setCompoundDrawablesWithIntrinsicBounds(arrow, null, null,
+ null);
+ }
+ mExpandCollapseTextView.setText(buttonText);
+ }
+
+ private void expand() {
+ final int startingHeight = mEntriesViewGroup.getHeight();
+
+ mIsExpanded = true;
+ // In order to insert new entries, we may need to inflate them for the first time
+ inflateViewsIfNeeded(LayoutInflater.from(getContext()));
+ insertEntriesIntoViewGroup();
+ updateExpandCollapseButton(getCollapseButtonText());
+
+ // When expanding, all the TextViews haven't been laid out yet. Therefore,
+ // calling measure() would return an incorrect result. Therefore, we need a pre draw
+ // listener.
+ final ViewTreeObserver observer = mEntriesViewGroup.getViewTreeObserver();
+ observer.addOnPreDrawListener(new OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ if (observer.isAlive()) {
+ mEntriesViewGroup.getViewTreeObserver().removeOnPreDrawListener(this);
+ }
+ createExpandAnimator(startingHeight, mEntriesViewGroup.getHeight()).start();
+ // Do not draw the final frame of the animation immediately.
+ return false;
+ }
+ });
+ }
+
+ private void collapse() {
+ int startingHeight = mEntriesViewGroup.getHeight();
+ int finishHeight = measureCollapsedViewGroupHeight();
+
+ mIsExpanded = false;
+ updateExpandCollapseButton(getExpandButtonText());
+ createExpandAnimator(startingHeight, finishHeight).start();
+ }
+
+ private int measureCollapsedViewGroupHeight() {
+ if (mCollapsedEntriesCount == 0) {
+ return 0;
+ }
+ final View bottomCollapsedView = mEntryViews.get(mCollapsedEntriesCount - 1);
+ return bottomCollapsedView.getTop() + bottomCollapsedView.getHeight();
+ }
+
+ /**
+ * Create ValueAnimator that performs an expand animation on the content LinearLayout.
+ *
+ * The animation needs to be performed manually using a ValueAnimator, since LinearLayout
+ * doesn't have a single set-able height property (ie, no setHeight()).
+ */
+ private ValueAnimator createExpandAnimator(int start, int end) {
+ ValueAnimator animator = ValueAnimator.ofInt(start, end);
+ animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator valueAnimator) {
+ int value = (Integer) valueAnimator.getAnimatedValue();
+ ViewGroup.LayoutParams layoutParams = mEntriesViewGroup.getLayoutParams();
+ layoutParams.height = value;
+ mEntriesViewGroup.setLayoutParams(layoutParams);
+ }
+ });
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ insertEntriesIntoViewGroup();
+ // Now that the animation is done, stop using a fixed height.
+ ViewGroup.LayoutParams layoutParams = mEntriesViewGroup.getLayoutParams();
+ layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
+ mEntriesViewGroup.setLayoutParams(layoutParams);
+ }
+ });
+ return animator;
+ }
+
+ /**
+ * Returns whether the view is currently in its expanded state.
+ */
+ public boolean isExpanded() {
+ return mIsExpanded;
+ }
+
+ /**
+ * Sets the title text of this ExpandingEntryCardView.
+ * @param title The title to set. A null title will result in an empty string being set.
+ */
+ public void setTitle(String title) {
+ if (mTitleTextView == null) {
+ Log.e(TAG, "mTitleTextView is null");
+ }
+ if (title == null) {
+ mTitleTextView.setText("");
+ }
+ mTitleTextView.setText(title);
+ }
+}
diff --git a/src/com/android/contacts/quickcontact/FloatingChildLayout.java b/src/com/android/contacts/quickcontact/FloatingChildLayout.java
deleted file mode 100644
index 555f948..0000000
--- a/src/com/android/contacts/quickcontact/FloatingChildLayout.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.quickcontact;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.animation.AnimationUtils;
-import android.widget.FrameLayout;
-import android.widget.PopupWindow;
-
-import com.android.contacts.R;
-import com.android.contacts.test.NeededForReflection;
-import com.android.contacts.util.SchedulingUtils;
-
-/**
- * Layout containing single child {@link View} which it attempts to center
- * around {@link #setChildTargetScreen(Rect)}.
- * <p>
- * Updates drawable state to be {@link android.R.attr#state_first} when child is
- * above target, and {@link android.R.attr#state_last} when child is below
- * target. Also updates {@link Drawable#setLevel(int)} on child
- * {@link View#getBackground()} to reflect horizontal center of target.
- * <p>
- * The reason for this approach is because target {@link Rect} is in screen
- * coordinates disregarding decor insets; otherwise something like
- * {@link PopupWindow} might work better.
- */
-public class FloatingChildLayout extends FrameLayout {
- private static final String TAG = "FloatingChildLayout";
- private int mFixedTopPosition;
- private View mChild;
- private Rect mTargetScreen = new Rect();
- private final int mAnimationDuration;
-
- /** The phase of the background dim. This is one of the values of {@link BackgroundPhase} */
- private int mBackgroundPhase = BackgroundPhase.BEFORE;
-
- private ObjectAnimator mBackgroundAnimator = ObjectAnimator.ofInt(this,
- "backgroundColorAlpha", 0, DIM_BACKGROUND_ALPHA);
-
- private interface BackgroundPhase {
- public static final int BEFORE = 0;
- public static final int APPEARING_OR_VISIBLE = 1;
- public static final int DISAPPEARING_OR_GONE = 3;
- }
-
- /** The phase of the contents window. This is one of the values of {@link ForegroundPhase} */
- private int mForegroundPhase = ForegroundPhase.BEFORE;
-
- private interface ForegroundPhase {
- public static final int BEFORE = 0;
- public static final int APPEARING = 1;
- public static final int IDLE = 2;
- public static final int DISAPPEARING = 3;
- public static final int AFTER = 4;
- }
-
- // Black, 50% alpha as per the system default.
- private static final int DIM_BACKGROUND_ALPHA = 0x7F;
-
- public FloatingChildLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- final Resources resources = getResources();
- mFixedTopPosition =
- resources.getDimensionPixelOffset(R.dimen.quick_contact_top_position);
- mAnimationDuration = resources.getInteger(android.R.integer.config_shortAnimTime);
-
- super.setBackground(new ColorDrawable(0));
- }
-
- @Override
- protected void onFinishInflate() {
- mChild = findViewById(android.R.id.content);
- mChild.setDuplicateParentStateEnabled(true);
-
- // this will be expanded in showChild()
- mChild.setScaleX(0.5f);
- mChild.setScaleY(0.5f);
- mChild.setAlpha(0.0f);
- }
-
- public View getChild() {
- return mChild;
- }
-
- /**
- * FloatingChildLayout manages its own background, don't set it.
- */
- @Override
- public void setBackground(Drawable background) {
- Log.wtf(TAG, "don't setBackground(), it is managed internally");
- }
-
- /**
- * Set {@link Rect} in screen coordinates that {@link #getChild()} should be
- * centered around.
- */
- public void setChildTargetScreen(Rect targetScreen) {
- mTargetScreen = targetScreen;
- requestLayout();
- }
-
- /**
- * Return {@link #mTargetScreen} in local window coordinates, taking any
- * decor insets into account.
- */
- private Rect getTargetInWindow() {
- final Rect windowScreen = new Rect();
- getWindowVisibleDisplayFrame(windowScreen);
-
- final Rect target = new Rect(mTargetScreen);
- target.offset(-windowScreen.left, -windowScreen.top);
- return target;
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-
- final View child = mChild;
- final Rect target = getTargetInWindow();
-
- final int childWidth = child.getMeasuredWidth();
- final int childHeight = child.getMeasuredHeight();
-
- if (mFixedTopPosition != -1) {
- // Horizontally centered, vertically fixed position
- final int childLeft = (getWidth() - childWidth) / 2;
- final int childTop = mFixedTopPosition;
- layoutChild(child, childLeft, childTop);
- } else {
- // default is centered horizontally around target...
- final int childLeft = target.centerX() - (childWidth / 2);
- // ... and vertically aligned a bit below centered
- final int childTop = target.centerY() - Math.round(childHeight * 0.35f);
-
- // when child is outside bounds, nudge back inside
- final int clampedChildLeft = clampDimension(childLeft, childWidth, getWidth());
- final int clampedChildTop = clampDimension(childTop, childHeight, getHeight());
-
- layoutChild(child, clampedChildLeft, clampedChildTop);
- }
- }
-
- private static int clampDimension(int value, int size, int max) {
- // when larger than bounds, just center
- if (size > max) {
- return (max - size) / 2;
- }
-
- // clamp to bounds
- return Math.min(Math.max(value, 0), max - size);
- }
-
- private static void layoutChild(View child, int left, int top) {
- child.layout(left, top, left + child.getMeasuredWidth(), top + child.getMeasuredHeight());
- }
-
- @NeededForReflection
- public void setBackgroundColorAlpha(int alpha) {
- setBackgroundColor(alpha << 24);
- }
-
- public void fadeInBackground() {
- if (mBackgroundPhase == BackgroundPhase.BEFORE) {
- mBackgroundPhase = BackgroundPhase.APPEARING_OR_VISIBLE;
-
- createChildLayer();
-
- SchedulingUtils.doAfterDraw(this, new Runnable() {
- @Override
- public void run() {
- mBackgroundAnimator.setDuration(mAnimationDuration).start();
- }
- });
- }
- }
-
- public void fadeOutBackground() {
- if (mBackgroundPhase == BackgroundPhase.APPEARING_OR_VISIBLE) {
- mBackgroundPhase = BackgroundPhase.DISAPPEARING_OR_GONE;
- if (mBackgroundAnimator.isRunning()) {
- mBackgroundAnimator.reverse();
- } else {
- ObjectAnimator.ofInt(this, "backgroundColorAlpha", DIM_BACKGROUND_ALPHA, 0).
- setDuration(mAnimationDuration).start();
- }
- }
- }
-
- public boolean isContentFullyVisible() {
- return mForegroundPhase == ForegroundPhase.IDLE;
- }
-
- /** Begin animating {@link #getChild()} visible. */
- public void showContent(final Runnable onAnimationEndRunnable) {
- if (mForegroundPhase == ForegroundPhase.BEFORE) {
- mForegroundPhase = ForegroundPhase.APPEARING;
- animateScale(false, onAnimationEndRunnable);
- }
- }
-
- /**
- * Begin animating {@link #getChild()} invisible. Returns false if animation is not valid in
- * this state
- */
- public boolean hideContent(final Runnable onAnimationEndRunnable) {
- if (mForegroundPhase == ForegroundPhase.APPEARING ||
- mForegroundPhase == ForegroundPhase.IDLE) {
- mForegroundPhase = ForegroundPhase.DISAPPEARING;
-
- createChildLayer();
-
- animateScale(true, onAnimationEndRunnable);
- return true;
- } else {
- return false;
- }
- }
-
- private void createChildLayer() {
- mChild.invalidate();
- mChild.setLayerType(LAYER_TYPE_HARDWARE, null);
- mChild.buildLayer();
- }
-
- /** Creates the open/close animation */
- private void animateScale(
- final boolean isExitAnimation,
- final Runnable onAnimationEndRunnable) {
- mChild.setPivotX(mTargetScreen.centerX() - mChild.getLeft());
- mChild.setPivotY(mTargetScreen.centerY() - mChild.getTop());
-
- final int scaleInterpolator = isExitAnimation
- ? android.R.interpolator.accelerate_quint
- : android.R.interpolator.decelerate_quint;
- final float scaleTarget = isExitAnimation ? 0.5f : 1.0f;
-
- mChild.animate()
- .setDuration(mAnimationDuration)
- .setInterpolator(AnimationUtils.loadInterpolator(getContext(), scaleInterpolator))
- .scaleX(scaleTarget)
- .scaleY(scaleTarget)
- .alpha(isExitAnimation ? 0.0f : 1.0f)
- .setListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- mChild.setLayerType(LAYER_TYPE_NONE, null);
- if (isExitAnimation) {
- if (mForegroundPhase == ForegroundPhase.DISAPPEARING) {
- mForegroundPhase = ForegroundPhase.AFTER;
- if (onAnimationEndRunnable != null) onAnimationEndRunnable.run();
- }
- } else {
- if (mForegroundPhase == ForegroundPhase.APPEARING) {
- mForegroundPhase = ForegroundPhase.IDLE;
- if (onAnimationEndRunnable != null) onAnimationEndRunnable.run();
- }
- }
- }
- });
- }
-
- private View.OnTouchListener mOutsideTouchListener;
-
- public void setOnOutsideTouchListener(View.OnTouchListener listener) {
- mOutsideTouchListener = listener;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- // at this point, touch wasn't handled by child view; assume outside
- if (mOutsideTouchListener != null) {
- return mOutsideTouchListener.onTouch(this, event);
- }
- return false;
- }
-}
diff --git a/src/com/android/contacts/quickcontact/InvisibleContactUtil.java b/src/com/android/contacts/quickcontact/InvisibleContactUtil.java
new file mode 100644
index 0000000..3609fbc
--- /dev/null
+++ b/src/com/android/contacts/quickcontact/InvisibleContactUtil.java
@@ -0,0 +1,113 @@
+package com.android.contacts.quickcontact;
+
+
+import com.google.common.collect.Iterables;
+
+import com.android.contacts.ContactSaveService;
+import com.android.contacts.common.GroupMetaData;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.RawContact;
+import com.android.contacts.common.model.RawContactDelta;
+import com.android.contacts.common.model.RawContactDeltaList;
+import com.android.contacts.common.model.RawContactModifier;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.dataitem.DataItem;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.model.dataitem.GroupMembershipDataItem;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+
+import java.util.List;
+
+/**
+ * Utility class to support adding invisible contacts. Ie, contacts that don't belong to the
+ * default group.
+ */
+public class InvisibleContactUtil {
+
+ public static boolean isInvisibleAndAddable(Contact contactData, Context context) {
+ // Only local contacts
+ if (contactData == null || contactData.isDirectoryEntry()) return false;
+
+ // User profile cannot be added to contacts
+ if (contactData.isUserProfile()) return false;
+
+ // Only if exactly one raw contact
+ if (contactData.getRawContacts().size() != 1) return false;
+
+ // test if the default group is assigned
+ final List<GroupMetaData> groups = contactData.getGroupMetaData();
+
+ // For accounts without group support, groups is null
+ if (groups == null) return false;
+
+ // remember the default group id. no default group? bail out early
+ final long defaultGroupId = getDefaultGroupId(groups);
+ if (defaultGroupId == -1) return false;
+
+ final RawContact rawContact = (RawContact) contactData.getRawContacts().get(0);
+ final AccountType type = rawContact.getAccountType(context);
+ // Offline or non-writeable account? Nothing to fix
+ if (type == null || !type.areContactsWritable()) return false;
+
+ // Check whether the contact is in the default group
+ boolean isInDefaultGroup = false;
+ for (DataItem dataItem : Iterables.filter(
+ rawContact.getDataItems(), GroupMembershipDataItem.class)) {
+ GroupMembershipDataItem groupMembership = (GroupMembershipDataItem) dataItem;
+ final Long groupId = groupMembership.getGroupRowId();
+ if (groupId != null && groupId == defaultGroupId) {
+ isInDefaultGroup = true;
+ break;
+ }
+ }
+
+ return !isInDefaultGroup;
+ }
+
+ public static void addToDefaultGroup(Contact contactData, Context context) {
+ final long defaultGroupId = getDefaultGroupId(contactData.getGroupMetaData());
+ // there should always be a default group (otherwise the button would be invisible),
+ // but let's be safe here
+ if (defaultGroupId == -1) return;
+
+ // add the group membership to the current state
+ final RawContactDeltaList contactDeltaList = contactData.createRawContactDeltaList();
+ final RawContactDelta rawContactEntityDelta = contactDeltaList.get(0);
+
+ final AccountTypeManager accountTypes = AccountTypeManager.getInstance(
+ context);
+ final AccountType type = rawContactEntityDelta.getAccountType(accountTypes);
+ final DataKind groupMembershipKind = type.getKindForMimetype(
+ GroupMembership.CONTENT_ITEM_TYPE);
+ final ValuesDelta entry = RawContactModifier.insertChild(rawContactEntityDelta,
+ groupMembershipKind);
+ if (entry == null) return;
+ entry.setGroupRowId(defaultGroupId);
+
+ // and fire off the intent. we don't need a callback, as the database listener
+ // should update the ui
+ final Intent intent = ContactSaveService.createSaveContactIntent(
+ context,
+ contactDeltaList, "", 0, false, QuickContactActivity.class,
+ Intent.ACTION_VIEW, null);
+ context.startService(intent);
+ }
+
+ /** return default group id or -1 if no group or several groups are marked as default */
+ private static long getDefaultGroupId(List<GroupMetaData> groups) {
+ long defaultGroupId = -1;
+ for (GroupMetaData group : groups) {
+ if (group.isDefaultGroup()) {
+ // two default groups? return neither
+ if (defaultGroupId != -1) return -1;
+ defaultGroupId = group.getGroupId();
+ }
+ }
+ return defaultGroupId;
+ }
+}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index e950fcb..c2f6538 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -16,114 +16,152 @@
package com.android.contacts.quickcontact;
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ArgbEvaluator;
+import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.Fragment;
-import android.app.FragmentManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.ActivityNotFoundException;
import android.content.ContentUris;
-import android.content.Context;
import android.content.Intent;
import android.content.Loader;
import android.content.pm.PackageManager;
-import android.graphics.Rect;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
-import android.os.Handler;
+import android.os.Trace;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.DisplayNameSources;
-import android.provider.ContactsContract.Intents.Insert;
-import android.provider.ContactsContract.Directory;
import android.provider.ContactsContract.QuickContact;
import android.provider.ContactsContract.RawContacts;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.SimpleOnPageChangeListener;
+import android.support.v7.graphics.Palette;
import android.text.TextUtils;
import android.util.Log;
-import android.view.MotionEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.ViewGroup;
import android.view.WindowManager;
-import android.widget.HorizontalScrollView;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
import android.widget.Toast;
+import android.widget.Toolbar;
import com.android.contacts.ContactSaveService;
+import com.android.contacts.ContactsActivity;
import com.android.contacts.common.Collapser;
import com.android.contacts.R;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+import com.android.contacts.common.list.ShortcutIntentBuilder;
+import com.android.contacts.common.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.Contact;
import com.android.contacts.common.model.ContactLoader;
import com.android.contacts.common.model.RawContact;
import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.model.dataitem.DataItem;
import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.common.model.dataitem.EmailDataItem;
import com.android.contacts.common.model.dataitem.ImDataItem;
-import com.android.contacts.common.util.Constants;
+import com.android.contacts.common.model.dataitem.PhoneDataItem;
import com.android.contacts.common.util.DataStatus;
-import com.android.contacts.common.util.UriUtils;
+import com.android.contacts.detail.ContactDetailDisplayUtils;
+import com.android.contacts.interactions.CalendarInteractionsLoader;
+import com.android.contacts.interactions.CallLogInteractionsLoader;
+import com.android.contacts.interactions.ContactDeletionInteraction;
+import com.android.contacts.interactions.ContactInteraction;
+import com.android.contacts.interactions.SmsInteractionsLoader;
+import com.android.contacts.quickcontact.ExpandingEntryCardView.Entry;
import com.android.contacts.util.ImageViewDrawableSetter;
import com.android.contacts.util.SchedulingUtils;
-import com.android.contacts.common.util.StopWatch;
+import com.android.contacts.widget.MultiShrinkScroller;
+import com.android.contacts.widget.MultiShrinkScroller.MultiShrinkScrollerListener;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
-// TODO: Save selected tab index during rotation
-
/**
* Mostly translucent {@link Activity} that shows QuickContact dialog. It loads
* data asynchronously, and then shows a popup with details centered around
* {@link Intent#getSourceBounds()}.
*/
-public class QuickContactActivity extends Activity {
+public class QuickContactActivity extends ContactsActivity {
+
+ /**
+ * QuickContacts immediately takes up the full screen. All possible information is shown.
+ * This value for {@link android.provider.ContactsContract.QuickContact#EXTRA_MODE}
+ * should only be used by the Contacts app.
+ */
+ public static final int MODE_FULLY_EXPANDED = 4;
+
private static final String TAG = "QuickContact";
- private static final boolean TRACE_LAUNCH = false;
- private static final String TRACE_TAG = "quickcontact";
- private static final int POST_DRAW_WAIT_DURATION = 60;
- private static final boolean ENABLE_STOPWATCH = false;
+ private static final String KEY_THEME_COLOR = "theme_color";
+ private static final int ANIMATION_SLIDE_OPEN_DURATION = 250;
+ private static final int ANIMATION_STATUS_BAR_COLOR_CHANGE_DURATION = 150;
+ private static final int REQUEST_CODE_CONTACT_EDITOR_ACTIVITY = 1;
+ private static final float SYSTEM_BAR_BRIGHTNESS_FACTOR = 0.7f;
+ private static final int SCRIM_COLOR = Color.argb(0xB2, 0, 0, 0);
+
+ /** This is the Intent action to install a shortcut in the launcher. */
+ private static final String ACTION_INSTALL_SHORTCUT =
+ "com.android.launcher.action.INSTALL_SHORTCUT";
@SuppressWarnings("deprecation")
private static final String LEGACY_AUTHORITY = android.provider.Contacts.AUTHORITY;
private Uri mLookupUri;
private String[] mExcludeMimes;
- private List<String> mSortedActionMimeTypes = Lists.newArrayList();
-
- private FloatingChildLayout mFloatingLayout;
-
- private View mPhotoContainer;
- private ViewGroup mTrack;
- private HorizontalScrollView mTrackScroller;
- private View mSelectedTabRectangle;
- private View mLineAfterTrack;
+ private int mExtraMode;
+ private int mStatusBarColor;
+ private boolean mHasAlreadyBeenOpened;
private ImageView mPhotoView;
- private ImageView mOpenDetailsOrAddContactImage;
- private ImageView mStarImage;
- private ViewPager mListPager;
- private ViewPagerAdapter mPagerAdapter;
+ private View mTransparentView;
+ private ExpandingEntryCardView mCommunicationCard;
+ private ExpandingEntryCardView mRecentCard;
+ private MultiShrinkScroller mScroller;
+ private SelectAccountDialogFragmentListener mSelectAccountFragmentListener;
+ private AsyncTask<Void, Void, Void> mEntriesAndActionsTask;
+ private ColorDrawable mWindowScrim;
+ private boolean mIsWaitingForOtherPieceOfExitAnimation;
+ private boolean mIsExitAnimationInProgress;
+ private boolean mHasComputedThemeColor;
+
+ private static final int MIN_NUM_COMMUNICATION_ENTRIES_SHOWN = 3;
+ private static final int MIN_NUM_COLLAPSED_RECENT_ENTRIES_SHOWN = 3;
private Contact mContactData;
private ContactLoader mContactLoader;
+ private PorterDuffColorFilter mColorFilter;
private final ImageViewDrawableSetter mPhotoSetter = new ImageViewDrawableSetter();
@@ -133,13 +171,6 @@
private HashMap<String, Action> mDefaultsMap = new HashMap<String, Action>();
/**
- * Set of {@link Action} that are associated with the aggregate currently
- * displayed by this dialog, represented as a map from {@link String}
- * MIME-type to a list of {@link Action}.
- */
- private ActionMultiMap mActions = new ActionMultiMap();
-
- /**
* {@link #LEADING_MIMETYPES} and {@link #TRAILING_MIMETYPES} are used to sort MIME-types.
*
* <p>The MIME-types in {@link #LEADING_MIMETYPES} appear in the front of the dialog,
@@ -157,55 +188,251 @@
private static final List<String> TRAILING_MIMETYPES = Lists.newArrayList(
StructuredPostal.CONTENT_ITEM_TYPE, Website.CONTENT_ITEM_TYPE);
- /** Id for the background loader */
- private static final int LOADER_ID = 0;
+ /** Id for the background contact loader */
+ private static final int LOADER_CONTACT_ID = 0;
- private StopWatch mStopWatch = ENABLE_STOPWATCH
- ? StopWatch.start("QuickContact") : StopWatch.getNullStopWatch();
+ private static final String KEY_LOADER_EXTRA_PHONES =
+ QuickContactActivity.class.getCanonicalName() + ".KEY_LOADER_EXTRA_PHONES";
- final OnClickListener mOpenDetailsClickHandler = new OnClickListener() {
+ /** Id for the background Sms Loader */
+ private static final int LOADER_SMS_ID = 1;
+ private static final int MAX_SMS_RETRIEVE = 3;
+
+ /** Id for the back Calendar Loader */
+ private static final int LOADER_CALENDAR_ID = 2;
+ private static final String KEY_LOADER_EXTRA_EMAILS =
+ QuickContactActivity.class.getCanonicalName() + ".KEY_LOADER_EXTRA_EMAILS";
+ private static final int MAX_PAST_CALENDAR_RETRIEVE = 3;
+ private static final int MAX_FUTURE_CALENDAR_RETRIEVE = 3;
+ private static final long PAST_MILLISECOND_TO_SEARCH_LOCAL_CALENDAR =
+ 180L * 24L * 60L * 60L * 1000L /* 180 days */;
+ private static final long FUTURE_MILLISECOND_TO_SEARCH_LOCAL_CALENDAR =
+ 36L * 60L * 60L * 1000L /* 36 hours */;
+
+ /** Id for the background Call Log Loader */
+ private static final int LOADER_CALL_LOG_ID = 3;
+ private static final int MAX_CALL_LOG_RETRIEVE = 3;
+
+
+ private static final int[] mRecentLoaderIds = new int[]{
+ LOADER_SMS_ID,
+ LOADER_CALENDAR_ID,
+ LOADER_CALL_LOG_ID};
+ private Map<Integer, List<ContactInteraction>> mRecentLoaderResults;
+
+ private static final String FRAGMENT_TAG_SELECT_ACCOUNT = "select_account_fragment";
+
+ final OnClickListener mEntryClickHandler = new OnClickListener() {
@Override
public void onClick(View v) {
- final Intent intent = new Intent(Intent.ACTION_VIEW, mLookupUri);
- mContactLoader.cacheResult();
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- startActivity(intent);
- close(false);
+ Log.i(TAG, "mEntryClickHandler onClick");
+ Object intent = v.getTag();
+ if (intent == null || !(intent instanceof Intent)) {
+ return;
+ }
+ startActivity((Intent) intent);
}
};
- final OnClickListener mAddToContactsClickHandler = new OnClickListener() {
+ /**
+ * Headless fragment used to handle account selection callbacks invoked from
+ * {@link DirectoryContactUtil}.
+ */
+ public static class SelectAccountDialogFragmentListener extends Fragment
+ implements SelectAccountDialogFragment.Listener {
+
+ private QuickContactActivity mQuickContactActivity;
+
+ public SelectAccountDialogFragmentListener() {}
+
@Override
- public void onClick(View v) {
- if (mContactData == null) {
- Log.e(TAG, "Empty contact data when trying to add to contact");
+ public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
+ DirectoryContactUtil.createCopy(mQuickContactActivity.mContactData.getContentValues(),
+ account, mQuickContactActivity);
+ }
+
+ @Override
+ public void onAccountSelectorCancelled() {}
+
+ /**
+ * Set the parent activity. Since rotation can cause this fragment to be used across
+ * more than one activity instance, we need to explicitly set this value instead
+ * of making this class non-static.
+ */
+ public void setQuickContactActivity(QuickContactActivity quickContactActivity) {
+ mQuickContactActivity = quickContactActivity;
+ }
+ }
+
+ final MultiShrinkScrollerListener mMultiShrinkScrollerListener
+ = new MultiShrinkScrollerListener() {
+ @Override
+ public void onScrolledOffBottom() {
+ if (!mIsWaitingForOtherPieceOfExitAnimation) {
+ finish();
return;
}
- final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(Contacts.CONTENT_ITEM_TYPE);
+ mIsWaitingForOtherPieceOfExitAnimation = false;
+ }
- // Only pre-fill the name field if the provided display name is an organization
- // name or better (e.g. structured name, nickname)
- if (mContactData.getDisplayNameSource() >= DisplayNameSources.ORGANIZATION) {
- intent.putExtra(Insert.NAME, mContactData.getDisplayName());
+ @Override
+ public void onEnterFullscreen() {
+ updateStatusBarColor();
+ }
+
+ @Override
+ public void onExitFullscreen() {
+ updateStatusBarColor();
+ }
+
+ @Override
+ public void onStartScrollOffBottom() {
+ // Remove the window shim now that we are starting an Activity exit animation.
+ final int duration = getResources().getInteger(android.R.integer.config_shortAnimTime);
+ final ObjectAnimator animator = ObjectAnimator.ofInt(mWindowScrim, "alpha", 0xFF, 0);
+ animator.addListener(mExitWindowShimAnimationListener);
+ animator.setDuration(duration).start();
+ mIsWaitingForOtherPieceOfExitAnimation = true;
+ mIsExitAnimationInProgress = true;
+ }
+ };
+
+ final AnimatorListener mExitWindowShimAnimationListener = new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (!mIsWaitingForOtherPieceOfExitAnimation) {
+ finish();
+ return;
}
- intent.putExtra(Insert.DATA, mContactData.getContentValues());
- startActivity(intent);
+ mIsWaitingForOtherPieceOfExitAnimation = false;
}
};
@Override
- protected void onCreate(Bundle icicle) {
- mStopWatch.lap("c"); // create start
- super.onCreate(icicle);
+ protected void onCreate(Bundle savedInstanceState) {
+ Trace.beginSection("onCreate()");
+ super.onCreate(savedInstanceState);
- mStopWatch.lap("sc"); // super.onCreate
+ getWindow().setStatusBarColor(Color.TRANSPARENT);
+ // Since we can't disable Window animations from the Launcher, we can minimize the
+ // silliness of the animation by setting the navigation bar transparent.
+ getWindow().setNavigationBarColor(Color.TRANSPARENT);
- if (TRACE_LAUNCH) android.os.Debug.startMethodTracing(TRACE_TAG);
+ processIntent(getIntent());
- // Parse intent
- final Intent intent = getIntent();
+ // Show QuickContact in front of soft input
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
+ WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+ setContentView(R.layout.quickcontact_activity);
+
+ mCommunicationCard = (ExpandingEntryCardView) findViewById(R.id.communication_card);
+ mRecentCard = (ExpandingEntryCardView) findViewById(R.id.recent_card);
+ mScroller = (MultiShrinkScroller) findViewById(R.id.multiscroller);
+
+ mCommunicationCard.setOnClickListener(mEntryClickHandler);
+ mCommunicationCard.setTitle(getResources().getString(R.string.communication_card_title));
+ mCommunicationCard.setExpandButtonText(
+ getResources().getString(R.string.expanding_entry_card_view_see_all));
+
+ mRecentCard.setOnClickListener(mEntryClickHandler);
+ mRecentCard.setTitle(getResources().getString(R.string.recent_card_title));
+
+ mPhotoView = (ImageView) findViewById(R.id.photo);
+ mTransparentView = findViewById(R.id.transparent_view);
+ if (mScroller != null) {
+ mTransparentView.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mScroller.scrollOffBottom();
+ }
+ });
+ }
+
+ final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setActionBar(toolbar);
+ getActionBar().setTitle(null);
+ // Put a TextView with a known resource id into the ActionBar. This allows us to easily
+ // find the correct TextView location & size later.
+ toolbar.addView(getLayoutInflater().inflate(R.layout.quickcontact_title_placeholder, null));
+
+ mHasAlreadyBeenOpened = savedInstanceState != null;
+
+ mWindowScrim = new ColorDrawable(SCRIM_COLOR);
+ getWindow().setBackgroundDrawable(mWindowScrim);
+ if (!mHasAlreadyBeenOpened) {
+ final int duration = getResources().getInteger(android.R.integer.config_shortAnimTime);
+ ObjectAnimator.ofInt(mWindowScrim, "alpha", 0, 0xFF).setDuration(duration).start();
+ }
+
+ if (mScroller != null) {
+ mScroller.initialize(mMultiShrinkScrollerListener);
+ if (mHasAlreadyBeenOpened) {
+ mScroller.setVisibility(View.VISIBLE);
+ mScroller.setScroll(mScroller.getScrollNeededToBeFullScreen());
+ } else {
+ // mScroller needs to perform asynchronous measurements after initalize(), therefore
+ // we can't mark this as GONE.
+ mScroller.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ setHeaderNameText(R.string.missing_name);
+
+ mSelectAccountFragmentListener= (SelectAccountDialogFragmentListener) getFragmentManager()
+ .findFragmentByTag(FRAGMENT_TAG_SELECT_ACCOUNT);
+ if (mSelectAccountFragmentListener == null) {
+ mSelectAccountFragmentListener = new SelectAccountDialogFragmentListener();
+ getFragmentManager().beginTransaction().add(0, mSelectAccountFragmentListener,
+ FRAGMENT_TAG_SELECT_ACCOUNT).commit();
+ mSelectAccountFragmentListener.setRetainInstance(true);
+ }
+ mSelectAccountFragmentListener.setQuickContactActivity(this);
+
+ if (savedInstanceState != null) {
+ final int color = savedInstanceState.getInt(KEY_THEME_COLOR, 0);
+ if (color != 0) {
+ // Wait for pre draw. Setting the header tint before the MultiShrinkScroller has
+ // been measured will cause incorrect tinting calculations.
+ SchedulingUtils.doOnPreDraw(mScroller, /* drawNextFrame = */ true,
+ new Runnable() {
+ @Override
+ public void run() {
+ setThemeColor(color);
+ }
+ });
+ }
+ }
+
+ Trace.endSection();
+ }
+
+ protected void onActivityResult(int requestCode, int resultCode,
+ Intent data) {
+ if (requestCode == REQUEST_CODE_CONTACT_EDITOR_ACTIVITY &&
+ resultCode == ContactDeletionInteraction.RESULT_CODE_DELETED) {
+ // The contact that we were showing has been deleted.
+ finish();
+ }
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ mHasAlreadyBeenOpened = true;
+ mHasComputedThemeColor = false;
+ processIntent(intent);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle savedInstanceState) {
+ super.onSaveInstanceState(savedInstanceState);
+ if (mColorFilter != null) {
+ savedInstanceState.putInt(KEY_THEME_COLOR, mColorFilter.getColor());
+ }
+ }
+
+ private void processIntent(Intent intent) {
Uri lookupUri = intent.getData();
// Check to see whether it comes from the old version.
@@ -214,137 +441,51 @@
lookupUri = RawContacts.getContactLookupUri(getContentResolver(),
ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
}
+ mExtraMode = getIntent().getIntExtra(QuickContact.EXTRA_MODE,
+ QuickContact.MODE_LARGE);
+ final Uri oldLookupUri = mLookupUri;
mLookupUri = Preconditions.checkNotNull(lookupUri, "missing lookupUri");
-
mExcludeMimes = intent.getStringArrayExtra(QuickContact.EXTRA_EXCLUDE_MIMES);
-
- mStopWatch.lap("i"); // intent parsed
-
- mContactLoader = (ContactLoader) getLoaderManager().initLoader(
- LOADER_ID, null, mLoaderCallbacks);
-
- mStopWatch.lap("ld"); // loader started
-
- // Show QuickContact in front of soft input
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
- WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
-
- setContentView(R.layout.quickcontact_activity);
-
- mStopWatch.lap("l"); // layout inflated
-
- mFloatingLayout = (FloatingChildLayout) findViewById(R.id.floating_layout);
- mTrack = (ViewGroup) findViewById(R.id.track);
- mTrackScroller = (HorizontalScrollView) findViewById(R.id.track_scroller);
- mOpenDetailsOrAddContactImage = (ImageView) findViewById(R.id.contact_details_image);
- mStarImage = (ImageView) findViewById(R.id.quickcontact_star_button);
- mListPager = (ViewPager) findViewById(R.id.item_list_pager);
- mSelectedTabRectangle = findViewById(R.id.selected_tab_rectangle);
- mLineAfterTrack = findViewById(R.id.line_after_track);
-
- mFloatingLayout.setOnOutsideTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- handleOutsideTouch();
- return true;
+ if (oldLookupUri == null) {
+ mContactLoader = (ContactLoader) getLoaderManager().initLoader(
+ LOADER_CONTACT_ID, null, mLoaderContactCallbacks);
+ } else if (oldLookupUri != mLookupUri) {
+ // After copying a directory contact, the contact URI changes. Therefore,
+ // we need to restart the loader and reload the new contact.
+ mContactLoader = (ContactLoader) getLoaderManager().restartLoader(
+ LOADER_CONTACT_ID, null, mLoaderContactCallbacks);
+ for (int interactionLoaderId : mRecentLoaderIds) {
+ getLoaderManager().destroyLoader(interactionLoaderId);
}
- });
-
- mOpenDetailsOrAddContactImage.setOnClickListener(mOpenDetailsClickHandler);
-
- mPagerAdapter = new ViewPagerAdapter(getFragmentManager());
- mListPager.setAdapter(mPagerAdapter);
- mListPager.setOnPageChangeListener(new PageChangeListener());
-
- final Rect sourceBounds = intent.getSourceBounds();
- if (sourceBounds != null) {
- mFloatingLayout.setChildTargetScreen(sourceBounds);
- }
-
- // find and prepare correct header view
- mPhotoContainer = findViewById(R.id.photo_container);
-
- setHeaderNameText(R.id.name, R.string.missing_name);
-
- mPhotoView = (ImageView) mPhotoContainer.findViewById(R.id.photo);
- mPhotoView.setOnClickListener(mOpenDetailsClickHandler);
-
- mStopWatch.lap("v"); // view initialized
-
- SchedulingUtils.doAfterLayout(mFloatingLayout, new Runnable() {
- @Override
- public void run() {
- mFloatingLayout.fadeInBackground();
- }
- });
-
- mStopWatch.lap("cf"); // onCreate finished
- }
-
- private void handleOutsideTouch() {
- if (mFloatingLayout.isContentFullyVisible()) {
- close(true);
}
}
- private void close(boolean withAnimation) {
- // cancel any pending queries
- getLoaderManager().destroyLoader(LOADER_ID);
-
- if (withAnimation) {
- mFloatingLayout.fadeOutBackground();
- final boolean animated = mFloatingLayout.hideContent(new Runnable() {
- @Override
- public void run() {
- // Wait until the final animation frame has been drawn, otherwise
- // there is jank as the framework transitions to the next Activity.
- SchedulingUtils.doAfterDraw(mFloatingLayout, new Runnable() {
- @Override
- public void run() {
- // Unfortunately, we need to also use postDelayed() to wait a moment
- // for the frame to be drawn, else the framework's activity-transition
- // animation will kick in before the final frame is available to it.
- // This seems unavoidable. The problem isn't merely that there is no
- // post-draw listener API; if that were so, it would be sufficient to
- // call post() instead of postDelayed().
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- finish();
- overridePendingTransition(0, 0);
- }
- }, POST_DRAW_WAIT_DURATION);
- }
- });
- }
- });
- if (!animated) {
- // If we were in the wrong state, simply quit (this can happen for example
- // if the user pushes BACK before anything has loaded)
- finish();
- }
- } else {
- finish();
+ private void runEntranceAnimation() {
+ if (mHasAlreadyBeenOpened) {
+ return;
}
- }
-
- @Override
- public void onBackPressed() {
- close(true);
+ mHasAlreadyBeenOpened = true;
+ final int bottomScroll = mScroller.getScrollUntilOffBottom() - 1;
+ final ObjectAnimator scrollAnimation
+ = ObjectAnimator.ofInt(mScroller, "scroll", -bottomScroll,
+ mExtraMode != MODE_FULLY_EXPANDED ? 0 : mScroller.getScrollNeededToBeFullScreen());
+ scrollAnimation.setDuration(ANIMATION_SLIDE_OPEN_DURATION);
+ scrollAnimation.start();
}
/** Assign this string to the view if it is not empty. */
- private void setHeaderNameText(int id, int resId) {
- setHeaderNameText(id, getText(resId));
+ private void setHeaderNameText(int resId) {
+ if (mScroller != null) {
+ mScroller.setTitle(String.valueOf(getText(resId)));
+ }
}
/** Assign this string to the view if it is not empty. */
- private void setHeaderNameText(int id, CharSequence value) {
- final View view = mPhotoContainer.findViewById(id);
- if (view instanceof TextView) {
- if (!TextUtils.isEmpty(value)) {
- ((TextView)view).setText(value);
+ private void setHeaderNameText(CharSequence value) {
+ if (!TextUtils.isEmpty(value)) {
+ if (mScroller != null) {
+ mScroller.setTitle(value.toString());
}
}
}
@@ -366,70 +507,115 @@
/**
* Handle the result from the ContactLoader
*/
- private void bindData(Contact data) {
+ private void bindContactData(final Contact data) {
+ Trace.beginSection("bindContactData");
mContactData = data;
- final ResolveCache cache = ResolveCache.getInstance(this);
- final Context context = this;
-
- mOpenDetailsOrAddContactImage.setVisibility(isMimeExcluded(Contacts.CONTENT_ITEM_TYPE) ?
- View.GONE : View.VISIBLE);
- final boolean isStarred = data.getStarred();
- if (isStarred) {
- mStarImage.setImageResource(R.drawable.ic_favorite_on_lt);
- mStarImage.setContentDescription(
- getResources().getString(R.string.menu_removeStar));
- } else {
- mStarImage.setImageResource(R.drawable.ic_favorite_off_lt);
- mStarImage.setContentDescription(
- getResources().getString(R.string.menu_addStar));
- }
- final Uri lookupUri = data.getLookupUri();
-
- // If this is a json encoded URI, there is no local contact to star
- if (UriUtils.isEncodedContactUri(lookupUri)) {
- mStarImage.setVisibility(View.GONE);
-
- // If directory export support is not allowed, then don't allow the user to add
- // to contacts
- if (mContactData.getDirectoryExportSupport() == Directory.EXPORT_SUPPORT_NONE) {
- configureHeaderClickActions(false);
- } else {
- configureHeaderClickActions(true);
- }
- } else {
- configureHeaderClickActions(false);
- mStarImage.setVisibility(View.VISIBLE);
- mStarImage.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- // Toggle "starred" state
- // Make sure there is a contact
- if (lookupUri != null) {
- // Changes the state of the image already before sending updates to the
- // database
- if (isStarred) {
- mStarImage.setImageResource(R.drawable.ic_favorite_off_lt);
- } else {
- mStarImage.setImageResource(R.drawable.ic_favorite_on_lt);
- }
-
- // Now perform the real save
- final Intent intent = ContactSaveService.createSetStarredIntent(context,
- lookupUri, !isStarred);
- context.startService(intent);
- }
- }
- });
- }
+ invalidateOptionsMenu();
mDefaultsMap.clear();
- mStopWatch.lap("sph"); // Start photo setting
+ Trace.endSection();
+ Trace.beginSection("Set display photo & name");
mPhotoSetter.setupContactPhoto(data, mPhotoView);
+ extractAndApplyTintFromPhotoViewAsynchronously();
+ setHeaderNameText(data.getDisplayName());
- mStopWatch.lap("ph"); // Photo set
+ Trace.endSection();
+ // Maintain a list of phone numbers to pass into SmsInteractionsLoader
+ final Set<String> phoneNumbers = new HashSet<>();
+ // Maintain a list of email addresses to pass into CalendarInteractionsLoader
+ final Set<String> emailAddresses = new HashSet<>();
+ // List of Entry that makes up the ExpandingEntryCardView
+ final List<Entry> entries = Lists.newArrayList();
+
+ mEntriesAndActionsTask = new AsyncTask<Void, Void, Void>() {
+ @Override
+ protected Void doInBackground(Void... params) {
+ computeEntriesAndActions(data, phoneNumbers, emailAddresses, entries);
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void aVoid) {
+ super.onPostExecute(aVoid);
+ // Check that original AsyncTask parameters are still valid and the activity
+ // is still running before binding to UI. A new intent could invalidate
+ // the results, for example.
+ if (data == mContactData && !isCancelled()) {
+ bindEntriesAndActions(entries, phoneNumbers, emailAddresses);
+ showActivity();
+ }
+ }
+ };
+ mEntriesAndActionsTask.execute();
+ }
+
+ private void bindEntriesAndActions(List<Entry> entries,
+ Set<String> phoneNumbers,
+ Set<String> emailAddresses) {
+ Trace.beginSection("start sms loader");
+ final Bundle phonesExtraBundle = new Bundle();
+ phonesExtraBundle.putStringArray(KEY_LOADER_EXTRA_PHONES,
+ phoneNumbers.toArray(new String[phoneNumbers.size()]));
+ getLoaderManager().initLoader(
+ LOADER_SMS_ID,
+ phonesExtraBundle,
+ mLoaderInteractionsCallbacks);
+ Trace.endSection();
+
+ Trace.beginSection("start call log loader");
+ getLoaderManager().initLoader(
+ LOADER_CALL_LOG_ID,
+ phonesExtraBundle,
+ mLoaderInteractionsCallbacks);
+ Trace.endSection();
+
+ Trace.beginSection("start calendar loader");
+ final Bundle emailsExtraBundle = new Bundle();
+ emailsExtraBundle.putStringArray(KEY_LOADER_EXTRA_EMAILS,
+ emailAddresses.toArray(new String[emailAddresses.size()]));
+ getLoaderManager().initLoader(
+ LOADER_CALENDAR_ID,
+ emailsExtraBundle,
+ mLoaderInteractionsCallbacks);
+ Trace.endSection();
+
+ Trace.beginSection("bind communicate card");
+ if (entries.size() > 0) {
+ mCommunicationCard.initialize(entries,
+ /* numInitialVisibleEntries = */ MIN_NUM_COMMUNICATION_ENTRIES_SHOWN,
+ /* isExpanded = */ false);
+ }
+
+ final boolean hasData = !entries.isEmpty();
+ mCommunicationCard.setVisibility(hasData ? View.VISIBLE : View.GONE);
+
+ Trace.endSection();
+ }
+
+ private void showActivity() {
+ if (mScroller != null) {
+ mScroller.setVisibility(View.VISIBLE);
+ SchedulingUtils.doOnPreDraw(mScroller, /* drawNextFrame = */ false,
+ new Runnable() {
+ @Override
+ public void run() {
+ runEntranceAnimation();
+ }
+ });
+ }
+ }
+
+ private void computeEntriesAndActions(Contact data, Set<String> phoneNumbers,
+ Set<String> emailAddresses, List<Entry> entries) {
+ Trace.beginSection("inflate entries and actions");
+
+ // Map from {@link String} MIME-type to a list of {@link Action}.
+ final ActionMultiMap actions = new ActionMultiMap();
+
+ final ResolveCache cache = ResolveCache.getInstance(this);
for (RawContact rawContact : data.getRawContacts()) {
for (DataItem dataItem : rawContact.getDataItems()) {
final String mimeType = dataItem.getMimeType();
@@ -437,6 +623,14 @@
final DataKind dataKind = AccountTypeManager.getInstance(this)
.getKindOrFallback(accountType, mimeType);
+ if (dataItem instanceof PhoneDataItem) {
+ phoneNumbers.add(((PhoneDataItem) dataItem).getNormalizedNumber());
+ }
+
+ if (dataItem instanceof EmailDataItem) {
+ emailAddresses.add(((EmailDataItem) dataItem).getAddress());
+ }
+
// Skip this data item if MIME-type excluded
if (isMimeExcluded(mimeType)) continue;
@@ -448,8 +642,9 @@
// Build an action for this data entry, find a mapping to a UI
// element, build its summary from the cursor, and collect it
// along with all others of this MIME-type.
- final Action action = new DataAction(context, dataItem, dataKind);
- final boolean wasAdded = considerAdd(action, cache, isSuperPrimary);
+ final Action action = new DataAction(getApplicationContext(),
+ dataItem, dataKind);
+ final boolean wasAdded = considerAdd(action, cache, isSuperPrimary, actions);
if (wasAdded) {
// Remember the default
if (isSuperPrimary || (isPrimary && (mDefaultsMap.get(mimeType) == null))) {
@@ -464,69 +659,208 @@
final EmailDataItem email = (EmailDataItem) dataItem;
final ImDataItem im = ImDataItem.createFromEmail(email);
if (dataKind != null) {
- final DataAction action = new DataAction(context, im, dataKind);
+ final DataAction action = new DataAction(getApplicationContext(),
+ im, dataKind);
action.setPresence(status.getPresence());
- considerAdd(action, cache, isSuperPrimary);
+ considerAdd(action, cache, isSuperPrimary, actions);
}
}
}
}
- mStopWatch.lap("e"); // Entities inflated
+ Trace.endSection();
+ Trace.beginSection("collapsing action list");
// Collapse Action Lists (remove e.g. duplicate e-mail addresses from different sources)
- for (List<Action> actionChildren : mActions.values()) {
+ for (List<Action> actionChildren : actions.values()) {
Collapser.collapseList(actionChildren);
}
- mStopWatch.lap("c"); // List collapsed
+ Trace.endSection();
+ Trace.beginSection("sort mimetypes");
- setHeaderNameText(R.id.name, data.getDisplayName());
+ /*
+ * Sorting is a multi part step. The end result is to a have a sorted list of the most
+ * used actions, one per mimetype. Then, within each mimetype, the list of actions for that
+ * type is also sorted, based off of {super primary, primary, times used} in that order.
+ */
+ final List<Action> topActions = new ArrayList<>();
+ final List<Action> allActions = new ArrayList<>();
+ for (List<Action> mimeTypeActions : actions.values()) {
+ Collections.sort(mimeTypeActions, new Comparator<Action>() {
+ @Override
+ public int compare(Action lhs, Action rhs) {
+ /*
+ * Actions are compared to the same mimetype based off of three qualities:
+ * 1. Super primary
+ * 2. Primary
+ * 3. Times used
+ */
+ if (lhs.isSuperPrimary()) {
+ return -1;
+ } else if (rhs.isSuperPrimary()) {
+ return 1;
+ } else if (lhs.isPrimary() && !rhs.isPrimary()) {
+ return -1;
+ } else if (!lhs.isPrimary() && rhs.isPrimary()) {
+ return 1;
+ } else {
+ int lhsTimesUsed = lhs.getTimesUsed() == null ? 0 : lhs.getTimesUsed();
+ int rhsTimesUsed = rhs.getTimesUsed() == null ? 0 : rhs.getTimesUsed();
- // All the mime-types to add.
- final Set<String> containedTypes = new HashSet<String>(mActions.keySet());
- mSortedActionMimeTypes.clear();
- // First, add LEADING_MIMETYPES, which are most common.
- for (String mimeType : LEADING_MIMETYPES) {
- if (containedTypes.contains(mimeType)) {
- mSortedActionMimeTypes.add(mimeType);
- containedTypes.remove(mimeType);
+ return rhsTimesUsed - lhsTimesUsed;
+ }
+ }
+ });
+ topActions.add(mimeTypeActions.get(0));
+ // Add all the other actions and remove the top one
+ allActions.addAll(mimeTypeActions);
+ allActions.remove(mimeTypeActions.get(0));
+ }
+
+ // topActions now contains the top action for each mimetype. This list now needs to be
+ // sorted, based off of {times used, last used, statically defined} in that order.
+ Collections.sort(topActions, new Comparator<Action>() {
+ @Override
+ public int compare(Action lhs, Action rhs) {
+ int lhsTimesUsed = lhs.getTimesUsed() == null ? 0 : lhs.getTimesUsed();
+ int rhsTimesUsed = rhs.getTimesUsed() == null ? 0 : rhs.getTimesUsed();
+ int timesUsedDifference = rhsTimesUsed - lhsTimesUsed;
+ if (timesUsedDifference != 0) {
+ return timesUsedDifference;
+ }
+
+ long lhsLastTimeUsed = lhs.getLastTimeUsed() == null ? 0 : lhs.getLastTimeUsed();
+ long rhsLastTimeUsed = rhs.getLastTimeUsed() == null ? 0 : rhs.getLastTimeUsed();
+ long lastTimeUsedDifference = rhsLastTimeUsed - lhsLastTimeUsed;
+ if (lastTimeUsedDifference > 0) {
+ return 1;
+ } else if (lastTimeUsedDifference < 0) {
+ return -1;
+ }
+
+ // Times used and last time used are the same. Resort to statically defined.
+ String lhsMimeType = lhs.getMimeType();
+ String rhsMimeType = rhs.getMimeType();
+ for (String mimeType : LEADING_MIMETYPES) {
+ if (lhsMimeType.equals(mimeType)) {
+ return -1;
+ } else if (rhsMimeType.equals(mimeType)) {
+ return 1;
+ }
+ }
+ // Trailing types come last, so flip the returns
+ for (String mimeType : TRAILING_MIMETYPES) {
+ if (lhsMimeType.equals(mimeType)) {
+ return 1;
+ } else if (rhsMimeType.equals(mimeType)) {
+ return -1;
+ }
+ }
+ return 0;
}
- }
+ });
- // Add all the remaining ones that are not TRAILING
- for (String mimeType : containedTypes.toArray(new String[containedTypes.size()])) {
- if (!TRAILING_MIMETYPES.contains(mimeType)) {
- mSortedActionMimeTypes.add(mimeType);
- containedTypes.remove(mimeType);
+ entries.addAll(actionsToEntries(topActions));
+ entries.addAll(actionsToEntries(allActions));
+ Trace.endSection();
+ }
+
+ /**
+ * Asynchronously extract the most vibrant color from the PhotoView. Once extracted,
+ * apply this tint to {@link MultiShrinkScroller}. This operation takes about 20-30ms
+ * on a Nexus 5.
+ */
+ private void extractAndApplyTintFromPhotoViewAsynchronously() {
+ if (mScroller == null) {
+ return;
+ }
+ final Drawable imageViewDrawable = mPhotoView.getDrawable();
+ new AsyncTask<Void, Void, Integer>() {
+ @Override
+ protected Integer doInBackground(Void... params) {
+ if (imageViewDrawable instanceof BitmapDrawable) {
+ final Bitmap bitmap = ((BitmapDrawable) imageViewDrawable).getBitmap();
+ return colorFromBitmap(bitmap);
+ }
+ if (imageViewDrawable instanceof LetterTileDrawable) {
+ return ((LetterTileDrawable) imageViewDrawable).getColor();
+ }
+ return 0;
}
- }
- // Then, add TRAILING_MIMETYPES, which are least common.
- for (String mimeType : TRAILING_MIMETYPES) {
- if (containedTypes.contains(mimeType)) {
- containedTypes.remove(mimeType);
- mSortedActionMimeTypes.add(mimeType);
+ @Override
+ protected void onPostExecute(Integer color) {
+ super.onPostExecute(color);
+ if (mHasComputedThemeColor) {
+ // If we had previously computed a theme color from the contact photo,
+ // then do not update the theme color. Changing the theme color several
+ // seconds after QC has started, as a result of an updated/upgraded photo,
+ // is a jarring experience. On the other hand, changing the theme color after
+ // a rotation or onNewIntent() is perfectly fine.
+ return;
+ }
+ // Check that the Photo has not changed. If it has changed, the new tint
+ // color needs to be extracted
+ if (imageViewDrawable == mPhotoView.getDrawable()) {
+ mHasComputedThemeColor = true;
+ setThemeColor(color);
+ }
}
+ }.execute();
+ }
+
+ private void setThemeColor(int color) {
+ // If the color is invalid, use the predefined default
+ if (color == 0) {
+ color = getResources().getColor(R.color.actionbar_background_color);
}
- mPagerAdapter.notifyDataSetChanged();
+ mScroller.setHeaderTintColor(color);
- mStopWatch.lap("mt"); // Mime types initialized
+ // Create a darker version of the actionbar color. HSV is device dependent
+ // and not perceptually-linear. Therefore, we can't say mStatusBarColor is
+ // 70% as bright as the action bar color. We can only say: it is a bit darker.
+ final float hsvComponents[] = new float[3];
+ Color.colorToHSV(color, hsvComponents);
+ hsvComponents[2] *= SYSTEM_BAR_BRIGHTNESS_FACTOR;
+ mStatusBarColor = Color.HSVToColor(hsvComponents);
+ updateStatusBarColor();
- // Add buttons for each mimetype
- mTrack.removeAllViews();
- for (String mimeType : mSortedActionMimeTypes) {
- final View actionView = inflateAction(mimeType, cache, mTrack, data.getDisplayName());
- mTrack.addView(actionView);
+ mColorFilter =
+ new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+ mCommunicationCard.setColorAndFilter(color, mColorFilter);
+ mRecentCard.setColorAndFilter(color, mColorFilter);
+ }
+
+ private void updateStatusBarColor() {
+ if (mScroller == null) {
+ return;
}
+ final int desiredStatusBarColor;
+ // Only use a custom status bar color if QuickContacts touches the top of the viewport.
+ if (mScroller.getScrollNeededToBeFullScreen() <= 0) {
+ desiredStatusBarColor = mStatusBarColor;
+ } else {
+ desiredStatusBarColor = Color.TRANSPARENT;
+ }
+ // Animate to the new color.
+ if (desiredStatusBarColor != getWindow().getStatusBarColor()) {
+ final ObjectAnimator animation = ObjectAnimator.ofInt(getWindow(), "statusBarColor",
+ getWindow().getStatusBarColor(), desiredStatusBarColor);
+ animation.setDuration(ANIMATION_STATUS_BAR_COLOR_CHANGE_DURATION);
+ animation.setEvaluator(new ArgbEvaluator());
+ animation.start();
+ }
+ }
- mStopWatch.lap("mt"); // Buttons added
-
- final boolean hasData = !mSortedActionMimeTypes.isEmpty();
- mTrackScroller.setVisibility(hasData ? View.VISIBLE : View.GONE);
- mSelectedTabRectangle.setVisibility(hasData ? View.VISIBLE : View.GONE);
- mLineAfterTrack.setVisibility(hasData ? View.VISIBLE : View.GONE);
- mListPager.setVisibility(hasData ? View.VISIBLE : View.GONE);
+ private int colorFromBitmap(Bitmap bitmap) {
+ // Author of Palette recommends using 24 colors when analyzing profile photos.
+ final int NUMBER_OF_PALETTE_COLORS = 24;
+ final Palette palette = Palette.generate(bitmap, NUMBER_OF_PALETTE_COLORS);
+ if (palette != null && palette.getVibrantColor() != null) {
+ return palette.getVibrantColor().getRgb();
+ }
+ return 0;
}
/**
@@ -536,69 +870,80 @@
* @param action the action to handle
* @param resolveCache cache of applications that can handle actions
* @param front indicates whether to add the action to the front of the list
+ * @param actions where to put the action.
* @return true if action has been added
*/
- private boolean considerAdd(Action action, ResolveCache resolveCache, boolean front) {
+ private boolean considerAdd(Action action, ResolveCache resolveCache, boolean front,
+ ActionMultiMap actions) {
if (resolveCache.hasResolve(action)) {
- mActions.put(action.getMimeType(), action, front);
+ actions.put(action.getMimeType(), action, front);
return true;
}
return false;
}
/**
- * Bind the correct image resource and click handlers to the header views
- *
- * @param canAdd Whether or not the user can directly add information in this quick contact
- * to their local contacts
+ * Converts a list of Action into a list of Entry
+ * @param actions The list of Action to convert
+ * @return The converted list of Entry
*/
- private void configureHeaderClickActions(boolean canAdd) {
- if (canAdd) {
- mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_add_contact_holo_dark);
- mOpenDetailsOrAddContactImage.setOnClickListener(mAddToContactsClickHandler);
- mPhotoView.setOnClickListener(mAddToContactsClickHandler);
- } else {
- mOpenDetailsOrAddContactImage.setImageResource(R.drawable.ic_contacts_holo_dark);
- mOpenDetailsOrAddContactImage.setOnClickListener(mOpenDetailsClickHandler);
- mPhotoView.setOnClickListener(mOpenDetailsClickHandler);
+ private List<Entry> actionsToEntries(List<Action> actions) {
+ List<Entry> entries = new ArrayList<>();
+ for (Action action : actions) {
+ String header = null;
+ String body = null;
+ String footer = null;
+ Drawable icon = null;
+ switch (action.getMimeType()) {
+ case Phone.CONTENT_ITEM_TYPE:
+ header = String.valueOf(action.getBody());
+ footer = String.valueOf(action.getSubtitle());
+ icon = getResources().getDrawable(R.drawable.ic_phone_24dp);
+ break;
+ case Email.CONTENT_ITEM_TYPE:
+ header = String.valueOf(action.getBody());
+ footer = String.valueOf(action.getSubtitle());
+ icon = getResources().getDrawable(R.drawable.ic_email_24dp);
+ break;
+ case StructuredPostal.CONTENT_ITEM_TYPE:
+ header = String.valueOf(action.getBody());
+ footer = String.valueOf(action.getSubtitle());
+ icon = getResources().getDrawable(R.drawable.ic_place_24dp);
+ break;
+ default:
+ header = String.valueOf(action.getSubtitle());
+ footer = String.valueOf(action.getBody());
+ icon = ResolveCache.getInstance(this).getIcon(action);
+ }
+ entries.add(new Entry(icon, header, body, footer, action.getIntent(),
+ /* isEditable= */ false));
+
+ // Add SMS in addition to phone calls
+ if (action.getMimeType().equals(Phone.CONTENT_ITEM_TYPE)) {
+ entries.add(new Entry(getResources().getDrawable(R.drawable.ic_message_24dp),
+ getResources().getString(R.string.send_message), null, header,
+ action.getAlternateIntent(), /* isEditable = */ false));
+ }
}
+ return entries;
}
- /**
- * Inflate the in-track view for the action of the given MIME-type, collapsing duplicate values.
- * Will use the icon provided by the {@link DataKind}.
- */
- private View inflateAction(String mimeType, ResolveCache resolveCache,
- ViewGroup root, String name) {
- final CheckableImageView typeView = (CheckableImageView) getLayoutInflater().inflate(
- R.layout.quickcontact_track_button, root, false);
-
- List<Action> children = mActions.get(mimeType);
- typeView.setTag(mimeType);
- final Action firstInfo = children.get(0);
-
- // Set icon and listen for clicks
- final CharSequence descrip = resolveCache.getDescription(firstInfo, name);
- final Drawable icon = resolveCache.getIcon(firstInfo);
- typeView.setChecked(false);
- typeView.setContentDescription(descrip);
- typeView.setImageDrawable(icon);
- typeView.setOnClickListener(mTypeViewClickListener);
-
- return typeView;
+ private List<Entry> contactInteractionsToEntries(List<ContactInteraction> interactions) {
+ List<Entry> entries = new ArrayList<>();
+ for (ContactInteraction interaction : interactions) {
+ entries.add(new Entry(interaction.getIcon(this),
+ interaction.getViewHeader(this),
+ interaction.getViewBody(this),
+ interaction.getBodyIcon(this),
+ interaction.getViewFooter(this),
+ interaction.getFooterIcon(this),
+ interaction.getIntent(),
+ /* isEditable = */ false));
+ }
+ return entries;
}
- private CheckableImageView getActionViewAt(int position) {
- return (CheckableImageView) mTrack.getChildAt(position);
- }
-
- @Override
- public void onAttachFragment(Fragment fragment) {
- final QuickContactListFragment listFragment = (QuickContactListFragment) fragment;
- listFragment.setListener(mListFragmentListener);
- }
-
- private LoaderCallbacks<Contact> mLoaderCallbacks =
+ private LoaderCallbacks<Contact> mLoaderContactCallbacks =
new LoaderCallbacks<Contact>() {
@Override
public void onLoaderReset(Loader<Contact> loader) {
@@ -606,9 +951,9 @@
@Override
public void onLoadFinished(Loader<Contact> loader, Contact data) {
- mStopWatch.lap("lf"); // onLoadFinished
+ Trace.beginSection("onLoadFinished()");
+
if (isFinishing()) {
- close(false);
return;
}
if (data.isError()) {
@@ -617,37 +962,19 @@
throw new IllegalStateException("Failed to load contact", data.getException());
}
if (data.isNotFound()) {
- Log.i(TAG, "No contact found: " + ((ContactLoader)loader).getLookupUri());
- Toast.makeText(QuickContactActivity.this, R.string.invalidContactMessage,
- Toast.LENGTH_LONG).show();
- close(false);
+ if (mHasAlreadyBeenOpened) {
+ finish();
+ } else {
+ Log.i(TAG, "No contact found: " + ((ContactLoader)loader).getLookupUri());
+ Toast.makeText(QuickContactActivity.this, R.string.invalidContactMessage,
+ Toast.LENGTH_LONG).show();
+ }
return;
}
- bindData(data);
+ bindContactData(data);
- mStopWatch.lap("bd"); // bindData finished
-
- if (TRACE_LAUNCH) android.os.Debug.stopMethodTracing();
- if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
- Log.d(Constants.PERFORMANCE_TAG, "QuickContact shown");
- }
-
- // Data bound and ready, pull curtain to show. Put this on the Handler to ensure
- // that the layout passes are completed
- SchedulingUtils.doAfterLayout(mFloatingLayout, new Runnable() {
- @Override
- public void run() {
- mFloatingLayout.showContent(new Runnable() {
- @Override
- public void run() {
- mContactLoader.upgradeToFullContact();
- }
- });
- }
- });
- mStopWatch.stopAndLog(TAG, 0);
- mStopWatch = StopWatch.getNullStopWatch(); // We're done with it.
+ Trace.endSection();
}
@Override
@@ -655,117 +982,285 @@
if (mLookupUri == null) {
Log.wtf(TAG, "Lookup uri wasn't initialized. Loader was started too early");
}
+ // Load all contact data. We need loadGroupMetaData=true to determine whether the
+ // contact is invisible. If it is, we need to display an "Add to Contacts" MenuItem.
return new ContactLoader(getApplicationContext(), mLookupUri,
- false /*loadGroupMetaData*/, false /*loadInvitableAccountTypes*/,
- false /*postViewNotification*/, true /*computeFormattedPhoneNumber*/);
+ true /*loadGroupMetaData*/, false /*loadInvitableAccountTypes*/,
+ true /*postViewNotification*/, true /*computeFormattedPhoneNumber*/);
}
};
- /** A type (e.g. Call/Addresses was clicked) */
- private final OnClickListener mTypeViewClickListener = new OnClickListener() {
- @Override
- public void onClick(View view) {
- final CheckableImageView actionView = (CheckableImageView)view;
- final String mimeType = (String) actionView.getTag();
- int index = mSortedActionMimeTypes.indexOf(mimeType);
- mListPager.setCurrentItem(index, true);
- }
- };
-
- private class ViewPagerAdapter extends FragmentPagerAdapter {
- public ViewPagerAdapter(FragmentManager fragmentManager) {
- super(fragmentManager);
- }
-
- @Override
- public Fragment getItem(int position) {
- final String mimeType = mSortedActionMimeTypes.get(position);
- QuickContactListFragment fragment = new QuickContactListFragment(mimeType);
- final List<Action> actions = mActions.get(mimeType);
- fragment.setActions(actions);
- return fragment;
- }
-
- @Override
- public int getCount() {
- return mSortedActionMimeTypes.size();
- }
-
- @Override
- public int getItemPosition(Object object) {
- final QuickContactListFragment fragment = (QuickContactListFragment) object;
- final String mimeType = fragment.getMimeType();
- for (int i = 0; i < mSortedActionMimeTypes.size(); i++) {
- if (mimeType.equals(mSortedActionMimeTypes.get(i))) {
- return i;
- }
+ @Override
+ public void onBackPressed() {
+ if (mScroller != null) {
+ if (!mIsExitAnimationInProgress) {
+ mScroller.scrollOffBottom();
}
- return PagerAdapter.POSITION_NONE;
+ } else {
+ super.onBackPressed();
}
}
- private class PageChangeListener extends SimpleOnPageChangeListener {
- private int mScrollingState = ViewPager.SCROLL_STATE_IDLE;
+ @Override
+ public void finish() {
+ super.finish();
+
+ // override transitions to skip the standard window animations
+ overridePendingTransition(0, 0);
+ }
+
+ private LoaderCallbacks<List<ContactInteraction>> mLoaderInteractionsCallbacks =
+ new LoaderCallbacks<List<ContactInteraction>>() {
@Override
- public void onPageSelected(int position) {
- final CheckableImageView actionView = getActionViewAt(position);
- mTrackScroller.requestChildRectangleOnScreen(actionView,
- new Rect(0, 0, actionView.getWidth(), actionView.getHeight()), false);
- // Don't render rectangle if we are currently scrolling to prevent it from flickering
- if (mScrollingState == ViewPager.SCROLL_STATE_IDLE) {
- renderSelectedRectangle(position, 0);
+ public Loader<List<ContactInteraction>> onCreateLoader(int id, Bundle args) {
+ Log.v(TAG, "onCreateLoader");
+ Loader<List<ContactInteraction>> loader = null;
+ switch (id) {
+ case LOADER_SMS_ID:
+ Log.v(TAG, "LOADER_SMS_ID");
+ loader = new SmsInteractionsLoader(
+ QuickContactActivity.this,
+ args.getStringArray(KEY_LOADER_EXTRA_PHONES),
+ MAX_SMS_RETRIEVE);
+ break;
+ case LOADER_CALENDAR_ID:
+ Log.v(TAG, "LOADER_CALENDAR_ID");
+ loader = new CalendarInteractionsLoader(
+ QuickContactActivity.this,
+ Arrays.asList(args.getStringArray(KEY_LOADER_EXTRA_EMAILS)),
+ MAX_FUTURE_CALENDAR_RETRIEVE,
+ MAX_PAST_CALENDAR_RETRIEVE,
+ FUTURE_MILLISECOND_TO_SEARCH_LOCAL_CALENDAR,
+ PAST_MILLISECOND_TO_SEARCH_LOCAL_CALENDAR);
+ break;
+ case LOADER_CALL_LOG_ID:
+ Log.v(TAG, "LOADER_CALL_LOG_ID");
+ loader = new CallLogInteractionsLoader(
+ QuickContactActivity.this,
+ args.getStringArray(KEY_LOADER_EXTRA_PHONES),
+ MAX_CALL_LOG_RETRIEVE);
+ }
+ return loader;
+ }
+
+ @Override
+ public void onLoadFinished(Loader<List<ContactInteraction>> loader,
+ List<ContactInteraction> data) {
+ if (mRecentLoaderResults == null) {
+ mRecentLoaderResults = new HashMap<Integer, List<ContactInteraction>>();
+ }
+ Log.v(TAG, "onLoadFinished ~ loader.getId() " + loader.getId() + " data.size() " +
+ data.size());
+ mRecentLoaderResults.put(loader.getId(), data);
+
+ if (isAllRecentDataLoaded()) {
+ bindRecentData();
}
}
@Override
- public void onPageScrollStateChanged(int state) {
- super.onPageScrollStateChanged(state);
- mScrollingState = state;
+ public void onLoaderReset(Loader<List<ContactInteraction>> loader) {
+ mRecentLoaderResults.remove(loader.getId());
}
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- renderSelectedRectangle(position, positionOffset);
+ };
+
+ private boolean isAllRecentDataLoaded() {
+ return mRecentLoaderResults.size() == mRecentLoaderIds.length;
+ }
+
+ private void bindRecentData() {
+ List<ContactInteraction> allInteractions = new ArrayList<>();
+ for (List<ContactInteraction> loaderInteractions : mRecentLoaderResults.values()) {
+ allInteractions.addAll(loaderInteractions);
}
- private void renderSelectedRectangle(int position, float positionOffset) {
- final RelativeLayout.LayoutParams layoutParams =
- (RelativeLayout.LayoutParams) mSelectedTabRectangle.getLayoutParams();
- final int width = layoutParams.width;
- layoutParams.setMarginStart((int) ((position + positionOffset) * width));
- mSelectedTabRectangle.setLayoutParams(layoutParams);
+ // Sort the interactions by most recent
+ Collections.sort(allInteractions, new Comparator<ContactInteraction>() {
+ @Override
+ public int compare(ContactInteraction a, ContactInteraction b) {
+ return a.getInteractionDate() >= b.getInteractionDate() ? -1 : 1;
+ }
+ });
+
+ if (allInteractions.size() > 0) {
+ mRecentCard.initialize(contactInteractionsToEntries(allInteractions),
+ /* numInitialVisibleEntries = */ MIN_NUM_COLLAPSED_RECENT_ENTRIES_SHOWN,
+ /* isExpanded = */ false);
+ mRecentCard.setVisibility(View.VISIBLE);
}
}
- private final QuickContactListFragment.Listener mListFragmentListener =
- new QuickContactListFragment.Listener() {
- @Override
- public void onOutsideClick() {
- // If there is no background, we want to dismiss, because to the user it seems
- // like he had touched outside. If the ViewPager is solid however, those taps
- // must be ignored
- final boolean isTransparent = mListPager.getBackground() == null;
- if (isTransparent) handleOutsideTouch();
+ @Override
+ protected void onStop() {
+ super.onStop();
+
+ if (mEntriesAndActionsTask != null) {
+ // Once the activity is stopped, we will no longer want to bind mEntriesAndActionsTask's
+ // results on the UI thread. In some circumstances Activities are killed without
+ // onStop() being called. This is not a problem, because in these circumstances
+ // the entire process will be killed.
+ mEntriesAndActionsTask.cancel(/* mayInterruptIfRunning = */ false);
+ }
+ }
+
+ /**
+ * Returns true if it is possible to edit the current contact.
+ */
+ private boolean isContactEditable() {
+ return mContactData != null && !mContactData.isDirectoryEntry();
+ }
+
+ private void editContact() {
+ final Intent intent = new Intent(Intent.ACTION_EDIT, mLookupUri);
+ mContactLoader.cacheResult();
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ startActivityForResult(intent, REQUEST_CODE_CONTACT_EDITOR_ACTIVITY);
+ }
+
+ private void toggleStar(MenuItem starredMenuItem) {
+ // Make sure there is a contact
+ if (mLookupUri != null) {
+ // Read the current starred value from the UI instead of using the last
+ // loaded state. This allows rapid tapping without writing the same
+ // value several times
+ final boolean isStarred = starredMenuItem.isChecked();
+
+ // To improve responsiveness, swap out the picture (and tag) in the UI already
+ ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+ mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
+ !isStarred);
+
+ // Now perform the real save
+ Intent intent = ContactSaveService.createSetStarredIntent(
+ QuickContactActivity.this, mLookupUri, !isStarred);
+ startService(intent);
+ }
+ }
+
+ /**
+ * Calls into the contacts provider to get a pre-authorized version of the given URI.
+ */
+ private Uri getPreAuthorizedUri(Uri uri) {
+ final Bundle uriBundle = new Bundle();
+ uriBundle.putParcelable(ContactsContract.Authorization.KEY_URI_TO_AUTHORIZE, uri);
+ final Bundle authResponse = getContentResolver().call(
+ ContactsContract.AUTHORITY_URI,
+ ContactsContract.Authorization.AUTHORIZATION_METHOD,
+ null,
+ uriBundle);
+ if (authResponse != null) {
+ return (Uri) authResponse.getParcelable(
+ ContactsContract.Authorization.KEY_AUTHORIZED_URI);
+ } else {
+ return uri;
+ }
+ }
+ private void shareContact() {
+ final String lookupKey = mContactData.getLookupKey();
+ Uri shareUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey);
+ if (mContactData.isUserProfile()) {
+ // User is sharing the profile. We don't want to force the receiver to have
+ // the highly-privileged READ_PROFILE permission, so we need to request a
+ // pre-authorized URI from the provider.
+ shareUri = getPreAuthorizedUri(shareUri);
}
- @Override
- public void onItemClicked(final Action action, final boolean alternate) {
- final Runnable startAppRunnable = new Runnable() {
- @Override
- public void run() {
- try {
- startActivity(alternate ? action.getAlternateIntent() : action.getIntent());
- } catch (ActivityNotFoundException e) {
- Toast.makeText(QuickContactActivity.this, R.string.quickcontact_missing_app,
+ final Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType(Contacts.CONTENT_VCARD_TYPE);
+ intent.putExtra(Intent.EXTRA_STREAM, shareUri);
+
+ // Launch chooser to share contact via
+ final CharSequence chooseTitle = getText(R.string.share_via);
+ final Intent chooseIntent = Intent.createChooser(intent, chooseTitle);
+
+ try {
+ this.startActivity(chooseIntent);
+ } catch (ActivityNotFoundException ex) {
+ Toast.makeText(this, R.string.share_error, Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ /**
+ * Creates a launcher shortcut with the current contact.
+ */
+ private void createLauncherShortcutWithContact() {
+ final ShortcutIntentBuilder builder = new ShortcutIntentBuilder(this,
+ new OnShortcutIntentCreatedListener() {
+
+ @Override
+ public void onShortcutIntentCreated(Uri uri, Intent shortcutIntent) {
+ // Broadcast the shortcutIntent to the launcher to create a
+ // shortcut to this contact
+ shortcutIntent.setAction(ACTION_INSTALL_SHORTCUT);
+ QuickContactActivity.this.sendBroadcast(shortcutIntent);
+
+ // Send a toast to give feedback to the user that a shortcut to this
+ // contact was added to the launcher.
+ Toast.makeText(QuickContactActivity.this,
+ R.string.createContactShortcutSuccessful,
Toast.LENGTH_SHORT).show();
}
- close(false);
- }
- };
- // Defer the action to make the window properly repaint
- new Handler().post(startAppRunnable);
+ });
+ builder.createContactShortcutIntent(mLookupUri);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.quickcontact, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ if (mContactData != null) {
+ final MenuItem starredMenuItem = menu.findItem(R.id.menu_star);
+ ContactDetailDisplayUtils.configureStarredMenuItem(starredMenuItem,
+ mContactData.isDirectoryEntry(), mContactData.isUserProfile(),
+ mContactData.getStarred());
+ // Configure edit MenuItem
+ final MenuItem editMenuItem = menu.findItem(R.id.menu_edit);
+ editMenuItem.setVisible(true);
+ if (DirectoryContactUtil.isDirectoryContact(mContactData) || InvisibleContactUtil
+ .isInvisibleAndAddable(mContactData, this)) {
+ editMenuItem.setIcon(R.drawable.ic_person_add_tinted_24dp);
+ } else if (isContactEditable()) {
+ editMenuItem.setIcon(R.drawable.ic_create_24dp);
+ } else {
+ editMenuItem.setVisible(false);
+ }
+ return true;
}
- };
+ return false;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_star:
+ toggleStar(item);
+ return true;
+ case R.id.menu_edit:
+ if (DirectoryContactUtil.isDirectoryContact(mContactData)) {
+ DirectoryContactUtil.addToMyContacts(mContactData, this, getFragmentManager(),
+ mSelectAccountFragmentListener);
+ } else if (InvisibleContactUtil.isInvisibleAndAddable(mContactData, this)) {
+ InvisibleContactUtil.addToDefaultGroup(mContactData, this);
+ } else if (isContactEditable()) {
+ editContact();
+ }
+ return true;
+ case R.id.menu_share:
+ shareContact();
+ return true;
+ case R.id.menu_create_contact_shortcut:
+ createLauncherShortcutWithContact();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
deleted file mode 100644
index 761c854..0000000
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.quickcontact;
-
-import android.app.Fragment;
-import android.content.ClipboardManager;
-import android.content.ClipData;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.contacts.common.ContactPresenceIconUtil;
-import com.android.contacts.R;
-
-import java.util.List;
-
-/** A fragment that shows the list of resolve items below a tab */
-public class QuickContactListFragment extends Fragment {
- private ListView mListView;
- private List<Action> mActions;
- private RelativeLayout mFragmentContainer;
- private Listener mListener;
- private String mMimeType;
- private ClipboardManager mClipBoard;
- private Toast mLongPressToast;
-
- public QuickContactListFragment(String mimeType) {
- setRetainInstance(true);
- this.mMimeType = mimeType;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- mFragmentContainer = (RelativeLayout) inflater.inflate(R.layout.quickcontact_list_fragment,
- container, false);
- mListView = (ListView) mFragmentContainer.findViewById(R.id.list);
- mListView.setItemsCanFocus(true);
-
- mFragmentContainer.setOnClickListener(mOutsideClickListener);
- mClipBoard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- mLongPressToast = Toast.makeText(getActivity(),
- R.string.toast_text_copied, Toast.LENGTH_SHORT);
-
- configureAdapter();
- return mFragmentContainer;
- }
-
- public String getMimeType() {
- return mMimeType;
- }
-
- public void setActions(List<Action> actions) {
- mActions = actions;
- configureAdapter();
- }
-
- public void setListener(Listener value) {
- mListener = value;
- }
-
- private void configureAdapter() {
- if (mActions == null || mListView == null) return;
-
- mListView.setAdapter(new BaseAdapter() {
- @Override
- public int getCount() {
- return mActions.size();
- }
-
- @Override
- public Object getItem(int position) {
- return mActions.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // Set action title based on summary value
- final Action action = mActions.get(position);
- String mimeType = action.getMimeType();
-
- final View resultView = convertView != null ? convertView
- : getActivity().getLayoutInflater().inflate(
- mimeType.equals(StructuredPostal.CONTENT_ITEM_TYPE) ?
- R.layout.quickcontact_list_item_address :
- R.layout.quickcontact_list_item,
- parent, false);
-
- // TODO: Put those findViewByIds in a container
- final TextView text1 = (TextView) resultView.findViewById(
- android.R.id.text1);
- final TextView text2 = (TextView) resultView.findViewById(
- android.R.id.text2);
- final View actionsContainer = resultView.findViewById(
- R.id.actions_view_container);
- final ImageView alternateActionButton = (ImageView) resultView.findViewById(
- R.id.secondary_action_button);
- final View alternateActionDivider = resultView.findViewById(R.id.vertical_divider);
- final ImageView presenceIconView =
- (ImageView) resultView.findViewById(R.id.presence_icon);
-
- actionsContainer.setOnClickListener(mPrimaryActionClickListener);
- actionsContainer.setOnLongClickListener(mPrimaryActionLongClickListener);
- actionsContainer.setTag(action);
- alternateActionButton.setOnClickListener(mSecondaryActionClickListener);
- alternateActionButton.setTag(action);
-
- final boolean hasAlternateAction = action.getAlternateIntent() != null;
- alternateActionDivider.setVisibility(hasAlternateAction ? View.VISIBLE : View.GONE);
- alternateActionButton.setImageDrawable(action.getAlternateIcon());
- alternateActionButton.setContentDescription(action.getAlternateIconDescription());
- alternateActionButton.setVisibility(hasAlternateAction ? View.VISIBLE : View.GONE);
-
- if (mimeType.equals(Phone.CONTENT_ITEM_TYPE)) {
- // Force LTR text direction for phone numbers
- text1.setTextDirection(View.TEXT_DIRECTION_LTR);
-
- // Special case for phone numbers in accessibility mode
- text1.setContentDescription(getActivity().getString(
- R.string.description_dial_phone_number, action.getBody()));
- if (hasAlternateAction) {
- alternateActionButton.setContentDescription(getActivity()
- .getString(R.string.description_send_message, action.getBody()));
- }
- }
-
- text1.setText(action.getBody());
- if (text2 != null) {
- CharSequence subtitle = action.getSubtitle();
- text2.setText(subtitle);
- if (TextUtils.isEmpty(subtitle)) {
- text2.setVisibility(View.GONE);
- } else {
- text2.setVisibility(View.VISIBLE);
- }
- }
- final Drawable presenceIcon = ContactPresenceIconUtil.getPresenceIcon(
- getActivity(), action.getPresence());
- if (presenceIcon != null) {
- presenceIconView.setImageDrawable(presenceIcon);
- presenceIconView.setVisibility(View.VISIBLE);
- } else {
- presenceIconView.setVisibility(View.GONE);
- }
- return resultView;
- }
- });
- }
-
- /** A data item (e.g. phone number) was clicked */
- protected final OnClickListener mPrimaryActionClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- final Action action = (Action) v.getTag();
- if (mListener != null) mListener.onItemClicked(action, false);
- }
- };
-
- /** A data item was long clicked */
- protected final OnLongClickListener mPrimaryActionLongClickListener = new OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- final Action action = (Action) v.getTag();
- ClipData clip = android.content.ClipData.newPlainText(
- action.getSubtitle(), action.getBody());
- mClipBoard.setPrimaryClip(clip);
- mLongPressToast.show();
- return true;
- }
- };
-
- /** A secondary action (SMS) was clicked */
- protected final OnClickListener mSecondaryActionClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- final Action action = (Action) v.getTag();
- if (mListener != null) mListener.onItemClicked(action, true);
- }
- };
-
- private final OnClickListener mOutsideClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mListener != null) mListener.onOutsideClick();
- }
- };
-
- public interface Listener {
- void onOutsideClick();
- void onItemClicked(Action action, boolean alternate);
- }
-}
diff --git a/src/com/android/contacts/util/ContactBadgeUtil.java b/src/com/android/contacts/util/ContactBadgeUtil.java
deleted file mode 100644
index fe792d7..0000000
--- a/src/com/android/contacts/util/ContactBadgeUtil.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-
-package com.android.contacts.util;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.util.Log;
-
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.util.StreamItemEntry;
-import com.android.contacts.R;
-
-/**
- * Provides static functions to extract summary information for aggregate contacts
- */
-public class ContactBadgeUtil {
- private static final String TAG = "ContactBadgeUtil";
-
- /**
- * Returns the social snippet attribution for the given stream item entry, including the date.
- */
- public static CharSequence getSocialDate(StreamItemEntry streamItem, Context context) {
- final CharSequence timestampDisplayValue;
- final Long statusTimestamp = streamItem.getTimestamp();
- if (statusTimestamp != null) {
- // Set the date/time field by mixing relative and absolute
- // times.
- int flags = DateUtils.FORMAT_ABBREV_RELATIVE;
-
- timestampDisplayValue = DateUtils.getRelativeTimeSpanString(
- statusTimestamp.longValue(), System.currentTimeMillis(),
- DateUtils.MINUTE_IN_MILLIS, flags);
- } else {
- timestampDisplayValue = null;
- }
-
-
- String labelDisplayValue = null;
-
- final String statusLabelRes = streamItem.getLabelRes();
- final String statusResPackage = streamItem.getResPackage();
-
- // Package name used for resources.getIdentifier()
- String identiferPackage = statusResPackage;
- if (statusLabelRes != null) {
- Resources resources;
- if (TextUtils.isEmpty(statusResPackage)) {
- resources = context.getResources();
- // In this case, we're using the framework resources.
- identiferPackage = "android";
- } else {
- PackageManager pm = context.getPackageManager();
- try {
- resources = pm.getResourcesForApplication(statusResPackage);
- } catch (NameNotFoundException e) {
- Log.w(TAG, "Contact status update resource package not found: "
- + statusResPackage);
- resources = null;
- }
- }
-
- if (resources != null) {
- final int resId = resources.getIdentifier(statusLabelRes, "string",
- identiferPackage);
- if (resId == 0) {
- Log.w(TAG, "Contact status update resource not found: " + statusLabelRes +
- " in " + statusResPackage);
- } else {
- labelDisplayValue = resources.getString(resId);
- }
- }
- }
-
- final CharSequence attribution;
- if (timestampDisplayValue != null && labelDisplayValue != null) {
- attribution = context.getString(
- R.string.contact_status_update_attribution_with_date,
- timestampDisplayValue, labelDisplayValue);
- } else if (timestampDisplayValue == null && labelDisplayValue != null) {
- attribution = context.getString(
- R.string.contact_status_update_attribution,
- labelDisplayValue);
- } else if (timestampDisplayValue != null) {
- attribution = timestampDisplayValue;
- } else {
- attribution = null;
- }
- return attribution;
- }
-
- public static Bitmap loadDefaultAvatarPhoto(Context context, boolean hires, boolean darkTheme) {
- return BitmapFactory.decodeResource(context.getResources(),
- R.drawable.ic_contacts_holo_dark);
- }
-}
diff --git a/src/com/android/contacts/util/HtmlUtils.java b/src/com/android/contacts/util/HtmlUtils.java
deleted file mode 100644
index edcda13..0000000
--- a/src/com/android/contacts/util/HtmlUtils.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.util;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.text.Html;
-import android.text.Html.ImageGetter;
-import android.text.Html.TagHandler;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.ImageSpan;
-import android.text.style.QuoteSpan;
-
-import com.android.contacts.R;
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Provides static functions to perform custom HTML to text conversions.
- * Specifically, it adjusts the color and padding of the vertical
- * stripe on block quotes and alignment of inlined images.
- */
-@VisibleForTesting
-public class HtmlUtils {
-
- /**
- * Converts HTML string to a {@link Spanned} text, adjusting formatting. Any extra new line
- * characters at the end of the text will be trimmed.
- */
- public static Spanned fromHtml(Context context, String text) {
- if (TextUtils.isEmpty(text)) {
- return null;
- }
- Spanned spanned = Html.fromHtml(text);
- return postprocess(context, spanned);
- }
-
- /**
- * Converts HTML string to a {@link Spanned} text, adjusting formatting and using a custom
- * image getter. Any extra new line characters at the end of the text will be trimmed.
- */
- public static CharSequence fromHtml(Context context, String text, ImageGetter imageGetter,
- TagHandler tagHandler) {
- if (TextUtils.isEmpty(text)) {
- return null;
- }
- return postprocess(context, Html.fromHtml(text, imageGetter, tagHandler));
- }
-
- /**
- * Replaces some spans with custom versions of those. Any extra new line characters at the end
- * of the text will be trimmed.
- */
- @VisibleForTesting
- static Spanned postprocess(Context context, Spanned original) {
- if (original == null) {
- return null;
- }
- final int length = original.length();
- if (length == 0) {
- return original; // Bail early.
- }
-
- // If it's a SpannableStringBuilder, just use it. Otherwise, create a new
- // SpannableStringBuilder based on the passed Spanned.
- final SpannableStringBuilder builder;
- if (original instanceof SpannableStringBuilder) {
- builder = (SpannableStringBuilder) original;
- } else {
- builder = new SpannableStringBuilder(original);
- }
-
- final QuoteSpan[] quoteSpans = builder.getSpans(0, length, QuoteSpan.class);
- if (quoteSpans != null && quoteSpans.length != 0) {
- Resources resources = context.getResources();
- int color = resources.getColor(R.color.stream_item_stripe_color);
- int width = resources.getDimensionPixelSize(R.dimen.stream_item_stripe_width);
- for (int i = 0; i < quoteSpans.length; i++) {
- replaceSpan(builder, quoteSpans[i], new StreamItemQuoteSpan(color, width));
- }
- }
-
- final ImageSpan[] imageSpans = builder.getSpans(0, length, ImageSpan.class);
- if (imageSpans != null) {
- for (int i = 0; i < imageSpans.length; i++) {
- ImageSpan span = imageSpans[i];
- replaceSpan(builder, span, new ImageSpan(span.getDrawable(),
- ImageSpan.ALIGN_BASELINE));
- }
- }
-
- // Trim the trailing new line characters at the end of the text (which can be added
- // when HTML block quote tags are turned into new line characters).
- int end = length;
- for (int i = builder.length() - 1; i >= 0; i--) {
- if (builder.charAt(i) != '\n') {
- break;
- }
- end = i;
- }
-
- // If there's no trailing newlines, just return it.
- if (end == length) {
- return builder;
- }
-
- // Otherwise, Return a substring of the original {@link Spanned} text
- // from the start index (inclusive) to the end index (exclusive).
- return new SpannableStringBuilder(builder, 0, end);
- }
-
- /**
- * Replaces one span with the other.
- */
- private static void replaceSpan(SpannableStringBuilder builder, Object originalSpan,
- Object newSpan) {
- builder.setSpan(newSpan,
- builder.getSpanStart(originalSpan),
- builder.getSpanEnd(originalSpan),
- builder.getSpanFlags(originalSpan));
- builder.removeSpan(originalSpan);
- }
-
- public static class StreamItemQuoteSpan extends QuoteSpan {
- private final int mWidth;
-
- public StreamItemQuoteSpan(int color, int width) {
- super(color);
- this.mWidth = width;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int getLeadingMargin(boolean first) {
- return mWidth;
- }
- }
-}
diff --git a/src/com/android/contacts/util/ImageViewDrawableSetter.java b/src/com/android/contacts/util/ImageViewDrawableSetter.java
index 4dfa66c..226909e 100644
--- a/src/com/android/contacts/util/ImageViewDrawableSetter.java
+++ b/src/com/android/contacts/util/ImageViewDrawableSetter.java
@@ -89,7 +89,9 @@
if (mPreviousDrawable == null) {
// If we don't already have a drawable, skip the exit-early test
// below; otherwise we might not end up setting the default image.
- } else if (mPreviousDrawable != null && Arrays.equals(mCompressed, compressed)) {
+ } else if (mPreviousDrawable != null
+ && mPreviousDrawable instanceof BitmapDrawable
+ && Arrays.equals(mCompressed, compressed)) {
// TODO: the worst case is when the arrays are equal but not
// identical. This takes about 1ms (more with high-res photos). A
// possible optimization is to sparsely sample chunks of the arrays
@@ -149,10 +151,11 @@
}
if (TextUtils.isEmpty(mContact.getLookupKey())) {
- request = new DefaultImageRequest(null, mContact.getDisplayName(), contactType);
+ request = new DefaultImageRequest(null, mContact.getDisplayName(), contactType,
+ false /* isCircular */);
} else {
request = new DefaultImageRequest(mContact.getDisplayName(), mContact.getLookupKey(),
- contactType);
+ contactType, false /* isCircular */);
}
return ContactPhotoManager.getDefaultAvatarDrawableForContact(resources, true, request);
}
diff --git a/src/com/android/contacts/util/PhoneCapabilityTester.java b/src/com/android/contacts/util/PhoneCapabilityTester.java
index e20a076..eec9916 100644
--- a/src/com/android/contacts/util/PhoneCapabilityTester.java
+++ b/src/com/android/contacts/util/PhoneCapabilityTester.java
@@ -102,19 +102,4 @@
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
return isIntentRegistered(context, intent);
}
-
- /**
- * True if we are using two-pane layouts ("tablet mode"), false if we are using single views
- * ("phone mode")
- */
- public static boolean isUsingTwoPanes(Context context) {
- return context.getResources().getBoolean(R.bool.config_use_two_panes);
- }
-
- /**
- * True if the favorites tab should be shown in two-pane mode. False, otherwise.
- */
- public static boolean isUsingTwoPanesInFavorites(Context context) {
- return context.getResources().getBoolean(R.bool.config_use_two_panes_in_favorites);
- }
}
diff --git a/src/com/android/contacts/util/SchedulingUtils.java b/src/com/android/contacts/util/SchedulingUtils.java
index 94294fa..fbb2458 100644
--- a/src/com/android/contacts/util/SchedulingUtils.java
+++ b/src/com/android/contacts/util/SchedulingUtils.java
@@ -19,6 +19,7 @@
import android.view.View;
import android.view.ViewTreeObserver.OnDrawListener;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
+import android.view.ViewTreeObserver.OnPreDrawListener;
/** Static methods that are useful for scheduling actions to occur at a later time. */
public class SchedulingUtils {
@@ -37,15 +38,17 @@
view.getViewTreeObserver().addOnGlobalLayoutListener(listener);
}
- /** Runs a piece of code just before the next draw. */
- public static void doAfterDraw(final View view, final Runnable runnable) {
- final OnDrawListener listener = new OnDrawListener() {
+ /** Runs a piece of code just before the next draw, after layout and measurement */
+ public static void doOnPreDraw(final View view, final boolean drawNextFrame,
+ final Runnable runnable) {
+ final OnPreDrawListener listener = new OnPreDrawListener() {
@Override
- public void onDraw() {
- view.getViewTreeObserver().removeOnDrawListener(this);
+ public boolean onPreDraw() {
+ view.getViewTreeObserver().removeOnPreDrawListener(this);
runnable.run();
+ return drawNextFrame;
}
};
- view.getViewTreeObserver().addOnDrawListener(listener);
+ view.getViewTreeObserver().addOnPreDrawListener(listener);
}
}
diff --git a/src/com/android/contacts/util/StreamItemEntry.java b/src/com/android/contacts/util/StreamItemEntry.java
deleted file mode 100644
index e5696a1..0000000
--- a/src/com/android/contacts/util/StreamItemEntry.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.util;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.provider.ContactsContract.StreamItems;
-import android.text.Html;
-
-import com.android.contacts.detail.ContactDetailDisplayUtils;
-import com.android.contacts.common.test.NeededForTesting;
-
-import com.google.common.annotations.VisibleForTesting;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Data object for a social stream item. Social stream items may contain multiple
- * mPhotos. Social stream item entries are comparable; entries with more recent
- * timestamps will be displayed on top.
- */
-public class StreamItemEntry implements Comparable<StreamItemEntry> {
-
- // Basic stream item fields.
- private final long mId;
- private final String mText;
- private final String mComments;
- private final long mTimestamp;
- private final String mAccountType;
- private final String mAccountName;
- private final String mDataSet;
-
- private boolean mDecoded;
- private CharSequence mDecodedText;
- private CharSequence mDecodedComments;
-
- // Package references for label and icon resources.
- private final String mResPackage;
- private final String mIconRes;
- private final String mLabelRes;
-
- // Photos associated with this stream item.
- private List<StreamItemPhotoEntry> mPhotos;
-
- @NeededForTesting
- public static StreamItemEntry createForTest(long id, String text, String comments,
- long timestamp, String accountType, String accountName, String dataSet,
- String resPackage, String iconRes, String labelRes) {
- return new StreamItemEntry(id, text, comments, timestamp, accountType, accountName, dataSet,
- resPackage, iconRes, labelRes);
- }
-
- private StreamItemEntry(long id, String text, String comments, long timestamp,
- String accountType, String accountName, String dataSet, String resPackage,
- String iconRes, String labelRes) {
- mId = id;
- mText = text;
- mComments = comments;
- mTimestamp = timestamp;
- mAccountType = accountType;
- mAccountName = accountName;
- mDataSet = dataSet;
- mResPackage = resPackage;
- mIconRes = iconRes;
- mLabelRes = labelRes;
- mPhotos = new ArrayList<StreamItemPhotoEntry>();
- }
-
- public StreamItemEntry(Cursor cursor) {
- // This is expected to be populated via a cursor containing all StreamItems columns in
- // its projection.
- mId = getLong(cursor, StreamItems._ID);
- mText = getString(cursor, StreamItems.TEXT);
- mComments = getString(cursor, StreamItems.COMMENTS);
- mTimestamp = getLong(cursor, StreamItems.TIMESTAMP);
- mAccountType = getString(cursor, StreamItems.ACCOUNT_TYPE);
- mAccountName = getString(cursor, StreamItems.ACCOUNT_NAME);
- mDataSet = getString(cursor, StreamItems.DATA_SET);
- mResPackage = getString(cursor, StreamItems.RES_PACKAGE);
- mIconRes = getString(cursor, StreamItems.RES_ICON);
- mLabelRes = getString(cursor, StreamItems.RES_LABEL);
- mPhotos = new ArrayList<StreamItemPhotoEntry>();
- }
-
- public void addPhoto(StreamItemPhotoEntry photoEntry) {
- mPhotos.add(photoEntry);
- }
-
- @Override
- public int compareTo(StreamItemEntry other) {
- return mTimestamp == other.mTimestamp ? 0 : mTimestamp > other.mTimestamp ? -1 : 1;
- }
-
- public long getId() {
- return mId;
- }
-
- public String getText() {
- return mText;
- }
-
- public String getComments() {
- return mComments;
- }
-
- public long getTimestamp() {
- return mTimestamp;
- }
-
- public String getAccountType() {
- return mAccountType;
- }
-
- public String getAccountName() {
- return mAccountName;
- }
-
- public String getDataSet() {
- return mDataSet;
- }
-
- public String getResPackage() {
- return mResPackage;
- }
-
- public String getIconRes() {
- return mIconRes;
- }
-
- public String getLabelRes() {
- return mLabelRes;
- }
-
- public List<StreamItemPhotoEntry> getPhotos() {
- Collections.sort(mPhotos);
- return mPhotos;
- }
-
- /**
- * Make {@link #getDecodedText} and {@link #getDecodedComments} available. Must be called
- * before calling those.
- *
- * We can't do this automatically in the getters, because it'll require a {@link Context}.
- */
- @VisibleForTesting
- public void decodeHtml(Context context) {
- final Html.ImageGetter imageGetter = ContactDetailDisplayUtils.getImageGetter(context);
- if (mText != null) {
- mDecodedText = HtmlUtils.fromHtml(context, mText, imageGetter, null);
- }
- if (mComments != null) {
- mDecodedComments = HtmlUtils.fromHtml(context, mComments, imageGetter, null);
- }
- mDecoded = true;
- }
-
- public CharSequence getDecodedText() {
- checkDecoded();
- return mDecodedText;
- }
-
- public CharSequence getDecodedComments() {
- checkDecoded();
- return mDecodedComments;
- }
-
- private void checkDecoded() {
- if (!mDecoded) {
- throw new IllegalStateException("decodeHtml must have been called");
- }
- }
-
- private static String getString(Cursor cursor, String columnName) {
- return cursor.getString(cursor.getColumnIndex(columnName));
- }
-
- private static long getLong(Cursor cursor, String columnName) {
- final int columnIndex = cursor.getColumnIndex(columnName);
- return cursor.getLong(columnIndex);
- }
-}
diff --git a/src/com/android/contacts/util/StreamItemPhotoEntry.java b/src/com/android/contacts/util/StreamItemPhotoEntry.java
deleted file mode 100644
index ad69e5c..0000000
--- a/src/com/android/contacts/util/StreamItemPhotoEntry.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.util;
-
-import android.database.Cursor;
-import android.provider.ContactsContract.PhotoFiles;
-import android.provider.ContactsContract.StreamItemPhotos;
-
-/**
- * Data object for a photo associated with a social stream item. These are comparable;
- * entries with a lower sort index will be displayed on top (with the ID used as a
- * tie-breaker).
- */
-public class StreamItemPhotoEntry implements Comparable<StreamItemPhotoEntry> {
- private final long mId;
- private final int mSortIndex;
- private final long mPhotoFileId;
- private final String mPhotoUri;
- private final int mHeight;
- private final int mWidth;
- private final int mFileSize;
-
- public StreamItemPhotoEntry(long id, int sortIndex, long photoFileId, String photoUri,
- int height, int width, int fileSize) {
- mId = id;
- mSortIndex = sortIndex;
- mPhotoFileId = photoFileId;
- mPhotoUri = photoUri;
- mHeight = height;
- mWidth = width;
- mFileSize = fileSize;
- }
-
- public StreamItemPhotoEntry(Cursor cursor) {
- // This is expected to be populated via a cursor containing a join of all
- // StreamItemPhotos columns and all PhotoFiles columns (except for ID).
- mId = getLong(cursor, StreamItemPhotos._ID);
- mSortIndex = getInt(cursor, StreamItemPhotos.SORT_INDEX, -1);
- mPhotoFileId = getLong(cursor, StreamItemPhotos.PHOTO_FILE_ID);
- mPhotoUri = getString(cursor, StreamItemPhotos.PHOTO_URI);
- mHeight = getInt(cursor, PhotoFiles.HEIGHT, -1);
- mWidth = getInt(cursor, PhotoFiles.WIDTH, -1);
- mFileSize = getInt(cursor, PhotoFiles.FILESIZE, -1);
- }
-
- public long getId() {
- return mId;
- }
-
- public int getSortIndex() {
- return mSortIndex;
- }
-
- public long getPhotoFileId() {
- return mPhotoFileId;
- }
-
- public String getPhotoUri() {
- return mPhotoUri;
- }
-
- public int getHeight() {
- return mHeight;
- }
-
- public int getWidth() {
- return mWidth;
- }
-
- public int getFileSize() {
- return mFileSize;
- }
-
- @Override
- public int compareTo(StreamItemPhotoEntry streamItemPhotoEntry) {
- // Sort index is used to compare, falling back to ID if neither entry has a
- // sort index specified (entries without a sort index are sorted after entries
- // that have one).
- if (mSortIndex == streamItemPhotoEntry.mSortIndex) {
- if (mSortIndex == -1) {
- return mId == streamItemPhotoEntry.mId ? 0
- : mId < streamItemPhotoEntry.mId ? -1 : 1;
- } else {
- return 0;
- }
- } else {
- if (mSortIndex == -1) {
- return 1;
- }
- if (streamItemPhotoEntry.mSortIndex == -1) {
- return -1;
- }
- return mSortIndex == streamItemPhotoEntry.mSortIndex ? 0
- : mSortIndex < streamItemPhotoEntry.mSortIndex ? -1 : 1;
- }
- }
-
- private static String getString(Cursor cursor, String columnName) {
- return cursor.getString(cursor.getColumnIndex(columnName));
- }
-
- private static int getInt(Cursor cursor, String columnName, int missingValue) {
- final int columnIndex = cursor.getColumnIndex(columnName);
- return cursor.isNull(columnIndex) ? missingValue : cursor.getInt(columnIndex);
- }
-
- private static long getLong(Cursor cursor, String columnName) {
- final int columnIndex = cursor.getColumnIndex(columnName);
- return cursor.getLong(columnIndex);
- }
-}
diff --git a/src/com/android/contacts/widget/CompositeListAdapter.java b/src/com/android/contacts/widget/CompositeListAdapter.java
index d83246a..4c72ee8 100644
--- a/src/com/android/contacts/widget/CompositeListAdapter.java
+++ b/src/com/android/contacts/widget/CompositeListAdapter.java
@@ -21,7 +21,7 @@
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
-import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.testing.NeededForTesting;
import com.google.common.annotations.VisibleForTesting;
/**
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
new file mode 100644
index 0000000..18f032a
--- /dev/null
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -0,0 +1,966 @@
+package com.android.contacts.widget;
+
+import com.android.contacts.R;
+import com.android.contacts.test.NeededForReflection;
+import com.android.contacts.util.SchedulingUtils;
+
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.hardware.display.DisplayManagerGlobal;
+import android.os.Trace;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Display;
+import android.view.DisplayInfo;
+import android.view.MotionEvent;
+import android.view.VelocityTracker;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewConfiguration;
+import android.view.WindowManager;
+import android.view.animation.Interpolator;
+import android.widget.EdgeEffect;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.Scroller;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+/**
+ * A custom {@link ViewGroup} that operates similarly to a {@link ScrollView}, except with multiple
+ * subviews. These subviews are scrolled or shrinked one at a time, until each reaches their
+ * minimum or maximum value.
+ *
+ * MultiShrinkScroller is designed for a specific problem. As such, this class is designed to be
+ * used with a specific layout file: quickcontact_activity.xml. MultiShrinkScroller expects subviews
+ * with specific ID values.
+ *
+ * MultiShrinkScroller's code is heavily influenced by ScrollView. Nonetheless, several ScrollView
+ * features are missing. For example: handling of KEYCODES, OverScroll bounce and saving
+ * scroll state in savedInstanceState bundles.
+ */
+public class MultiShrinkScroller extends LinearLayout {
+
+ /**
+ * 1000 pixels per millisecond. Ie, 1 pixel per second.
+ */
+ private static final int PIXELS_PER_SECOND = 1000;
+
+ /**
+ * Length of the acceleration animations. This value was taken from ValueAnimator.java.
+ */
+ private static final int EXIT_FLING_ANIMATION_DURATION_MS = 300;
+
+ /**
+ * In portrait mode, the height:width ratio of the photo's starting height.
+ */
+ private static final float INTERMEDIATE_HEADER_HEIGHT_RATIO = 0.5f;
+
+ private float[] mLastEventPosition = { 0, 0 };
+ private VelocityTracker mVelocityTracker;
+ private boolean mIsBeingDragged = false;
+ private boolean mReceivedDown = false;
+
+ private ScrollView mScrollView;
+ private View mScrollViewChild;
+ private View mToolbar;
+ private QuickContactImageView mPhotoView;
+ private View mPhotoViewContainer;
+ private View mTransparentView;
+ private MultiShrinkScrollerListener mListener;
+ private TextView mLargeTextView;
+ /** Contains desired location/size of the title, once the header is fully compressed */
+ private TextView mInvisiblePlaceholderTextView;
+ private int mHeaderTintColor;
+ private int mMaximumHeaderHeight;
+ private int mMinimumHeaderHeight;
+ private int mIntermediateHeaderHeight;
+ private int mMaximumHeaderTextSize;
+ private int mCollapsedTitleBottomMargin;
+ private int mCollapsedTitleStartMargin;
+ private int mMinimumPortraitHeaderHeight;
+ private int mMaximumPortraitHeaderHeight;
+
+ private final Scroller mScroller;
+ private final EdgeEffect mEdgeGlowBottom;
+ private final int mTouchSlop;
+ private final int mMaximumVelocity;
+ private final int mMinimumVelocity;
+ private final int mTransparentStartHeight;
+ private final int mMaximumTitleMargin;
+ private final float mToolbarElevation;
+ private final boolean mIsTwoPanel;
+
+ // Objects used to perform color filtering on the header. These are stored as fields for
+ // the sole purpose of avoiding "new" operations inside animation loops.
+ private final ColorMatrix mWhitenessColorMatrix = new ColorMatrix();
+ private final ColorMatrixColorFilter mColorFilter = new ColorMatrixColorFilter(
+ mWhitenessColorMatrix);
+ private final ColorMatrix mColorMatrix = new ColorMatrix();
+ private final float[] mAlphaMatrixValues = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0
+ };
+ private final ColorMatrix mMultiplyBlendMatrix = new ColorMatrix();
+ private final float[] mMultiplyBlendMatrixValues = {
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0
+ };
+
+ public interface MultiShrinkScrollerListener {
+ void onScrolledOffBottom();
+
+ void onStartScrollOffBottom();
+
+ void onEnterFullscreen();
+
+ void onExitFullscreen();
+ }
+
+ private final AnimatorListener mHeaderExpandAnimationListener = new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mPhotoView.setClickable(true);
+ }
+ };
+
+ private final AnimatorListener mSnapToBottomListener = new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (getScrollUntilOffBottom() > 0 && mListener != null) {
+ // Due to a rounding error, after the animation finished we haven't fully scrolled
+ // off the screen. Lie to the listener: tell it that we did scroll off the screen.
+ mListener.onScrolledOffBottom();
+ // No other messages need to be sent to the listener.
+ mListener = null;
+ }
+ }
+ };
+
+ /**
+ * Interpolator from android.support.v4.view.ViewPager. Snappier and more elastic feeling
+ * than the default interpolator.
+ */
+ private static final Interpolator sInterpolator = new Interpolator() {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public float getInterpolation(float t) {
+ t -= 1.0f;
+ return t * t * t * t * t + 1.0f;
+ }
+ };
+
+ public MultiShrinkScroller(Context context) {
+ this(context, null);
+ }
+
+ public MultiShrinkScroller(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public MultiShrinkScroller(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ final ViewConfiguration configuration = ViewConfiguration.get(context);
+ setFocusable(false);
+ // Drawing must be enabled in order to support EdgeEffect
+ setWillNotDraw(/* willNotDraw = */ false);
+
+ mEdgeGlowBottom = new EdgeEffect(context);
+ mScroller = new Scroller(context, sInterpolator);
+ mTouchSlop = configuration.getScaledTouchSlop();
+ mMinimumVelocity = configuration.getScaledMinimumFlingVelocity();
+ mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
+ mTransparentStartHeight = (int) getResources().getDimension(
+ R.dimen.quickcontact_starting_empty_height);
+ mToolbarElevation = getResources().getDimension(
+ R.dimen.quick_contact_toolbar_elevation);
+ mIsTwoPanel = getResources().getBoolean(R.bool.quickcontact_two_panel);
+ mMaximumTitleMargin = (int) getResources().getDimension(
+ R.dimen.quickcontact_title_initial_margin);
+
+ final TypedArray attributeArray = context.obtainStyledAttributes(
+ new int[]{android.R.attr.actionBarSize});
+ mMinimumHeaderHeight = attributeArray.getDimensionPixelSize(0, 0);
+ // This value is approximately equal to the portrait ActionBar size. It isn't exactly the
+ // same, since the landscape and portrait ActionBar sizes can be different.
+ mMinimumPortraitHeaderHeight = mMinimumHeaderHeight;
+ attributeArray.recycle();
+ }
+
+ /**
+ * This method must be called inside the Activity's OnCreate.
+ */
+ public void initialize(MultiShrinkScrollerListener listener) {
+ mScrollView = (ScrollView) findViewById(R.id.content_scroller);
+ mScrollViewChild = findViewById(R.id.card_container);
+ mToolbar = findViewById(R.id.toolbar_parent);
+ mPhotoViewContainer = findViewById(R.id.toolbar_parent);
+ mTransparentView = findViewById(R.id.transparent_view);
+ mLargeTextView = (TextView) findViewById(R.id.large_title);
+ mInvisiblePlaceholderTextView = (TextView) findViewById(R.id.placeholder_textview);
+ mListener = listener;
+
+ mPhotoView = (QuickContactImageView) findViewById(R.id.photo);
+ mPhotoView.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ expandCollapseHeader();
+ }
+ });
+
+ final WindowManager windowManager = (WindowManager) getContext().getSystemService(
+ Context.WINDOW_SERVICE);
+ final Point windowSize = new Point();
+ windowManager.getDefaultDisplay().getSize(windowSize);
+ if (!mIsTwoPanel) {
+ // We never want the height of the photo view to exceed its width.
+ mMaximumHeaderHeight = windowSize.x;
+ mIntermediateHeaderHeight = (int) (mMaximumHeaderHeight
+ * INTERMEDIATE_HEADER_HEIGHT_RATIO);
+ }
+ mMaximumPortraitHeaderHeight = Math.min(windowSize.x, windowSize.y);
+ setHeaderHeight(mIntermediateHeaderHeight);
+
+ SchedulingUtils.doOnPreDraw(this, /* drawNextFrame = */ false, new Runnable() {
+ @Override
+ public void run() {
+ mMaximumHeaderTextSize = mLargeTextView.getHeight();
+ // Unlike Window width, we can't know the usable window height until predraw
+ // has occured. Therefore, setting these constraints must be done inside
+ // onPreDraw for the two panel layout. Fortunately, the two panel layout
+ // doesn't need these values anywhere else inside the activity's creation.
+ if (mIsTwoPanel) {
+ mMaximumHeaderHeight = getHeight();
+ mMinimumHeaderHeight = mMaximumHeaderHeight;
+ mIntermediateHeaderHeight = mMaximumHeaderHeight;
+ final TypedValue photoRatio = new TypedValue();
+ getResources().getValue(R.vals.quickcontact_photo_ratio, photoRatio,
+ /* resolveRefs = */ true);
+ final LayoutParams layoutParams
+ = (LayoutParams) mPhotoViewContainer.getLayoutParams();
+ layoutParams.height = mMaximumHeaderHeight;
+ layoutParams.width = (int) (mMaximumHeaderHeight * photoRatio.getFloat());
+ mPhotoViewContainer.setLayoutParams(layoutParams);
+ }
+
+ calculateCollapsedLargeTitlePadding();
+ updateHeaderTextSize();
+ }
+ });
+ }
+
+ public void setTitle(String title) {
+ mLargeTextView.setText(title);
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent event) {
+ // The only time we want to intercept touch events is when we are being dragged.
+ return shouldStartDrag(event);
+ }
+
+ private boolean shouldStartDrag(MotionEvent event) {
+ if (mIsBeingDragged) {
+ mIsBeingDragged = false;
+ return false;
+ }
+
+ switch (event.getAction()) {
+ // If we are in the middle of a fling and there is a down event, we'll steal it and
+ // start a drag.
+ case MotionEvent.ACTION_DOWN:
+ updateLastEventPosition(event);
+ if (!mScroller.isFinished()) {
+ startDrag();
+ return true;
+ } else {
+ mReceivedDown = true;
+ }
+ break;
+
+ // Otherwise, we will start a drag if there is enough motion in the direction we are
+ // capable of scrolling.
+ case MotionEvent.ACTION_MOVE:
+ if (motionShouldStartDrag(event)) {
+ updateLastEventPosition(event);
+ startDrag();
+ return true;
+ }
+ break;
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ final int action = event.getAction();
+
+ if (mVelocityTracker == null) {
+ mVelocityTracker = VelocityTracker.obtain();
+ }
+ mVelocityTracker.addMovement(event);
+
+ if (!mIsBeingDragged) {
+ if (shouldStartDrag(event)) {
+ return true;
+ }
+
+ if (action == MotionEvent.ACTION_UP && mReceivedDown) {
+ mReceivedDown = false;
+ return performClick();
+ }
+ return true;
+ }
+
+ switch (action) {
+ case MotionEvent.ACTION_MOVE:
+ final float delta = updatePositionAndComputeDelta(event);
+ scrollTo(0, getScroll() + (int) delta);
+ mReceivedDown = false;
+
+ if (mIsBeingDragged) {
+ final int distanceFromMaxScrolling = getMaximumScrollUpwards() - getScroll();
+ if (delta > distanceFromMaxScrolling) {
+ // The ScrollView is being pulled upwards while there is no more
+ // content offscreen, and the view port is already fully expanded.
+ mEdgeGlowBottom.onPull(delta / getHeight(), 1 - event.getX() / getWidth());
+ }
+
+ if (!mEdgeGlowBottom.isFinished()) {
+ postInvalidateOnAnimation();
+ }
+
+ }
+ break;
+
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ stopDrag(action == MotionEvent.ACTION_CANCEL);
+ mReceivedDown = false;
+ break;
+ }
+
+ return true;
+ }
+
+ public void setHeaderTintColor(int color) {
+ mHeaderTintColor = color;
+ updatePhotoTintAndDropShadow();
+ // We want to use the same amount of alpha on the new tint color as the previous tint color.
+ final int edgeEffectAlpha = Color.alpha(mEdgeGlowBottom.getColor());
+ mEdgeGlowBottom.setColor((color & 0xffffff) | Color.argb(edgeEffectAlpha, 0, 0, 0));
+ }
+
+ /**
+ * Expand to maximum size or starting size. Disable clicks on the photo until the animation is
+ * complete.
+ */
+ private void expandCollapseHeader() {
+ mPhotoView.setClickable(false);
+ if (getHeaderHeight() != mMaximumHeaderHeight) {
+ // Expand header
+ final ObjectAnimator animator = ObjectAnimator.ofInt(this, "headerHeight",
+ mMaximumHeaderHeight);
+ animator.addListener(mHeaderExpandAnimationListener);
+ animator.start();
+ // Scroll nested scroll view to its top
+ if (mScrollView.getScrollY() != 0) {
+ ObjectAnimator.ofInt(mScrollView, "scrollY", -mScrollView.getScrollY()).start();
+ }
+ } else if (getHeaderHeight() != mMinimumHeaderHeight) {
+ final ObjectAnimator animator = ObjectAnimator.ofInt(this, "headerHeight",
+ mIntermediateHeaderHeight);
+ animator.addListener(mHeaderExpandAnimationListener);
+ animator.start();
+ }
+ }
+
+ private void startDrag() {
+ mIsBeingDragged = true;
+ mScroller.abortAnimation();
+ }
+
+ private void stopDrag(boolean cancelled) {
+ mIsBeingDragged = false;
+ if (!cancelled && getChildCount() > 0) {
+ final float velocity = getCurrentVelocity();
+ if (velocity > mMinimumVelocity || velocity < -mMinimumVelocity) {
+ fling(-velocity);
+ onDragFinished(mScroller.getFinalY() - mScroller.getStartY());
+ } else {
+ onDragFinished(/* flingDelta = */ 0);
+ }
+ } else {
+ onDragFinished(/* flingDelta = */ 0);
+ }
+
+ if (mVelocityTracker != null) {
+ mVelocityTracker.recycle();
+ mVelocityTracker = null;
+ }
+
+ mEdgeGlowBottom.onRelease();
+ }
+
+ private void onDragFinished(int flingDelta) {
+ if (!snapToTop(flingDelta)) {
+ // The drag/fling won't result in the content at the top of the Window. Consider
+ // snapping the content to the bottom of the window.
+ snapToBottom(flingDelta);
+ }
+ }
+
+ /**
+ * If needed, snap the subviews to the top of the Window.
+ */
+ private boolean snapToTop(int flingDelta) {
+ final int requiredScroll = -getScroll_ignoreOversizedHeader() + mTransparentStartHeight;
+ if (-getScroll_ignoreOversizedHeader() - flingDelta < 0
+ && -getScroll_ignoreOversizedHeader() - flingDelta > -mTransparentStartHeight
+ && requiredScroll != 0) {
+ // We finish scrolling above the empty starting height, and aren't projected
+ // to fling past the top of the Window, so elastically snap the empty space shut.
+ mScroller.forceFinished(true);
+ smoothScrollBy(requiredScroll);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * If needed, scroll all the subviews off the bottom of the Window.
+ */
+ private void snapToBottom(int flingDelta) {
+ if (-getScroll_ignoreOversizedHeader() - flingDelta > 0) {
+ scrollOffBottom();
+ }
+ }
+
+ public void scrollOffBottom() {
+ final Interpolator interpolator = new AcceleratingFlingInterpolator(
+ EXIT_FLING_ANIMATION_DURATION_MS, getCurrentVelocity(),
+ getScrollUntilOffBottom());
+ mScroller.forceFinished(true);
+ ObjectAnimator translateAnimation = ObjectAnimator.ofInt(this, "scroll",
+ getScroll() - getScrollUntilOffBottom());
+ translateAnimation.setRepeatCount(0);
+ translateAnimation.setInterpolator(interpolator);
+ translateAnimation.setDuration(EXIT_FLING_ANIMATION_DURATION_MS);
+ translateAnimation.addListener(mSnapToBottomListener);
+ translateAnimation.start();
+ if (mListener != null) {
+ mListener.onStartScrollOffBottom();
+ }
+ }
+
+ @Override
+ public void scrollTo(int x, int y) {
+ final int delta = y - getScroll();
+ boolean wasFullscreen = getScrollNeededToBeFullScreen() <= 0;
+ if (delta > 0) {
+ scrollUp(delta);
+ } else {
+ scrollDown(delta);
+ }
+ updatePhotoTintAndDropShadow();
+ updateHeaderTextSize();
+ final boolean isFullscreen = getScrollNeededToBeFullScreen() <= 0;
+ if (mListener != null) {
+ if (wasFullscreen && !isFullscreen) {
+ mListener.onExitFullscreen();
+ } else if (!wasFullscreen && isFullscreen) {
+ mListener.onEnterFullscreen();
+ }
+ }
+ }
+
+ /**
+ * Set the height of the toolbar and update its tint accordingly.
+ */
+ @NeededForReflection
+ public void setHeaderHeight(int height) {
+ final LinearLayout.LayoutParams toolbarLayoutParams
+ = (LayoutParams) mToolbar.getLayoutParams();
+ toolbarLayoutParams.height = height;
+ mToolbar.setLayoutParams(toolbarLayoutParams);
+ updatePhotoTintAndDropShadow();
+ updateHeaderTextSize();
+ }
+
+ @NeededForReflection
+ public int getHeaderHeight() {
+ return mToolbar.getLayoutParams().height;
+ }
+
+ @NeededForReflection
+ public void setScroll(int scroll) {
+ scrollTo(0, scroll);
+ }
+
+ /**
+ * Returns the total amount scrolled inside the nested ScrollView + the amount of shrinking
+ * performed on the ToolBar. This is the value inspected by animators.
+ */
+ @NeededForReflection
+ public int getScroll() {
+ final LinearLayout.LayoutParams toolbarLayoutParams
+ = (LayoutParams) mToolbar.getLayoutParams();
+ return mTransparentStartHeight - getTransparentViewHeight()
+ + mIntermediateHeaderHeight - toolbarLayoutParams.height + mScrollView.getScrollY();
+ }
+
+ /**
+ * A variant of {@link #getScroll} that pretends the header is never larger than
+ * than mIntermediateHeaderHeight. This function is sometimes needed when making scrolling
+ * decisions that will not change the header size (ie, snapping to the bottom or top).
+ */
+ public int getScroll_ignoreOversizedHeader() {
+ final LinearLayout.LayoutParams toolbarLayoutParams
+ = (LayoutParams) mToolbar.getLayoutParams();
+ return mTransparentStartHeight - getTransparentViewHeight()
+ + Math.max(mIntermediateHeaderHeight - toolbarLayoutParams.height, 0)
+ + mScrollView.getScrollY();
+ }
+
+ /**
+ * Amount of transparent space above the header/toolbar.
+ */
+ public int getScrollNeededToBeFullScreen() {
+ return getTransparentViewHeight();
+ }
+
+ /**
+ * Return amount of scrolling needed in order for all the visible subviews to scroll off the
+ * bottom.
+ */
+ public int getScrollUntilOffBottom() {
+ return getHeight() + getScroll_ignoreOversizedHeader() - mTransparentStartHeight;
+ }
+
+ @Override
+ public void computeScroll() {
+ if (mScroller.computeScrollOffset()) {
+ // Examine the fling results in order to activate EdgeEffect when we fling to the end.
+ final int oldScroll = getScroll();
+ scrollTo(0, mScroller.getCurrY());
+ final int delta = mScroller.getCurrY() - oldScroll;
+ final int distanceFromMaxScrolling = getMaximumScrollUpwards() - getScroll();
+ if (delta > distanceFromMaxScrolling && distanceFromMaxScrolling > 0) {
+ mEdgeGlowBottom.onAbsorb((int) mScroller.getCurrVelocity());
+ }
+
+ if (!awakenScrollBars()) {
+ // Keep on drawing until the animation has finished.
+ postInvalidateOnAnimation();
+ }
+ if (mScroller.getCurrY() >= getMaximumScrollUpwards()) {
+ mScroller.abortAnimation();
+ }
+ }
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ super.draw(canvas);
+
+ if (!mEdgeGlowBottom.isFinished()) {
+ final int restoreCount = canvas.save();
+ final int width = getWidth() - getPaddingLeft() - getPaddingRight();
+ final int height = getHeight();
+
+ // Draw the EdgeEffect on the bottom of the Window (Or a little bit below the bottom
+ // of the Window if we start to scroll upwards while EdgeEffect is visible). This
+ // does not need to consider the case where this MultiShrinkScroller doesn't fill
+ // the Window, since the nested ScrollView should be set to fillViewport.
+ canvas.translate(-width + getPaddingLeft(),
+ height + getMaximumScrollUpwards() - getScroll());
+
+ canvas.rotate(180, width, 0);
+ if (mIsTwoPanel) {
+ // Only show the EdgeEffect on the bottom of the ScrollView.
+ mEdgeGlowBottom.setSize(mScrollView.getWidth(), height);
+ } else {
+ mEdgeGlowBottom.setSize(width, height);
+ }
+ if (mEdgeGlowBottom.draw(canvas)) {
+ postInvalidateOnAnimation();
+ }
+ canvas.restoreToCount(restoreCount);
+ }
+ }
+
+ private float getCurrentVelocity() {
+ if (mVelocityTracker == null) {
+ return 0;
+ }
+ mVelocityTracker.computeCurrentVelocity(PIXELS_PER_SECOND, mMaximumVelocity);
+ return mVelocityTracker.getYVelocity();
+ }
+
+ private void fling(float velocity) {
+ // For reasons I do not understand, scrolling is less janky when maxY=Integer.MAX_VALUE
+ // then when maxY is set to an actual value.
+ mScroller.fling(0, getScroll(), 0, (int) velocity, 0, 0, -Integer.MAX_VALUE,
+ Integer.MAX_VALUE);
+ invalidate();
+ }
+
+ private int getMaximumScrollUpwards() {
+ if (!mIsTwoPanel) {
+ return mTransparentStartHeight
+ // How much the Header view can compress
+ + mIntermediateHeaderHeight - mMinimumHeaderHeight
+ // How much the ScrollView can scroll. 0, if child is smaller than ScrollView.
+ + Math.max(0, mScrollViewChild.getHeight() - getHeight()
+ + mMinimumHeaderHeight);
+ } else {
+ return mTransparentStartHeight
+ // How much the ScrollView can scroll. 0, if child is smaller than ScrollView.
+ + Math.max(0, mScrollViewChild.getHeight() - getHeight());
+ }
+ }
+
+ private int getTransparentViewHeight() {
+ return mTransparentView.getLayoutParams().height;
+ }
+
+ private void setTransparentViewHeight(int height) {
+ mTransparentView.getLayoutParams().height = height;
+ mTransparentView.setLayoutParams(mTransparentView.getLayoutParams());
+ }
+
+ private void scrollUp(int delta) {
+ if (getTransparentViewHeight() != 0) {
+ final int originalValue = getTransparentViewHeight();
+ setTransparentViewHeight(getTransparentViewHeight() - delta);
+ setTransparentViewHeight(Math.max(0, getTransparentViewHeight()));
+ delta -= originalValue - getTransparentViewHeight();
+ }
+ final LinearLayout.LayoutParams toolbarLayoutParams
+ = (LayoutParams) mToolbar.getLayoutParams();
+ if (toolbarLayoutParams.height != mMinimumHeaderHeight) {
+ final int originalValue = toolbarLayoutParams.height;
+ toolbarLayoutParams.height -= delta;
+ toolbarLayoutParams.height = Math.max(toolbarLayoutParams.height, mMinimumHeaderHeight);
+ mToolbar.setLayoutParams(toolbarLayoutParams);
+ delta -= originalValue - toolbarLayoutParams.height;
+ }
+ mScrollView.scrollBy(0, delta);
+ }
+
+ private void scrollDown(int delta) {
+ if (mScrollView.getScrollY() > 0) {
+ final int originalValue = mScrollView.getScrollY();
+ mScrollView.scrollBy(0, delta);
+ delta -= mScrollView.getScrollY() - originalValue;
+ }
+ final LinearLayout.LayoutParams toolbarLayoutParams
+ = (LayoutParams) mToolbar.getLayoutParams();
+ if (toolbarLayoutParams.height < mIntermediateHeaderHeight) {
+ final int originalValue = toolbarLayoutParams.height;
+ toolbarLayoutParams.height -= delta;
+ toolbarLayoutParams.height = Math.min(toolbarLayoutParams.height,
+ mIntermediateHeaderHeight);
+ mToolbar.setLayoutParams(toolbarLayoutParams);
+ delta -= originalValue - toolbarLayoutParams.height;
+ }
+ setTransparentViewHeight(getTransparentViewHeight() - delta);
+
+ if (getScrollUntilOffBottom() <= 0) {
+ post(new Runnable() {
+ @Override
+ public void run() {
+ if (mListener != null) {
+ mListener.onScrolledOffBottom();
+ // No other messages need to be sent to the listener.
+ mListener = null;
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * Set the header size and padding, based on the current scroll position.
+ */
+ private void updateHeaderTextSize() {
+ if (mIsTwoPanel) {
+ // The text size stays constant on two panel layouts.
+ return;
+ }
+
+ // The pivot point for scaling should be middle of the starting side.
+ if (isLayoutRtl()) {
+ mLargeTextView.setPivotX(mLargeTextView.getWidth());
+ } else {
+ mLargeTextView.setPivotX(0);
+ }
+ mLargeTextView.setPivotY(mLargeTextView.getHeight() / 2);
+
+ final int START_TEXT_SCALING_THRESHOLD_COEFFICIENT = 2;
+ final int threshold = START_TEXT_SCALING_THRESHOLD_COEFFICIENT * mMinimumHeaderHeight;
+ final int toolbarHeight = mToolbar.getLayoutParams().height;
+ if (toolbarHeight >= threshold) {
+ // Keep the text at maximum size since the header is smaller than threshold.
+ mLargeTextView.setScaleX(1);
+ mLargeTextView.setScaleY(1);
+ setInterpolatedTitleMargin(1);
+ return;
+ }
+ final float ratio = (toolbarHeight - mMinimumHeaderHeight)
+ / (float)(threshold - mMinimumHeaderHeight);
+ final float minimumSize = mInvisiblePlaceholderTextView.getHeight();
+ final float scale = (minimumSize + (mMaximumHeaderTextSize - minimumSize) * ratio)
+ / mMaximumHeaderTextSize;
+
+ mLargeTextView.setScaleX(scale);
+ mLargeTextView.setScaleY(scale);
+ setInterpolatedTitleMargin(ratio);
+ }
+
+ /**
+ * Calculate the padding around mLargeTextView so that it will look appropriate once it
+ * finishes moving into its target location/size.
+ */
+ private void calculateCollapsedLargeTitlePadding() {
+ final Rect largeTextViewRect = new Rect();
+ final Rect invisiblePlaceholderTextViewRect = new Rect();
+ mToolbar.getBoundsOnScreen(largeTextViewRect);
+ mInvisiblePlaceholderTextView.getBoundsOnScreen(invisiblePlaceholderTextViewRect);
+ if (isLayoutRtl()) {
+ mCollapsedTitleStartMargin = invisiblePlaceholderTextViewRect.right
+ - largeTextViewRect.right;
+ } else {
+ mCollapsedTitleStartMargin = invisiblePlaceholderTextViewRect.left
+ - largeTextViewRect.left;
+ }
+
+ // Distance between top of toolbar to the center of the target rectangle.
+ final int desiredTopToCenter = (
+ invisiblePlaceholderTextViewRect.top + invisiblePlaceholderTextViewRect.bottom)
+ / 2 - largeTextViewRect.top;
+ // Padding needed on the mLargeTextView so that it has the same amount of
+ // padding as the target rectangle.
+ mCollapsedTitleBottomMargin = desiredTopToCenter - mLargeTextView.getHeight() / 2;
+ }
+
+ /**
+ * Interpolate the title's margin size. When {@param x}=1, use the maximum title margins.
+ * When {@param x}=0, use the margin values taken from {@link #mInvisiblePlaceholderTextView}.
+ */
+ private void setInterpolatedTitleMargin(float x) {
+ final FrameLayout.LayoutParams layoutParams
+ = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
+ layoutParams.bottomMargin = (int) (mCollapsedTitleBottomMargin * (1 - x)
+ + mMaximumTitleMargin * x) ;
+ layoutParams.setMarginStart((int) (mCollapsedTitleStartMargin * (1 - x)
+ + mMaximumTitleMargin * x));
+ mLargeTextView.setLayoutParams(layoutParams);
+ }
+
+ private void updatePhotoTintAndDropShadow() {
+ // Let's keep an eye on how long this method takes to complete. Right now, it takes ~0.2ms
+ // on a Nexus 5. If it starts to get much slower, there are a number of easy optimizations
+ // available.
+ Trace.beginSection("updatePhotoTintAndDropShadow");
+
+ // We need to use toolbarLayoutParams to determine the height, since the layout
+ // params can be updated before the height change is reflected inside the View#getHeight().
+ final int toolbarHeight = mToolbar.getLayoutParams().height;
+
+ if (toolbarHeight <= mMinimumHeaderHeight && !mIsTwoPanel) {
+ mPhotoViewContainer.setElevation(mToolbarElevation);
+ } else {
+ mPhotoViewContainer.setElevation(0);
+ }
+
+ // Reuse an existing mColorFilter (to avoid GC pauses) to change the photo's tint.
+ mPhotoView.clearColorFilter();
+
+ // Ratio of current size to maximum size of the header.
+ final float ratio;
+ // The value that "ratio" will have when the header is at its starting/intermediate size.
+ final float intermediateRatio = calculateHeightRatio((int)
+ (mMaximumPortraitHeaderHeight * INTERMEDIATE_HEADER_HEIGHT_RATIO));
+ if (!mIsTwoPanel) {
+ ratio = calculateHeightRatio(toolbarHeight);
+ } else {
+ // We want the ratio and intermediateRatio to have the *approximate* values
+ // they would have in portrait mode when at the intermediate position.
+ ratio = intermediateRatio;
+ }
+
+ final float linearBeforeMiddle = Math.max(1 - (1 - ratio) / intermediateRatio, 0);
+
+ // Want a function with a derivative of 0 at x=0. I don't want it to grow too
+ // slowly before x=0.5. x^1.1 satisfies both requirements.
+ final float EXPONENT_ALMOST_ONE = 1.1f;
+ final float semiLinearBeforeMiddle = (float) Math.pow(linearBeforeMiddle,
+ EXPONENT_ALMOST_ONE);
+ mColorMatrix.reset();
+ mColorMatrix.setSaturation(semiLinearBeforeMiddle);
+ mColorMatrix.postConcat(alphaMatrix(ratio, Color.WHITE));
+
+ final float colorAlpha;
+ if (mPhotoView.isBasedOffLetterTile()) {
+ // Since the letter tile only has white and grey, tint it more slowly. Otherwise
+ // it will be completely invisible before we reach the intermediate point. The values
+ // for TILE_EXPONENT and slowingFactor are chosen to achieve DESIRED_INTERMEDIATE_ALPHA
+ // at the intermediate/starting position.
+ final float DESIRED_INTERMEDIATE_ALPHA = 0.9f;
+ final float TILE_EXPONENT = 1.5f;
+ final float slowingFactor = (float) ((1 - intermediateRatio) / intermediateRatio
+ / (1 - Math.pow(1 - DESIRED_INTERMEDIATE_ALPHA, 1/TILE_EXPONENT)));
+ float linearBeforeMiddleish = Math.max(1 - (1 - ratio) / intermediateRatio
+ / slowingFactor, 0);
+ colorAlpha = 1 - (float) Math.pow(linearBeforeMiddleish, TILE_EXPONENT);
+ mColorMatrix.postConcat(alphaMatrix(colorAlpha, mHeaderTintColor));
+ } else {
+ colorAlpha = 1 - semiLinearBeforeMiddle;
+ mColorMatrix.postConcat(multiplyBlendMatrix(mHeaderTintColor, colorAlpha));
+ }
+
+ mColorFilter.setColorMatrix(mColorMatrix);
+ mPhotoView.setColorFilter(mColorFilter);
+ // Tell the photo view what tint we are trying to achieve. Depending on the type of
+ // drawable used, the photo view may or may not use this tint.
+ mPhotoView.setTint(mHeaderTintColor);
+
+ Trace.endSection();
+ }
+
+ private float calculateHeightRatio(int height) {
+ return (height - mMinimumPortraitHeaderHeight)
+ / (float) (mMaximumPortraitHeaderHeight - mMinimumPortraitHeaderHeight);
+ }
+
+ /**
+ * Simulates alpha blending an image with {@param color}.
+ */
+ private ColorMatrix alphaMatrix(float alpha, int color) {
+ mAlphaMatrixValues[0] = Color.red(color) * alpha / 255;
+ mAlphaMatrixValues[6] = Color.green(color) * alpha / 255;
+ mAlphaMatrixValues[12] = Color.blue(color) * alpha / 255;
+ mAlphaMatrixValues[4] = 255 * (1 - alpha);
+ mAlphaMatrixValues[9] = 255 * (1 - alpha);
+ mAlphaMatrixValues[14] = 255 * (1 - alpha);
+ mWhitenessColorMatrix.set(mAlphaMatrixValues);
+ return mWhitenessColorMatrix;
+ }
+
+ /**
+ * Simulates multiply blending an image with a single {@param color}.
+ *
+ * Multiply blending is [Sa * Da, Sc * Dc]. See {@link android.graphics.PorterDuff}.
+ */
+ private ColorMatrix multiplyBlendMatrix(int color, float alpha) {
+ mMultiplyBlendMatrixValues[0] = multiplyBlend(Color.red(color), alpha);
+ mMultiplyBlendMatrixValues[6] = multiplyBlend(Color.green(color), alpha);
+ mMultiplyBlendMatrixValues[12] = multiplyBlend(Color.blue(color), alpha);
+ mMultiplyBlendMatrix.set(mMultiplyBlendMatrixValues);
+ return mMultiplyBlendMatrix;
+ }
+
+ private float multiplyBlend(int color, float alpha) {
+ return color * alpha / 255.0f + (1 - alpha);
+ }
+
+ private void updateLastEventPosition(MotionEvent event) {
+ mLastEventPosition[0] = event.getX();
+ mLastEventPosition[1] = event.getY();
+ }
+
+ private boolean motionShouldStartDrag(MotionEvent event) {
+ final float deltaX = event.getX() - mLastEventPosition[0];
+ final float deltaY = event.getY() - mLastEventPosition[1];
+ final boolean draggedX = (deltaX > mTouchSlop || deltaX < -mTouchSlop);
+ final boolean draggedY = (deltaY > mTouchSlop || deltaY < -mTouchSlop);
+ return draggedY && !draggedX;
+ }
+
+ private float updatePositionAndComputeDelta(MotionEvent event) {
+ final int VERTICAL = 1;
+ final float position = mLastEventPosition[VERTICAL];
+ updateLastEventPosition(event);
+ return position - mLastEventPosition[VERTICAL];
+ }
+
+ private void smoothScrollBy(int delta) {
+ if (delta == 0) {
+ // Delta=0 implies the code calling smoothScrollBy is sloppy. We should avoid doing
+ // this, since it prevents Views from being able to register any clicks for 250ms.
+ throw new IllegalArgumentException("Smooth scrolling by delta=0 is "
+ + "pointless and harmful");
+ }
+ mScroller.startScroll(0, getScroll(), 0, delta);
+ invalidate();
+ }
+
+ /**
+ * Interpolator that enforces a specific starting velocity. This is useful to avoid a
+ * discontinuity between dragging speed and flinging speed.
+ *
+ * Similar to a {@link android.view.animation.AccelerateInterpolator} in the sense that
+ * getInterpolation() is a quadratic function.
+ */
+ private static class AcceleratingFlingInterpolator implements Interpolator {
+
+ private final float mStartingSpeedPixelsPerFrame;
+ private final float mDurationMs;
+ private final int mPixelsDelta;
+ private final float mNumberFrames;
+
+ public AcceleratingFlingInterpolator(int durationMs, float startingSpeedPixelsPerSecond,
+ int pixelsDelta) {
+ mStartingSpeedPixelsPerFrame = startingSpeedPixelsPerSecond / getRefreshRate();
+ mDurationMs = durationMs;
+ mPixelsDelta = pixelsDelta;
+ mNumberFrames = mDurationMs / getFrameIntervalMs();
+ }
+
+ @Override
+ public float getInterpolation(float input) {
+ final float animationIntervalNumber = mNumberFrames * input;
+ final float linearDelta = (animationIntervalNumber * mStartingSpeedPixelsPerFrame)
+ / mPixelsDelta;
+ // Add the results of a linear interpolator (with the initial speed) with the
+ // results of a AccelerateInterpolator.
+ if (mStartingSpeedPixelsPerFrame > 0) {
+ return Math.min(input * input + linearDelta, 1);
+ } else {
+ // Initial fling was in the wrong direction, make sure that the quadratic component
+ // grows faster in order to make up for this.
+ return Math.min(input * (input - linearDelta) + linearDelta, 1);
+ }
+ }
+
+ private float getRefreshRate() {
+ DisplayInfo di = DisplayManagerGlobal.getInstance().getDisplayInfo(
+ Display.DEFAULT_DISPLAY);
+ return di.refreshRate;
+ }
+
+ public long getFrameIntervalMs() {
+ return (long)(1000 / getRefreshRate());
+ }
+ }
+}
diff --git a/src/com/android/contacts/widget/QuickContactImageView.java b/src/com/android/contacts/widget/QuickContactImageView.java
new file mode 100644
index 0000000..987b27d
--- /dev/null
+++ b/src/com/android/contacts/widget/QuickContactImageView.java
@@ -0,0 +1,81 @@
+package com.android.contacts.widget;
+
+import com.android.contacts.common.lettertiles.LetterTileDrawable;
+
+import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+
+import com.android.contacts.R;
+
+/**
+ * An {@link ImageView} designed to display QuickContact's contact photo. When requested to draw
+ * {@link LetterTileDrawable}'s, this class instead draws a different default avatar drawable.
+ *
+ * In addition to supporting {@link ImageView#setColorFilter} this also supports a {@link #setTint}
+ * method.
+ *
+ * This entire class can be deleted once use of LetterTileDrawable is no longer used
+ * inside QuickContactsActivity at all.
+ */
+public class QuickContactImageView extends ImageView {
+
+ private Drawable mOriginalDrawable;
+
+ public QuickContactImageView(Context context) {
+ this(context, null);
+ }
+
+ public QuickContactImageView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public QuickContactImageView(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public QuickContactImageView(Context context, AttributeSet attrs, int defStyleAttr,
+ int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ public void setTint(int color) {
+ if (isBasedOffLetterTile()) {
+ setBackgroundColor(color);
+ } else {
+ setBackground(null);
+ }
+ postInvalidate();
+ }
+
+ public boolean isBasedOffLetterTile() {
+ return mOriginalDrawable instanceof LetterTileDrawable;
+ }
+
+ @Override
+ public void setImageDrawable(Drawable drawable) {
+ // There is no way to avoid all this casting. Blending modes aren't equally
+ // supported for all drawable types.
+ final BitmapDrawable bitmapDrawable;
+ if (drawable == null || drawable instanceof BitmapDrawable) {
+ bitmapDrawable = (BitmapDrawable) drawable;
+ setScaleType(ScaleType.CENTER_CROP);
+ } else if (drawable instanceof LetterTileDrawable) {
+ bitmapDrawable = (BitmapDrawable) getResources().getDrawable(
+ R.drawable.default_avatar_white);
+ setScaleType(ScaleType.CENTER);
+ } else {
+ throw new IllegalArgumentException("Does not support this type of drawable");
+
+ }
+ mOriginalDrawable = drawable;
+ super.setImageDrawable(bitmapDrawable);
+ }
+
+ @Override
+ public Drawable getDrawable() {
+ return mOriginalDrawable;
+ }
+}
diff --git a/src/com/android/contacts/widget/TextHighlightingAnimation.java b/src/com/android/contacts/widget/TextHighlightingAnimation.java
deleted file mode 100644
index d269276..0000000
--- a/src/com/android/contacts/widget/TextHighlightingAnimation.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-package com.android.contacts.widget;
-
-import android.database.CharArrayBuffer;
-import android.graphics.Color;
-import android.os.Handler;
-import android.text.TextPaint;
-import android.text.style.CharacterStyle;
-import android.view.animation.AccelerateInterpolator;
-import android.view.animation.DecelerateInterpolator;
-
-import com.android.contacts.common.format.FormatUtils;
-import com.android.internal.R;
-
-/**
- * An animation that alternately dims and brightens the non-highlighted portion of text.
- */
-public abstract class TextHighlightingAnimation implements Runnable, TextWithHighlightingFactory {
-
- private static final int MAX_ALPHA = 255;
- private static final int MIN_ALPHA = 50;
-
- private AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator();
- private DecelerateInterpolator DECELERATE_INTERPOLATOR = new DecelerateInterpolator();
-
- private final static DimmingSpan[] sEmptySpans = new DimmingSpan[0];
-
- /**
- * Frame rate expressed a number of millis between frames.
- */
- private static final long FRAME_RATE = 50;
-
- private DimmingSpan mDimmingSpan;
- private Handler mHandler;
- private boolean mAnimating;
- private boolean mDimming;
- private long mTargetTime;
- private final int mDuration;
-
- /**
- * A Spanned that highlights a part of text by dimming another part of that text.
- */
- public class TextWithHighlightingImpl implements TextWithHighlighting {
-
- private final DimmingSpan[] mSpans;
- private boolean mDimmingEnabled;
- private CharArrayBuffer mText;
- private int mDimmingSpanStart;
- private int mDimmingSpanEnd;
- private String mString;
-
- public TextWithHighlightingImpl() {
- mSpans = new DimmingSpan[] { mDimmingSpan };
- }
-
- public void setText(CharArrayBuffer baseText, CharArrayBuffer highlightedText) {
- mText = baseText;
-
- // TODO figure out a way to avoid string allocation
- mString = new String(mText.data, 0, mText.sizeCopied);
-
- int index = FormatUtils.overlapPoint(baseText, highlightedText);
-
- if (index == 0 || index == -1) {
- mDimmingEnabled = false;
- } else {
- mDimmingEnabled = true;
- mDimmingSpanStart = 0;
- mDimmingSpanEnd = index;
- }
- }
-
- @SuppressWarnings("unchecked")
- public <T> T[] getSpans(int start, int end, Class<T> type) {
- if (mDimmingEnabled) {
- return (T[])mSpans;
- } else {
- return (T[])sEmptySpans;
- }
- }
-
- public int getSpanStart(Object tag) {
- // We only have one span - no need to check the tag parameter
- return mDimmingSpanStart;
- }
-
- public int getSpanEnd(Object tag) {
- // We only have one span - no need to check the tag parameter
- return mDimmingSpanEnd;
- }
-
- public int getSpanFlags(Object tag) {
- // String is immutable - flags not needed
- return 0;
- }
-
- public int nextSpanTransition(int start, int limit, Class type) {
- // Never called since we only have one span
- return 0;
- }
-
- public char charAt(int index) {
- return mText.data[index];
- }
-
- public int length() {
- return mText.sizeCopied;
- }
-
- public CharSequence subSequence(int start, int end) {
- // Never called - implementing for completeness
- return new String(mText.data, start, end);
- }
-
- @Override
- public String toString() {
- return mString;
- }
- }
-
- /**
- * A Span that modifies alpha of the default foreground color.
- */
- private static class DimmingSpan extends CharacterStyle {
- private int mAlpha;
-
- public void setAlpha(int alpha) {
- mAlpha = alpha;
- }
-
- @Override
- public void updateDrawState(TextPaint ds) {
-
- // Only dim the text in the basic state; not selected, focused or pressed
- int[] states = ds.drawableState;
- if (states != null) {
- int count = states.length;
- for (int i = 0; i < count; i++) {
- switch (states[i]) {
- case R.attr.state_pressed:
- case R.attr.state_selected:
- case R.attr.state_focused:
- // We can simply return, because the supplied text
- // paint is already configured with defaults.
- return;
- }
- }
- }
-
- int color = ds.getColor();
- color = Color.argb(mAlpha, Color.red(color), Color.green(color), Color.blue(color));
- ds.setColor(color);
- }
- }
-
- /**
- * Constructor.
- */
- public TextHighlightingAnimation(int duration) {
- mDuration = duration;
- mHandler = new Handler();
- mDimmingSpan = new DimmingSpan();
- mDimmingSpan.setAlpha(MAX_ALPHA);
- }
-
- /**
- * Returns a Spanned that can be used by a text view to show text with highlighting.
- */
- public TextWithHighlightingImpl createTextWithHighlighting() {
- return new TextWithHighlightingImpl();
- }
-
- /**
- * Override and invalidate (redraw) TextViews showing {@link TextWithHighlightingImpl}.
- */
- protected abstract void invalidate();
-
- /**
- * Starts the highlighting animation, which will dim portions of text.
- */
- public void startHighlighting() {
- startAnimation(true);
- }
-
- /**
- * Starts un-highlighting animation, which will brighten the dimmed portions of text
- * to the brightness level of the rest of text.
- */
- public void stopHighlighting() {
- startAnimation(false);
- }
-
- /**
- * Called when the animation starts.
- */
- protected void onAnimationStarted() {
- }
-
- /**
- * Called when the animation has stopped.
- */
- protected void onAnimationEnded() {
- }
-
- private void startAnimation(boolean dim) {
- if (mDimming != dim) {
- mDimming = dim;
- long now = System.currentTimeMillis();
- if (!mAnimating) {
- mAnimating = true;
- mTargetTime = now + mDuration;
- onAnimationStarted();
- mHandler.post(this);
- } else {
-
- // If we have started dimming, reverse the direction and adjust the target
- // time accordingly.
- mTargetTime = (now + mDuration) - (mTargetTime - now);
- }
- }
- }
-
- /**
- * Animation step.
- */
- public void run() {
- long now = System.currentTimeMillis();
- long timeLeft = mTargetTime - now;
- if (timeLeft < 0) {
- mDimmingSpan.setAlpha(mDimming ? MIN_ALPHA : MAX_ALPHA);
- mAnimating = false;
- onAnimationEnded();
- return;
- }
-
- // Start=1, end=0
- float virtualTime = (float)timeLeft / mDuration;
- if (mDimming) {
- float interpolatedTime = DECELERATE_INTERPOLATOR.getInterpolation(virtualTime);
- mDimmingSpan.setAlpha((int)(MIN_ALPHA + (MAX_ALPHA-MIN_ALPHA) * interpolatedTime));
- } else {
- float interpolatedTime = ACCELERATE_INTERPOLATOR.getInterpolation(virtualTime);
- mDimmingSpan.setAlpha((int)(MIN_ALPHA + (MAX_ALPHA-MIN_ALPHA) * (1-interpolatedTime)));
- }
-
- invalidate();
-
- // Repeat
- mHandler.postDelayed(this, FRAME_RATE);
- }
-}
diff --git a/src/com/android/contacts/widget/TextWithHighlighting.java b/src/com/android/contacts/widget/TextWithHighlighting.java
deleted file mode 100644
index 3a32b02..0000000
--- a/src/com/android/contacts/widget/TextWithHighlighting.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-package com.android.contacts.widget;
-
-import android.database.CharArrayBuffer;
-import android.text.Spanned;
-
-/**
- * A Spanned that highlights a part of text by dimming another part of that text.
- */
-public interface TextWithHighlighting extends Spanned {
- void setText(CharArrayBuffer baseText, CharArrayBuffer highlightedText);
-}
diff --git a/src/com/android/contacts/widget/TextWithHighlightingFactory.java b/src/com/android/contacts/widget/TextWithHighlightingFactory.java
deleted file mode 100644
index ee5744d..0000000
--- a/src/com/android/contacts/widget/TextWithHighlightingFactory.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- */
-package com.android.contacts.widget;
-
-/**
- * A factory for text fields with animated highlighting.
- */
-public interface TextWithHighlightingFactory {
- TextWithHighlighting createTextWithHighlighting();
-}
diff --git a/src/com/android/contacts/widget/TouchlessScrollView.java b/src/com/android/contacts/widget/TouchlessScrollView.java
new file mode 100644
index 0000000..693dcbc
--- /dev/null
+++ b/src/com/android/contacts/widget/TouchlessScrollView.java
@@ -0,0 +1,43 @@
+package com.android.contacts.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.widget.ScrollView;
+
+/**
+ * A {@link ScrollView} that doesn't respond or intercept touch events.
+ *
+ * This is used in combination with {@link com.android.contacts.widget.MultiShrinkScroller} so
+ * that MultiShrinkScroller can handle all scrolling.
+ */
+public class TouchlessScrollView extends ScrollView {
+
+ public TouchlessScrollView(Context context) {
+ this(context, null);
+ }
+
+ public TouchlessScrollView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public TouchlessScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 7a7df01..46e7ac3 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -76,16 +76,6 @@
</intent-filter>
</activity>
- <activity android:name=".streamitems.StreamItemPopulatorActivity"
- android:label="@string/streamItemPopulator"
- >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
<!--
Test authenticators/sync adapters.
diff --git a/tests/res/layout/stream_item_populator.xml b/tests/res/layout/stream_item_populator.xml
deleted file mode 100644
index acc46bf..0000000
--- a/tests/res/layout/stream_item_populator.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
->
- <Button
- android:id="@+id/add"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/chooseAContactButton"
- android:layout_marginBottom="50px"
- />
- <Button
- android:id="@+id/exit"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/exitButton"
- />
-</LinearLayout>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index b3f3ee7..44283ff 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -97,10 +97,7 @@
<string name="useRandomNumbers">Use random numbers</string>
<string name="addedLogEntriesToast">Added %1$d call log entries.</string>
<string name="noLogEntriesToast">No entries in the call log yet. Need at least one record for the template. Or use random numbers.</string>
-
- <string name="chooseAContactButton">Choose a contact to add stream items to</string>
<string name="exitButton">Exit</string>
- <string name="streamItemPopulator">Populate stream items</string>
<string-array name="pinnedHeaderUseCases">
<item>One short section - no headers</item>
diff --git a/tests/src/com/android/contacts/activities/PeopleActivityTest.java b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
index d882da7..4b9c281 100644
--- a/tests/src/com/android/contacts/activities/PeopleActivityTest.java
+++ b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
@@ -16,6 +16,7 @@
package com.android.contacts.activities;
+import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Intent;
import android.content.Loader;
@@ -35,6 +36,7 @@
import com.android.contacts.ContactsApplication;
import com.android.contacts.R;
import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.testing.InjectedServices;
import com.android.contacts.common.test.mocks.ContactsMockContext;
import com.android.contacts.common.test.mocks.MockContentProvider;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
@@ -45,7 +47,6 @@
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.model.account.BaseAccountType;
-import com.android.contacts.common.test.InjectedServices;
import com.android.contacts.common.test.mocks.MockAccountTypeManager;
import com.android.contacts.common.test.mocks.MockContactPhotoManager;
import com.android.contacts.common.test.mocks.MockSharedPreferences;
@@ -88,6 +89,10 @@
public void setUp() {
mContext = new ContactsMockContext(getInstrumentation().getTargetContext());
mContactsProvider = mContext.getContactsProvider();
+ // The ContactsApplication performs this getType query to warm up the provider - see
+ // ContactsApplication#DelayedInitialization.doInBackground
+ mContactsProvider.expectTypeQuery(ContentUris.withAppendedId(Contacts.CONTENT_URI, 1),
+ Contacts.CONTENT_ITEM_TYPE);
mSettingsProvider = mContext.getSettingsProvider();
InjectedServices services = new InjectedServices();
services.setContentResolver(mContext.getContentResolver());
@@ -116,49 +121,6 @@
super.tearDown();
}
- public void testSingleAccountNoGroups() {
-
- if (true) { // Need this to avoid "unreachable statement"
- return; // Disabled for now.
- }
-
- // This two-pane UI test only makes sense if we run with two panes.
- // Let's ignore this in the single pane case
- if (!PhoneCapabilityTester.isUsingTwoPanes(mContext)) return;
-
- expectSettingsQueriesAndReturnDefault();
- expectProviderStatusQueryAndReturnNormal();
- expectGroupsQueryAndReturnEmpty();
- expectContactListQuery(100);
- expectContactLookupQuery("lu1", 1, "lu1", 1);
- expectContactEntityQuery("lu1", 1);
-
- setActivityIntent(new Intent(Intent.ACTION_DEFAULT));
-
- PeopleActivity activity = getActivity();
-
- getInstrumentation().waitForIdleSync();
-
- ContactBrowseListFragment listFragment = activity.getListFragment();
- ContactDetailFragment detailFragment = activity.getDetailFragment();
-
- Loader<?> filterLoader =
- activity.getLoaderManager().getLoader(R.id.contact_list_filter_loader);
- Loader<?> listLoader =
- listFragment.getLoaderManager().getLoader(0);
-
- // TODO: wait for detail loader
- // TODO: wait for lookup key loading
- TestLoaderManager.waitForLoaders(filterLoader, listLoader);
-
- getInstrumentation().waitForIdleSync();
-
- mContext.verify();
-
- TextView nameText = (TextView) detailFragment.getView().findViewById(R.id.name);
- assertEquals("Contact 1", nameText.getText());
- }
-
private void expectSettingsQueriesAndReturnDefault() {
mSettingsProvider
.expectQuery(Settings.System.CONTENT_URI)
diff --git a/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java b/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java
deleted file mode 100644
index 07b3691..0000000
--- a/tests/src/com/android/contacts/detail/ContactDetailDisplayUtilsTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.detail;
-
-import android.content.Context;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.text.Html;
-import android.text.Spanned;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.util.StreamItemEntry;
-import com.android.contacts.util.StreamItemEntryBuilder;
-
-/**
- * Unit tests for {@link ContactDetailDisplayUtils}.
- */
-@SmallTest
-public class ContactDetailDisplayUtilsTest extends AndroidTestCase {
- private static final String TEST_STREAM_ITEM_TEXT = "text";
-
- private LayoutInflater mLayoutInflater;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mLayoutInflater =
- (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testAddStreamItemText_IncludesComments() {
- StreamItemEntry streamItem = getTestBuilder().setComment("1 comment").build(getContext());
- View streamItemView = addStreamItemText(streamItem);
- assertHasText(streamItemView, R.id.stream_item_comments, "1 comment");
- }
-
- public void testAddStreamItemText_IncludesHtmlComments() {
- StreamItemEntry streamItem = getTestBuilder().setComment("1 <b>comment</b>")
- .build(getContext());
- View streamItemView = addStreamItemText(streamItem);
- assertHasHtmlText(streamItemView, R.id.stream_item_comments, "1 <b>comment<b>");
- }
-
- public void testAddStreamItemText_NoComments() {
- StreamItemEntry streamItem = getTestBuilder().setComment(null).build(getContext());
- View streamItemView = addStreamItemText(streamItem);
- assertGone(streamItemView, R.id.stream_item_comments);
- }
-
- /** Checks that the given id corresponds to a visible text view with the expected text. */
- private void assertHasText(View parent, int textViewId, String expectedText) {
- TextView textView = (TextView) parent.findViewById(textViewId);
- assertNotNull(textView);
- assertEquals(View.VISIBLE, textView.getVisibility());
- assertEquals(expectedText, textView.getText().toString());
- }
-
- /** Checks that the given id corresponds to a visible text view with the expected HTML. */
- private void assertHasHtmlText(View parent, int textViewId, String expectedHtml) {
- TextView textView = (TextView) parent.findViewById(textViewId);
- assertNotNull(textView);
- assertEquals(View.VISIBLE, textView.getVisibility());
- assertSpannableEquals(Html.fromHtml(expectedHtml), textView.getText());
- }
-
- /**
- * Asserts that a char sequence is actually a {@link Spanned} matching the one expected.
- */
- private void assertSpannableEquals(Spanned expected, CharSequence actualCharSequence) {
- assertEquals(expected.toString(), actualCharSequence.toString());
- assertTrue("char sequence should be an instance of Spanned",
- actualCharSequence instanceof Spanned);
- Spanned actual = (Spanned) actualCharSequence;
- assertEquals(Html.toHtml(expected), Html.toHtml(actual));
- }
-
- /** Checks that the given id corresponds to a gone view. */
- private void assertGone(View parent, int textId) {
- View view = parent.findViewById(textId);
- assertNotNull(view);
- assertEquals(View.GONE, view.getVisibility());
- }
-
- /**
- * Calls {@link ContactDetailDisplayUtils#addStreamItemText(LayoutInflater, Context,
- * StreamItemEntry, View)} with the default parameters and the given stream item.
- */
- private View addStreamItemText(StreamItemEntry streamItem) {
- return ContactDetailDisplayUtils.addStreamItemText(getContext(), streamItem,
- mLayoutInflater.inflate(R.layout.stream_item_container, null));
- }
-
- private StreamItemEntryBuilder getTestBuilder() {
- return new StreamItemEntryBuilder().setText(TEST_STREAM_ITEM_TEXT);
- }
-}
diff --git a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java b/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
deleted file mode 100644
index abd4680..0000000
--- a/tests/src/com/android/contacts/detail/StreamItemAdapterTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2011 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
- */
-
-package com.android.contacts.detail;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.View;
-
-import com.android.contacts.util.StreamItemEntry;
-import com.android.contacts.util.StreamItemEntryBuilder;
-
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-
-// TODO: We should have tests for action, but that requires a mock sync-adapter that specifies
-// an action or doesn't
-
-// TODO Add test for photo click
-
-/**
- * Unit tests for {@link StreamItemAdapter}.
- */
-@SmallTest
-public class StreamItemAdapterTest extends AndroidTestCase {
- private StreamItemAdapter mAdapter;
- private FakeOnClickListener mListener;
- private FakeOnClickListener mPhotoListener;
- private View mView;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mListener = new FakeOnClickListener();
- mAdapter = new StreamItemAdapter(getContext(), mListener, mPhotoListener);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mAdapter = null;
- mListener = null;
- super.tearDown();
- }
-
- public void testGetCount_Empty() {
- mAdapter.setStreamItems(createStreamItemList(0));
- // The header and title are gone when there are no stream items.
- assertEquals(0, mAdapter.getCount());
- }
-
- public void testGetCount_NonEmpty() {
- mAdapter.setStreamItems(createStreamItemList(3));
- // There is one extra view: the header.
- assertEquals(4, mAdapter.getCount());
- }
-
- public void testGetView_Header() {
- // Just check that we can inflate it correctly.
- mView = mAdapter.getView(0, null, null);
- }
-
- /** Counter used by {@link #createStreamItemEntryBuilder()} to create unique builders. */
- private int mCreateStreamItemEntryBuilderCounter = 0;
-
- /** Returns a stream item builder with basic information in it. */
- private StreamItemEntryBuilder createStreamItemEntryBuilder() {
- return new StreamItemEntryBuilder().setText(
- "text #" + mCreateStreamItemEntryBuilderCounter++);
- }
-
- /** Creates a list containing the given number of {@link StreamItemEntry}s. */
- private ArrayList<StreamItemEntry> createStreamItemList(int count) {
- ArrayList<StreamItemEntry> list = Lists.newArrayList();
- for (int index = 0; index < count; ++index) {
- list.add(createStreamItemEntryBuilder().build(getContext()));
- }
- return list;
- }
-
- /** Checks that the stream item view has a click listener. */
- private void assertStreamItemViewHasOnClickListener() {
- assertFalse("listener should have not been invoked yet", mListener.clicked);
- mView.performClick();
- assertTrue("listener should have been invoked", mListener.clicked);
- }
-
- /** Checks that the stream item view does not have a click listener. */
- private void assertStreamItemViewHasNoOnClickListener() {
- assertFalse("listener should have not been invoked yet", mListener.clicked);
- mView.performClick();
- assertFalse("listener should have not been invoked", mListener.clicked);
- }
-
- /** Checks that the stream item view is clickable. */
- private void assertStreamItemViewFocusable() {
- assertNotNull("should have a stream item", mView);
- assertTrue("should be focusable", mView.isFocusable());
- }
-
- /** Asserts that there is a stream item but it is not clickable. */
- private void assertStreamItemViewNotFocusable() {
- assertNotNull("should have a stream item", mView);
- assertFalse("should not be focusable", mView.isFocusable());
- }
-
- /** Checks that the stream item view has the given stream item as its tag. */
- private void assertStreamItemViewHasTag(StreamItemEntry streamItem) {
- Object tag = mView.getTag();
- assertNotNull("should have a tag", tag);
- assertTrue("should be a StreamItemEntry", tag instanceof StreamItemEntry);
- StreamItemEntry streamItemTag = (StreamItemEntry) tag;
- // The streamItem itself should be in the tag.
- assertSame(streamItem, streamItemTag);
- }
-
- /** Checks that the stream item view has the given stream item as its tag. */
- private void assertStreamItemViewHasNoTag() {
- Object tag = mView.getTag();
- assertNull("should not have a tag", tag);
- }
-
- /**
- * Simple fake implementation of {@link View.OnClickListener} which sets a member variable to
- * true when clicked.
- */
- private final class FakeOnClickListener implements View.OnClickListener {
- public boolean clicked = false;
-
- @Override
- public void onClick(View view) {
- clicked = true;
- }
- }
-}
diff --git a/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java b/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java
deleted file mode 100644
index 9dbd364..0000000
--- a/tests/src/com/android/contacts/format/TestTextWithHighlightingFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.format;
-
-import android.database.CharArrayBuffer;
-import android.graphics.Typeface;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.text.SpannableStringBuilder;
-import android.text.style.StyleSpan;
-
-import com.android.contacts.widget.TextWithHighlighting;
-import com.android.contacts.widget.TextWithHighlightingFactory;
-
-/** A factory for {@link TextWithHighlighting} that wraps its parts in italics. */
-@SmallTest
-public final class TestTextWithHighlightingFactory implements TextWithHighlightingFactory {
- /** A {@link TextWithHighlighting} implementation that wraps its parts in italics. */
- private final static class TestTextWithHighlighting extends SpannableStringBuilder
- implements TextWithHighlighting {
- @Override
- public void setText(CharArrayBuffer baseText, CharArrayBuffer highlightedText) {
- append(new String(baseText.data, 0, baseText.sizeCopied));
- append(' ');
- append(new String(highlightedText.data, 0, highlightedText.sizeCopied));
- setSpan(new StyleSpan(Typeface.ITALIC), 0, baseText.sizeCopied, 0);
- setSpan(new StyleSpan(Typeface.ITALIC), baseText.sizeCopied + 1,
- baseText.sizeCopied + 1 + highlightedText.sizeCopied, 0);
- }
- }
-
- @Override
- public TextWithHighlighting createTextWithHighlighting() {
- return new TestTextWithHighlighting();
- }
-}
diff --git a/tests/src/com/android/contacts/interactions/CallLogInteractionsLoaderTest.java b/tests/src/com/android/contacts/interactions/CallLogInteractionsLoaderTest.java
new file mode 100644
index 0000000..079411f
--- /dev/null
+++ b/tests/src/com/android/contacts/interactions/CallLogInteractionsLoaderTest.java
@@ -0,0 +1,65 @@
+package com.android.contacts.interactions;
+
+import android.content.ContentValues;
+import android.provider.CallLog.Calls;
+import android.test.AndroidTestCase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests {@link CallLogInteractionsLoader}
+ */
+public class CallLogInteractionsLoaderTest extends AndroidTestCase {
+
+ public void testCallLogInteractions_pruneDuplicates_containsDuplicates() {
+ List<ContactInteraction> interactions = new ArrayList<>();
+ int maxToRetrieve = 5;
+
+ ContentValues interactionOneValues = new ContentValues();
+ interactionOneValues.put(Calls.DATE, 1L);
+ interactions.add(new CallLogInteraction(interactionOneValues));
+
+ ContentValues interactionTwoValues = new ContentValues();
+ interactionTwoValues.put(Calls.DATE, 1L);
+ interactions.add(new CallLogInteraction(interactionTwoValues));
+
+ interactions = CallLogInteractionsLoader.pruneDuplicateCallLogInteractions(interactions,
+ maxToRetrieve);
+ assertEquals(1, interactions.size());
+ }
+
+ public void testCallLogInteractions_pruneDuplicates_containsNoDuplicates() {
+ List<ContactInteraction> interactions = new ArrayList<>();
+ int maxToRetrieve = 5;
+
+ ContentValues interactionOneValues = new ContentValues();
+ interactionOneValues.put(Calls.DATE, 1L);
+ interactions.add(new CallLogInteraction(interactionOneValues));
+
+ ContentValues interactionTwoValues = new ContentValues();
+ interactionTwoValues.put(Calls.DATE, 5L);
+ interactions.add(new CallLogInteraction(interactionTwoValues));
+
+ interactions = CallLogInteractionsLoader.pruneDuplicateCallLogInteractions(interactions,
+ maxToRetrieve);
+ assertEquals(2, interactions.size());
+ }
+
+ public void testCallLogInteractions_maxToRetrieve() {
+ List<ContactInteraction> interactions = new ArrayList<>();
+ int maxToRetrieve = 1;
+
+ ContentValues interactionOneValues = new ContentValues();
+ interactionOneValues.put(Calls.DATE, 1L);
+ interactions.add(new CallLogInteraction(interactionOneValues));
+
+ ContentValues interactionTwoValues = new ContentValues();
+ interactionTwoValues.put(Calls.DATE, 5L);
+ interactions.add(new CallLogInteraction(interactionTwoValues));
+
+ interactions = CallLogInteractionsLoader.pruneDuplicateCallLogInteractions(interactions,
+ maxToRetrieve);
+ assertEquals(1, interactions.size());
+ }
+}
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index bcaa398..5932c87 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -34,7 +34,7 @@
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.BaseAccountType;
-import com.android.contacts.common.test.InjectedServices;
+import com.android.contacts.common.testing.InjectedServices;
import com.android.contacts.common.test.mocks.MockAccountTypeManager;
/**
diff --git a/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java b/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java
new file mode 100644
index 0000000..4802b46
--- /dev/null
+++ b/tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.contacts.interactions;
+
+import com.android.contacts.common.R;
+
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.text.format.DateUtils;
+
+import java.util.Calendar;
+import java.util.Locale;
+
+/**
+ * Tests for utility functions in {@link ContactInteractionUtil}
+ */
+public class ContactInteractionUtilTest extends AndroidTestCase {
+
+ private Locale mOriginalLocale;
+ private Calendar calendar;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ calendar = Calendar.getInstance();
+
+ // Time/Date utilities rely on specific locales. Forace US and set back in tearDown()
+ mOriginalLocale = Locale.getDefault();
+ setLocale(Locale.US);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ setLocale(mOriginalLocale);
+ super.tearDown();
+ }
+
+ public void testOneQuestionMark() {
+ assertEquals("(?)", ContactInteractionUtil.questionMarks(1));
+ }
+
+ public void testTwoQuestionMarks() {
+ assertEquals("(?,?)", ContactInteractionUtil.questionMarks(2));
+ }
+
+ public void testFiveQuestionMarks() {
+ assertEquals("(?,?,?,?,?)", ContactInteractionUtil.questionMarks(5));
+ }
+
+ public void testFormatDateStringFromTimestamp_todaySingleMinuteAm() {
+ // Test today scenario (time shown)
+ // Single digit minute & AM
+ calendar.set(Calendar.HOUR_OF_DAY, 8);
+ calendar.set(Calendar.MINUTE, 8);
+ long todayTimestamp = calendar.getTimeInMillis();
+ assertEquals("8:08 AM", ContactInteractionUtil.formatDateStringFromTimestamp(
+ calendar.getTimeInMillis(), getContext()));
+ }
+
+ public void testFormatDateStringFromTimestamp_todayDoubleMinutePm() {
+ // Double digit minute & PM
+ calendar.set(Calendar.HOUR_OF_DAY, 22);
+ calendar.set(Calendar.MINUTE, 18);
+ assertEquals("10:18 PM",
+ ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(),
+ getContext()));
+ }
+
+ public void testFormatDateStringFromTimestamp_yesterday() {
+ // Test yesterday and tomorrow (Yesterday or Tomorrow shown)
+ calendar.add(Calendar.DAY_OF_YEAR, -1);
+ assertEquals(getContext().getResources().getString(R.string.yesterday),
+ ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(),
+ getContext()));
+ }
+
+ public void testFormatDateStringFromTimestamp_yesterdayLastYear() {
+ // Set to non leap year
+ calendar.set(Calendar.YEAR, 1999);
+ calendar.set(Calendar.DAY_OF_YEAR, 365);
+ long lastYear = calendar.getTimeInMillis();
+ calendar.add(Calendar.DAY_OF_YEAR, 1);
+
+ assertEquals(getContext().getResources().getString(R.string.yesterday),
+ ContactInteractionUtil.formatDateStringFromTimestamp(lastYear,
+ getContext(), calendar));
+ }
+
+ public void testFormatDateStringFromTimestamp_tomorrow() {
+ calendar.add(Calendar.DAY_OF_YEAR, 1);
+ assertEquals(getContext().getResources().getString(R.string.tomorrow),
+ ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(),
+ getContext()));
+ }
+
+ public void testFormatDateStringFromTimestamp_tomorrowNewYear() {
+ calendar.set(Calendar.DAY_OF_YEAR, 1);
+ long thisYear = calendar.getTimeInMillis();
+ calendar.add(Calendar.DAY_OF_YEAR, -1);
+
+ assertEquals(getContext().getResources().getString(R.string.tomorrow),
+ ContactInteractionUtil.formatDateStringFromTimestamp(thisYear,
+ getContext(), calendar));
+ }
+
+ public void testFormatDateStringFromTimestamp_other() {
+ // Test other (Month Date)
+ calendar.set(
+ /* year = */ 1991,
+ /* month = */ Calendar.MONTH,
+ /* day = */ 11);
+ assertEquals("March 11",
+ ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(),
+ getContext()));
+ }
+
+ private void setLocale(Locale locale) {
+ Locale.setDefault(locale);
+ Resources res = getContext().getResources();
+ Configuration config = res.getConfiguration();
+ config.locale = locale;
+ res.updateConfiguration(config, res.getDisplayMetrics());
+ }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java b/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java
deleted file mode 100644
index 9132e40..0000000
--- a/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.tests.streamitems;
-
-import android.app.Activity;
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.RawContacts;
-import android.provider.ContactsContract.StreamItemPhotos;
-import android.provider.ContactsContract.StreamItems;
-import android.view.View;
-import android.widget.Button;
-import android.widget.Toast;
-
-import com.android.contacts.common.model.account.GoogleAccountType;
-import com.android.contacts.tests.R;
-import com.google.common.collect.Lists;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Random;
-
-/**
- * Testing activity that will populate stream items and stream item photos to selected
- * entries in the user's contacts list.
- *
- * The contact selected must have at least one raw contact that was provided by Google.
- */
-public class StreamItemPopulatorActivity extends Activity {
-
- // Test data to randomly select from.
- private String[] snippetStrings = new String[]{
- "Just got back from a vacation in %1$s - what a great place! Can't wait to go back.",
- "If I never see %1$s again it will be too soon.",
- "This is a public service announcement. If you were even close to considering visiting"
- + " %1$s, I strongly advise you to reconsider. The food was terrible, the people were "
- + "rude, the hygiene of the bus and taxi drivers was positively <i>barbaric</i>. I "
- + "feared for my life almost the entire time I was there, and feel lucky to be back "
- + "<b>home</b>.",
- "Check out these pictures! I took them in %1$s"
- };
-
- private String[] placeNames = new String[]{
- "the Google campus in Mountain View",
- "the deserts on Arrakis",
- "Iceland",
- "Japan",
- "Sydney",
- "San Francisco",
- "Munich",
- "Istanbul",
- "Tanagra",
- "the restricted section of Area 51",
- "the middle of nowhere"
- };
-
- private String[] commentStrings = new String[]{
- "3 retweets",
- "5 shares",
- "4 likes",
- "4 +1s",
- "<i>24567</i> <font color='blue' size='+1'><b>likes</b></font>"
- };
-
- private String[] labelResources = new String[] {
- "attribution_google_plus",
- "attribution_google_talk",
- "attribution_flicker",
- "attribution_twitter"
- };
-
- public String[] iconResources = new String[] {
- "default_icon"
- };
-
- // Photos to randomly select from.
- private Integer[] imageIds = new Integer[]{
- R.drawable.android,
- R.drawable.goldengate,
- R.drawable.iceland,
- R.drawable.japan,
- R.drawable.sydney,
- R.drawable.wharf,
- R.drawable.whiskey
- };
-
- // Only some photos have actions.
- private String[] imageStrings = new String[]{
- "android",
- "goldengate",
- "iceland",
- "japan",
- };
-
- // The contact ID that was picked.
- private long mContactId = -1;
-
- private Random mRandom;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mRandom = new Random(System.currentTimeMillis());
-
- setContentView(R.layout.stream_item_populator);
- Button pickButton = (Button) findViewById(R.id.add);
- pickButton.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v) {
- // Reset the contact ID.
- mContactId = -1;
-
- // Forward the Intent to the picker
- final Intent pickerIntent =
- new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
- pickerIntent.setFlags(
- Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivityForResult(pickerIntent, 0);
- }
- });
-
- Button exitButton = (Button) findViewById(R.id.exit);
- exitButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode == Activity.RESULT_OK) {
- Uri contactUri = data.getData();
- mContactId = ContentUris.parseId(contactUri);
- }
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- if (mContactId != -1) {
- long rawContactId = -1;
- String accountType = null;
- String accountName = null;
- String dataSet = null;
-
- // Lookup the com.google raw contact for the contact.
- Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
- new String[]{
- RawContacts._ID,
- RawContacts.ACCOUNT_TYPE,
- RawContacts.ACCOUNT_NAME
- },
- RawContacts.CONTACT_ID + "=? AND " + RawContacts.ACCOUNT_TYPE + "=?",
- new String[]{String.valueOf(mContactId), GoogleAccountType.ACCOUNT_TYPE}, null);
- try {
- c.moveToFirst();
- rawContactId = c.getLong(0);
- accountType = c.getString(1);
- accountName = c.getString(2);
- } finally {
- c.close();
- }
- if (rawContactId != -1) {
- addStreamItemsToRawContact(rawContactId, accountType, accountName);
- } else {
- Toast.makeText(this,
- "Failed to find raw contact ID for contact ID " + mContactId, 5).show();
- }
- }
- }
-
- protected byte[] loadPhotoFromResource(int resourceId) {
- InputStream is = getResources().openRawResource(resourceId);
- return readInputStreamFully(is);
- }
-
- protected byte[] readInputStreamFully(InputStream is) {
- try {
- byte[] buffer = new byte[is.available()];
- is.read(buffer);
- is.close();
- return buffer;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private void addStreamItemsToRawContact(long rawContactId, String accountType,
- String accountName) {
- ArrayList<ContentProviderOperation> ops = Lists.newArrayList();
-
- // Add from 1-5 stream items.
- int itemsToAdd = randInt(5) + 1;
- int opCount = 0;
- for (int i = 0; i < itemsToAdd; i++) {
- ContentValues streamItemValues = buildStreamItemValues(accountType, accountName);
- ops.add(ContentProviderOperation.newInsert(
- Uri.withAppendedPath(
- ContentUris.withAppendedId(ContactsContract.RawContacts.CONTENT_URI,
- rawContactId),
- ContactsContract.RawContacts.StreamItems.CONTENT_DIRECTORY))
- .withValues(streamItemValues).build());
-
- // Maybe add photos - 30% chance per stream item.
- boolean includePhotos = randInt(100) < 30;
- if (includePhotos) {
- // Add 1-5 photos if we're including any.
- int numPhotos = randInt(5) + 1;
- for (int j = 0; j < numPhotos; j++) {
- ContentValues streamItemPhotoValues =
- buildStreamItemPhotoValues(j, accountType, accountName);
- ops.add(ContentProviderOperation.newInsert(StreamItems.CONTENT_PHOTO_URI)
- .withValues(streamItemPhotoValues)
- .withValueBackReference(StreamItemPhotos.STREAM_ITEM_ID, opCount)
- .build());
- }
- opCount += numPhotos;
- }
- opCount++;
- }
- try {
- getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
- } catch (Exception e) {
- // We don't care. This is just for test purposes.
- throw new RuntimeException(e);
- }
- Toast.makeText(this, "Added " + itemsToAdd + " stream item(s) and "
- + (opCount - itemsToAdd) + " photos", 5).show();
- }
-
- private ContentValues buildStreamItemValues(String accountType, String accountName) {
- boolean includeAttribution = randInt(100) < 70;
- boolean includeComments = randInt(100) < 30;
- boolean includeAction = randInt(100) < 30;
- ContentValues values = new ContentValues();
- String place = pickRandom(placeNames);
- values.put(StreamItems.TEXT,
- String.format(pickRandom(snippetStrings) , place)
- + (includeComments ? " [c]" : "")
- + (includeAction ? " [a]" : ""));
- if (includeAttribution) {
- values.put(StreamItems.RES_PACKAGE, "com.android.contacts.tests");
- int sourceIndex = randInt(labelResources.length);
- values.put(StreamItems.RES_LABEL, labelResources[sourceIndex]);
- if (sourceIndex < iconResources.length) {
- values.put(StreamItems.RES_ICON, iconResources[sourceIndex]);
- }
- }
- if (includeComments) {
- values.put(StreamItems.COMMENTS, pickRandom(commentStrings));
- } else {
- values.put(StreamItems.COMMENTS, "");
- }
- // Set the timestamp to some point in the past.
- values.put(StreamItems.TIMESTAMP,
- System.currentTimeMillis() - randInt(360000000));
- values.put(RawContacts.ACCOUNT_TYPE, accountType);
- values.put(RawContacts.ACCOUNT_NAME, accountName);
- return values;
- }
-
- private ContentValues buildStreamItemPhotoValues(int index, String accountType,
- String accountName) {
- Integer imageIndex = pickRandom(imageIds);
- ContentValues values = new ContentValues();
- values.put(StreamItemPhotos.SORT_INDEX, index);
- values.put(StreamItemPhotos.PHOTO, loadPhotoFromResource(imageIndex));
- values.put(RawContacts.ACCOUNT_TYPE, accountType);
- values.put(RawContacts.ACCOUNT_NAME, accountName);
- return values;
- }
-
- private <T> T pickRandom(T[] from) {
- return from[randInt(from.length)];
- }
-
- private int randInt(int max) {
- return Math.abs(mRandom.nextInt()) % max;
- }
-}
diff --git a/tests/src/com/android/contacts/util/HtmlUtilsTest.java b/tests/src/com/android/contacts/util/HtmlUtilsTest.java
deleted file mode 100644
index 772e78f..0000000
--- a/tests/src/com/android/contacts/util/HtmlUtilsTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-package com.android.contacts.util;
-
-import android.graphics.drawable.ColorDrawable;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.SpannedString;
-import android.text.style.ImageSpan;
-import android.text.style.QuoteSpan;
-
-import com.android.contacts.util.HtmlUtils.StreamItemQuoteSpan;
-
-/**
- * Tests for {@link HtmlUtils}.
- *
- * adb shell am instrument -w -e class com.android.contacts.util.HtmlUtilsTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class HtmlUtilsTest extends AndroidTestCase {
- /**
- * Test for {@link HtmlUtils#postprocess} specifically about trimming newlines.
- */
- public void testPostProcess_trimNewLines() {
- checkTrimNewLines("", "");
- checkTrimNewLines("", "\n");
- checkTrimNewLines("", "\n\n");
- checkTrimNewLines("a", "a");
- checkTrimNewLines("abc", "abc");
- checkTrimNewLines("abc", "abc\n");
- checkTrimNewLines("abc", "abc\n\n\n");
- checkTrimNewLines("ab\nc", "ab\nc\n");
-
- assertNull(HtmlUtils.postprocess(getContext(), null));
- }
-
- private final void checkTrimNewLines(String expectedString, CharSequence text) {
- // Test with both SpannedString and SpannableStringBuilder.
- assertEquals(expectedString,
- HtmlUtils.postprocess(getContext(), new SpannedString(text)).toString());
-
- assertEquals(expectedString,
- HtmlUtils.postprocess(getContext(), new SpannableStringBuilder(text)).toString());
- }
-
- public void testPostProcess_with_newlines() {
- final SpannableStringBuilder builder = new SpannableStringBuilder("01234\n\n");
-
- setSpans(builder);
-
- // First test with a SpannableStringBuilder, as opposed to SpannedString
- checkPostProcess(HtmlUtils.postprocess(getContext(), builder));
-
- // Then pass a SpannedString, which is immutable, but the method should still work.
- checkPostProcess(HtmlUtils.postprocess(getContext(), new SpannedString(builder)));
- }
-
- /**
- * Same as {@link #testPostProcess_with_newlines}, but text has no newlines.
- * (The internal code path is slightly different.)
- */
- public void testPostProcess_no_newlines() {
- final SpannableStringBuilder builder = new SpannableStringBuilder("01234");
-
- setSpans(builder);
-
- // First test with a SpannableStringBuilder, as opposed to SpannedString
- checkPostProcess(HtmlUtils.postprocess(getContext(), builder));
-
- // Then pass a SpannedString, which is immutable, but the method should still work.
- checkPostProcess(HtmlUtils.postprocess(getContext(), new SpannedString(builder)));
- }
-
- private void setSpans(SpannableStringBuilder builder) {
- builder.setSpan(new ImageSpan(new ColorDrawable(), ImageSpan.ALIGN_BOTTOM), 0, 2, 0);
- builder.setSpan(new QuoteSpan(), 2, 4, 0);
- builder.setSpan(new CustomSpan(), 4, builder.length(), 0);
- }
-
- private void checkPostProcess(Spanned ret) {
- // Newlines should be trimmed.
- assertEquals("01234", ret.toString());
-
- // First, check the image span.
- // - Vertical alignment should be changed to ALIGN_BASELINE
- // - Drawable shouldn't be changed.
- ImageSpan[] imageSpans = ret.getSpans(0, ret.length(), ImageSpan.class);
- assertEquals(1, imageSpans.length);
- assertEquals(ImageSpan.ALIGN_BASELINE, imageSpans[0].getVerticalAlignment());
- assertEquals(ColorDrawable.class, imageSpans[0].getDrawable().getClass());
-
- // QuoteSpans should be replaced with StreamItemQuoteSpans.
- QuoteSpan[] quoteSpans = ret.getSpans(0, ret.length(), QuoteSpan.class);
- assertEquals(1, quoteSpans.length);
- assertEquals(StreamItemQuoteSpan.class, quoteSpans[0].getClass());
-
- // Other spans should be preserved.
- CustomSpan[] customSpans = ret.getSpans(0, ret.length(), CustomSpan.class);
- assertEquals(1, customSpans.length);
- }
-
- /** Custom span class used in {@link #testPostProcess} */
- private static class CustomSpan {
- }
-}
diff --git a/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java b/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java
deleted file mode 100644
index 9eb550e..0000000
--- a/tests/src/com/android/contacts/util/StreamItemEntryBuilder.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2011 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
- */
-
-package com.android.contacts.util;
-
-import android.content.Context;
-
-/**
- * Builder for {@link StreamItemEntry}s to make writing tests easier.
- */
-public class StreamItemEntryBuilder {
- private long mId;
- private String mText;
- private String mComment;
- private long mTimestamp;
- private String mAccountType;
- private String mAccountName;
- private String mDataSet;
- private String mResPackage;
- private String mIconRes;
- private String mLabelRes;
-
- public StreamItemEntryBuilder() {}
-
- public StreamItemEntryBuilder setText(String value) {
- mText = value;
- return this;
- }
-
- public StreamItemEntryBuilder setComment(String value) {
- mComment = value;
- return this;
- }
-
- public StreamItemEntryBuilder setAccountType(String value) {
- mAccountType = value;
- return this;
- }
-
- public StreamItemEntryBuilder setAccountName(String value) {
- mAccountName = value;
- return this;
- }
-
- public StreamItemEntryBuilder setDataSet(String value) {
- mDataSet = value;
- return this;
- }
-
- public StreamItemEntry build(Context context) {
- StreamItemEntry ret = StreamItemEntry.createForTest(mId, mText, mComment, mTimestamp,
- mAccountType, mAccountName, mDataSet, mResPackage, mIconRes, mLabelRes);
- ret.decodeHtml(context);
- return ret;
- }
-}