am b1b88e86: am 7d8ea25e: am 9ca2bf95: am 928cb3f9: am aa396d3e: resolved conflicts for merge of 8df53636 to jb-mr1-dev
* commit 'b1b88e861c0748dd317b1e0ec00cc1d295e0b795':
Set explicit destination for CALL_PRIVILEGED
diff --git a/Android.mk b/Android.mk
index 67859bd..634f270 100644
--- a/Android.mk
+++ b/Android.mk
@@ -3,11 +3,21 @@
LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+contacts_common_dir := ../ContactsCommon
-LOCAL_JAVA_LIBRARIES := telephony-common
+src_dirs := src $(contacts_common_dir)/src
+res_dirs := res $(contacts_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
+
+LOCAL_JAVA_LIBRARIES := telephony-common voip-common
LOCAL_STATIC_JAVA_LIBRARIES := \
- com.android.phone.common \
+ com.android.phone.shared \
com.android.vcard \
android-common \
guava \
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index dfa23cf..aabf50b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -37,7 +37,6 @@
<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="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
<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" />
@@ -58,128 +57,9 @@
android:icon="@mipmap/ic_launcher_contacts"
android:taskAffinity="android.task.contacts"
android:hardwareAccelerated="true"
+ android:supportsRtl="true"
>
- <!-- Intercept Dialer Intents for devices without a phone.
- This activity should have the same intent filters as the DialtactsActivity,
- so that its capturing the same events. Omit android.intent.category.LAUNCHER, because we
- don't want this to show up in the Launcher. The priorities of the intent-filters
- are set lower, so that the user does not see a disambig dialog -->
- <activity
- android:name=".activities.NonPhoneActivity"
- android:theme="@style/NonPhoneActivityTheme"
- >
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:mimeType="vnd.android.cursor.item/phone" />
- <data android:mimeType="vnd.android.cursor.item/person" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="voicemail" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.VIEW" />
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="tel" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:mimeType="vnd.android.cursor.dir/calls" />
- </intent-filter>
- <intent-filter android:priority="-1">
- <action android:name="android.intent.action.CALL_BUTTON" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- </intent-filter>
- </activity>
-
- <!-- The entrance point for Phone UI.
- stateAlwaysHidden is set to suppress keyboard show up on
- dialpad screen. -->
- <activity android:name=".activities.DialtactsActivity"
- android:label="@string/launcherDialer"
- android:theme="@style/DialtactsTheme"
- android:uiOptions="splitActionBarWhenNarrow"
- android:launchMode="singleTask"
- android:clearTaskOnLaunch="true"
- android:icon="@mipmap/ic_launcher_phone"
- android:screenOrientation="nosensor"
- android:enabled="@*android:bool/config_voice_capable"
- android:taskAffinity="android.task.contacts.phone"
- android:windowSoftInputMode="stateAlwaysHidden|adjustNothing">
- <intent-filter>
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:mimeType="vnd.android.cursor.item/phone" />
- <data android:mimeType="vnd.android.cursor.item/person" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="voicemail" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.LAUNCHER" />
- <category android:name="android.intent.category.BROWSABLE" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <action android:name="android.intent.action.DIAL" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="tel" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:mimeType="vnd.android.cursor.dir/calls" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.CALL_BUTTON" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- </intent-filter>
- <!-- This was never intended to be public, but is here for backward
- compatibility. Use Intent.ACTION_DIAL instead. -->
- <intent-filter>
- <action android:name="com.android.phone.action.TOUCH_DIALER" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.TAB" />
- </intent-filter>
- <intent-filter android:label="@string/recentCallsIconLabel">
- <action android:name="com.android.phone.action.RECENT_CALLS" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.TAB" />
- </intent-filter>
- </activity>
-
<!-- The main Contacts activity with the contact list, favorites, and groups. -->
<activity android:name=".activities.PeopleActivity"
android:label="@string/people"
@@ -271,7 +151,8 @@
android:theme="@style/ContactPickerTheme"
android:launchMode="singleTop"
android:clearTaskOnLaunch="true"
- android:uiOptions="splitActionBarWhenNarrow">
+ android:uiOptions="splitActionBarWhenNarrow"
+ android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.INSERT_OR_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
@@ -321,24 +202,6 @@
android:exported="true"
/>
- <!-- Backwards compatibility: "Phone" from Gingerbread and earlier -->
- <activity-alias android:name="DialtactsActivity"
- android:targetActivity=".activities.DialtactsActivity"
- android:exported="true"
- />
-
- <!-- Backwards compatibility: "Call log" from Gingerbread and earlier -->
- <activity-alias android:name="RecentCallsListActivity"
- android:targetActivity=".activities.DialtactsActivity"
- android:exported="true"
- />
-
- <!-- Backwards compatibility: "Call log" from ICS -->
- <activity-alias android:name=".activities.CallLogActivity"
- android:targetActivity=".activities.DialtactsActivity"
- android:exported="true"
- />
-
<!-- An activity for joining contacts -->
<activity android:name=".activities.JoinContactActivity"
android:theme="@style/JoinContactActivityTheme"
@@ -358,13 +221,13 @@
<!-- Used to filter contacts list by account -->
<activity
- android:name=".list.AccountFilterActivity"
+ android:name=".common.list.AccountFilterActivity"
android:label="@string/activity_title_contacts_filter"
android:theme="@style/ContactListFilterTheme" />
<!-- Used to select display and sync groups -->
<activity
- android:name=".list.CustomContactListFilterActivity"
+ android:name=".common.list.CustomContactListFilterActivity"
android:label="@string/custom_list_filter"
android:theme="@style/ContactListFilterTheme" />
@@ -380,14 +243,6 @@
</intent-filter>
</activity>
- <!-- List of groups -->
- <activity android:name=".activities.GroupBrowserActivity"
- android:label="@string/contactsGroupsLabel"
- android:theme="@style/PeopleTheme"
- android:uiOptions="splitActionBarWhenNarrow"
- android:launchMode="singleTop"
- android:clearTaskOnLaunch="true"/>
-
<!-- Views the details of a single group -->
<activity android:name=".activities.GroupDetailActivity"
android:label=""
@@ -461,20 +316,6 @@
</activity-alias>
- <activity android:name="CallDetailActivity"
- android:label="@string/callDetailTitle"
- android:theme="@style/CallDetailActivityTheme"
- android:screenOrientation="portrait"
- android:icon="@mipmap/ic_launcher_phone"
- android:taskAffinity="android.task.contacts.phone"
- >
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="vnd.android.cursor.item/calls" />
- </intent-filter>
- </activity>
-
<!-- Views the details of a single contact -->
<activity android:name=".activities.ContactDetailActivity"
android:label="@string/viewContactTitle"
@@ -527,7 +368,7 @@
</intent-filter>
</activity>
- <activity android:name=".test.FragmentTestActivity">
+ <activity android:name=".common.test.FragmentTestActivity">
<intent-filter>
<category android:name="android.intent.category.TEST" />
</intent-filter>
@@ -536,7 +377,7 @@
<!-- Stub service used to keep our process alive long enough for
background threads to finish their operations. -->
<service
- android:name=".util.EmptyService"
+ android:name=".common.util.EmptyService"
android:exported="false" />
<!-- Service to save a contact -->
@@ -567,15 +408,9 @@
>
</activity>
- <!-- Interstitial activity that shows a phone disambig dialog -->
- <activity android:name="CallContactActivity"
- android:theme="@android:style/Theme.Translucent">
- </activity>
-
<!-- vCard related -->
- <activity android:name=".vcard.ImportVCardActivity"
+ <activity android:name=".common.vcard.ImportVCardActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
- android:screenOrientation="nosensor"
android:theme="@style/BackgroundOnlyTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -586,7 +421,7 @@
</intent-filter>
</activity>
- <activity android:name=".vcard.NfcImportVCardActivity"
+ <activity android:name=".common.vcard.NfcImportVCardActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:theme="@style/BackgroundOnlyTheme">
<intent-filter>
@@ -597,17 +432,17 @@
</intent-filter>
</activity>
- <activity android:name=".vcard.CancelActivity"
+ <activity android:name=".common.vcard.CancelActivity"
android:theme="@style/BackgroundOnlyTheme" />
- <activity android:name=".vcard.SelectAccountActivity"
+ <activity android:name=".common.vcard.SelectAccountActivity"
android:theme="@style/BackgroundOnlyTheme" />
- <activity android:name=".vcard.ExportVCardActivity"
+ <activity android:name=".common.vcard.ExportVCardActivity"
android:theme="@style/BackgroundOnlyTheme" />
<service
- android:name=".vcard.VCardService"
+ android:name=".common.vcard.VCardService"
android:exported="false" />
<!-- Pinned header list demo -->
@@ -628,21 +463,6 @@
android:resource="@xml/social_widget_info" />
</receiver>
- <receiver android:name=".calllog.CallLogReceiver"
- android:enabled="@*android:bool/config_voice_capable">
- <intent-filter>
- <action android:name="android.intent.action.NEW_VOICEMAIL" />
- <data
- android:scheme="content"
- android:host="com.android.voicemail"
- android:mimeType="vnd.android.cursor.item/voicemail"
- />
- </intent-filter>
- <intent-filter android:priority="100">
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
- </intent-filter>
- </receiver>
-
<activity
android:name=".socialwidget.SocialWidgetConfigureActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
@@ -651,21 +471,73 @@
</intent-filter>
</activity>
- <service
- android:name=".calllog.CallLogNotificationsService"
- android:exported="false"
- />
+ <!-- Intercept Dialer Intents for devices without a phone.
+ This activity should have the same intent filters as the DialtactsActivity,
+ so that its capturing the same events. Omit android.intent.category.LAUNCHER, because
+ we don't want this to show up in the Launcher. The priorities of the intent-filters
+ are set lower, so that the user does not see a disambig dialog -->
+ <activity
+ android:name="com.android.contacts.NonPhoneActivity"
+ android:theme="@style/NonPhoneActivityTheme"
+ >
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.DIAL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:mimeType="vnd.android.cursor.item/phone"/>
+ <data android:mimeType="vnd.android.cursor.item/person"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.DIAL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:scheme="voicemail"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.DIAL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.VIEW"/>
+ <action android:name="android.intent.action.DIAL"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:scheme="tel"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.VIEW"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:mimeType="vnd.android.cursor.dir/calls"/>
+ </intent-filter>
+ <intent-filter android:priority="-1">
+ <action android:name="android.intent.action.CALL_BUTTON"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ </intent-filter>
+ </activity>
<!-- Service that is exclusively for the Phone application that sends out a view
- notification. This service might be removed in future versions of the app -->
+ notification. This service might be removed in future versions of the app.
+
+ This is called explicitly by the phone app via package name and class.
+ (PhoneUtils.sendViewNotificationAsync()). If this service moves, then phone
+ needs to be changed as well.
+ -->
<service android:name=".ViewNotificationService"
- android:permission="android.permission.WRITE_CONTACTS"
- android:exported="true">
+ android:permission="android.permission.WRITE_CONTACTS"
+ android:exported="true">
<intent-filter>
- <action android:name="com.android.contacts.VIEW_NOTIFICATION" />
- <data android:mimeType="vnd.android.cursor.item/contact" />
+ <action android:name="com.android.contacts.VIEW_NOTIFICATION"/>
+ <data android:mimeType="vnd.android.cursor.item/contact"/>
</intent-filter>
</service>
+
<meta-data android:name="android.nfc.disable_beam_default" android:value="true" />
</application>
</manifest>
diff --git a/proguard.flags b/proguard.flags
index 39784b1..3991a14 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -10,10 +10,10 @@
}
# Any class or method annotated with NeededForTesting or NeededForReflection.
--keep @com.android.contacts.test.NeededForTesting class *
+-keep @com.android.contacts.common.test.NeededForTesting class *
-keep @com.android.contacts.test.NeededForReflection class *
-keepclassmembers class * {
-@com.android.contacts.test.NeededForTesting *;
+@com.android.contacts.common.test.NeededForTesting *;
@com.android.contacts.test.NeededForReflection *;
}
diff --git a/res/color/dialer_button_text.xml b/res/color/dialer_button_text.xml
deleted file mode 100644
index 585906e..0000000
--- a/res/color/dialer_button_text.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item android:state_pressed="true" android:color="#000"/>
- <item android:state_focused="true" android:color="#FFF"/>
- <item android:color="#FFF"/> <!-- not selected -->
-
-</selector>
-
diff --git a/res/color/primary_text_color.xml b/res/color/primary_text_color.xml
deleted file mode 100644
index acc2fb7..0000000
--- a/res/color/primary_text_color.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:state_activated="true" android:color="#FFFFFF" />
- <item android:color="#333333" /> <!-- not selected -->
-
-</selector>
diff --git a/res/color/secondary_text_color.xml b/res/color/secondary_text_color.xml
deleted file mode 100644
index 1c62458..0000000
--- a/res/color/secondary_text_color.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:state_activated="true" android:color="#FFFFFF" />
- <item android:color="#777777" /> <!-- not selected -->
-
-</selector>
diff --git a/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 23320ea..0000000
--- a/res/drawable-hdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/badge_action_call.png b/res/drawable-hdpi/badge_action_call.png
deleted file mode 100644
index 0b1c6b4..0000000
--- a/res/drawable-hdpi/badge_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/badge_action_sms.png b/res/drawable-hdpi/badge_action_sms.png
deleted file mode 100644
index 0dfdbf5..0000000
--- a/res/drawable-hdpi/badge_action_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_call_pressed.png b/res/drawable-hdpi/btn_call_pressed.png
deleted file mode 100644
index 6b497a2..0000000
--- a/res/drawable-hdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_background_texture.png b/res/drawable-hdpi/dial_background_texture.png
deleted file mode 100644
index 95bec9f..0000000
--- a/res/drawable-hdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_0_wht.png b/res/drawable-hdpi/dial_num_0_wht.png
deleted file mode 100644
index c42bf4c..0000000
--- a/res/drawable-hdpi/dial_num_0_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_1_wht.png b/res/drawable-hdpi/dial_num_1_wht.png
deleted file mode 100644
index 434fd33..0000000
--- a/res/drawable-hdpi/dial_num_1_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_2_wht.png b/res/drawable-hdpi/dial_num_2_wht.png
deleted file mode 100644
index 2ae20ab..0000000
--- a/res/drawable-hdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_3_wht.png b/res/drawable-hdpi/dial_num_3_wht.png
deleted file mode 100644
index 991d5f3..0000000
--- a/res/drawable-hdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_4_wht.png b/res/drawable-hdpi/dial_num_4_wht.png
deleted file mode 100644
index 7aad3ef..0000000
--- a/res/drawable-hdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_5_wht.png b/res/drawable-hdpi/dial_num_5_wht.png
deleted file mode 100644
index 42a1d0b..0000000
--- a/res/drawable-hdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_6_wht.png b/res/drawable-hdpi/dial_num_6_wht.png
deleted file mode 100644
index b03e019..0000000
--- a/res/drawable-hdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_7_wht.png b/res/drawable-hdpi/dial_num_7_wht.png
deleted file mode 100644
index 8b72fff..0000000
--- a/res/drawable-hdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_8_wht.png b/res/drawable-hdpi/dial_num_8_wht.png
deleted file mode 100644
index 822f21a..0000000
--- a/res/drawable-hdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_9_wht.png b/res/drawable-hdpi/dial_num_9_wht.png
deleted file mode 100644
index 2ee944b..0000000
--- a/res/drawable-hdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_pound_wht.png b/res/drawable-hdpi/dial_num_pound_wht.png
deleted file mode 100644
index e10e57d..0000000
--- a/res/drawable-hdpi/dial_num_pound_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/dial_num_star_wht.png b/res/drawable-hdpi/dial_num_star_wht.png
deleted file mode 100644
index 1dfc111..0000000
--- a/res/drawable-hdpi/dial_num_star_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_ab_dialer_holo_dark.png b/res/drawable-hdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index 5fea91f..0000000
--- a/res/drawable-hdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_ab_history_holo_dark.png b/res/drawable-hdpi/ic_ab_history_holo_dark.png
deleted file mode 100644
index 1edab8d..0000000
--- a/res/drawable-hdpi/ic_ab_history_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_add_contact_holo_dark.png b/res/drawable-hdpi/ic_add_contact_holo_dark.png
deleted file mode 100644
index 88ff33b..0000000
--- a/res/drawable-hdpi/ic_add_contact_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_incoming_holo_dark.png b/res/drawable-hdpi/ic_call_incoming_holo_dark.png
deleted file mode 100644
index 8351f48..0000000
--- a/res/drawable-hdpi/ic_call_incoming_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_missed_holo_dark.png b/res/drawable-hdpi/ic_call_missed_holo_dark.png
deleted file mode 100644
index 7c17c30..0000000
--- a/res/drawable-hdpi/ic_call_missed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_outgoing_holo_dark.png b/res/drawable-hdpi/ic_call_outgoing_holo_dark.png
deleted file mode 100644
index 3b9e0f8..0000000
--- a/res/drawable-hdpi/ic_call_outgoing_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_call_voicemail_holo_dark.png b/res/drawable-hdpi/ic_call_voicemail_holo_dark.png
deleted file mode 100644
index 6d64a36..0000000
--- a/res/drawable-hdpi/ic_call_voicemail_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-hdpi/ic_contact_picture_180_holo_dark.png
deleted file mode 100644
index a17da61..0000000
--- a/res/drawable-hdpi/ic_contact_picture_180_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_picture_180_holo_light.png b/res/drawable-hdpi/ic_contact_picture_180_holo_light.png
deleted file mode 100644
index 38e4c30..0000000
--- a/res/drawable-hdpi/ic_contact_picture_180_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_picture_holo_dark.png b/res/drawable-hdpi/ic_contact_picture_holo_dark.png
deleted file mode 100644
index 314fa00..0000000
--- a/res/drawable-hdpi/ic_contact_picture_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_contact_picture_holo_light.png b/res/drawable-hdpi/ic_contact_picture_holo_light.png
deleted file mode 100644
index 4c0e35e..0000000
--- a/res/drawable-hdpi/ic_contact_picture_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dial_action_call.png b/res/drawable-hdpi/ic_dial_action_call.png
deleted file mode 100644
index ed08eb8..0000000
--- a/res/drawable-hdpi/ic_dial_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dial_action_delete.png b/res/drawable-hdpi/ic_dial_action_delete.png
deleted file mode 100644
index 0bf8563..0000000
--- a/res/drawable-hdpi/ic_dial_action_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dial_action_search.png b/res/drawable-hdpi/ic_dial_action_search.png
deleted file mode 100644
index 898ce11..0000000
--- a/res/drawable-hdpi/ic_dial_action_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_add_call.png b/res/drawable-hdpi/ic_dialer_fork_add_call.png
deleted file mode 100755
index e046996..0000000
--- a/res/drawable-hdpi/ic_dialer_fork_add_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_current_call.png b/res/drawable-hdpi/ic_dialer_fork_current_call.png
deleted file mode 100755
index 6e1a395..0000000
--- a/res/drawable-hdpi/ic_dialer_fork_current_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
deleted file mode 100755
index 6b50da1..0000000
--- a/res/drawable-hdpi/ic_dialer_fork_tt_keypad.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_divider_dashed_holo_dark.png b/res/drawable-hdpi/ic_divider_dashed_holo_dark.png
deleted file mode 100644
index 663a2f8..0000000
--- a/res/drawable-hdpi/ic_divider_dashed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_hold_pause_disabled_holo_dark.png b/res/drawable-hdpi/ic_hold_pause_disabled_holo_dark.png
deleted file mode 100644
index d21cc10..0000000
--- a/res/drawable-hdpi/ic_hold_pause_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_hold_pause_holo_dark.png b/res/drawable-hdpi/ic_hold_pause_holo_dark.png
deleted file mode 100644
index ac58ec8..0000000
--- a/res/drawable-hdpi/ic_hold_pause_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_overflow.png b/res/drawable-hdpi/ic_menu_overflow.png
deleted file mode 100644
index a12aedf..0000000
--- a/res/drawable-hdpi/ic_menu_overflow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_remove_field_holo_light.png b/res/drawable-hdpi/ic_menu_remove_field_holo_light.png
deleted file mode 100644
index 03fd2fb..0000000
--- a/res/drawable-hdpi/ic_menu_remove_field_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_settings_holo_light.png b/res/drawable-hdpi/ic_menu_settings_holo_light.png
deleted file mode 100644
index b7bb5c4..0000000
--- a/res/drawable-hdpi/ic_menu_settings_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_star_holo_light.png b/res/drawable-hdpi/ic_menu_star_holo_light.png
deleted file mode 100644
index 4513796..0000000
--- a/res/drawable-hdpi/ic_menu_star_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_minus_disabled_holo_dark.png b/res/drawable-hdpi/ic_minus_disabled_holo_dark.png
deleted file mode 100644
index c2ad8dc..0000000
--- a/res/drawable-hdpi/ic_minus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_minus_holo_dark.png b/res/drawable-hdpi/ic_minus_holo_dark.png
deleted file mode 100644
index f228047..0000000
--- a/res/drawable-hdpi/ic_minus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_active_holo_dark.png b/res/drawable-hdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 179b5a1..0000000
--- a/res/drawable-hdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_disabled_holo_dark.png b/res/drawable-hdpi/ic_play_disabled_holo_dark.png
deleted file mode 100644
index e3a3853..0000000
--- a/res/drawable-hdpi/ic_play_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_play_holo_dark.png b/res/drawable-hdpi/ic_play_holo_dark.png
deleted file mode 100644
index d5fd235..0000000
--- a/res/drawable-hdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_plus_disabled_holo_dark.png b/res/drawable-hdpi/ic_plus_disabled_holo_dark.png
deleted file mode 100644
index 723e362..0000000
--- a/res/drawable-hdpi/ic_plus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_plus_holo_dark.png b/res/drawable-hdpi/ic_plus_holo_dark.png
deleted file mode 100644
index d7b2804..0000000
--- a/res/drawable-hdpi/ic_plus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index f1a9154..0000000
--- a/res/drawable-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-hdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index 6f12d52..0000000
--- a/res/drawable-hdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 3e0f47e..0000000
--- a/res/drawable-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-hdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index eadd0cd..0000000
--- a/res/drawable-hdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_text_holo_dark.png b/res/drawable-hdpi/ic_text_holo_dark.png
deleted file mode 100644
index 6d21e42..0000000
--- a/res/drawable-hdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_text_holo_light.png b/res/drawable-hdpi/ic_text_holo_light.png
deleted file mode 100644
index 01af189..0000000
--- a/res/drawable-hdpi/ic_text_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_trash_holo_dark.png b/res/drawable-hdpi/ic_trash_holo_dark.png
deleted file mode 100644
index ec925f1..0000000
--- a/res/drawable-hdpi/ic_trash_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_activated_holo.9.png b/res/drawable-hdpi/list_activated_holo.9.png
deleted file mode 100644
index 4ea7afa..0000000
--- a/res/drawable-hdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_background_holo.9.png b/res/drawable-hdpi/list_background_holo.9.png
deleted file mode 100644
index cddf9be..0000000
--- a/res/drawable-hdpi/list_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_focused_holo.9.png b/res/drawable-hdpi/list_focused_holo.9.png
deleted file mode 100644
index 86578be..0000000
--- a/res/drawable-hdpi/list_focused_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png b/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png
deleted file mode 100644
index f6fd30d..0000000
--- a/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/list_title_holo.9.png b/res/drawable-hdpi/list_title_holo.9.png
deleted file mode 100644
index ae93717..0000000
--- a/res/drawable-hdpi/list_title_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/unknown_source.png b/res/drawable-hdpi/unknown_source.png
deleted file mode 100644
index 0a8f37d..0000000
--- a/res/drawable-hdpi/unknown_source.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/account_spinner_icon.png b/res/drawable-ldrtl-hdpi/account_spinner_icon.png
new file mode 100644
index 0000000..ec1f267
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/account_spinner_icon.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/bg_status_contact_widget.9.png b/res/drawable-ldrtl-hdpi/bg_status_contact_widget.9.png
new file mode 100644
index 0000000..c8b6e19
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/bg_status_contact_widget.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/contacts_widget_preview.png b/res/drawable-ldrtl-hdpi/contacts_widget_preview.png
new file mode 100644
index 0000000..dc47862
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/contacts_widget_preview.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_add_contact_holo_light.png b/res/drawable-ldrtl-hdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..4cf24e2
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_add_group_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_add_group_holo_dark.png
new file mode 100644
index 0000000..54f247a
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_add_group_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png
new file mode 100644
index 0000000..ee4d09f
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000..6fd82dd
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_groups_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 0000000..db386b4
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/panel_content.9.png b/res/drawable-ldrtl-hdpi/panel_content.9.png
new file mode 100644
index 0000000..1ab1f12
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/panel_content.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/panel_favorites_holo_light.9.png b/res/drawable-ldrtl-hdpi/panel_favorites_holo_light.9.png
new file mode 100644
index 0000000..a948d10
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/panel_favorites_holo_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_normal_light.9.png b/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_normal_light.9.png
new file mode 100644
index 0000000..1f833d3
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_normal_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_pressed_light.9.png b/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_pressed_light.9.png
new file mode 100644
index 0000000..3adbc84
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/quickcontact_badge_overlay_pressed_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/spinner_default_holo_dark.9.png b/res/drawable-ldrtl-hdpi/spinner_default_holo_dark.9.png
new file mode 100644
index 0000000..0b28e92
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/spinner_default_holo_dark.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/account_spinner_icon.png b/res/drawable-ldrtl-mdpi/account_spinner_icon.png
new file mode 100644
index 0000000..11b1a3e
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/account_spinner_icon.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/bg_status_contact_widget.9.png b/res/drawable-ldrtl-mdpi/bg_status_contact_widget.9.png
new file mode 100644
index 0000000..8041b23
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/bg_status_contact_widget.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/contacts_widget_preview.png b/res/drawable-ldrtl-mdpi/contacts_widget_preview.png
new file mode 100644
index 0000000..0954fbc
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/contacts_widget_preview.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_add_contact_holo_light.png b/res/drawable-ldrtl-mdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..5c0f756
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_add_group_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_add_group_holo_dark.png
new file mode 100644
index 0000000..a984b56
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_add_group_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png
new file mode 100644
index 0000000..13ddb2b
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000..4803d8d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_groups_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 0000000..9236a42
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/panel_content.9.png b/res/drawable-ldrtl-mdpi/panel_content.9.png
new file mode 100644
index 0000000..b157502
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/panel_content.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/panel_favorites_holo_light.9.png b/res/drawable-ldrtl-mdpi/panel_favorites_holo_light.9.png
new file mode 100644
index 0000000..aec2268
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/panel_favorites_holo_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_normal_light.9.png b/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_normal_light.9.png
new file mode 100644
index 0000000..1b0905a
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_normal_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_pressed_light.9.png b/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_pressed_light.9.png
new file mode 100644
index 0000000..179644c
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/quickcontact_badge_overlay_pressed_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/spinner_default_holo_dark.9.png b/res/drawable-ldrtl-mdpi/spinner_default_holo_dark.9.png
new file mode 100644
index 0000000..770a865
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/spinner_default_holo_dark.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/account_spinner_icon.png b/res/drawable-ldrtl-xhdpi/account_spinner_icon.png
new file mode 100644
index 0000000..2c1c59f
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/account_spinner_icon.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/bg_status_contact_widget.9.png b/res/drawable-ldrtl-xhdpi/bg_status_contact_widget.9.png
new file mode 100644
index 0000000..84241a9
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/bg_status_contact_widget.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/contacts_widget_preview.png b/res/drawable-ldrtl-xhdpi/contacts_widget_preview.png
new file mode 100644
index 0000000..0c986b6
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/contacts_widget_preview.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_light.png
new file mode 100644
index 0000000..2bd27c7
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_add_group_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_add_group_holo_dark.png
new file mode 100644
index 0000000..3688e46
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_add_group_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png
new file mode 100644
index 0000000..7aed2ed
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png
new file mode 100644
index 0000000..3b2799c
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_groups_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 0000000..cd7bc0d
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/panel_content.9.png b/res/drawable-ldrtl-xhdpi/panel_content.9.png
new file mode 100644
index 0000000..eb0e2d7
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/panel_content.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/panel_favorites_holo_light.9.png b/res/drawable-ldrtl-xhdpi/panel_favorites_holo_light.9.png
new file mode 100644
index 0000000..05c8342
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/panel_favorites_holo_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_normal_light.9.png b/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_normal_light.9.png
new file mode 100644
index 0000000..6b22d44
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_normal_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_pressed_light.9.png b/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_pressed_light.9.png
new file mode 100644
index 0000000..2a1d508
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/quickcontact_badge_overlay_pressed_light.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/spinner_default_holo_dark.9.png b/res/drawable-ldrtl-xhdpi/spinner_default_holo_dark.9.png
new file mode 100644
index 0000000..afc72b2
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/spinner_default_holo_dark.9.png
Binary files differ
diff --git a/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 3e912f5..0000000
--- a/res/drawable-mdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/badge_action_call.png b/res/drawable-mdpi/badge_action_call.png
deleted file mode 100644
index af2abaa..0000000
--- a/res/drawable-mdpi/badge_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/badge_action_sms.png b/res/drawable-mdpi/badge_action_sms.png
deleted file mode 100644
index 13dd8bc..0000000
--- a/res/drawable-mdpi/badge_action_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_call_pressed.png b/res/drawable-mdpi/btn_call_pressed.png
deleted file mode 100644
index 637b06a..0000000
--- a/res/drawable-mdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_background_texture.png b/res/drawable-mdpi/dial_background_texture.png
deleted file mode 100644
index a6d666c..0000000
--- a/res/drawable-mdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_0_wht.png b/res/drawable-mdpi/dial_num_0_wht.png
deleted file mode 100644
index e6e295a..0000000
--- a/res/drawable-mdpi/dial_num_0_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_1_wht.png b/res/drawable-mdpi/dial_num_1_wht.png
deleted file mode 100644
index a640e36..0000000
--- a/res/drawable-mdpi/dial_num_1_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_2_wht.png b/res/drawable-mdpi/dial_num_2_wht.png
deleted file mode 100644
index e311f4f..0000000
--- a/res/drawable-mdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_3_wht.png b/res/drawable-mdpi/dial_num_3_wht.png
deleted file mode 100644
index f07324a..0000000
--- a/res/drawable-mdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_4_wht.png b/res/drawable-mdpi/dial_num_4_wht.png
deleted file mode 100644
index cd8d33c..0000000
--- a/res/drawable-mdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_5_wht.png b/res/drawable-mdpi/dial_num_5_wht.png
deleted file mode 100644
index a9f27dc..0000000
--- a/res/drawable-mdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_6_wht.png b/res/drawable-mdpi/dial_num_6_wht.png
deleted file mode 100644
index 2bdf08e..0000000
--- a/res/drawable-mdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_7_wht.png b/res/drawable-mdpi/dial_num_7_wht.png
deleted file mode 100644
index 6c1c599..0000000
--- a/res/drawable-mdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_8_wht.png b/res/drawable-mdpi/dial_num_8_wht.png
deleted file mode 100644
index db0694c..0000000
--- a/res/drawable-mdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_9_wht.png b/res/drawable-mdpi/dial_num_9_wht.png
deleted file mode 100644
index 692fdb0..0000000
--- a/res/drawable-mdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_pound_wht.png b/res/drawable-mdpi/dial_num_pound_wht.png
deleted file mode 100644
index f216d05..0000000
--- a/res/drawable-mdpi/dial_num_pound_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/dial_num_star_wht.png b/res/drawable-mdpi/dial_num_star_wht.png
deleted file mode 100644
index f7e8e9f..0000000
--- a/res/drawable-mdpi/dial_num_star_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_ab_dialer_holo_dark.png b/res/drawable-mdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index c4cf2a1..0000000
--- a/res/drawable-mdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_ab_history_holo_dark.png b/res/drawable-mdpi/ic_ab_history_holo_dark.png
deleted file mode 100644
index 85bf5f3..0000000
--- a/res/drawable-mdpi/ic_ab_history_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_add_contact_holo_dark.png b/res/drawable-mdpi/ic_add_contact_holo_dark.png
deleted file mode 100644
index 867f494..0000000
--- a/res/drawable-mdpi/ic_add_contact_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_incoming_holo_dark.png b/res/drawable-mdpi/ic_call_incoming_holo_dark.png
deleted file mode 100644
index 8dcb350..0000000
--- a/res/drawable-mdpi/ic_call_incoming_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_missed_holo_dark.png b/res/drawable-mdpi/ic_call_missed_holo_dark.png
deleted file mode 100644
index af030cf..0000000
--- a/res/drawable-mdpi/ic_call_missed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_outgoing_holo_dark.png b/res/drawable-mdpi/ic_call_outgoing_holo_dark.png
deleted file mode 100644
index 38a01b7..0000000
--- a/res/drawable-mdpi/ic_call_outgoing_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_call_voicemail_holo_dark.png b/res/drawable-mdpi/ic_call_voicemail_holo_dark.png
deleted file mode 100644
index bf6d006..0000000
--- a/res/drawable-mdpi/ic_call_voicemail_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-mdpi/ic_contact_picture_180_holo_dark.png
deleted file mode 100644
index acba333..0000000
--- a/res/drawable-mdpi/ic_contact_picture_180_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_picture_180_holo_light.png b/res/drawable-mdpi/ic_contact_picture_180_holo_light.png
deleted file mode 100644
index 0b52683..0000000
--- a/res/drawable-mdpi/ic_contact_picture_180_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_picture_holo_dark.png b/res/drawable-mdpi/ic_contact_picture_holo_dark.png
deleted file mode 100644
index 6876777..0000000
--- a/res/drawable-mdpi/ic_contact_picture_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_contact_picture_holo_light.png b/res/drawable-mdpi/ic_contact_picture_holo_light.png
deleted file mode 100644
index ead9718..0000000
--- a/res/drawable-mdpi/ic_contact_picture_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dial_action_call.png b/res/drawable-mdpi/ic_dial_action_call.png
deleted file mode 100644
index 59a68f2..0000000
--- a/res/drawable-mdpi/ic_dial_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dial_action_delete.png b/res/drawable-mdpi/ic_dial_action_delete.png
deleted file mode 100644
index 98341e9..0000000
--- a/res/drawable-mdpi/ic_dial_action_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dial_action_search.png b/res/drawable-mdpi/ic_dial_action_search.png
deleted file mode 100644
index 88cba92..0000000
--- a/res/drawable-mdpi/ic_dial_action_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_add_call.png b/res/drawable-mdpi/ic_dialer_fork_add_call.png
deleted file mode 100644
index 5a1555b..0000000
--- a/res/drawable-mdpi/ic_dialer_fork_add_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_current_call.png b/res/drawable-mdpi/ic_dialer_fork_current_call.png
deleted file mode 100644
index 1be783e..0000000
--- a/res/drawable-mdpi/ic_dialer_fork_current_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
deleted file mode 100644
index 4e3dd82..0000000
--- a/res/drawable-mdpi/ic_dialer_fork_tt_keypad.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_divider_dashed_holo_dark.png b/res/drawable-mdpi/ic_divider_dashed_holo_dark.png
deleted file mode 100644
index 6652541..0000000
--- a/res/drawable-mdpi/ic_divider_dashed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_hold_pause_disabled_holo_dark.png b/res/drawable-mdpi/ic_hold_pause_disabled_holo_dark.png
deleted file mode 100644
index d8cec25..0000000
--- a/res/drawable-mdpi/ic_hold_pause_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_hold_pause_holo_dark.png b/res/drawable-mdpi/ic_hold_pause_holo_dark.png
deleted file mode 100644
index 3efa827..0000000
--- a/res/drawable-mdpi/ic_hold_pause_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_overflow.png b/res/drawable-mdpi/ic_menu_overflow.png
deleted file mode 100644
index 4a3bde3..0000000
--- a/res/drawable-mdpi/ic_menu_overflow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_remove_field_holo_light.png b/res/drawable-mdpi/ic_menu_remove_field_holo_light.png
deleted file mode 100644
index 8c44e70..0000000
--- a/res/drawable-mdpi/ic_menu_remove_field_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_settings_holo_light.png b/res/drawable-mdpi/ic_menu_settings_holo_light.png
deleted file mode 100644
index 1ebc112..0000000
--- a/res/drawable-mdpi/ic_menu_settings_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_star_holo_light.png b/res/drawable-mdpi/ic_menu_star_holo_light.png
deleted file mode 100644
index 8263b27..0000000
--- a/res/drawable-mdpi/ic_menu_star_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_minus_disabled_holo_dark.png b/res/drawable-mdpi/ic_minus_disabled_holo_dark.png
deleted file mode 100644
index fb0103c..0000000
--- a/res/drawable-mdpi/ic_minus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_minus_holo_dark.png b/res/drawable-mdpi/ic_minus_holo_dark.png
deleted file mode 100644
index a020991..0000000
--- a/res/drawable-mdpi/ic_minus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_active_holo_dark.png b/res/drawable-mdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 042d8c1..0000000
--- a/res/drawable-mdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_disabled_holo_dark.png b/res/drawable-mdpi/ic_play_disabled_holo_dark.png
deleted file mode 100644
index 64bed72..0000000
--- a/res/drawable-mdpi/ic_play_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_play_holo_dark.png b/res/drawable-mdpi/ic_play_holo_dark.png
deleted file mode 100644
index a31671d..0000000
--- a/res/drawable-mdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_plus_disabled_holo_dark.png b/res/drawable-mdpi/ic_plus_disabled_holo_dark.png
deleted file mode 100644
index 70c9a3d..0000000
--- a/res/drawable-mdpi/ic_plus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_plus_holo_dark.png b/res/drawable-mdpi/ic_plus_holo_dark.png
deleted file mode 100644
index 4f6397c..0000000
--- a/res/drawable-mdpi/ic_plus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 0a83d81..0000000
--- a/res/drawable-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index adaff60..0000000
--- a/res/drawable-mdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index d722707..0000000
--- a/res/drawable-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index 2b9600b..0000000
--- a/res/drawable-mdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_text_holo_dark.png b/res/drawable-mdpi/ic_text_holo_dark.png
deleted file mode 100644
index 80b95ee..0000000
--- a/res/drawable-mdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_text_holo_light.png b/res/drawable-mdpi/ic_text_holo_light.png
deleted file mode 100644
index 76dae05..0000000
--- a/res/drawable-mdpi/ic_text_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_trash_holo_dark.png b/res/drawable-mdpi/ic_trash_holo_dark.png
deleted file mode 100644
index 291fc66..0000000
--- a/res/drawable-mdpi/ic_trash_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_activated_holo.9.png b/res/drawable-mdpi/list_activated_holo.9.png
deleted file mode 100644
index 3bf8e03..0000000
--- a/res/drawable-mdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_background_holo.9.png b/res/drawable-mdpi/list_background_holo.9.png
deleted file mode 100644
index 7d5d66d..0000000
--- a/res/drawable-mdpi/list_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_focused_holo.9.png b/res/drawable-mdpi/list_focused_holo.9.png
deleted file mode 100644
index 86578be..0000000
--- a/res/drawable-mdpi/list_focused_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png b/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png
deleted file mode 100644
index 92da2f0..0000000
--- a/res/drawable-mdpi/list_selector_disabled_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/list_title_holo.9.png b/res/drawable-mdpi/list_title_holo.9.png
deleted file mode 100644
index 64bd691..0000000
--- a/res/drawable-mdpi/list_title_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/unknown_source.png b/res/drawable-mdpi/unknown_source.png
deleted file mode 100644
index 356748f..0000000
--- a/res/drawable-mdpi/unknown_source.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/background_dial_holo_dark.png b/res/drawable-nodpi/background_dial_holo_dark.png
deleted file mode 100644
index 3dba50c..0000000
--- a/res/drawable-nodpi/background_dial_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw580dp-hdpi/list_activated_holo.9.png b/res/drawable-sw580dp-hdpi/list_activated_holo.9.png
deleted file mode 100644
index 046b24a..0000000
--- a/res/drawable-sw580dp-hdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw580dp-mdpi/list_activated_holo.9.png b/res/drawable-sw580dp-mdpi/list_activated_holo.9.png
deleted file mode 100644
index 1ff3373..0000000
--- a/res/drawable-sw580dp-mdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw580dp-xhdpi/list_activated_holo.9.png b/res/drawable-sw580dp-xhdpi/list_activated_holo.9.png
deleted file mode 100644
index 2eb7c7e..0000000
--- a/res/drawable-sw580dp-xhdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png b/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png
deleted file mode 100644
index 71e4c23..0000000
--- a/res/drawable-xhdpi/ab_stacked_opaque_dark_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/badge_action_call.png b/res/drawable-xhdpi/badge_action_call.png
deleted file mode 100644
index 2589e33..0000000
--- a/res/drawable-xhdpi/badge_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/badge_action_sms.png b/res/drawable-xhdpi/badge_action_sms.png
deleted file mode 100644
index 460451f..0000000
--- a/res/drawable-xhdpi/badge_action_sms.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/btn_call_pressed.png b/res/drawable-xhdpi/btn_call_pressed.png
deleted file mode 100644
index cdf52f8..0000000
--- a/res/drawable-xhdpi/btn_call_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_background_texture.png b/res/drawable-xhdpi/dial_background_texture.png
deleted file mode 100644
index 184049f..0000000
--- a/res/drawable-xhdpi/dial_background_texture.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_0_wht.png b/res/drawable-xhdpi/dial_num_0_wht.png
deleted file mode 100644
index dca0aea..0000000
--- a/res/drawable-xhdpi/dial_num_0_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_1_wht.png b/res/drawable-xhdpi/dial_num_1_wht.png
deleted file mode 100644
index d1535c1..0000000
--- a/res/drawable-xhdpi/dial_num_1_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_2_wht.png b/res/drawable-xhdpi/dial_num_2_wht.png
deleted file mode 100644
index 12c4ab9..0000000
--- a/res/drawable-xhdpi/dial_num_2_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_3_wht.png b/res/drawable-xhdpi/dial_num_3_wht.png
deleted file mode 100644
index 4353e8a..0000000
--- a/res/drawable-xhdpi/dial_num_3_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_4_wht.png b/res/drawable-xhdpi/dial_num_4_wht.png
deleted file mode 100644
index ccee5cc..0000000
--- a/res/drawable-xhdpi/dial_num_4_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_5_wht.png b/res/drawable-xhdpi/dial_num_5_wht.png
deleted file mode 100644
index f27f153..0000000
--- a/res/drawable-xhdpi/dial_num_5_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_6_wht.png b/res/drawable-xhdpi/dial_num_6_wht.png
deleted file mode 100644
index 8966d13..0000000
--- a/res/drawable-xhdpi/dial_num_6_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_7_wht.png b/res/drawable-xhdpi/dial_num_7_wht.png
deleted file mode 100644
index b018810..0000000
--- a/res/drawable-xhdpi/dial_num_7_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_8_wht.png b/res/drawable-xhdpi/dial_num_8_wht.png
deleted file mode 100644
index 7c7b4f8..0000000
--- a/res/drawable-xhdpi/dial_num_8_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_9_wht.png b/res/drawable-xhdpi/dial_num_9_wht.png
deleted file mode 100644
index 23984f0..0000000
--- a/res/drawable-xhdpi/dial_num_9_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_pound_wht.png b/res/drawable-xhdpi/dial_num_pound_wht.png
deleted file mode 100644
index be21af8..0000000
--- a/res/drawable-xhdpi/dial_num_pound_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/dial_num_star_wht.png b/res/drawable-xhdpi/dial_num_star_wht.png
deleted file mode 100644
index 061a494..0000000
--- a/res/drawable-xhdpi/dial_num_star_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ab_dialer_holo_dark.png b/res/drawable-xhdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index a997643..0000000
--- a/res/drawable-xhdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ab_history_holo_dark.png b/res/drawable-xhdpi/ic_ab_history_holo_dark.png
deleted file mode 100644
index 98cc1af..0000000
--- a/res/drawable-xhdpi/ic_ab_history_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_contact_holo_dark.png b/res/drawable-xhdpi/ic_add_contact_holo_dark.png
deleted file mode 100644
index 7298882..0000000
--- a/res/drawable-xhdpi/ic_add_contact_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_incoming_holo_dark.png b/res/drawable-xhdpi/ic_call_incoming_holo_dark.png
deleted file mode 100644
index 8eb5f3d..0000000
--- a/res/drawable-xhdpi/ic_call_incoming_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_missed_holo_dark.png b/res/drawable-xhdpi/ic_call_missed_holo_dark.png
deleted file mode 100644
index 6d09a4e..0000000
--- a/res/drawable-xhdpi/ic_call_missed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png b/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png
deleted file mode 100644
index 6360504..0000000
--- a/res/drawable-xhdpi/ic_call_outgoing_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png b/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png
deleted file mode 100644
index d9684d1..0000000
--- a/res/drawable-xhdpi/ic_call_voicemail_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-xhdpi/ic_contact_picture_180_holo_dark.png
deleted file mode 100644
index c4c001e..0000000
--- a/res/drawable-xhdpi/ic_contact_picture_180_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_contact_picture_180_holo_light.png b/res/drawable-xhdpi/ic_contact_picture_180_holo_light.png
deleted file mode 100644
index f6fd172..0000000
--- a/res/drawable-xhdpi/ic_contact_picture_180_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_contact_picture_holo_dark.png b/res/drawable-xhdpi/ic_contact_picture_holo_dark.png
deleted file mode 100644
index ddf797f..0000000
--- a/res/drawable-xhdpi/ic_contact_picture_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_contact_picture_holo_light.png b/res/drawable-xhdpi/ic_contact_picture_holo_light.png
deleted file mode 100644
index 05a65f6..0000000
--- a/res/drawable-xhdpi/ic_contact_picture_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dial_action_call.png b/res/drawable-xhdpi/ic_dial_action_call.png
deleted file mode 100644
index 0bd9803..0000000
--- a/res/drawable-xhdpi/ic_dial_action_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dial_action_delete.png b/res/drawable-xhdpi/ic_dial_action_delete.png
deleted file mode 100644
index 989e8b1..0000000
--- a/res/drawable-xhdpi/ic_dial_action_delete.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dial_action_search.png b/res/drawable-xhdpi/ic_dial_action_search.png
deleted file mode 100644
index fe3aa24..0000000
--- a/res/drawable-xhdpi/ic_dial_action_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_add_call.png b/res/drawable-xhdpi/ic_dialer_fork_add_call.png
deleted file mode 100644
index 2c1f817..0000000
--- a/res/drawable-xhdpi/ic_dialer_fork_add_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_current_call.png b/res/drawable-xhdpi/ic_dialer_fork_current_call.png
deleted file mode 100644
index b1c4008..0000000
--- a/res/drawable-xhdpi/ic_dialer_fork_current_call.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png b/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
deleted file mode 100644
index ccd8f8a..0000000
--- a/res/drawable-xhdpi/ic_dialer_fork_tt_keypad.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_divider_dashed_holo_dark.png b/res/drawable-xhdpi/ic_divider_dashed_holo_dark.png
deleted file mode 100644
index 34e8fd2..0000000
--- a/res/drawable-xhdpi/ic_divider_dashed_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_hold_pause_disabled_holo_dark.png b/res/drawable-xhdpi/ic_hold_pause_disabled_holo_dark.png
deleted file mode 100644
index 9e12338..0000000
--- a/res/drawable-xhdpi/ic_hold_pause_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_hold_pause_holo_dark.png b/res/drawable-xhdpi/ic_hold_pause_holo_dark.png
deleted file mode 100644
index c298ab9..0000000
--- a/res/drawable-xhdpi/ic_hold_pause_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_overflow.png b/res/drawable-xhdpi/ic_menu_overflow.png
deleted file mode 100644
index 715cff8..0000000
--- a/res/drawable-xhdpi/ic_menu_overflow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png b/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png
deleted file mode 100644
index 65a6b7b..0000000
--- a/res/drawable-xhdpi/ic_menu_remove_field_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_settings_holo_light.png b/res/drawable-xhdpi/ic_menu_settings_holo_light.png
deleted file mode 100644
index 68ba92b..0000000
--- a/res/drawable-xhdpi/ic_menu_settings_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_star_holo_light.png b/res/drawable-xhdpi/ic_menu_star_holo_light.png
deleted file mode 100644
index 9067911..0000000
--- a/res/drawable-xhdpi/ic_menu_star_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_minus_disabled_holo_dark.png b/res/drawable-xhdpi/ic_minus_disabled_holo_dark.png
deleted file mode 100644
index ae6bce7..0000000
--- a/res/drawable-xhdpi/ic_minus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_minus_holo_dark.png b/res/drawable-xhdpi/ic_minus_holo_dark.png
deleted file mode 100644
index 0e95a6b..0000000
--- a/res/drawable-xhdpi/ic_minus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_active_holo_dark.png b/res/drawable-xhdpi/ic_play_active_holo_dark.png
deleted file mode 100644
index 20d0583..0000000
--- a/res/drawable-xhdpi/ic_play_active_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_disabled_holo_dark.png b/res/drawable-xhdpi/ic_play_disabled_holo_dark.png
deleted file mode 100644
index 9537351..0000000
--- a/res/drawable-xhdpi/ic_play_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_play_holo_dark.png b/res/drawable-xhdpi/ic_play_holo_dark.png
deleted file mode 100644
index afa6bb0..0000000
--- a/res/drawable-xhdpi/ic_play_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_plus_disabled_holo_dark.png b/res/drawable-xhdpi/ic_plus_disabled_holo_dark.png
deleted file mode 100644
index 169da3e..0000000
--- a/res/drawable-xhdpi/ic_plus_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_plus_holo_dark.png b/res/drawable-xhdpi/ic_plus_holo_dark.png
deleted file mode 100644
index b869bf9..0000000
--- a/res/drawable-xhdpi/ic_plus_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 764ff65..0000000
--- a/res/drawable-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index 98a449f..0000000
--- a/res/drawable-xhdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index b836d49..0000000
--- a/res/drawable-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index 71aad97..0000000
--- a/res/drawable-xhdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_text_holo_dark.png b/res/drawable-xhdpi/ic_text_holo_dark.png
deleted file mode 100644
index e80a042..0000000
--- a/res/drawable-xhdpi/ic_text_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_text_holo_light.png b/res/drawable-xhdpi/ic_text_holo_light.png
deleted file mode 100644
index 6fb8e92..0000000
--- a/res/drawable-xhdpi/ic_text_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_trash_holo_dark.png b/res/drawable-xhdpi/ic_trash_holo_dark.png
deleted file mode 100644
index 70e4d30..0000000
--- a/res/drawable-xhdpi/ic_trash_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/list_activated_holo.9.png b/res/drawable-xhdpi/list_activated_holo.9.png
deleted file mode 100644
index eda10e6..0000000
--- a/res/drawable-xhdpi/list_activated_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/list_background_holo.9.png b/res/drawable-xhdpi/list_background_holo.9.png
deleted file mode 100644
index b652725..0000000
--- a/res/drawable-xhdpi/list_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/list_focused_holo.9.png b/res/drawable-xhdpi/list_focused_holo.9.png
deleted file mode 100644
index 86578be..0000000
--- a/res/drawable-xhdpi/list_focused_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/list_selector_disabled_holo_dark.9.png b/res/drawable-xhdpi/list_selector_disabled_holo_dark.9.png
deleted file mode 100644
index 88726b6..0000000
--- a/res/drawable-xhdpi/list_selector_disabled_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/list_title_holo.9.png b/res/drawable-xhdpi/list_title_holo.9.png
deleted file mode 100644
index f4f00ca..0000000
--- a/res/drawable-xhdpi/list_title_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/unknown_source.png b/res/drawable-xhdpi/unknown_source.png
deleted file mode 100644
index 35e8fb4..0000000
--- a/res/drawable-xhdpi/unknown_source.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/background_holo_light.xml b/res/drawable/background_holo_light.xml
new file mode 100644
index 0000000..4e863ea
--- /dev/null
+++ b/res/drawable/background_holo_light.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <gradient
+ android:startColor="#ffe8e8e8"
+ android:endColor="#ffffffff"
+ android:angle="270" />
+</shape>
diff --git a/res/drawable/btn_call.xml b/res/drawable/btn_call.xml
deleted file mode 100644
index abce983..0000000
--- a/res/drawable/btn_call.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.
--->
-
-<!-- Background resource for call button in the various dialpads.
- Almost a copy from framework's item_background_holo_dark.xml, but has different pressed effect
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item android:state_window_focused="false" android:drawable="@android:color/transparent" />
-
- <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
- <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" />
- <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_dark" />
- <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_call_pressed" />
- <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_call_pressed" />
- <item android:state_focused="true" android:drawable="@drawable/list_focused_holo" />
- <item android:drawable="@android:color/transparent" />
-</selector>
-
diff --git a/res/drawable/dialpad_background.xml b/res/drawable/dialpad_background.xml
deleted file mode 100644
index 0e31f5e..0000000
--- a/res/drawable/dialpad_background.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.
--->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/dial_background_texture"
- android:tileMode="repeat" />
diff --git a/res/drawable/ic_hold_pause.xml b/res/drawable/ic_hold_pause.xml
deleted file mode 100644
index 19902ae..0000000
--- a/res/drawable/ic_hold_pause.xml
+++ /dev/null
@@ -1,21 +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:state_enabled="false"
- android:drawable="@drawable/ic_hold_pause_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_hold_pause_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_minus.xml b/res/drawable/ic_minus.xml
deleted file mode 100644
index 9750127..0000000
--- a/res/drawable/ic_minus.xml
+++ /dev/null
@@ -1,20 +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:state_enabled="false" android:drawable="@drawable/ic_minus_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_minus_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_play.xml b/res/drawable/ic_play.xml
deleted file mode 100644
index 1c43a55..0000000
--- a/res/drawable/ic_play.xml
+++ /dev/null
@@ -1,21 +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:state_enabled="false"
- android:drawable="@drawable/ic_play_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_play_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_plus.xml b/res/drawable/ic_plus.xml
deleted file mode 100644
index 176b21a..0000000
--- a/res/drawable/ic_plus.xml
+++ /dev/null
@@ -1,20 +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:state_enabled="false" android:drawable="@drawable/ic_plus_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_plus_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_speakerphone_off.xml b/res/drawable/ic_speakerphone_off.xml
deleted file mode 100644
index 6a8a0a1..0000000
--- a/res/drawable/ic_speakerphone_off.xml
+++ /dev/null
@@ -1,20 +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:state_enabled="false" android:drawable="@drawable/ic_sound_off_speakerphone_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_sound_off_speakerphone_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_speakerphone_on.xml b/res/drawable/ic_speakerphone_on.xml
deleted file mode 100644
index 4bcd5c6..0000000
--- a/res/drawable/ic_speakerphone_on.xml
+++ /dev/null
@@ -1,20 +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:state_enabled="false" android:drawable="@drawable/ic_sound_speakerphone_disabled_holo_dark" />
- <item android:drawable="@drawable/ic_sound_speakerphone_holo_dark" />
-</selector>
diff --git a/res/drawable/ic_tab_all.xml b/res/drawable/ic_tab_all.xml
deleted file mode 100644
index 97c4443..0000000
--- a/res/drawable/ic_tab_all.xml
+++ /dev/null
@@ -1,20 +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/ic_contacts_holo_dark" />
-</selector>
-
diff --git a/res/drawable/ic_tab_dialer.xml b/res/drawable/ic_tab_dialer.xml
deleted file mode 100644
index 593d091..0000000
--- a/res/drawable/ic_tab_dialer.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/ic_ab_dialer_holo_dark" />
-</selector>
-
diff --git a/res/drawable/ic_tab_recent.xml b/res/drawable/ic_tab_recent.xml
deleted file mode 100644
index cccc9ae..0000000
--- a/res/drawable/ic_tab_recent.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/ic_ab_history_holo_dark" />
-</selector>
-
diff --git a/res/drawable/list_item_activated_background.xml b/res/drawable/list_item_activated_background.xml
deleted file mode 100644
index a58577e..0000000
--- a/res/drawable/list_item_activated_background.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_activated="true" android:drawable="@drawable/list_activated_holo" />
- <item android:drawable="@drawable/list_background_holo" />
-</selector>
diff --git a/res/drawable/seek_bar_thumb.xml b/res/drawable/seek_bar_thumb.xml
deleted file mode 100644
index c0cffcc..0000000
--- a/res/drawable/seek_bar_thumb.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.
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_enabled="true">
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- First item is the outer transparent sphere. -->
- <item>
- <shape
- android:shape="oval"
- >
- <size
- android:width="16dip"
- android:height="16dip"
- />
- <solid
- android:color="@color/voicemail_playback_seek_bar_yet_to_play"
- />
- </shape>
- </item>
- <!-- Second item is the inner almost-opaque sphere.
- Seems to derive its size from the outer, a size element doesn't change anything.
- Looks like using left, right, top and bottom on the item is best to fix inner sphere. -->
- <item
- android:left="3dip"
- android:right="3dip"
- android:top="3dip"
- android:bottom="3dip"
- >
- <shape
- android:shape="oval"
- >
- <solid
- android:color="@color/voicemail_playback_seek_bar_already_played"
- />
- </shape>
- </item>
- </layer-list>
- </item>
-
- <!-- Do not show the thumb when disabled -->
- <item android:drawable="@android:color/transparent" />
-</selector>
\ No newline at end of file
diff --git a/res/drawable/seekbar_drawable.xml b/res/drawable/seekbar_drawable.xml
deleted file mode 100644
index 96bbee3..0000000
--- a/res/drawable/seekbar_drawable.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.
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_enabled="true">
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@android:id/background">
- <shape android:shape="line">
- <stroke
- android:width="2dip"
- android:color="@color/voicemail_playback_seek_bar_yet_to_play"
- />
- </shape>
- </item>
- <!-- I am not defining a secondary progress colour - we don't use it. -->
- <item android:id="@android:id/progress">
- <clip>
- <shape android:shape="line">
- <stroke
- android:width="2dip"
- android:color="@color/voicemail_playback_seek_bar_already_played"
- />
- </shape>
- </clip>
- </item>
- </layer-list>
- </item>
- <item>
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@android:id/background">
- <shape android:shape="line">
- <stroke
- android:width="2dip"
- android:color="@color/voicemail_playback_seek_bar_yet_to_play"
- />
- </shape>
- </item>
- <!-- I am not defining a secondary progress colour - we don't use it. -->
- <item android:id="@android:id/progress">
- <clip>
- <shape android:shape="line">
- <stroke
- android:width="2dip"
- android:color="@color/voicemail_playback_seek_bar_yet_to_play"
- />
- </shape>
- </clip>
- </item>
- </layer-list>
- </item>
-</selector>
diff --git a/res/layout-land/contact_detail_fragment.xml b/res/layout-land/contact_detail_fragment.xml
index 86692d8..2d788df 100644
--- a/res/layout-land/contact_detail_fragment.xml
+++ b/res/layout-land/contact_detail_fragment.xml
@@ -26,8 +26,10 @@
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="40dip"
+ android:layout_marginEnd="40dip"
android:layout_marginTop="20dip"
android:layout_marginBottom="20dip" />
@@ -44,6 +46,7 @@
android:layout_width="@dimen/detail_contact_photo_size"
android:layout_height="@dimen/detail_contact_photo_size"
android:layout_marginLeft="@dimen/detail_contact_photo_margin"
+ android:layout_marginStart="@dimen/detail_contact_photo_margin"
android:layout_marginTop="@dimen/detail_contact_photo_margin" />
<ListView android:id="@android:id/list"
@@ -68,6 +71,8 @@
android:textColor="?android:attr/textColorSecondary"
android:paddingLeft="10dip"
android:paddingRight="10dip"
+ android:paddingStart="10dip"
+ android:paddingEnd="10dip"
android:paddingTop="10dip"
android:lineSpacingMultiplier="0.92"/>
</ScrollView>
diff --git a/res/layout-land/dialpad_fragment.xml b/res/layout-land/dialpad_fragment.xml
deleted file mode 100644
index 63dd369..0000000
--- a/res/layout-land/dialpad_fragment.xml
+++ /dev/null
@@ -1,97 +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/top"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <LinearLayout
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="3"
- android:orientation="vertical" >
-
- <LinearLayout
- android:id="@+id/digits_container"
- android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="@integer/dialpad_layout_weight_digits"
- android:layout_marginTop="@dimen/dialpad_vertical_margin"
- android:background="@drawable/dialpad_background"
- android:gravity="center">
-
- <com.android.contacts.dialpad.DigitsEditText
- android:id="@+id/digits"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="match_parent"
- android:gravity="center"
- android:textAppearance="@style/DialtactsDigitsTextAppearance"
- android:textColor="?android:attr/textColorPrimary"
- android:nextFocusRight="@+id/overflow_menu"
- android:background="@android:color/transparent" />
-
- <ImageButton
- android:id="@+id/deleteButton"
- android:layout_width="56dip"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical"
- android:gravity="center"
- android:state_enabled="false"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/description_delete_button"
- android:src="@drawable/ic_dial_action_delete" />
-
-
- </LinearLayout>
- <!-- "Dialpad chooser" UI, shown only when the user brings up the
- Dialer while a call is already in progress.
- When this UI is visible, the other Dialer elements
- (the textfield and button) are hidden. -->
- <ListView android:id="@+id/dialpadChooser"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:footerDividersEnabled="true" />
-
- <!-- Keypad section -->
- <include layout="@layout/dialpad" />
- </LinearLayout>
- <View
- android:layout_width="@dimen/dialpad_center_margin"
- android:layout_height="match_parent"
- android:background="#66000000"/>
- <RelativeLayout
- android:id="@+id/dialButtonContainer"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="2"
- android:background="@drawable/dialpad_background">
- <View
- android:layout_width="match_parent"
- android:layout_height="@dimen/dialpad_button_margin"
- android:layout_above="@id/dialButton"
- android:background="#33000000" />
- <ImageButton android:id="@+id/dialButton"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_button_height"
- android:layout_alignParentBottom="true"
- android:state_enabled="false"
- android:background="@drawable/btn_call"
- android:contentDescription="@string/description_dial_button"
- android:src="@drawable/ic_dial_action_call" />
- </RelativeLayout>
-</LinearLayout>
diff --git a/res/layout-land/dialtacts_activity.xml b/res/layout-land/dialtacts_activity.xml
deleted file mode 100644
index f43fe5f..0000000
--- a/res/layout-land/dialtacts_activity.xml
+++ /dev/null
@@ -1,27 +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"
- android:layout_marginTop="?android:attr/actionBarSize"
- android:id="@+id/dialtacts_frame"
- >
- <android.support.v4.view.ViewPager
- android:id="@+id/pager"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-</FrameLayout>
diff --git a/res/layout-land/group_editor_view.xml b/res/layout-land/group_editor_view.xml
index 293e529..dded4c3 100644
--- a/res/layout-land/group_editor_view.xml
+++ b/res/layout-land/group_editor_view.xml
@@ -25,6 +25,8 @@
android:layout_height="match_parent"
android:paddingLeft="8dip"
android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip"
android:orientation="horizontal"
>
@@ -39,6 +41,7 @@
android:hint="@string/group_name_hint"
android:minHeight="48dip"
android:paddingRight="8dip"
+ android:paddingEnd="8dip"
/>
<LinearLayout
@@ -46,6 +49,7 @@
android:layout_weight="1"
android:layout_height="match_parent"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:orientation="vertical"
>
<include
diff --git a/res/layout-land/group_source_button.xml b/res/layout-land/group_source_button.xml
index af62c2c..3bc10e7 100644
--- a/res/layout-land/group_source_button.xml
+++ b/res/layout-land/group_source_button.xml
@@ -48,6 +48,8 @@
android:layout_height="25dip"
android:layout_marginLeft="7dip"
android:layout_marginRight="7dip"
+ android:layout_marginStart="7dip"
+ android:layout_marginEnd="7dip"
android:layout_gravity="center_vertical"/>
</LinearLayout>
diff --git a/res/layout-land/quickcontact_activity.xml b/res/layout-land/quickcontact_activity.xml
index dbd5260..c398551 100644
--- a/res/layout-land/quickcontact_activity.xml
+++ b/res/layout-land/quickcontact_activity.xml
@@ -15,7 +15,7 @@
-->
<view
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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"
@@ -30,7 +30,7 @@
android:padding="32dip"
android:orientation="horizontal">
<view
- class="com.android.contacts.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
ex:ratio="1.0"
@@ -49,7 +49,7 @@
android:background="@color/quickcontact_tab_indicator" />
<android.support.v4.view.ViewPager
android:id="@+id/item_list_pager"
- android:background="@color/quickcontact_list_background"
+ android:background="@drawable/quickcontact_track_background"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
diff --git a/res/layout-land/updates_header_contact.xml b/res/layout-land/updates_header_contact.xml
index 5b068cd..844188e 100644
--- a/res/layout-land/updates_header_contact.xml
+++ b/res/layout-land/updates_header_contact.xml
@@ -23,12 +23,16 @@
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"
diff --git a/res/layout-sw580dp-land/contact_detail_container.xml b/res/layout-sw580dp-land/contact_detail_container.xml
index e653d9d..3597d9f 100644
--- a/res/layout-sw580dp-land/contact_detail_container.xml
+++ b/res/layout-sw580dp-land/contact_detail_container.xml
@@ -22,6 +22,7 @@
android:id="@+id/fragment_carousel"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginLeft="16dip"/>
+ android:layout_marginLeft="16dip"
+ android:layout_marginStart="16dip"/>
</FrameLayout>
diff --git a/res/layout-sw580dp-land/contact_detail_fragment.xml b/res/layout-sw580dp-land/contact_detail_fragment.xml
index 9f32584..a48a5b5 100644
--- a/res/layout-sw580dp-land/contact_detail_fragment.xml
+++ b/res/layout-sw580dp-land/contact_detail_fragment.xml
@@ -19,8 +19,7 @@
android:id="@+id/contact_detail"
android:orientation="vertical"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/background_primary">
+ android:layout_height="match_parent">
<!-- Placeholder for empty list -->
<include
@@ -41,7 +40,8 @@
android:layout_width="@dimen/detail_contact_photo_size"
android:layout_height="@dimen/detail_contact_photo_size"
android:layout_marginTop="@dimen/detail_contact_photo_margin"
- android:layout_marginRight="@dimen/detail_contact_photo_margin" />
+ android:layout_marginRight="@dimen/detail_contact_photo_margin"
+ android:layout_marginEnd="@dimen/detail_contact_photo_margin" />
<ListView android:id="@android:id/list"
android:layout_width="0dip"
@@ -52,7 +52,8 @@
android:layout_weight="1"
android:divider="@null"
android:scrollbarStyle="outsideOverlay"
- android:paddingRight="16dip"/>
+ android:paddingRight="16dip"
+ android:paddingEnd="16dip"/>
</LinearLayout>
diff --git a/res/layout-sw580dp-land/contact_detail_updates_fragment.xml b/res/layout-sw580dp-land/contact_detail_updates_fragment.xml
index 3b4b422..40bc9c9 100644
--- a/res/layout-sw580dp-land/contact_detail_updates_fragment.xml
+++ b/res/layout-sw580dp-land/contact_detail_updates_fragment.xml
@@ -24,5 +24,7 @@
android:paddingTop="@dimen/contact_detail_list_top_padding"
android:paddingLeft="16dip"
android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip"
android:scrollbarStyle="outsideOverlay"
android:clipToPadding="false"/>
diff --git a/res/layout-sw580dp-land/detail_header_contact_with_updates.xml b/res/layout-sw580dp-land/detail_header_contact_with_updates.xml
index 32eecc9..6476300 100644
--- a/res/layout-sw580dp-land/detail_header_contact_with_updates.xml
+++ b/res/layout-sw580dp-land/detail_header_contact_with_updates.xml
@@ -37,7 +37,9 @@
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="16dip"
- android:paddingRight="4dip">
+ android:paddingRight="4dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="4dip">
<TextView
android:id="@+id/name"
diff --git a/res/layout-sw580dp-land/detail_header_contact_without_updates.xml b/res/layout-sw580dp-land/detail_header_contact_without_updates.xml
index 57a2820..085b972 100644
--- a/res/layout-sw580dp-land/detail_header_contact_without_updates.xml
+++ b/res/layout-sw580dp-land/detail_header_contact_without_updates.xml
@@ -24,13 +24,15 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:paddingBottom="16dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingRight="16dip">
+ android:paddingRight="16dip"
+ android:paddingEnd="16dip">
<TextView
android:id="@+id/name"
@@ -39,7 +41,8 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/detail_header_name_text_size"
- android:paddingRight="16dip" />
+ android:paddingRight="16dip"
+ android:paddingEnd="16dip" />
<include
layout="@layout/favorites_star" />
diff --git a/res/layout-sw580dp-land/people_activity.xml b/res/layout-sw580dp-land/people_activity.xml
index 3a86842..46f27a0 100644
--- a/res/layout-sw580dp-land/people_activity.xml
+++ b/res/layout-sw580dp-land/people_activity.xml
@@ -14,9 +14,11 @@
limitations under the License.
-->
-<FrameLayout
+<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/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -59,7 +61,6 @@
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="2"
- android:background="@color/background_primary"
android:visibility="gone">
<!-- This layout includes all possible views needed for a contact detail page -->
@@ -85,7 +86,6 @@
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="2"
- android:background="@color/background_primary"
android:visibility="gone">
<!-- This is the group detail page -->
@@ -117,8 +117,10 @@
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_marginLeft="16dip"/>
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip" />
</FrameLayout>
@@ -130,7 +132,8 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="16dip"
- android:layout_marginRight="16dip"/>
+ android:layout_marginRight="16dip"
+ android:layout_marginEnd="16dip"/>
</LinearLayout>
@@ -140,6 +143,7 @@
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
@@ -155,4 +159,4 @@
android:paddingBottom="20dip" />
</com.android.contacts.widget.InterpolatingLayout>
-</FrameLayout>
+</view>
diff --git a/res/layout-sw580dp-land/quickcontact_activity.xml b/res/layout-sw580dp-land/quickcontact_activity.xml
index 5c38309..230c4e0 100644
--- a/res/layout-sw580dp-land/quickcontact_activity.xml
+++ b/res/layout-sw580dp-land/quickcontact_activity.xml
@@ -45,7 +45,7 @@
android:background="@color/quickcontact_tab_indicator" />
<android.support.v4.view.ViewPager
android:id="@+id/item_list_pager"
- android:background="@color/quickcontact_list_background"
+ android:background="@drawable/quickcontact_track_background"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
diff --git a/res/layout-sw580dp-land/updates_header_contact.xml b/res/layout-sw580dp-land/updates_header_contact.xml
index 1ffdcaa..eb0eee7 100644
--- a/res/layout-sw580dp-land/updates_header_contact.xml
+++ b/res/layout-sw580dp-land/updates_header_contact.xml
@@ -28,6 +28,8 @@
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"
diff --git a/res/layout-sw580dp/contact_detail_container.xml b/res/layout-sw580dp/contact_detail_container.xml
index fc09dfb..d7accaf 100644
--- a/res/layout-sw580dp/contact_detail_container.xml
+++ b/res/layout-sw580dp/contact_detail_container.xml
@@ -22,6 +22,7 @@
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" />
@@ -30,6 +31,7 @@
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"/>
diff --git a/res/layout-sw580dp/contact_detail_fragment.xml b/res/layout-sw580dp/contact_detail_fragment.xml
index fd6390e..1e0f7e6 100644
--- a/res/layout-sw580dp/contact_detail_fragment.xml
+++ b/res/layout-sw580dp/contact_detail_fragment.xml
@@ -36,7 +36,8 @@
android:cacheColorHint="#00000000"
android:divider="@null"
android:scrollbarStyle="outsideOverlay"
- android:paddingRight="12dip" />
+ android:paddingRight="12dip"
+ android:paddingEnd="12dip" />
<!-- "QuickFix"- button (Copy to local contact, add to group) -->
<Button
diff --git a/res/layout-sw580dp/contact_detail_updates_fragment.xml b/res/layout-sw580dp/contact_detail_updates_fragment.xml
index a154936..537d68f 100644
--- a/res/layout-sw580dp/contact_detail_updates_fragment.xml
+++ b/res/layout-sw580dp/contact_detail_updates_fragment.xml
@@ -26,6 +26,7 @@
android:fadingEdge="none"
android:divider="@null"
android:scrollbarStyle="outsideOverlay"
- android:paddingRight="12dip" />
+ android:paddingRight="12dip"
+ android:paddingEnd="12dip" />
</FrameLayout>
diff --git a/res/layout-sw580dp/contact_editor_fragment.xml b/res/layout-sw580dp/contact_editor_fragment.xml
index 572de4f..2c6e1f1 100644
--- a/res/layout-sw580dp/contact_editor_fragment.xml
+++ b/res/layout-sw580dp/contact_editor_fragment.xml
@@ -16,7 +16,7 @@
<com.android.contacts.widget.InterpolatingLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/panel_message">
@@ -34,4 +34,4 @@
ex:layout_narrowMarginLeft="50dip"
ex:layout_narrowMarginRight="50dip"/>
-</com.android.contacts.widget.InterpolatingLayout>
\ No newline at end of file
+</com.android.contacts.widget.InterpolatingLayout>
diff --git a/res/layout-sw580dp/contact_picker.xml b/res/layout-sw580dp/contact_picker.xml
index 127021c..adcfd92 100644
--- a/res/layout-sw580dp/contact_picker.xml
+++ b/res/layout-sw580dp/contact_picker.xml
@@ -35,7 +35,10 @@
android:layout_height="wrap_content"
android:layout_marginLeft="0dip"
android:layout_marginRight="@dimen/list_visible_scrollbar_padding"
+ android:layout_marginStart="0dip"
+ android:layout_marginEnd="@dimen/list_visible_scrollbar_padding"
android:paddingRight="0dip"
+ android:paddingEnd="0dip"
android:iconifiedByDefault="false" />
<!--
This will contain an appropriate contacts list. Add a min height to prevent
@@ -57,7 +60,9 @@
android:minHeight="48dip"
android:background="@drawable/gray_action_bar_background"
android:paddingLeft="16dip"
- android:paddingRight="16dip">
+ android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip">
<TextView
android:id="@android:id/title"
android:layout_width="0dip"
diff --git a/res/layout-sw580dp/detail_header_contact_with_updates.xml b/res/layout-sw580dp/detail_header_contact_with_updates.xml
index f732b23..06b82dd 100644
--- a/res/layout-sw580dp/detail_header_contact_with_updates.xml
+++ b/res/layout-sw580dp/detail_header_contact_with_updates.xml
@@ -22,7 +22,7 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -31,7 +31,7 @@
<!-- Add a first item that gives us enough space to show the carousel -->
<view
- class="com.android.contacts.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ex:ratio="0.6667"
@@ -49,15 +49,15 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dip"
- android:paddingRight="8dip">
+ android:paddingEnd="8dip" >
<TextView
android:id="@+id/name"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:paddingLeft="8dip"
- android:paddingRight="24dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="24dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/detail_header_name_text_size" />
@@ -70,7 +70,7 @@
android:id="@+id/company"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorSecondary" />
diff --git a/res/layout-sw580dp/detail_header_contact_without_updates.xml b/res/layout-sw580dp/detail_header_contact_without_updates.xml
index 3c01b16..069e0de 100644
--- a/res/layout-sw580dp/detail_header_contact_without_updates.xml
+++ b/res/layout-sw580dp/detail_header_contact_without_updates.xml
@@ -20,7 +20,7 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -29,7 +29,7 @@
<!-- Ensure that the contact photo for a contact WITHOUT social updates is the same width and
height as a contact WITH social updates (where the photo is 2/3 of the screen width). -->
<view
- class="com.android.contacts.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
ex:ratio="0.6667"
@@ -61,15 +61,15 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dip"
- android:paddingRight="8dip">
+ android:paddingEnd="8dip" >
<TextView
android:id="@+id/name"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:paddingLeft="8dip"
- android:paddingRight="24dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="24dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/detail_header_name_text_size" />
@@ -82,7 +82,7 @@
android:id="@+id/company"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorSecondary" />
diff --git a/res/layout-sw580dp/external_group_editor_view.xml b/res/layout-sw580dp/external_group_editor_view.xml
index 39e0c56..9702bc7 100644
--- a/res/layout-sw580dp/external_group_editor_view.xml
+++ b/res/layout-sw580dp/external_group_editor_view.xml
@@ -21,6 +21,8 @@
android:paddingTop="50dip"
android:paddingLeft="50dip"
android:paddingRight="100dip"
+ android:paddingStart="50dip"
+ android:paddingEnd="100dip"
android:orientation="horizontal"
android:background="@color/background_primary">
@@ -29,6 +31,7 @@
android:layout_height="match_parent"
android:layout_weight="3"
android:layout_marginRight="30dip"
+ android:layout_marginEnd="30dip"
android:orientation="vertical">
<TextView
@@ -38,6 +41,8 @@
android:paddingTop="10dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
+ android:paddingStart="10dip"
+ android:paddingEnd="10dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorTertiary"
android:text="@string/group_read_only" />
diff --git a/res/layout-sw580dp/group_detail_fragment.xml b/res/layout-sw580dp/group_detail_fragment.xml
index 8a4ce86..4afc0ee 100644
--- a/res/layout-sw580dp/group_detail_fragment.xml
+++ b/res/layout-sw580dp/group_detail_fragment.xml
@@ -23,7 +23,9 @@
android:layout_height="match_parent"
android:background="@drawable/panel_content"
android:paddingLeft="@dimen/group_detail_border_padding"
- android:paddingRight="@dimen/group_detail_border_padding">
+ android:paddingRight="@dimen/group_detail_border_padding"
+ android:paddingStart="@dimen/group_detail_border_padding"
+ android:paddingEnd="@dimen/group_detail_border_padding">
<!-- Static header containing the group title, size, and group source (if applicable) -->
<LinearLayout
@@ -36,6 +38,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:orientation="vertical" >
<TextView
diff --git a/res/layout-sw580dp/group_editor_activity.xml b/res/layout-sw580dp/group_editor_activity.xml
index d344487..f93d247 100644
--- a/res/layout-sw580dp/group_editor_activity.xml
+++ b/res/layout-sw580dp/group_editor_activity.xml
@@ -16,7 +16,7 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.android.contacts.widget.InterpolatingLayout
diff --git a/res/layout-sw580dp/group_editor_view.xml b/res/layout-sw580dp/group_editor_view.xml
index 76c05d4..717fc28 100644
--- a/res/layout-sw580dp/group_editor_view.xml
+++ b/res/layout-sw580dp/group_editor_view.xml
@@ -21,6 +21,8 @@
android:paddingTop="32dip"
android:paddingLeft="@dimen/group_editor_side_padding"
android:paddingRight="@dimen/group_editor_side_padding"
+ android:paddingStart="@dimen/group_editor_side_padding"
+ android:paddingEnd="@dimen/group_editor_side_padding"
android:orientation="horizontal"
android:background="@color/background_primary">
@@ -29,6 +31,7 @@
android:layout_height="match_parent"
android:layout_weight="3"
android:layout_marginRight="30dip"
+ android:layout_marginEnd="30dip"
android:orientation="vertical">
<include
@@ -43,7 +46,8 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:inputType="textCapWords"
android:hint="@string/group_name_hint"
- android:paddingLeft="16dip"/>
+ android:paddingLeft="16dip"
+ android:paddingStart="16dip"/>
</LinearLayout>
diff --git a/res/layout-sw580dp/group_source_button.xml b/res/layout-sw580dp/group_source_button.xml
index 43c85e9..aad118f 100644
--- a/res/layout-sw580dp/group_source_button.xml
+++ b/res/layout-sw580dp/group_source_button.xml
@@ -43,6 +43,7 @@
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_marginLeft="7dip"
+ android:layout_marginStart="7dip"
android:layout_gravity="center_vertical"/>
</LinearLayout>
diff --git a/res/layout-sw580dp/join_contact_picker.xml b/res/layout-sw580dp/join_contact_picker.xml
index 3d9127b..9de85db 100644
--- a/res/layout-sw580dp/join_contact_picker.xml
+++ b/res/layout-sw580dp/join_contact_picker.xml
@@ -27,7 +27,10 @@
android:layout_height="wrap_content"
android:layout_marginLeft="0dip"
android:layout_marginRight="@dimen/list_visible_scrollbar_padding"
+ android:layout_marginStart="0dip"
+ android:layout_marginEnd="@dimen/list_visible_scrollbar_padding"
android:paddingRight="0dip"
+ android:paddingEnd="0dip"
android:iconifiedByDefault="false" />
<FrameLayout
diff --git a/res/layout-sw580dp/list_separator.xml b/res/layout-sw580dp/list_separator.xml
index 34e8d79..74a031c 100644
--- a/res/layout-sw580dp/list_separator.xml
+++ b/res/layout-sw580dp/list_separator.xml
@@ -19,4 +19,6 @@
android:id="@+id/title"
style="@style/ContactListSeparatorTextViewStyle"
android:paddingLeft="8dip"
- android:paddingRight="8dip" />
+ android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip" />
diff --git a/res/layout-sw580dp/people_activity.xml b/res/layout-sw580dp/people_activity.xml
index 42c6afc..f788f72 100644
--- a/res/layout-sw580dp/people_activity.xml
+++ b/res/layout-sw580dp/people_activity.xml
@@ -14,9 +14,11 @@
limitations under the License.
-->
-<FrameLayout
+<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/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -59,7 +61,6 @@
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="2"
- android:background="@color/background_primary"
android:visibility="gone">
<!-- This layout includes all possible views needed for a contact detail page -->
@@ -69,8 +70,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dip"
- android:layout_marginTop="16dip"
- android:layout_marginRight="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
@@ -88,7 +91,6 @@
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_weight="2"
- android:background="@color/background_primary"
android:visibility="gone">
<!-- This is the group detail page -->
@@ -104,15 +106,18 @@
<FrameLayout
android:id="@+id/favorites_view"
android:layout_width="match_parent"
- android:layout_height="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_marginLeft="16dip" />
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip" />
</FrameLayout>
@@ -122,6 +127,7 @@
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
@@ -137,4 +143,4 @@
android:paddingBottom="20dip" />
</com.android.contacts.widget.InterpolatingLayout>
-</FrameLayout>
+</view>
diff --git a/res/layout-sw580dp/quickcontact_activity.xml b/res/layout-sw580dp/quickcontact_activity.xml
index 129a6e5..229974b 100644
--- a/res/layout-sw580dp/quickcontact_activity.xml
+++ b/res/layout-sw580dp/quickcontact_activity.xml
@@ -15,7 +15,7 @@
-->
<view
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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"
@@ -42,7 +42,7 @@
android:background="@color/quickcontact_tab_indicator" />
<android.support.v4.view.ViewPager
android:id="@+id/item_list_pager"
- android:background="@color/quickcontact_list_background"
+ android:background="@drawable/quickcontact_track_background"
android:layout_width="match_parent"
android:layout_height="160dip" />
</LinearLayout>
diff --git a/res/layout-sw580dp/text_fields_editor_view.xml b/res/layout-sw580dp/text_fields_editor_view.xml
index 89970c6..c6b010b 100644
--- a/res/layout-sw580dp/text_fields_editor_view.xml
+++ b/res/layout-sw580dp/text_fields_editor_view.xml
@@ -25,9 +25,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
- android:gravity="center_vertical"
- android:focusable="true"
- android:clickable="true">
+ android:gravity="center_vertical">
<include
android:id="@+id/editors"
diff --git a/res/layout-sw580dp/updates_header_contact.xml b/res/layout-sw580dp/updates_header_contact.xml
index b8b3278..e95f1dd 100644
--- a/res/layout-sw580dp/updates_header_contact.xml
+++ b/res/layout-sw580dp/updates_header_contact.xml
@@ -19,14 +19,14 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dip"
@@ -46,6 +46,8 @@
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"
@@ -53,4 +55,4 @@
android:singleLine="true"
android:ellipsize="end" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout-sw680dp-land/contact_detail_empty.xml b/res/layout-sw680dp-land/contact_detail_empty.xml
index e12dd39..0ff9960 100644
--- a/res/layout-sw680dp-land/contact_detail_empty.xml
+++ b/res/layout-sw680dp-land/contact_detail_empty.xml
@@ -18,7 +18,7 @@
<com.android.contacts.widget.InterpolatingLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/emptyText"
@@ -33,4 +33,4 @@
ex:layout_narrowMarginLeft="44dip"
android:paddingTop="10dip"
android:lineSpacingMultiplier="0.92"/>
-</com.android.contacts.widget.InterpolatingLayout>
\ No newline at end of file
+</com.android.contacts.widget.InterpolatingLayout>
diff --git a/res/layout-sw680dp-land/contact_detail_fragment.xml b/res/layout-sw680dp-land/contact_detail_fragment.xml
index b3f13a6..4eee458 100644
--- a/res/layout-sw680dp-land/contact_detail_fragment.xml
+++ b/res/layout-sw680dp-land/contact_detail_fragment.xml
@@ -20,8 +20,8 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_primary"
- android:paddingLeft="16dip">
+ android:paddingLeft="16dip"
+ android:paddingStart="16dip">
<!-- Placeholder for empty list -->
<include
@@ -42,7 +42,8 @@
android:layout_width="@dimen/detail_contact_photo_size"
android:layout_height="@dimen/detail_contact_photo_size"
android:layout_marginTop="@dimen/detail_contact_photo_margin"
- android:layout_marginRight="@dimen/detail_contact_photo_margin" />
+ android:layout_marginRight="@dimen/detail_contact_photo_margin"
+ android:layout_marginEnd="@dimen/detail_contact_photo_margin" />
<ListView android:id="@android:id/list"
android:layout_width="0dip"
@@ -53,6 +54,7 @@
android:layout_weight="1"
android:divider="@null"
android:paddingRight="16dip"
+ android:paddingEnd="16dip"
android:scrollbarStyle="outsideOverlay"/>
</LinearLayout>
diff --git a/res/layout-sw680dp-land/contact_detail_list_item.xml b/res/layout-sw680dp-land/contact_detail_list_item.xml
index 2016131..a5af1dd 100644
--- a/res/layout-sw680dp-land/contact_detail_list_item.xml
+++ b/res/layout-sw680dp-land/contact_detail_list_item.xml
@@ -22,7 +22,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="16dip">
+ android:paddingLeft="16dip"
+ android:paddingStart="16dip">
<com.android.contacts.detail.ActionsViewContainer
android:id="@+id/actions_view_container"
@@ -43,6 +44,7 @@
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:orientation="vertical">
<TextView
@@ -58,6 +60,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:layout_marginRight="4dip"
+ android:layout_marginEnd="4dip"
android:layout_gravity="center_vertical"
android:scaleType="centerInside" />
@@ -75,7 +78,8 @@
android:visibility="gone"
android:layout_gravity="center_vertical"
android:background="@drawable/ic_list_default_mime_holo_dark"
- android:layout_marginRight="8dip" />
+ android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip" />
<TextView
android:id="@+id/type"
@@ -83,7 +87,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- android:paddingRight="16dip" />
+ android:paddingRight="16dip"
+ android:paddingEnd="16dip" />
<View
android:id="@+id/vertical_divider"
@@ -100,6 +105,8 @@
android:layout_height="match_parent"
android:paddingLeft="@dimen/detail_item_icon_margin"
android:paddingRight="@dimen/detail_item_icon_margin"
+ android:paddingStart="@dimen/detail_item_icon_margin"
+ android:paddingEnd="@dimen/detail_item_icon_margin"
android:duplicateParentState="false"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
diff --git a/res/layout-sw680dp-land/contact_detail_updates_fragment.xml b/res/layout-sw680dp-land/contact_detail_updates_fragment.xml
index d809258..ba9f653 100644
--- a/res/layout-sw680dp-land/contact_detail_updates_fragment.xml
+++ b/res/layout-sw680dp-land/contact_detail_updates_fragment.xml
@@ -24,5 +24,7 @@
android:paddingTop="@dimen/contact_detail_list_top_padding"
android:paddingLeft="16dip"
android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip"
android:scrollbarStyle="outsideOverlay"
android:clipToPadding="false"/>
diff --git a/res/layout-sw680dp-land/detail_header_contact_with_updates.xml b/res/layout-sw680dp-land/detail_header_contact_with_updates.xml
index 7758a21..268b51a 100644
--- a/res/layout-sw680dp-land/detail_header_contact_with_updates.xml
+++ b/res/layout-sw680dp-land/detail_header_contact_with_updates.xml
@@ -36,8 +36,8 @@
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"
diff --git a/res/layout-sw680dp-land/detail_header_contact_without_updates.xml b/res/layout-sw680dp-land/detail_header_contact_without_updates.xml
index 9e53df0..bc3f16c 100644
--- a/res/layout-sw680dp-land/detail_header_contact_without_updates.xml
+++ b/res/layout-sw680dp-land/detail_header_contact_without_updates.xml
@@ -23,14 +23,14 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:paddingBottom="16dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingRight="16dip">
+ android:paddingEnd="16dip">
<TextView
android:id="@+id/name"
@@ -39,7 +39,7 @@
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/detail_header_name_text_size"
- android:paddingRight="16dip" />
+ android:paddingStart="16dip" />
<include
layout="@layout/favorites_star" />
diff --git a/res/layout-sw680dp-land/people_activity.xml b/res/layout-sw680dp-land/people_activity.xml
index 2dea4eb..1becbd1 100644
--- a/res/layout-sw680dp-land/people_activity.xml
+++ b/res/layout-sw680dp-land/people_activity.xml
@@ -14,27 +14,27 @@
limitations under the License.
-->
-<FrameLayout
+<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/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <com.android.contacts.widget.InterpolatingLayout
+ <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="wrap_content"
+ android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_weight="1"
android:minWidth="100dip"
- ex:layout_narrowParentWidth="1000dip"
- ex:layout_narrowWidth="276dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideWidth="376dip"
android:background="@drawable/list_background_holo"
android:visibility="gone">
@@ -56,14 +56,9 @@
<view
class="com.android.contacts.widget.TransitionAnimationView"
android:id="@+id/contact_details_view"
- android:layout_width="match_parent"
+ android:layout_width="0dp"
android:layout_height="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="0dip"
- ex:layout_narrowMarginRight="0dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="0dip"
- ex:layout_wideMarginRight="0dip"
+ android:layout_weight="2"
android:visibility="gone">
<!-- This layout includes all possible views needed for a contact detail page -->
@@ -87,12 +82,6 @@
android:id="@+id/group_details_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
- ex:layout_narrowParentWidth="800dip"
- ex:layout_narrowMarginLeft="0dip"
- ex:layout_narrowMarginRight="0dip"
- ex:layout_wideParentWidth="1280dip"
- ex:layout_wideMarginLeft="0dip"
- ex:layout_wideMarginRight="0dip"
android:visibility="gone">
<!-- This is the group detail page -->
@@ -123,8 +112,10 @@
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_marginLeft="32dip"/>
+ android:layout_marginStart="32dip"
+ android:layout_marginEnd="32dip"/>
</FrameLayout>
@@ -136,16 +127,18 @@
android:layout_height="match_parent"
android:layout_weight="3"
android:layout_marginTop="32dip"
- android:layout_marginRight="16dip"/>
+ android:layout_marginRight="16dip"
+ android:layout_marginEnd="16dip"/>
</LinearLayout>
- </com.android.contacts.widget.InterpolatingLayout>
+ </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
@@ -161,4 +154,4 @@
android:paddingBottom="20dip" />
</com.android.contacts.widget.InterpolatingLayout>
-</FrameLayout>
+</view>
diff --git a/res/layout-sw680dp-land/quickcontact_activity.xml b/res/layout-sw680dp-land/quickcontact_activity.xml
index 5c38309..230c4e0 100644
--- a/res/layout-sw680dp-land/quickcontact_activity.xml
+++ b/res/layout-sw680dp-land/quickcontact_activity.xml
@@ -45,7 +45,7 @@
android:background="@color/quickcontact_tab_indicator" />
<android.support.v4.view.ViewPager
android:id="@+id/item_list_pager"
- android:background="@color/quickcontact_list_background"
+ android:background="@drawable/quickcontact_track_background"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
diff --git a/res/layout-sw680dp-land/updates_header_contact.xml b/res/layout-sw680dp-land/updates_header_contact.xml
index fc4471b..8173f81 100644
--- a/res/layout-sw680dp-land/updates_header_contact.xml
+++ b/res/layout-sw680dp-land/updates_header_contact.xml
@@ -28,6 +28,8 @@
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"
diff --git a/res/layout-sw680dp/people_activity.xml b/res/layout-sw680dp/people_activity.xml
index f604f9b..d8b4026 100644
--- a/res/layout-sw680dp/people_activity.xml
+++ b/res/layout-sw680dp/people_activity.xml
@@ -14,9 +14,11 @@
limitations under the License.
-->
-<FrameLayout
+<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/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -58,8 +60,7 @@
android:id="@+id/contact_details_view"
android:layout_width="0dip"
android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@color/background_primary"
+ android:layout_weight="2"
android:visibility="gone">
<!-- This layout includes all possible views needed for a contact detail page -->
@@ -69,8 +70,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dip"
- android:layout_marginTop="16dip"
- android:layout_marginRight="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
@@ -87,8 +90,7 @@
android:id="@+id/group_details_view"
android:layout_width="0dip"
android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@color/background_primary"
+ android:layout_weight="2"
android:visibility="gone">
<!-- This is the group detail page -->
@@ -120,8 +122,10 @@
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_marginLeft="16dip"/>
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip" />
</FrameLayout>
@@ -133,7 +137,8 @@
android:layout_height="match_parent"
android:layout_weight="8"
android:layout_marginTop="16dip"
- android:layout_marginRight="16dip"/>
+ android:layout_marginRight="16dip"
+ android:layout_marginEnd="16dip"/>
</LinearLayout>
@@ -143,6 +148,7 @@
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
@@ -158,4 +164,4 @@
android:paddingBottom="20dip" />
</com.android.contacts.widget.InterpolatingLayout>
-</FrameLayout>
+</view>
diff --git a/res/layout/account_filter_header.xml b/res/layout/account_filter_header.xml
deleted file mode 100644
index 0ffb7e1..0000000
--- a/res/layout/account_filter_header.xml
+++ /dev/null
@@ -1,35 +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.
--->
-
-<!-- Layout showing the type of account filter
- (e.g. All contacts filter, custom filter, etc.),
- which is the header of all contact lists. -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/account_filter_header_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingTop="@dimen/list_header_extra_top_padding"
- android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
- android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
- android:background="?android:attr/selectableItemBackground"
- android:visibility="gone">
- <TextView
- android:id="@+id/account_filter_header"
- style="@style/ContactListSeparatorTextViewStyle"
- android:paddingLeft="@dimen/contact_browser_list_item_text_indent" />
-</LinearLayout>
diff --git a/res/layout/account_filter_header_for_phone_favorite.xml b/res/layout/account_filter_header_for_phone_favorite.xml
deleted file mode 100644
index 6f1d23d..0000000
--- a/res/layout/account_filter_header_for_phone_favorite.xml
+++ /dev/null
@@ -1,36 +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.
--->
-
-<!-- Layout showing the type of account filter for phone favorite screen
- (or, new phone "all" screen).
- This is very similar to account_filter_header.xml but different in its
- top padding. -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/account_filter_header_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingTop="8dip"
- android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
- android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
- android:background="?android:attr/selectableItemBackground"
- android:visibility="gone">
- <TextView
- android:id="@+id/account_filter_header"
- style="@style/ContactListSeparatorTextViewStyle"
- android:paddingLeft="@dimen/contact_browser_list_item_text_indent" />
-</LinearLayout>
diff --git a/res/layout/account_selector_list_item.xml b/res/layout/account_selector_list_item.xml
deleted file mode 100644
index 4cba3e9..0000000
--- a/res/layout/account_selector_list_item.xml
+++ /dev/null
@@ -1,51 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/listPreferredItemHeight"
- android:orientation="horizontal">
- <ImageView android:id="@android:id/icon"
- android:layout_width="@dimen/detail_network_icon_size"
- android:layout_height="@dimen/detail_network_icon_size"
- android:layout_margin="8dip"
- android:layout_gravity="center_vertical" />
-
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:orientation="vertical"
- android:layout_gravity="center_vertical">
-
- <TextView android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="8dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:singleLine="true"
- android:ellipsize="end"/>
-
- <TextView android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="8dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:singleLine="true"
- android:ellipsize="end"/>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/add_group_menu_item.xml b/res/layout/add_group_menu_item.xml
index 1b8bb26..5f95b3f 100644
--- a/res/layout/add_group_menu_item.xml
+++ b/res/layout/add_group_menu_item.xml
@@ -26,6 +26,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
android:src="@drawable/ic_add_group_holo_dark"
android:description="@string/menu_new_group_action_bar"
style="?android:attr/actionButtonStyle" />
diff --git a/res/layout/aggregation_suggestions_item.xml b/res/layout/aggregation_suggestions_item.xml
index 188a26e..4f96326 100644
--- a/res/layout/aggregation_suggestions_item.xml
+++ b/res/layout/aggregation_suggestions_item.xml
@@ -23,6 +23,7 @@
android:layout_height="wrap_content"
android:minHeight="48dip"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:background="?android:attr/selectableItemBackground"
android:orientation="horizontal">
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
deleted file mode 100644
index 1d0a285..0000000
--- a/res/layout/call_detail.xml
+++ /dev/null
@@ -1,218 +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.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
- android:id="@+id/call_detail"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone"
- android:background="@android:color/black"
->
- <!--
- The list view is under everything.
- It contains a first header element which is hidden under the controls UI.
- When scrolling, the controls move up until the name bar hits the top.
- -->
- <ListView
- android:id="@+id/history"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- />
-
- <!-- All the controls which are part of the pinned header are in this layout. -->
- <RelativeLayout
- android:id="@+id/controls"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- >
- <FrameLayout
- android:id="@+id/voicemail_status"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:visibility="gone"
- >
- <include layout="@layout/call_log_voicemail_status"/>
- </FrameLayout>
-
- <view
- class="com.android.contacts.widget.ProportionalLayout"
- android:id="@+id/contact_background_sizer"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@id/voicemail_status"
- ex:ratio="0.5"
- ex:direction="widthToHeight"
- >
- <ImageView
- android:id="@+id/contact_background"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:adjustViewBounds="true"
- android:scaleType="centerCrop"
- />
- </view>
- <LinearLayout
- android:id="@+id/blue_separator"
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="@android:color/holo_blue_light"
- android:layout_below="@+id/contact_background_sizer"
- />
- <View
- android:id="@+id/photo_text_bar"
- android:layout_width="match_parent"
- android:layout_height="42dip"
- android:background="#7F000000"
- android:layout_alignParentLeft="true"
- android:layout_alignBottom="@id/contact_background_sizer"
- />
- <ImageView
- android:id="@+id/main_action"
- android:layout_width="wrap_content"
- android:layout_height="0dip"
- android:scaleType="center"
- android:layout_alignRight="@id/photo_text_bar"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_alignTop="@id/photo_text_bar"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- />
- <TextView
- android:id="@+id/header_text"
- android:layout_width="wrap_content"
- android:layout_height="0dip"
- android:layout_alignLeft="@id/photo_text_bar"
- android:layout_toLeftOf="@id/main_action"
- android:layout_alignTop="@id/photo_text_bar"
- android:layout_alignBottom="@id/photo_text_bar"
- android:layout_marginRight="@dimen/call_log_inner_margin"
- android:layout_marginLeft="@dimen/call_detail_contact_name_margin"
- android:gravity="center_vertical"
- android:textColor="?attr/call_log_primary_text_color"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:singleLine="true"
- />
- <ImageButton
- android:id="@+id/main_action_push_layer"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignLeft="@id/contact_background_sizer"
- android:layout_alignTop="@id/contact_background_sizer"
- android:layout_alignRight="@id/contact_background_sizer"
- android:layout_alignBottom="@id/contact_background_sizer"
- android:background="?android:attr/selectableItemBackground"
- />
- <LinearLayout
- android:id="@+id/voicemail_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="@dimen/call_detail_button_spacing"
- android:layout_below="@id/blue_separator"
- >
- <!-- The voicemail fragment will be put here. -->
- </LinearLayout>
- <FrameLayout
- android:id="@+id/call_and_sms"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_log_list_item_height"
- android:layout_marginBottom="@dimen/call_detail_button_spacing"
- android:layout_below="@id/voicemail_container"
- android:gravity="center_vertical"
- android:background="@drawable/dialpad_background"
- >
- <LinearLayout
- android:id="@+id/call_and_sms_main_action"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- >
-
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:paddingLeft="@dimen/call_log_indent_margin"
- android:orientation="vertical"
- android:gravity="center_vertical"
- >
-
- <TextView android:id="@+id/call_and_sms_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingRight="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?attr/call_log_primary_text_color"
- android:singleLine="true"
- android:ellipsize="end"
- />
-
- <TextView android:id="@+id/call_and_sms_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingRight="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?attr/call_log_primary_text_color"
- android:textAllCaps="true"
- android:singleLine="true"
- android:ellipsize="end"
- />
- </LinearLayout>
-
- <View android:id="@+id/call_and_sms_divider"
- android:layout_width="1px"
- android:layout_height="32dip"
- android:background="@drawable/ic_divider_dashed_holo_dark"
- android:layout_gravity="center_vertical"
- />
-
- <ImageView android:id="@+id/call_and_sms_icon"
- android:layout_width="@color/call_log_voicemail_highlight_color"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/call_log_inner_margin"
- android:paddingRight="@dimen/call_log_outer_margin"
- android:gravity="center"
- android:scaleType="centerInside"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- />
- </LinearLayout>
- </FrameLayout>
- </RelativeLayout>
-
- <!--
- Used to hide the UI when playing a voicemail and the proximity sensor
- is detecting something near the screen.
- -->
- <View
- android:id="@+id/blank"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:background="@android:color/black"
- android:visibility="gone"
- android:clickable="true"
- />
-</RelativeLayout>
diff --git a/res/layout/call_detail_history_header.xml b/res/layout/call_detail_history_header.xml
deleted file mode 100644
index 63c8673..0000000
--- a/res/layout/call_detail_history_header.xml
+++ /dev/null
@@ -1,61 +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.
--->
-
-<!-- This layout is supposed to match the content of the controls in call_detail.xml -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <!-- Contact photo. -->
- <view
- class="com.android.contacts.widget.ProportionalLayout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@id/voicemail_status"
- ex:ratio="0.5"
- ex:direction="widthToHeight"
- >
- <!-- Proportional layout requires a view in it. -->
- <View
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- </view>
- <!-- Separator line -->
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- />
- <!-- Voicemail controls -->
- <!-- TODO: Make the height be based on a constant. -->
- <View
- android:id="@+id/header_voicemail_container"
- android:layout_width="match_parent"
- android:layout_height="140dip"
- android:layout_marginBottom="@dimen/call_detail_button_spacing"
- />
- <!-- Call and SMS -->
- <View
- android:id="@+id/header_call_and_sms_container"
- android:layout_width="match_parent"
- android:layout_height="@dimen/call_log_list_item_height"
- />
-
-</LinearLayout>
diff --git a/res/layout/call_detail_history_item.xml b/res/layout/call_detail_history_item.xml
deleted file mode 100644
index 28a7da0..0000000
--- a/res/layout/call_detail_history_item.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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/call_log_list_item_height"
- android:paddingTop="@dimen/call_log_inner_margin"
- android:paddingBottom="@dimen/call_log_inner_margin"
- android:paddingLeft="@dimen/call_log_indent_margin"
- android:paddingRight="@dimen/call_log_outer_margin"
- android:orientation="vertical"
->
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <view
- class="com.android.contacts.calllog.CallTypeIconsView"
- android:id="@+id/call_type_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- />
- <TextView
- android:id="@+id/call_type_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/call_log_icon_margin"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/secondary_text_color"
- />
- </LinearLayout>
- <TextView
- android:id="@+id/date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/secondary_text_color"
- />
- <TextView
- android:id="@+id/duration"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/secondary_text_color"
- />
-</LinearLayout>
diff --git a/res/layout/call_log_fragment.xml b/res/layout/call_log_fragment.xml
deleted file mode 100644
index 687fa35..0000000
--- a/res/layout/call_log_fragment.xml
+++ /dev/null
@@ -1,82 +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.
--->
-
-<!-- Layout parameters are set programmatically. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/FragmentActionBarPadding"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:divider="?android:attr/dividerHorizontal"
- android:showDividers="end">
-
- <FrameLayout
- android:id="@+id/voicemail_status"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone">
- <include layout="@layout/call_log_voicemail_status"
- />
- </FrameLayout>
-
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- >
- <TextView
- android:id="@+id/filter_status"
- style="@style/ContactListSeparatorTextViewStyle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/call_log_outer_margin"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:paddingTop="@dimen/call_log_inner_margin"
- android:paddingBottom="@dimen/call_log_inner_margin"
- android:layout_alignParentLeft="true"
- android:layout_alignParentBottom="true"
- android:visibility="gone"
- />
- <View
- android:id="@+id/call_log_divider"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:layout_marginLeft="@dimen/call_log_outer_margin"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:layout_gravity="bottom"
- android:background="#55ffffff"
- />
- </FrameLayout>
- <FrameLayout
- 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:scrollbarStyle="outsideOverlay"
- android:divider="@null"
- />
- <TextView android:id="@android:id/empty"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:text="@string/recentCalls_empty"
- android:gravity="center"
- android:layout_marginTop="@dimen/empty_message_top_margin"
- android:textColor="?android:attr/textColorSecondary"
- android:textAppearance="?android:attr/textAppearanceLarge"
- />
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
deleted file mode 100644
index 4040c28..0000000
--- a/res/layout/call_log_list_item.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.calllog.CallLogListItemView"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
->
- <!--
- This layout may represent either a call log item or one of the
- headers in the call log.
-
- The former will make the @id/call_log_item visible and the
- @id/call_log_header gone.
-
- The latter will make the @id/call_log_header visible and the
- @id/call_log_item gone
- -->
-
- <LinearLayout
- android:id="@+id/primary_action_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_marginLeft="@dimen/call_log_outer_margin"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- android:background="?android:attr/selectableItemBackground"
- android:focusable="true"
- android:nextFocusRight="@+id/secondary_action_icon"
- android:nextFocusLeft="@+id/quick_contact_photo"
- >
- <QuickContactBadge
- android:id="@+id/quick_contact_photo"
- android:layout_width="@dimen/call_log_list_contact_photo_size"
- android:layout_height="@dimen/call_log_list_contact_photo_size"
- android:nextFocusRight="@id/primary_action_view"
- android:layout_alignParentLeft="true"
- android:layout_centerVertical="true"
- android:focusable="true"
- />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:paddingTop="@dimen/call_log_inner_margin"
- android:paddingBottom="@dimen/call_log_inner_margin"
- android:orientation="vertical"
- android:gravity="center_vertical"
- android:layout_marginLeft="@dimen/call_log_inner_margin"
- >
- <TextView
- android:id="@+id/name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/call_log_icon_margin"
- android:textColor="?attr/call_log_primary_text_color"
- android:textSize="18sp"
- android:singleLine="true"
- />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <TextView
- android:id="@+id/number"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/call_log_icon_margin"
- android:textColor="?attr/call_log_secondary_text_color"
- android:textSize="14sp"
- android:singleLine="true"
- android:ellipsize="marquee"
- />
- <TextView
- android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/call_log_icon_margin"
- android:textColor="?attr/call_log_secondary_text_color"
- android:textStyle="bold"
- android:textSize="14sp"
- android:singleLine="true"
- android:ellipsize="marquee"
- />
- </LinearLayout>
- <LinearLayout
- android:id="@+id/call_type"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <view
- class="com.android.contacts.calllog.CallTypeIconsView"
- android:id="@+id/call_type_icons"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/call_log_icon_margin"
- android:layout_gravity="center_vertical"
- />
- <TextView
- android:id="@+id/call_count_and_date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="@dimen/call_log_icon_margin"
- android:layout_gravity="center_vertical"
- android:textColor="?attr/call_log_secondary_text_color"
- android:textSize="14sp"
- android:singleLine="true"
- />
- </LinearLayout>
- </LinearLayout>
- <View
- android:id="@+id/divider"
- android:layout_width="1px"
- android:layout_height="@dimen/call_log_call_action_size"
- android:background="@drawable/ic_divider_dashed_holo_dark"
- android:layout_gravity="center_vertical"
- />
- <ImageButton
- android:id="@+id/secondary_action_icon"
- android:layout_width="@dimen/call_log_call_action_width"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/call_log_inner_margin"
- android:paddingTop="@dimen/call_log_inner_margin"
- android:paddingBottom="@dimen/call_log_inner_margin"
- android:paddingRight="@dimen/call_log_inner_margin"
- android:scaleType="center"
- android:background="?android:attr/selectableItemBackground"
- android:nextFocusLeft="@id/primary_action_view"
- />
- </LinearLayout>
-
- <TextView
- android:id="@+id/call_log_header"
- style="@style/ContactListSeparatorTextViewStyle"
- android:layout_marginLeft="@dimen/call_log_outer_margin"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:paddingTop="@dimen/call_log_inner_margin"
- android:paddingBottom="@dimen/call_log_inner_margin" />
-
- <View
- android:id="@+id/call_log_divider"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:layout_marginLeft="@dimen/call_log_outer_margin"
- android:layout_marginRight="@dimen/call_log_outer_margin"
- android:background="#55ffffff"
- />
-</view>
diff --git a/res/layout/call_log_voicemail_status.xml b/res/layout/call_log_voicemail_status.xml
deleted file mode 100644
index 191c821..0000000
--- a/res/layout/call_log_voicemail_status.xml
+++ /dev/null
@@ -1,46 +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">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="?attr/call_log_voicemail_status_height"
- android:background="?attr/call_log_voicemail_status_background_color"
- >
- <TextView
- android:id="@+id/voicemail_status_message"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- android:paddingLeft="@dimen/call_log_outer_margin"
- android:paddingRight="@dimen/call_log_inner_margin"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?attr/call_log_voicemail_status_text_color"
- />
- <TextView
- android:id="@+id/voicemail_status_action"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:gravity="center_vertical"
- android:paddingLeft="@dimen/call_log_inner_margin"
- android:paddingRight="@dimen/call_log_outer_margin"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?attr/call_log_voicemail_status_action_text_color"
- android:background="?android:attr/selectableItemBackground"
- android:clickable="true"
- />
- </LinearLayout>
-</merge>
diff --git a/res/layout/carousel_about_tab.xml b/res/layout/carousel_about_tab.xml
index dc261d2..8026f37 100644
--- a/res/layout/carousel_about_tab.xml
+++ b/res/layout/carousel_about_tab.xml
@@ -30,14 +30,16 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
- android:layout_alignParentLeft="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_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). -->
@@ -45,6 +47,7 @@
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" />
@@ -53,6 +56,7 @@
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"/>
@@ -61,8 +65,10 @@
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"
diff --git a/res/layout/carousel_updates_tab.xml b/res/layout/carousel_updates_tab.xml
index 67ea582..0bd5cbd 100644
--- a/res/layout/carousel_updates_tab.xml
+++ b/res/layout/carousel_updates_tab.xml
@@ -36,6 +36,7 @@
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
@@ -44,6 +45,7 @@
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" />
@@ -53,10 +55,13 @@
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"
@@ -68,6 +73,7 @@
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"/>
@@ -76,11 +82,13 @@
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="left|center_vertical"
+ 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" />
diff --git a/res/layout/confirm_add_detail_activity.xml b/res/layout/confirm_add_detail_activity.xml
index 7ee16cf..650ca2f 100644
--- a/res/layout/confirm_add_detail_activity.xml
+++ b/res/layout/confirm_add_detail_activity.xml
@@ -43,6 +43,8 @@
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="#7F000000" />
<ImageButton
@@ -52,9 +54,11 @@
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_alignRight="@id/photo_text_bar"
+ android:layout_alignEnd="@id/photo_text_bar" />
<LinearLayout
android:layout_width="match_parent"
@@ -62,9 +66,13 @@
android:orientation="vertical"
android:layout_alignBottom="@id/photo"
android:layout_alignLeft="@id/photo"
+ android:layout_alignStart="@id/photo"
android:layout_toLeftOf="@id/open_details_button"
+ android:layout_toStartOf="@id/open_details_button"
+ android:paddingLeft="8dip"
android:paddingRight="8dip"
- android:paddingLeft="8dip">
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip">
<TextView
android:id="@+id/name"
@@ -72,6 +80,7 @@
android:layout_height="0dip"
android:layout_weight="1"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="16sp"
@@ -83,6 +92,7 @@
android:layout_height="0dip"
android:layout_weight="1"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white"
@@ -116,7 +126,8 @@
android:layout_height="wrap_content"
android:minHeight="60dip"
android:layout_marginTop="4dip"
- android:layout_marginRight="15dip"/>
+ android:layout_marginRight="15dip"
+ android:layout_marginEnd="15dip"/>
<View
android:id="@+id/divider"
diff --git a/res/layout/contact_detail_add_connection_entry_view.xml b/res/layout/contact_detail_add_connection_entry_view.xml
index 208a8d4..6d4971d 100644
--- a/res/layout/contact_detail_add_connection_entry_view.xml
+++ b/res/layout/contact_detail_add_connection_entry_view.xml
@@ -22,7 +22,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/detail_item_side_margin"
- android:paddingRight="@dimen/detail_item_side_margin">
+ android:paddingRight="@dimen/detail_item_side_margin"
+ android:paddingStart="@dimen/detail_item_side_margin"
+ android:paddingEnd="@dimen/detail_item_side_margin">
<LinearLayout
android:id="@+id/primary_action_view"
android:layout_width="match_parent"
@@ -41,6 +43,8 @@
android:layout_height="@dimen/detail_network_icon_size"
android:layout_marginLeft="@dimen/detail_item_icon_margin"
android:layout_marginRight="@dimen/detail_item_icon_margin"
+ android:layout_marginStart="@dimen/detail_item_icon_margin"
+ android:layout_marginEnd="@dimen/detail_item_icon_margin"
android:layout_gravity="center_vertical"
android:scaleType="centerInside" />
diff --git a/res/layout/contact_detail_container.xml b/res/layout/contact_detail_container.xml
index a59ada4..f6b3438 100644
--- a/res/layout/contact_detail_container.xml
+++ b/res/layout/contact_detail_container.xml
@@ -31,6 +31,7 @@
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" />
@@ -39,6 +40,7 @@
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"/>
diff --git a/res/layout/contact_detail_empty.xml b/res/layout/contact_detail_empty.xml
index 755c069..cdb8feb 100644
--- a/res/layout/contact_detail_empty.xml
+++ b/res/layout/contact_detail_empty.xml
@@ -24,5 +24,6 @@
android:textSize="20sp"
android:textColor="?android:attr/textColorSecondary"
android:layout_marginLeft="15dip"
+ android:layout_marginStart="15dip"
android:paddingTop="10dip"
android:lineSpacingMultiplier="0.92"/>
\ No newline at end of file
diff --git a/res/layout/contact_detail_fragment.xml b/res/layout/contact_detail_fragment.xml
index 08b1aad..4d53310 100644
--- a/res/layout/contact_detail_fragment.xml
+++ b/res/layout/contact_detail_fragment.xml
@@ -42,6 +42,8 @@
android:textColor="?android:attr/textColorSecondary"
android:paddingLeft="10dip"
android:paddingRight="10dip"
+ android:paddingStart="10dip"
+ android:paddingEnd="10dip"
android:paddingTop="10dip"
android:lineSpacingMultiplier="0.92"/>
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index 666b67c..fb24caa 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -22,7 +22,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingLeft="16dip">
+ android:paddingStart="16dip">
<com.android.contacts.detail.ActionsViewContainer
android:id="@+id/actions_view_container"
@@ -41,14 +41,12 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
- android:paddingLeft="8dip"
- android:gravity="center_vertical">
+ android:paddingStart="8dip" >
<TextView
android:id="@+id/data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
@@ -62,6 +60,7 @@
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" />
@@ -97,8 +96,8 @@
android:id="@+id/secondary_action_view_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="@dimen/detail_item_icon_margin"
- android:paddingRight="@dimen/detail_item_icon_margin"
+ android:paddingStart="@dimen/detail_item_icon_margin"
+ android:paddingEnd="@dimen/detail_item_icon_margin"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
android:nextFocusLeft="@id/actions_view_container">
diff --git a/res/layout/contact_detail_list_padding.xml b/res/layout/contact_detail_list_padding.xml
deleted file mode 100644
index c5dbd06..0000000
--- a/res/layout/contact_detail_list_padding.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.
--->
-
-<!-- The actual padding is embedded in a FrameLayout since we cannot change the
- visibility of a header view in a ListView without having a parent view. -->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <View
- android:id="@+id/contact_detail_list_padding"
- android:layout_width="match_parent"
- android:layout_height="@dimen/list_header_extra_top_padding" />
-</FrameLayout>
diff --git a/res/layout/contact_detail_network_title_entry_view.xml b/res/layout/contact_detail_network_title_entry_view.xml
index 09b8b34..073dad8 100644
--- a/res/layout/contact_detail_network_title_entry_view.xml
+++ b/res/layout/contact_detail_network_title_entry_view.xml
@@ -22,7 +22,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/detail_item_side_margin"
- android:paddingRight="@dimen/detail_item_side_margin">
+ android:paddingRight="@dimen/detail_item_side_margin"
+ android:paddingStart="@dimen/detail_item_side_margin"
+ android:paddingEnd="@dimen/detail_item_side_margin">
<LinearLayout
android:id="@+id/primary_action_view"
android:layout_width="match_parent"
@@ -41,6 +43,8 @@
android:layout_height="@dimen/detail_network_icon_size"
android:layout_marginLeft="@dimen/detail_item_icon_margin"
android:layout_marginRight="@dimen/detail_item_icon_margin"
+ android:layout_marginStart="@dimen/detail_item_icon_margin"
+ android:layout_marginEnd="@dimen/detail_item_icon_margin"
android:layout_gravity="center_vertical"
android:scaleType="centerInside" />
diff --git a/res/layout/contact_editor_label_name_dialog.xml b/res/layout/contact_editor_label_name_dialog.xml
index 8960869..162f85d 100644
--- a/res/layout/contact_editor_label_name_dialog.xml
+++ b/res/layout/contact_editor_label_name_dialog.xml
@@ -18,10 +18,12 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="25dip"
+ android:paddingLeft="25dip"
android:paddingRight="25dip"
- android:paddingBottom="25dip"
- android:paddingLeft="25dip">
+ android:paddingStart="25dip"
+ android:paddingEnd="25dip"
+ android:paddingTop="25dip"
+ android:paddingBottom="25dip">
<EditText
android:id="@+id/custom_dialog_content"
android:layout_width="match_parent"
diff --git a/res/layout/contact_list_content.xml b/res/layout/contact_list_content.xml
deleted file mode 100644
index b268102..0000000
--- a/res/layout/contact_list_content.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!-- android:paddingTop is used instead of android:layout_marginTop. It looks
- android:layout_marginTop is ignored when used with <fragment></fragment>, which
- only happens in Tablet UI since we rely on ViewPager in Phone UI.
- Instead, android:layout_marginTop inside <fragment /> is effective. -->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/pinned_header_list_layout"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?attr/contact_browser_background" >
-
- <!-- Shown only when an Account filter is set.
- - paddingTop should be here to show "shade" effect correctly. -->
- <include
- android:id="@+id/account_filter_header_container"
- layout="@layout/account_filter_header" />
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1" >
- <view
- class="com.android.contacts.widget.PinnedHeaderListView"
- android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginLeft="?attr/contact_browser_list_padding_left"
- android:layout_marginRight="?attr/contact_browser_list_padding_right"
- android:fastScrollEnabled="true"
- android:fadingEdge="none" />
- <ProgressBar
- android:id="@+id/search_progress"
- style="?android:attr/progressBarStyleLarge"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:visibility="gone" />
- </FrameLayout>
-
- <ViewStub
- android:id="@+id/footer_stub"
- android:layout="@layout/footer_panel"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/res/layout/contact_list_filter.xml b/res/layout/contact_list_filter.xml
deleted file mode 100644
index 37aaf53..0000000
--- a/res/layout/contact_list_filter.xml
+++ /dev/null
@@ -1,38 +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:orientation="vertical"
- android:fillViewport="true">
-
- <ListView
- android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- android:layout_marginLeft="@dimen/contact_filter_left_margin"
- android:layout_marginRight="@dimen/contact_filter_right_margin" />
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:background="?android:attr/dividerHorizontal" />
-</LinearLayout>
diff --git a/res/layout/contact_list_filter_custom.xml b/res/layout/contact_list_filter_custom.xml
deleted file mode 100644
index 40d9c78..0000000
--- a/res/layout/contact_list_filter_custom.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/CustomContactListFilterView"
- android:orientation="vertical"
- android:fillViewport="true">
-
- <ExpandableListView
- android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- android:layout_marginLeft="@dimen/contact_filter_left_margin"
- android:layout_marginRight="@dimen/contact_filter_right_margin"
- android:overScrollMode="always" />
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_marginLeft="16dip"
- android:layout_marginRight="16dip"
- android:background="?android:attr/dividerHorizontal" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- style="?android:attr/buttonBarStyle">
-
- <Button
- android:id="@+id/btn_discard"
- style="?android:attr/buttonBarButtonStyle"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@android:string/cancel" />
-
- <Button
- android:id="@+id/btn_done"
- style="?android:attr/buttonBarButtonStyle"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@android:string/ok" />
-
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/contact_list_filter_item.xml b/res/layout/contact_list_filter_item.xml
deleted file mode 100644
index 7814565..0000000
--- a/res/layout/contact_list_filter_item.xml
+++ /dev/null
@@ -1,66 +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.
--->
-
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.list.ContactListFilterView"
- android:descendantFocusability="blocksDescendants"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/contact_filter_item_min_height"
- android:gravity="center_vertical">
-
- <ImageView
- android:id="@+id/icon"
- android:scaleType="fitCenter"
- android:layout_width="@dimen/contact_filter_icon_size"
- android:layout_height="@dimen/contact_filter_icon_size"/>
-
- <LinearLayout
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:orientation="vertical"
- android:layout_marginLeft="8dip">
-
- <TextView
- android:id="@+id/accountType"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:singleLine="true"
- android:ellipsize="end"/>
-
- <TextView
- android:id="@+id/accountUserName"
- android:layout_marginTop="-3dip"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorTertiary"
- android:singleLine="true"
- android:ellipsize="end"/>
- </LinearLayout>
-
- <RadioButton
- android:id="@+id/radioButton"
- android:clickable="false"
- android:layout_marginTop="1dip"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right|center_vertical" />
-</view>
-
diff --git a/res/layout/contact_picker.xml b/res/layout/contact_picker.xml
index 49be858..2752b0c 100644
--- a/res/layout/contact_picker.xml
+++ b/res/layout/contact_picker.xml
@@ -27,6 +27,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="0dip"
android:layout_marginRight="32dip"
+ android:layout_marginStart="0dip"
+ android:layout_marginEnd="32dip"
android:iconifiedByDefault="false" />
<!-- will contain an appropriate contacts list -->
<FrameLayout
diff --git a/res/layout/contact_picker_content.xml b/res/layout/contact_picker_content.xml
index 14eaf15..0d92b3f 100644
--- a/res/layout/contact_picker_content.xml
+++ b/res/layout/contact_picker_content.xml
@@ -14,26 +14,27 @@
limitations under the License.
-->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/pinned_header_list_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<view
- class="com.android.contacts.widget.PinnedHeaderListView"
+ class="com.android.contacts.common.list.PinnedHeaderListView"
android:id="@android:id/list"
android:layout_width="match_parent"
- android:layout_height="0dip"
+ android:layout_height="match_parent"
android:layout_marginLeft="?attr/contact_browser_list_padding_left"
android:layout_marginRight="?attr/contact_browser_list_padding_right"
- android:fastScrollEnabled="true"
- android:layout_weight="1" />
+ android:layout_marginStart="?attr/contact_browser_list_padding_left"
+ android:layout_marginEnd="?attr/contact_browser_list_padding_right"
+ android:fastScrollEnabled="true"/>
- <ViewStub
- android:id="@+id/footer_stub"
- android:layout="@layout/footer_panel"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-</LinearLayout>
+ <TextView android:id="@android:id/empty"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="20sp"
+ android:textColor="?android:attr/textColorSecondary"
+ android:text="@string/listFoundAllContactsZero"/>
+
+</FrameLayout>
diff --git a/res/layout/contact_tile_frequent.xml b/res/layout/contact_tile_frequent.xml
deleted file mode 100644
index 9219f56..0000000
--- a/res/layout/contact_tile_frequent.xml
+++ /dev/null
@@ -1,78 +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.list.ContactTileFrequentView"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- android:nextFocusRight="@+id/contact_tile_quick">
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.contacts.widget.LayoutSuppressingQuickContactBadge
- android:id="@+id/contact_tile_quick"
- android:layout_width="64dip"
- android:layout_height="64dip"
- android:layout_alignParentRight="true"
- android:scaleType="centerCrop"
- android:focusable="true" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="64dip"
- android:orientation="vertical"
- android:layout_alignParentBottom="true"
- android:gravity="center_vertical"
- android:paddingRight="80dip"
- android:paddingLeft="8dip">
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/primary_text_color"
- android:textSize="18sp"
- android:singleLine="true"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
-
- <TextView
- android:id="@+id/contact_tile_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"
- android:singleLine="true"
- android:drawablePadding="4dip"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
-
- </LinearLayout>
-
- <View
- android:id="@+id/contact_tile_horizontal_divider"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="?android:attr/listDivider"
- android:layout_below="@id/contact_tile_quick" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_tile_frequent_phone.xml b/res/layout/contact_tile_frequent_phone.xml
deleted file mode 100644
index cae5ec2..0000000
--- a/res/layout/contact_tile_frequent_phone.xml
+++ /dev/null
@@ -1,97 +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.
--->
-
-<!-- Layout parameters are set programmatically. -->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/contact_tile_frequent_phone"
- class="com.android.contacts.list.ContactTilePhoneFrequentView"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground"
- android:nextFocusLeft="@+id/contact_tile_quick">
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.contacts.widget.LayoutSuppressingQuickContactBadge
- android:id="@id/contact_tile_quick"
- android:layout_width="64dip"
- android:layout_height="64dip"
- android:layout_alignParentLeft="true"
- android:nextFocusRight="@id/contact_tile_frequent_phone"
- android:scaleType="centerCrop"
- android:focusable="true" />
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dip"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_marginTop="8dip"
- android:layout_toRightOf="@id/contact_tile_quick"
- android:singleLine="true"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
-
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/contact_tile_name"
- android:layout_toRightOf="@id/contact_tile_quick"
- android:gravity="center_vertical">
-
- <TextView
- android:id="@+id/contact_tile_phone_number"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="?attr/list_item_data_width_weight"
- android:textSize="14sp"
- android:ellipsize="marquee"
- android:textColor="@color/dialtacts_secondary_text_color"
- android:layout_marginLeft="8dip"
- android:singleLine="true"
- android:layout_gravity="bottom" />
-
- <TextView
- android:id="@+id/contact_tile_phone_type"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="?attr/list_item_label_width_weight"
- android:textSize="12sp"
- android:ellipsize="marquee"
- android:singleLine="true"
- android:textAllCaps="true"
- android:textColor="@color/dialtacts_secondary_text_color"
- android:layout_marginLeft="8dip"
- android:gravity="right"
- android:layout_gravity="bottom" />
-
- </LinearLayout>
-
- <View
- android:id="@+id/contact_tile_horizontal_divider"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="?android:attr/listDivider"
- android:layout_below="@id/contact_tile_quick" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_tile_phone_starred.xml b/res/layout/contact_tile_phone_starred.xml
deleted file mode 100644
index 053ffa6..0000000
--- a/res/layout/contact_tile_phone_starred.xml
+++ /dev/null
@@ -1,72 +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"
- android:background="@null"
- android:paddingBottom="1dip"
- android:paddingRight="1dip"
- class="com.android.contacts.list.ContactTilePhoneStarredView" >
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.contacts.widget.LayoutSuppressingImageView
- android:id="@+id/contact_tile_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop" />
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="match_parent"
- android:layout_height="@dimen/contact_tile_shadowbox_height"
- android:background="@color/contact_tile_shadow_box_color"
- android:gravity="center_vertical"
- android:textColor="@android:color/white"
- android:singleLine="true"
- android:textSize="16sp"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee"
- android:layout_alignParentBottom="true"
- android:paddingLeft="8dip"
- android:paddingRight="47dip"
- android:drawableRight="@drawable/ic_divider_dashed_holo_dark" />
-
- <View
- android:id="@+id/contact_tile_push_state"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:nextFocusRight="@+id/contact_tile_secondary_button"
- android:background="?android:attr/selectableItemBackground" />
-
- <ImageButton
- android:id="@id/contact_tile_secondary_button"
- android:src="@drawable/ic_contacts_holo_dark"
- android:background="?android:attr/selectableItemBackground"
- android:layout_height="@dimen/contact_tile_shadowbox_height"
- android:layout_width="48dip"
- android:paddingRight="8dip"
- android:paddingLeft="8dip"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:contentDescription="@string/description_view_contact_detail" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_tile_starred.xml b/res/layout/contact_tile_starred.xml
deleted file mode 100644
index cfc74d8..0000000
--- a/res/layout/contact_tile_starred.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"
- android:background="@null"
- android:paddingBottom="1dip"
- android:paddingRight="1dip"
- class="com.android.contacts.list.ContactTileStarredView" >
-
- <RelativeLayout
- android:id="@+id/contact_tile_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.contacts.widget.LayoutSuppressingImageView
- android:id="@+id/contact_tile_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="@dimen/contact_tile_shadowbox_height"
- android:orientation="vertical"
- android:background="@color/contact_tile_shadow_box_color"
- android:layout_alignParentBottom="true"
- android:gravity="center_vertical"
- android:paddingRight="8dip"
- android:paddingLeft="8dip">
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@android:color/white"
- android:textSize="16sp"
- android:singleLine="true"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
-
- <TextView
- android:id="@+id/contact_tile_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/people_contact_tile_status_color"
- android:singleLine="true"
- android:drawablePadding="4dip"
- android:paddingBottom="4dip"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:layout_marginTop="-3dip"
- android:ellipsize="marquee" />
-
- </LinearLayout>
-
- <View
- android:id="@+id/contact_tile_push_state"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:background="?android:attr/selectableItemBackground" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_tile_starred_quick_contact.xml b/res/layout/contact_tile_starred_quick_contact.xml
deleted file mode 100644
index a396c41..0000000
--- a/res/layout/contact_tile_starred_quick_contact.xml
+++ /dev/null
@@ -1,78 +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"
- android:paddingBottom="1dip"
- android:paddingRight="1dip"
- android:background="@null"
- class="com.android.contacts.list.ContactTileStarredView" >
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.contacts.widget.LayoutSuppressingImageView
- android:id="@+id/contact_tile_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="@dimen/contact_tile_shadowbox_height"
- android:orientation="vertical"
- android:background="@color/contact_tile_shadow_box_color"
- android:layout_alignParentBottom="true"
- android:gravity="center_vertical"
- android:paddingRight="8dip"
- android:paddingLeft="8dip">
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@android:color/white"
- android:textSize="16sp"
- android:singleLine="true"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
-
- <TextView
- android:id="@+id/contact_tile_status"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/people_contact_tile_status_color"
- android:singleLine="true"
- android:drawablePadding="4dip"
- android:fadingEdge="horizontal"
- android:fadingEdgeLength="3dip"
- android:layout_marginTop="-3dip"
- android:ellipsize="marquee" />
-
- </LinearLayout>
-
- <QuickContactBadge
- android:id="@+id/contact_tile_quick"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:focusable="true"
- android:background="@null" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contacts_unavailable_fragment.xml b/res/layout/contacts_unavailable_fragment.xml
index c3c9bc4..d0edc26 100644
--- a/res/layout/contacts_unavailable_fragment.xml
+++ b/res/layout/contacts_unavailable_fragment.xml
@@ -45,6 +45,8 @@
android:orientation="vertical"
android:layout_marginLeft="48dip"
android:layout_marginRight="48dip"
+ android:layout_marginStart="48dip"
+ android:layout_marginEnd="48dip"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<Button
diff --git a/res/layout/create_new_contact.xml b/res/layout/create_new_contact.xml
index 2edaf3e..3af60d3 100644
--- a/res/layout/create_new_contact.xml
+++ b/res/layout/create_new_contact.xml
@@ -19,8 +19,10 @@
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
- android:paddingRight="6dip"
android:paddingLeft="6dip"
+ android:paddingRight="6dip"
+ android:paddingStart="6dip"
+ android:paddingEnd="6dip"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:gravity="center_vertical"
@@ -30,6 +32,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="11dip"
+ android:layout_marginStart="5dip"
+ android:layout_marginEnd="11dip"
android:focusable="false"
android:src="@drawable/ic_add_contact_holo_light"
android:scaleType="fitCenter"
diff --git a/res/layout/custom_contact_list_filter_account.xml b/res/layout/custom_contact_list_filter_account.xml
deleted file mode 100644
index 8c1b6c1..0000000
--- a/res/layout/custom_contact_list_filter_account.xml
+++ /dev/null
@@ -1,56 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:gravity="center_vertical"
- android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
- android:paddingRight="?android:attr/scrollbarSize">
-
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="6dip"
- android:layout_marginTop="6dip"
- android:layout_marginBottom="6dip"
- android:layout_weight="1"
- android:duplicateParentState="true">
-
- <TextView
- android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:duplicateParentState="true" />
-
- <TextView
- android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@android:id/text1"
- android:layout_alignLeft="@android:id/text1"
- android:maxLines="1"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorTertiary"
- android:duplicateParentState="true" />
-
- </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/layout/custom_contact_list_filter_group.xml b/res/layout/custom_contact_list_filter_group.xml
deleted file mode 100644
index 65ef405..0000000
--- a/res/layout/custom_contact_list_filter_group.xml
+++ /dev/null
@@ -1,71 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:gravity="center_vertical"
- android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
- android:paddingRight="?android:attr/scrollbarSize"
->
-
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="6dip"
- android:layout_marginTop="6dip"
- android:layout_marginBottom="6dip"
- android:layout_weight="1"
- android:duplicateParentState="true"
- >
-
- <TextView
- android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:duplicateParentState="true"
- />
-
- <TextView
- android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@android:id/text1"
- android:layout_alignLeft="@android:id/text1"
- android:maxLines="2"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:duplicateParentState="true"
- />
-
- </RelativeLayout>
-
- <CheckBox
- android:id="@android:id/checkbox"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="4dip"
- android:focusable="false"
- android:clickable="false"
- android:gravity="center_vertical"
- android:orientation="vertical"
- android:duplicateParentState="true"
- />
-
-</LinearLayout>
diff --git a/res/layout/date_picker.xml b/res/layout/date_picker.xml
index 4be95c0..c700f9e 100644
--- a/res/layout/date_picker.xml
+++ b/res/layout/date_picker.xml
@@ -53,6 +53,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="1dip"
android:layout_marginRight="1dip"
+ android:layout_marginStart="1dip"
+ android:layout_marginEnd="1dip"
android:focusable="true"
android:focusableInTouchMode="true"
/>
@@ -64,6 +66,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="1dip"
android:layout_marginRight="1dip"
+ android:layout_marginStart="1dip"
+ android:layout_marginEnd="1dip"
android:focusable="true"
android:focusableInTouchMode="true"
/>
@@ -75,6 +79,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="1dip"
android:layout_marginRight="1dip"
+ android:layout_marginStart="1dip"
+ android:layout_marginEnd="1dip"
android:focusable="true"
android:focusableInTouchMode="true"
/>
diff --git a/res/layout/detail_header_contact_with_updates.xml b/res/layout/detail_header_contact_with_updates.xml
index 39f0582..dc4cf8b 100644
--- a/res/layout/detail_header_contact_with_updates.xml
+++ b/res/layout/detail_header_contact_with_updates.xml
@@ -22,11 +22,11 @@
-->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<view
- class="com.android.contacts.widget.ProportionalLayout"
+ 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"
@@ -36,4 +36,4 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</view>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/detail_header_contact_without_updates.xml b/res/layout/detail_header_contact_without_updates.xml
index 7e5037e..27f6288 100644
--- a/res/layout/detail_header_contact_without_updates.xml
+++ b/res/layout/detail_header_contact_without_updates.xml
@@ -20,14 +20,14 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ xmlns:ex="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Contact photo -->
<view
- class="com.android.contacts.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ex:ratio="0.5"
@@ -43,4 +43,4 @@
android:layout_height="@dimen/detail_contact_photo_shadow_height"
android:background="?android:attr/windowContentOverlay"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
deleted file mode 100644
index 54b7955..0000000
--- a/res/layout/dialpad.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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.
--->
-
-<!-- Dialpad in the Phone app. -->
-<TableLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/dialpad"
- android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="@integer/dialpad_layout_weight_dialpad"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="@dimen/dialpad_vertical_margin"
- android:paddingLeft="5dip"
- android:paddingRight="5dip"
- android:paddingBottom="10dip"
- android:background="@drawable/dialpad_background">
-
- <TableRow
- android:layout_height="0px"
- android:layout_weight="1">
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/one" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_1_wht"
- android:contentDescription="@string/description_image_button_one" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/two" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_2_wht"
- android:contentDescription="@string/description_image_button_two" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/three" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_3_wht"
- android:contentDescription="@string/description_image_button_three" />
- </TableRow>
-
- <TableRow
- android:layout_height="0px"
- android:layout_weight="1">
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/four" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_4_wht"
- android:contentDescription="@string/description_image_button_four" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/five" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_5_wht"
- android:contentDescription="@string/description_image_button_five" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/six" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_6_wht"
- android:contentDescription="@string/description_image_button_six" />
- </TableRow>
-
- <TableRow
- android:layout_height="0px"
- android:layout_weight="1">
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/seven" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_7_wht"
- android:contentDescription="@string/description_image_button_seven" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/eight" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_8_wht"
- android:contentDescription="@string/description_image_button_eight" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/nine" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_9_wht"
- android:contentDescription="@string/description_image_button_nine" />
- </TableRow>
-
- <TableRow
- android:layout_height="0px"
- android:layout_weight="1">
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/star" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_star_wht"
- android:contentDescription="@string/description_image_button_star" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/zero" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_0_wht"
- android:contentDescription="@string/description_image_button_zero" />
- <com.android.contacts.dialpad.DialpadImageButton
- android:id="@+id/pound" style="@style/DialtactsDialpadButtonStyle"
- android:src="@drawable/dial_num_pound_wht"
- android:contentDescription="@string/description_image_button_pound" />
- </TableRow>
-</TableLayout>
diff --git a/res/layout/dialpad_chooser_list_item.xml b/res/layout/dialpad_chooser_list_item.xml
deleted file mode 100644
index 853ca47..0000000
--- a/res/layout/dialpad_chooser_list_item.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<!-- Layout of a single item in the Dialer's "Dialpad chooser" UI. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ImageView android:id="@+id/icon"
- android:layout_width="64dp"
- android:layout_height="64dp"
- android:scaleType="center" />
-
- <TextView android:id="@+id/text"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_gravity="center_vertical"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/res/layout/dialpad_fragment.xml b/res/layout/dialpad_fragment.xml
deleted file mode 100644
index 796eb28..0000000
--- a/res/layout/dialpad_fragment.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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/top"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingLeft="@dimen/dialpad_horizontal_margin"
- android:paddingRight="@dimen/dialpad_horizontal_margin">
-
- <!-- Text field and possibly soft menu button above the keypad where
- the digits are displayed. -->
- <LinearLayout
- android:id="@+id/digits_container"
- android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="@integer/dialpad_layout_weight_digits"
- android:layout_marginTop="@dimen/dialpad_vertical_margin"
- android:gravity="center"
- android:background="@drawable/dialpad_background" >
-
- <com.android.contacts.dialpad.DigitsEditText
- android:id="@+id/digits"
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="match_parent"
- android:gravity="center"
- android:textAppearance="@style/DialtactsDigitsTextAppearance"
- android:textColor="?android:attr/textColorPrimary"
- android:nextFocusRight="@+id/overflow_menu"
- android:background="@android:color/transparent" />
-
- <ImageButton
- android:id="@+id/deleteButton"
- android:layout_width="56dip"
- android:layout_height="match_parent"
- android:layout_gravity="center_vertical"
- android:gravity="center"
- android:state_enabled="false"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/description_delete_button"
- android:src="@drawable/ic_dial_action_delete" />
- </LinearLayout>
-
- <!-- Keypad section -->
- <include layout="@layout/dialpad" />
-
- <View
- android:layout_width="match_parent"
- android:layout_height="@dimen/dialpad_vertical_margin"
- android:background="#66000000"/>
-
- <!-- left and right paddings will be modified by the code. See DialpadFragment. -->
- <FrameLayout
- android:id="@+id/dialButtonContainer"
- android:layout_width="match_parent"
- android:layout_height="0px"
- android:layout_weight="@integer/dialpad_layout_weight_additional_buttons"
- android:layout_gravity="center_horizontal"
- android:background="@drawable/dialpad_background">
-
- <ImageButton
- android:id="@+id/dialButton"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:state_enabled="false"
- android:background="@drawable/btn_call"
- android:contentDescription="@string/description_dial_button"
- android:src="@drawable/ic_dial_action_call" />
-
- </FrameLayout>
-
- <!-- "Dialpad chooser" UI, shown only when the user brings up the
- Dialer while a call is already in progress.
- When this UI is visible, the other Dialer elements
- (the textfield/button and the dialpad) are hidden. -->
- <ListView android:id="@+id/dialpadChooser"
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_weight="1"
- />
-
-</LinearLayout>
diff --git a/res/layout/dialtacts_activity.xml b/res/layout/dialtacts_activity.xml
deleted file mode 100644
index 35fa00f..0000000
--- a/res/layout/dialtacts_activity.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginTop="?android:attr/actionBarSize"
- android:id="@+id/dialtacts_frame"
- >
- <android.support.v4.view.ViewPager
- android:id="@+id/pager"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <ImageButton
- android:id="@+id/searchButton"
- android:layout_width="wrap_content"
- android:layout_height="?android:attr/actionBarSize"
- android:layout_gravity="bottom|left"
- android:state_enabled="false"
- android:background="?android:attr/selectableItemBackground"
- android:contentDescription="@string/description_search_button"
- android:src="@drawable/ic_dial_action_search"/>
-
- <ImageButton
- android:id="@+id/overflow_menu"
- android:layout_width="wrap_content"
- android:layout_height="?android:attr/actionBarSize"
- android:layout_gravity="bottom|right"
- android:src="@drawable/ic_menu_overflow"
- android:contentDescription="@string/action_menu_overflow_description"
- android:nextFocusLeft="@id/digits"
- android:background="?android:attr/selectableItemBackground"/>
-</FrameLayout>
diff --git a/res/layout/dialtacts_custom_action_bar.xml b/res/layout/dialtacts_custom_action_bar.xml
deleted file mode 100644
index 26e4785..0000000
--- a/res/layout/dialtacts_custom_action_bar.xml
+++ /dev/null
@@ -1,45 +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.
--->
-
-<!-- Dimensions are set at runtime in ActionBarAdapter -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="0dip"
- android:layout_height="0dip"
- android:orientation="horizontal">
-
- <SearchView
- android:id="@+id/search_view"
- android:layout_width="0px"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:iconifiedByDefault="false"
- android:inputType="textFilter" />
-
- <ImageButton
- android:id="@+id/search_option"
- android:layout_width="wrap_content"
- android:paddingLeft="4dip"
- android:paddingRight="4dip"
- android:layout_height="match_parent"
- android:layout_alignParentRight="true"
- android:contentDescription="@string/action_menu_overflow_description"
- android:importantForAccessibility="yes"
- android:src="@drawable/ic_menu_overflow"
- android:background="?android:attr/selectableItemBackground"
- android:visibility="gone" />
-
-</LinearLayout>
diff --git a/res/layout/directory_header.xml b/res/layout/directory_header.xml
deleted file mode 100644
index fcd255e..0000000
--- a/res/layout/directory_header.xml
+++ /dev/null
@@ -1,67 +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.
--->
-
-<!-- Layout used for list section separators. -->
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/DirectoryHeader"
- android:id="@+id/directory_header"
- android:paddingLeft="?attr/list_item_padding_left"
- android:paddingRight="?attr/list_item_padding_right"
- android:minHeight="@dimen/list_section_divider_min_height"
- android:layout_marginTop="@dimen/list_header_extra_top_padding"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- >
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:background="@drawable/list_section_divider_holo_custom"
- >
- <TextView
- android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/people_app_theme_color"
- android:singleLine="true"
- android:textStyle="bold"
- android:textAllCaps="true" />
- <TextView
- android:id="@+id/display_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dip"
- android:layout_marginRight="8dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="@color/people_app_theme_color"
- android:singleLine="true"
- android:textStyle="bold"
- android:textAllCaps="true" />
- <TextView
- android:id="@+id/count"
- android:paddingTop="1dip"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="right"
- android:singleLine="true"
- android:textSize="12sp"
- android:textColor="@color/contact_count_text_color" />
- </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/edit_add_field.xml b/res/layout/edit_add_field.xml
index ea334da..ac90482 100644
--- a/res/layout/edit_add_field.xml
+++ b/res/layout/edit_add_field.xml
@@ -19,7 +19,10 @@
android:layout_height="wrap_content"
android:minHeight="48dip"
android:paddingLeft="@dimen/editor_add_field_label_left_padding"
- android:background="?android:attr/selectableItemBackground">
+ android:paddingStart="@dimen/editor_add_field_label_left_padding"
+ android:background="?android:attr/selectableItemBackground"
+ android:focusable="true"
+ android:clickable="true">
<TextView
android:id="@+id/add_text"
android:layout_gravity="center_vertical"
diff --git a/res/layout/edit_date_picker.xml b/res/layout/edit_date_picker.xml
index 1d0d0b6..b84a8d5 100644
--- a/res/layout/edit_date_picker.xml
+++ b/res/layout/edit_date_picker.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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 to select a date in the contact editor. -->
@@ -26,5 +27,8 @@
android:gravity="center_vertical"
android:layout_marginLeft="@dimen/editor_field_left_padding"
android:layout_marginRight="@dimen/editor_field_right_padding"
+ android:layout_marginStart="@dimen/editor_field_left_padding"
+ android:layout_marginEnd="@dimen/editor_field_right_padding"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:paddingLeft="12dip" />
\ No newline at end of file
+ android:paddingLeft="12dip"
+ android:paddingStart="12dip" />
diff --git a/res/layout/edit_delete_button.xml b/res/layout/edit_delete_button.xml
index 9a9a377..43f8ae6 100644
--- a/res/layout/edit_delete_button.xml
+++ b/res/layout/edit_delete_button.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- "Delete field" button in the contact editor. -->
@@ -21,6 +22,7 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/editor_min_line_item_height"
android:layout_marginRight="2dip"
+ android:layout_marginEnd="2dip"
android:layout_gravity="bottom">
<ImageView
android:id="@+id/delete_button"
@@ -32,7 +34,9 @@
android:src="@drawable/ic_menu_remove_field_holo_light"
android:paddingLeft="@dimen/editor_round_button_padding_left"
android:paddingRight="@dimen/editor_round_button_padding_right"
+ android:paddingStart="@dimen/editor_round_button_padding_left"
+ android:paddingEnd="@dimen/editor_round_button_padding_right"
android:paddingTop="@dimen/editor_round_button_padding_top"
android:paddingBottom="@dimen/editor_round_button_padding_bottom"
android:contentDescription="@string/description_minus_button" />
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/edit_expansion_view.xml b/res/layout/edit_expansion_view.xml
index 06d809c..0b62f28 100644
--- a/res/layout/edit_expansion_view.xml
+++ b/res/layout/edit_expansion_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- "More" or "less" expansion button in the contact editor. -->
@@ -30,6 +31,8 @@
android:background="?android:attr/selectableItemBackground"
android:paddingLeft="@dimen/editor_round_button_padding_left"
android:paddingRight="@dimen/editor_round_button_padding_right"
+ android:paddingStart="@dimen/editor_round_button_padding_left"
+ android:paddingEnd="@dimen/editor_round_button_padding_right"
android:paddingTop="@dimen/editor_round_button_padding_top"
android:paddingBottom="@dimen/editor_round_button_padding_bottom" />
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/edit_field_list.xml b/res/layout/edit_field_list.xml
index d46828b..6922212 100644
--- a/res/layout/edit_field_list.xml
+++ b/res/layout/edit_field_list.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- Layout to contain a list of fields in the contact editor. -->
@@ -23,4 +24,5 @@
android:layout_weight="1"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/editor_field_left_padding"
+ android:paddingStart="@dimen/editor_field_left_padding"
android:orientation="vertical" />
diff --git a/res/layout/edit_field_list_with_anchor_view.xml b/res/layout/edit_field_list_with_anchor_view.xml
index fa69a5c..ca1bdaf 100644
--- a/res/layout/edit_field_list_with_anchor_view.xml
+++ b/res/layout/edit_field_list_with_anchor_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- Layout that behaves similarly to edit_field_list.xml,
but also has an anchor view for ListPopupWindow -->
@@ -22,6 +23,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="@dimen/editor_field_left_padding"
+ android:paddingStart="@dimen/editor_field_left_padding"
android:orientation="vertical">
<LinearLayout
android:id="@+id/editors"
diff --git a/res/layout/edit_kind_title.xml b/res/layout/edit_kind_title.xml
index 1cd6833..1392ac4 100644
--- a/res/layout/edit_kind_title.xml
+++ b/res/layout/edit_kind_title.xml
@@ -23,10 +23,14 @@
android:layout_height="wrap_content"
android:paddingLeft="8dip"
android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip"
android:focusable="false">
<TextView
android:id="@+id/kind_title"
style="@style/ContactListSeparatorTextViewStyle"
android:paddingLeft="8dip"
- android:paddingRight="8dip" />
+ android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip" />
</FrameLayout>
diff --git a/res/layout/edit_spinner.xml b/res/layout/edit_spinner.xml
index 99764da..81fb590 100644
--- a/res/layout/edit_spinner.xml
+++ b/res/layout/edit_spinner.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- Spinner for a field in the contact editor. -->
@@ -24,4 +25,6 @@
android:layout_width="@dimen/editor_type_label_width"
android:layout_height="@dimen/editor_min_line_item_height"
android:paddingLeft="0dip"
- android:paddingRight="10dip"/>
\ No newline at end of file
+ android:paddingRight="10dip"
+ android:paddingStart="0dip"
+ android:paddingEnd="10dip" />
diff --git a/res/layout/editor_account_header.xml b/res/layout/editor_account_header.xml
index c255209..93cdad3 100644
--- a/res/layout/editor_account_header.xml
+++ b/res/layout/editor_account_header.xml
@@ -26,7 +26,9 @@
android:paddingBottom="8dip"
android:gravity="center_vertical"
android:paddingLeft="@dimen/account_container_left_padding"
- android:paddingRight="28dip">
+ android:paddingRight="28dip"
+ android:paddingStart="@dimen/account_container_left_padding"
+ android:paddingEnd="28dip">
<LinearLayout
android:id="@+id/account"
diff --git a/res/layout/editor_account_header_with_dropdown.xml b/res/layout/editor_account_header_with_dropdown.xml
index 311a783..ca876f5 100644
--- a/res/layout/editor_account_header_with_dropdown.xml
+++ b/res/layout/editor_account_header_with_dropdown.xml
@@ -24,7 +24,9 @@
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingLeft="@dimen/account_container_left_padding"
- android:paddingRight="28dip">
+ android:paddingRight="28dip"
+ android:paddingStart="@dimen/account_container_left_padding"
+ android:paddingEnd="28dip">
<LinearLayout
android:id="@+id/account"
@@ -47,6 +49,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="8dip"
+ android:paddingEnd="8dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorTertiary"
android:singleLine="true"
@@ -57,7 +60,8 @@
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:layout_marginLeft="10dip">
+ android:layout_marginLeft="10dip"
+ android:layout_marginStart="10dip">
<ImageView
android:id="@+id/account_icon"
diff --git a/res/layout/editor_custom_action_bar.xml b/res/layout/editor_custom_action_bar.xml
index 1040da3..17ab512 100644
--- a/res/layout/editor_custom_action_bar.xml
+++ b/res/layout/editor_custom_action_bar.xml
@@ -26,7 +26,9 @@
android:divider="?android:attr/dividerVertical"
android:showDividers="end"
android:dividerPadding="12dip"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:focusable="true"
+ android:clickable="true">
<LinearLayout
android:layout_width="wrap_content"
@@ -41,6 +43,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
android:src="@drawable/ic_menu_done_holo_dark"
android:description="@string/menu_done" />
@@ -49,6 +52,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="20dip"
+ android:layout_marginEnd="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/action_bar_button_text_color"
android:text="@string/menu_done"
diff --git a/res/layout/empty2.xml b/res/layout/empty2.xml
deleted file mode 100644
index 349dcfa..0000000
--- a/res/layout/empty2.xml
+++ /dev/null
@@ -1,29 +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.
--->
-
-<!-- Hack for show empty hidden menu item without using android:icon.
- See dialtact_options.xml for more detail.
-
- TODO: figure out better way -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_dial_action_search"
- android:visibility="invisible"/>
-</FrameLayout>
diff --git a/res/layout/event_field_editor_view.xml b/res/layout/event_field_editor_view.xml
index 560b9e1..adca17e 100644
--- a/res/layout/event_field_editor_view.xml
+++ b/res/layout/event_field_editor_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- Editor for a single event entry in the contact editor -->
@@ -27,9 +28,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
- android:gravity="center_vertical"
- android:focusable="true"
- android:clickable="true">
+ android:gravity="center_vertical">
<include
android:id="@+id/date_view"
@@ -42,6 +41,8 @@
android:layout_gravity="bottom"
android:paddingLeft="0dip"
android:paddingRight="10dip"
+ android:paddingStart="0dip"
+ android:paddingEnd="10dip"
android:visibility="gone"/>
<include
diff --git a/res/layout/external_group_editor_view.xml b/res/layout/external_group_editor_view.xml
index 31fcd24..47ac2e0 100644
--- a/res/layout/external_group_editor_view.xml
+++ b/res/layout/external_group_editor_view.xml
@@ -27,6 +27,8 @@
android:paddingTop="10dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
+ android:paddingStart="10dip"
+ android:paddingEnd="10dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorTertiary"
android:text="@string/group_read_only" />
diff --git a/res/layout/external_group_member_item.xml b/res/layout/external_group_member_item.xml
index 1fba205..a56d91d 100644
--- a/res/layout/external_group_member_item.xml
+++ b/res/layout/external_group_member_item.xml
@@ -28,14 +28,18 @@
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:paddingRight="3dip"
+ android:paddingEnd="3dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:focusable="true"
- android:paddingLeft="@dimen/group_member_item_left_padding" />
+ android:paddingLeft="@dimen/group_member_item_left_padding"
+ android:paddingStart="@dimen/group_member_item_left_padding" />
<QuickContactBadge
android:id="@+id/badge"
android:layout_marginLeft="5dip"
android:layout_marginRight="10dip"
+ android:layout_marginStart="5dip"
+ android:layout_marginEnd="10dip"
android:layout_gravity="center_vertical"
android:layout_width="50dip"
android:layout_height="50dip"
diff --git a/res/layout/footer_panel.xml b/res/layout/footer_panel.xml
deleted file mode 100644
index 2625a43..0000000
--- a/res/layout/footer_panel.xml
+++ /dev/null
@@ -1,41 +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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/footer"
- android:orientation="horizontal"
- android:visibility="gone"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- style="@android:style/ButtonBar"
->
-
- <Button android:id="@+id/done"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/menu_done"
- />
-
- <Button android:id="@+id/revert"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/menu_doNotSave"
- />
-
-</LinearLayout>
\ 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 5043f25..834998b 100644
--- a/res/layout/group_account_header_horizontal.xml
+++ b/res/layout/group_account_header_horizontal.xml
@@ -21,6 +21,8 @@
android:minHeight="?attr/list_item_header_height"
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:background="@drawable/list_section_divider_holo_custom"
android:orientation="horizontal">
@@ -31,11 +33,13 @@
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:paddingLeft="?attr/list_item_header_text_indent"
+ android:paddingStart="?attr/list_item_header_text_indent"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/people_app_theme_color"
android:textStyle="bold"
android:textAllCaps="true"
- android:singleLine="true"/>
+ android:singleLine="true"
+ android:textAlignment="viewStart" />
<!-- TODO: Should use correct color with a correct name (content should be same).
can use "?android:attr/textColorTertiary" -->
@@ -47,5 +51,6 @@
android:textColor="@color/contact_count_text_color"
android:textSize="12sp"
android:singleLine="true"
- android:ellipsize="middle" />
+ android:ellipsize="middle"
+ android:textDirection="ltr" />
</LinearLayout>
diff --git a/res/layout/group_account_header_vertical.xml b/res/layout/group_account_header_vertical.xml
index 8edbb8b..0b3b681 100644
--- a/res/layout/group_account_header_vertical.xml
+++ b/res/layout/group_account_header_vertical.xml
@@ -21,16 +21,19 @@
android:minHeight="?attr/list_item_header_height"
android:layout_marginLeft="?attr/list_item_padding_left"
android:layout_marginRight="?attr/list_item_padding_right"
- android:paddingBottom="4dip"
+ android:layout_marginStart="?attr/list_item_padding_left"
+ android:layout_marginEnd="?attr/list_item_padding_right"
+ android:paddingBottom="6dip"
android:background="@drawable/list_section_divider_holo_custom"
+ android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/account_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
android:paddingLeft="?attr/list_item_header_text_indent"
+ android:paddingStart="?attr/list_item_header_text_indent"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/people_app_theme_color"
android:textStyle="bold"
@@ -43,8 +46,8 @@
android:id="@+id/account_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
android:paddingLeft="?attr/list_item_header_text_indent"
+ android:paddingStart="?attr/list_item_header_text_indent"
android:textColor="@color/contact_count_text_color"
android:textSize="12sp"
android:singleLine="true"
diff --git a/res/layout/group_browse_list_fragment.xml b/res/layout/group_browse_list_fragment.xml
index eea7ab0..30c2fec 100644
--- a/res/layout/group_browse_list_fragment.xml
+++ b/res/layout/group_browse_list_fragment.xml
@@ -23,11 +23,13 @@
<!-- See group_browse_list_item.xml for the reason for the transparent android:listSelector -->
<view
android:id="@+id/list"
- class="com.android.contacts.widget.AutoScrollListView"
+ class="com.android.contacts.common.list.AutoScrollListView"
android:layout_width="match_parent"
android:layout_height="0dip"
android:paddingLeft="16dip"
android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip"
android:scrollbarStyle="outsideOverlay"
android:layout_weight="1"
android:fadingEdge="none"
diff --git a/res/layout/group_browse_list_item.xml b/res/layout/group_browse_list_item.xml
index 42bd8eb..e1c6b28 100644
--- a/res/layout/group_browse_list_item.xml
+++ b/res/layout/group_browse_list_item.xml
@@ -31,6 +31,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="?attr/list_item_padding_left"
+ android:paddingStart="?attr/list_item_padding_left"
android:paddingTop="?attr/list_item_padding_top"
android:paddingBottom="?attr/list_item_padding_bottom"
android:minHeight="@dimen/detail_min_line_item_height" >
@@ -40,6 +41,7 @@
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_marginRight="?attr/list_item_padding_right"
+ android:layout_marginEnd="?attr/list_item_padding_right"
android:background="?android:attr/listDivider" />
<include
@@ -52,6 +54,7 @@
android:layout_height="wrap_content"
android:paddingTop="8dip"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:paddingBottom="8dip"
android:orientation="vertical"
android:duplicateParentState="true"
diff --git a/res/layout/group_browser_activity.xml b/res/layout/group_browser_activity.xml
deleted file mode 100644
index f7187d9..0000000
--- a/res/layout/group_browser_activity.xml
+++ /dev/null
@@ -1,28 +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">
-
- <fragment
- android:id="@+id/list_fragment"
- class="com.android.contacts.group.GroupBrowseListFragment"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- />
-
-</FrameLayout>
diff --git a/res/layout/group_editor_autocomplete_view.xml b/res/layout/group_editor_autocomplete_view.xml
index 8482ab5..c8e716a 100644
--- a/res/layout/group_editor_autocomplete_view.xml
+++ b/res/layout/group_editor_autocomplete_view.xml
@@ -25,4 +25,5 @@
android:imeOptions="flagNoExtractUi|flagNoFullscreen"
android:hint="@string/enter_contact_name"
android:minHeight="48dip"
- android:paddingLeft="@dimen/group_editor_autocomplete_left_padding"/>
\ No newline at end of file
+ android:paddingLeft="@dimen/group_editor_autocomplete_left_padding"
+ android:paddingStart="@dimen/group_editor_autocomplete_left_padding"/>
\ No newline at end of file
diff --git a/res/layout/group_editor_existing_member_list.xml b/res/layout/group_editor_existing_member_list.xml
index 3933670..78d0953 100644
--- a/res/layout/group_editor_existing_member_list.xml
+++ b/res/layout/group_editor_existing_member_list.xml
@@ -23,4 +23,6 @@
android:layout_marginTop="5dip"
android:layout_marginLeft="@dimen/group_editor_member_list_left_margin"
android:layout_marginRight="@dimen/group_editor_member_list_right_margin"
+ android:layout_marginStart="@dimen/group_editor_member_list_left_margin"
+ android:layout_marginEnd="@dimen/group_editor_member_list_right_margin"
android:cacheColorHint="@android:color/transparent" />
\ No newline at end of file
diff --git a/res/layout/group_editor_view.xml b/res/layout/group_editor_view.xml
index 19cb82d..d94853d 100644
--- a/res/layout/group_editor_view.xml
+++ b/res/layout/group_editor_view.xml
@@ -28,6 +28,8 @@
android:layout_height="wrap_content"
android:paddingLeft="8dip"
android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip"
android:orientation="vertical">
<EditText
@@ -39,7 +41,8 @@
android:imeOptions="flagNoExtractUi|flagNoFullscreen"
android:hint="@string/group_name_hint"
android:minHeight="48dip"
- android:paddingLeft="8dip"/>
+ android:paddingLeft="8dip"
+ android:paddingStart="8dip"/>
<include
layout="@layout/group_editor_autocomplete_view"
diff --git a/res/layout/group_member_item.xml b/res/layout/group_member_item.xml
index 518e26f..14ed833 100644
--- a/res/layout/group_member_item.xml
+++ b/res/layout/group_member_item.xml
@@ -28,14 +28,18 @@
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:paddingRight="3dip"
+ android:paddingEnd="3dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:focusable="true"
- android:paddingLeft="@dimen/group_member_item_left_padding" />
+ android:paddingLeft="@dimen/group_member_item_left_padding"
+ android:paddingStart="@dimen/group_member_item_left_padding" />
<QuickContactBadge
android:id="@+id/badge"
android:layout_marginLeft="5dip"
android:layout_marginRight="10dip"
+ android:layout_marginStart="5dip"
+ android:layout_marginEnd="10dip"
android:layout_gravity="center_vertical"
android:layout_width="50dip"
android:layout_height="50dip"
diff --git a/res/layout/group_member_suggestion.xml b/res/layout/group_member_suggestion.xml
index c6c3877..4fe8d20 100644
--- a/res/layout/group_member_suggestion.xml
+++ b/res/layout/group_member_suggestion.xml
@@ -38,6 +38,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:singleLine="true"
android:ellipsize="end"/>
@@ -47,6 +48,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:singleLine="true"
android:ellipsize="end" />
diff --git a/res/layout/group_membership_list_item.xml b/res/layout/group_membership_list_item.xml
index 1e4f049..19e8d80 100644
--- a/res/layout/group_membership_list_item.xml
+++ b/res/layout/group_membership_list_item.xml
@@ -23,4 +23,6 @@
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingLeft="6dip"
android:paddingRight="6dip"
+ android:paddingStart="6dip"
+ android:paddingEnd="6dip"
/>
diff --git a/res/layout/group_name_dialog.xml b/res/layout/group_name_dialog.xml
index b22c8e0..03b298f 100644
--- a/res/layout/group_name_dialog.xml
+++ b/res/layout/group_name_dialog.xml
@@ -18,10 +18,12 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="25dip"
+ android:paddingLeft="25dip"
android:paddingRight="25dip"
- android:paddingBottom="25dip"
- android:paddingLeft="25dip">
+ android:paddingStart="25dip"
+ android:paddingEnd="25dip"
+ android:paddingTop="25dip"
+ android:paddingBottom="25dip">
<EditText
android:id="@+id/group_label"
android:layout_width="match_parent"
diff --git a/res/layout/group_source_button.xml b/res/layout/group_source_button.xml
index 71348f6..a4709ef 100644
--- a/res/layout/group_source_button.xml
+++ b/res/layout/group_source_button.xml
@@ -27,7 +27,9 @@
android:minHeight="48dip"
android:background="@drawable/gray_action_bar_background"
android:paddingLeft="16dip"
- android:paddingRight="16dip" >
+ android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip" >
<TextView
android:id="@android:id/title"
diff --git a/res/layout/item_group_membership.xml b/res/layout/item_group_membership.xml
index 91480cc..84d1afe 100644
--- a/res/layout/item_group_membership.xml
+++ b/res/layout/item_group_membership.xml
@@ -32,9 +32,12 @@
android:minHeight="@dimen/editor_min_line_item_height"
android:layout_marginLeft="@dimen/editor_field_left_padding"
android:layout_marginRight="@dimen/editor_field_left_padding"
+ android:layout_marginStart="@dimen/editor_field_left_padding"
+ android:layout_marginEnd="@dimen/editor_field_left_padding"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:gravity="left|center_vertical"
+ android:gravity="start|center_vertical"
android:focusable="true"
- android:paddingLeft="12dip" />
+ android:paddingLeft="12dip"
+ android:paddingStart="12dip" />
</com.android.contacts.editor.GroupMembershipView>
diff --git a/res/layout/item_photo_editor.xml b/res/layout/item_photo_editor.xml
index b1af745..0a7f557 100644
--- a/res/layout/item_photo_editor.xml
+++ b/res/layout/item_photo_editor.xml
@@ -32,7 +32,7 @@
android:src="@drawable/ic_contact_picture_holo_light"
android:cropToPadding="true"
android:scaleType="centerCrop"
- android:gravity="left"
+ android:gravity="start"
/>
<View
android:id="@+id/frame"
diff --git a/res/layout/item_read_only_field.xml b/res/layout/item_read_only_field.xml
index 2765cfa..ae8e3d1 100644
--- a/res/layout/item_read_only_field.xml
+++ b/res/layout/item_read_only_field.xml
@@ -31,6 +31,8 @@
android:layout_height="1px"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginEnd="8dip"
android:background="?android:attr/listDivider" />
<LinearLayout
@@ -39,6 +41,8 @@
android:minHeight="@dimen/editor_min_line_item_height"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip"
android:orientation="horizontal">
<TextView
android:id="@+id/data"
diff --git a/res/layout/join_contact_picker_list_content.xml b/res/layout/join_contact_picker_list_content.xml
index 8f9955f..a051c60 100644
--- a/res/layout/join_contact_picker_list_content.xml
+++ b/res/layout/join_contact_picker_list_content.xml
@@ -26,10 +26,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/join_header_left_margin"
- android:layout_marginTop="@dimen/join_header_top_margin"
android:layout_marginRight="@dimen/join_header_right_margin"
+ android:layout_marginStart="@dimen/join_header_left_margin"
+ android:layout_marginEnd="@dimen/join_header_right_margin"
+ android:layout_marginTop="@dimen/join_header_top_margin"
android:layout_marginBottom="@dimen/join_header_bottom_margin"
android:paddingLeft="?attr/list_item_header_text_indent"
+ android:paddingStart="?attr/list_item_header_text_indent"
android:maxLines="2"
android:textAppearance="?android:attr/textAppearanceSmall" />
@@ -38,12 +41,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<view
- class="com.android.contacts.widget.PinnedHeaderListView"
+ class="com.android.contacts.common.list.PinnedHeaderListView"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="?attr/contact_browser_list_padding_left"
android:layout_marginRight="?attr/contact_browser_list_padding_right"
+ android:layout_marginStart="?attr/contact_browser_list_padding_left"
+ android:layout_marginEnd="?attr/contact_browser_list_padding_right"
android:fastScrollEnabled="true"
android:scrollbarStyle="outsideOverlay" />
</FrameLayout>
diff --git a/res/layout/join_contact_picker_section_header.xml b/res/layout/join_contact_picker_section_header.xml
index 2404558..7dafb49 100644
--- a/res/layout/join_contact_picker_section_header.xml
+++ b/res/layout/join_contact_picker_section_header.xml
@@ -24,5 +24,7 @@
android:id="@+id/text"
style="@style/ContactListSeparatorTextViewStyle"
android:paddingLeft="8dip"
- android:paddingRight="8dip" />
+ android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip" />
</LinearLayout>
diff --git a/res/layout/list_section.xml b/res/layout/list_section.xml
index 5265f88..7361de6 100644
--- a/res/layout/list_section.xml
+++ b/res/layout/list_section.xml
@@ -26,6 +26,7 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:textStyle="bold"
android:textColor="@color/section_header_text_color"
android:textSize="14sp"
diff --git a/res/layout/list_separator.xml b/res/layout/list_separator.xml
deleted file mode 100644
index d94e18c..0000000
--- a/res/layout/list_separator.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- android:focusable="false">
- <TextView
- android:id="@+id/title"
- style="@style/ContactListSeparatorTextViewStyle"
- android:paddingLeft="8dip"
- android:paddingRight="8dip" />
-</FrameLayout>
diff --git a/res/layout/name_edit_expansion_view.xml b/res/layout/name_edit_expansion_view.xml
index 17ae263..13a50a8 100644
--- a/res/layout/name_edit_expansion_view.xml
+++ b/res/layout/name_edit_expansion_view.xml
@@ -1,18 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
+<!--
+ 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
+ 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
+ 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.
--->
+ 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.
+ -->
<!-- "More" or "less" expansion button in the contact editor. -->
@@ -22,7 +23,9 @@
android:layout_height="@dimen/editor_min_line_item_height"
android:layout_gravity="top"
android:contentDescription="@string/expand_collapse_name_fields_description"
- android:importantForAccessibility="yes">
+ android:importantForAccessibility="yes"
+ android:focusable="true"
+ android:clickable="true">
<ImageView
android:id="@+id/expansion_view"
android:layout_width="wrap_content"
@@ -32,6 +35,8 @@
android:background="?android:attr/selectableItemBackground"
android:paddingLeft="@dimen/editor_round_button_padding_left"
android:paddingRight="@dimen/editor_round_button_padding_right"
+ android:paddingStart="@dimen/editor_round_button_padding_left"
+ android:paddingEnd="@dimen/editor_round_button_padding_right"
android:paddingTop="@dimen/editor_round_button_padding_top"
android:paddingBottom="@dimen/editor_round_button_padding_bottom" />
</FrameLayout>
diff --git a/res/layout/organization_editor_view_switcher.xml b/res/layout/organization_editor_view_switcher.xml
index a0085b2..07d1cd8 100644
--- a/res/layout/organization_editor_view_switcher.xml
+++ b/res/layout/organization_editor_view_switcher.xml
@@ -30,11 +30,15 @@
android:layout_height="48dip"
android:paddingLeft="@dimen/editor_add_field_label_left_padding"
android:paddingRight="16dip"
+ android:paddingStart="@dimen/editor_add_field_label_left_padding"
+ android:paddingEnd="16dip"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorSecondary"
android:background="?android:attr/selectableItemBackground"
- android:text="@string/add_organization"/>
+ android:text="@string/add_organization"
+ android:focusable="true"
+ android:clickable="true"/>
<!-- This is later populated with the actual editable text fields for "organization" -->
<FrameLayout
diff --git a/res/layout/people_navigation_item.xml b/res/layout/people_navigation_item.xml
index b7d86d2..60a7a49 100644
--- a/res/layout/people_navigation_item.xml
+++ b/res/layout/people_navigation_item.xml
@@ -26,5 +26,7 @@
android:gravity="center_vertical"
android:paddingLeft="18dip"
android:paddingRight="18dip"
+ android:paddingStart="18dip"
+ android:paddingEnd="18dip"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>
diff --git a/res/layout/phone_contact_tile_list.xml b/res/layout/phone_contact_tile_list.xml
deleted file mode 100644
index 8931cf6..0000000
--- a/res/layout/phone_contact_tile_list.xml
+++ /dev/null
@@ -1,47 +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.
--->
-
-<!-- Use LinearLayout + FrameLayout, just to rely on android:divider and android:showDividers -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/FragmentActionBarPadding"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:divider="?android:attr/dividerHorizontal"
- android:showDividers="end">
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <ListView
- android:id="@+id/contact_tile_list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingTop="@dimen/contact_tile_list_padding_top"
- android:clipToPadding="false"
- android:fadingEdge="none"
- android:divider="@null" />
-
- <TextView
- android:id="@+id/contact_tile_list_empty"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:layout_marginTop="@dimen/empty_message_top_margin"
- android:textColor="?android:attr/textColorSecondary"
- android:textAppearance="?android:attr/textAppearanceLarge"/>
- </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/phone_disambig_item.xml b/res/layout/phone_disambig_item.xml
deleted file mode 100755
index a31d08d..0000000
--- a/res/layout/phone_disambig_item.xml
+++ /dev/null
@@ -1,40 +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.
--->
-
-<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="30dip"
- android:paddingRight="30dip"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:gravity="center_vertical">
-
- <TextView
- android:id="@android:id/text1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textStyle="bold"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- <TextView
- android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="-4dip"
- android:textAppearance="?android:attr/textAppearanceSmall" />
-
-</LinearLayout>
diff --git a/res/layout/phone_loading_contacts.xml b/res/layout/phone_loading_contacts.xml
deleted file mode 100644
index f0d3328..0000000
--- a/res/layout/phone_loading_contacts.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.
--->
-
-<!-- "Loading" text with a spinner, which is used in PhoneFavorite screen -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:orientation="horizontal"
- android:gravity="left|center_vertical">
-
- <ProgressBar
- android:indeterminate="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/progress_spinner"/>
-
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/contact_list_loading"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:layout_marginLeft="4dip" />
-
-</LinearLayout>
diff --git a/res/layout/phonetic_name_editor_view.xml b/res/layout/phonetic_name_editor_view.xml
index 3b7562b..d67dcf5 100644
--- a/res/layout/phonetic_name_editor_view.xml
+++ b/res/layout/phonetic_name_editor_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.editor.PhoneticNameEditorView
xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,9 +31,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:gravity="center_vertical"
- android:focusable="true"
- android:clickable="true">
+ android:gravity="center_vertical">
<include
android:id="@+id/editors"
diff --git a/res/layout/photo_selector_view.xml b/res/layout/photo_selector_view.xml
index 0006559..1a21c30 100644
--- a/res/layout/photo_selector_view.xml
+++ b/res/layout/photo_selector_view.xml
@@ -33,6 +33,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground"
- android:visibility="gone" />
+ android:visibility="gone"
+ android:contentDescription="@string/contact_detail_picture_description"/>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/pinned_header_list_demo.xml b/res/layout/pinned_header_list_demo.xml
index 9a26e98..3fc2b79 100644
--- a/res/layout/pinned_header_list_demo.xml
+++ b/res/layout/pinned_header_list_demo.xml
@@ -23,7 +23,7 @@
>
<view
- class="com.android.contacts.widget.PinnedHeaderListView"
+ class="com.android.contacts.common.list.PinnedHeaderListView"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dip"
diff --git a/res/layout/playback_layout.xml b/res/layout/playback_layout.xml
deleted file mode 100644
index 2dfcb4d..0000000
--- a/res/layout/playback_layout.xml
+++ /dev/null
@@ -1,133 +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"
- android:background="@color/voicemail_playback_ui_background"
->
- <!-- Mute, playback, trash buttons. -->
- <LinearLayout
- android:id="@+id/buttons_linear_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_alignParentTop="true"
- >
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="58dip"
- android:layout_marginRight="@dimen/call_detail_button_spacing"
- android:background="@drawable/dialpad_background"
- android:layout_weight="1"
- >
- <ImageButton
- android:id="@+id/playback_start_stop"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?android:attr/selectableItemBackground"
- android:src="@drawable/ic_hold_pause"
- />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="58dip"
- android:background="@drawable/dialpad_background"
- android:layout_weight="1"
- >
- <ImageButton
- android:id="@+id/playback_speakerphone"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?android:attr/selectableItemBackground"
- android:src="@drawable/ic_speakerphone_on"
- />
- </LinearLayout>
- </LinearLayout>
- <RelativeLayout
- android:id="@+id/seek_container"
- android:layout_width="match_parent"
- android:layout_height="80dip"
- android:background="@drawable/dialpad_background"
- android:layout_below="@id/buttons_linear_layout"
- android:layout_marginTop="@dimen/call_detail_button_spacing"
- >
- <!-- SeekBar left-right margin decreased from redlines 72dip by 8dip to account for
- half thumb width (thumb is 16dip).
- Vertically, SeekBar and rate buttons should be below centre, position achieved by
- making them centred but giving a difference between top and bottom padding,
- difference is currently 10dip. -->
- <SeekBar
- android:id="@+id/playback_seek"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:progressDrawable="@drawable/seekbar_drawable"
- android:thumb="@drawable/seek_bar_thumb"
- android:thumbOffset="8dip"
- android:progress="0"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
- android:paddingTop="30dip"
- android:paddingBottom="20dip"
- android:layout_marginRight="64dip"
- android:layout_marginLeft="64dip"
- android:max="0"
- android:layout_centerVertical="true"
- />
- <TextView
- android:id="@+id/playback_position_text"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:textSize="14sp"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="10dip"
- />
- <TextView
- android:id="@+id/playback_speed_text"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:textSize="14sp"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="10dip"
- android:alpha="0"
- />
- <ImageButton
- android:id="@+id/rate_decrease_button"
- android:src="@drawable/ic_minus"
- android:layout_width="64dip"
- android:layout_height="wrap_content"
- android:background="?android:attr/selectableItemBackground"
- android:paddingBottom="19dip"
- android:paddingTop="29dip"
- android:layout_alignParentLeft="true"
- android:layout_centerVertical="true"
- />
- <ImageButton
- android:id="@+id/rate_increase_button"
- android:src="@drawable/ic_plus"
- android:layout_width="64dip"
- android:layout_height="wrap_content"
- android:background="?android:attr/selectableItemBackground"
- android:paddingBottom="19dip"
- android:paddingTop="29dip"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true"
- />
- </RelativeLayout>
-</RelativeLayout>
diff --git a/res/layout/quickcontact_activity.xml b/res/layout/quickcontact_activity.xml
index c1759bf..c7917f1 100644
--- a/res/layout/quickcontact_activity.xml
+++ b/res/layout/quickcontact_activity.xml
@@ -15,7 +15,7 @@
-->
<view
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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"
@@ -29,10 +29,12 @@
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.widget.ProportionalLayout"
+ class="com.android.contacts.common.widget.ProportionalLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ex:ratio="0.5"
@@ -48,6 +50,7 @@
<android.support.v4.view.ViewPager
android:id="@+id/item_list_pager"
android:layout_width="match_parent"
- android:layout_height="156dip" />
+ android:layout_height="156dip"
+ android:background="@drawable/quickcontact_track_background"/>
</LinearLayout>
</view>
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
index 1b66ec3..615895f 100755
--- a/res/layout/quickcontact_list_item.xml
+++ b/res/layout/quickcontact_list_item.xml
@@ -37,6 +37,7 @@
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" />
diff --git a/res/layout/quickcontact_list_item_address.xml b/res/layout/quickcontact_list_item_address.xml
index cb99673..c55c339 100755
--- a/res/layout/quickcontact_list_item_address.xml
+++ b/res/layout/quickcontact_list_item_address.xml
@@ -38,6 +38,7 @@
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" />
diff --git a/res/layout/quickcontact_list_item_base.xml b/res/layout/quickcontact_list_item_base.xml
index bc60396..80a3422 100644
--- a/res/layout/quickcontact_list_item_base.xml
+++ b/res/layout/quickcontact_list_item_base.xml
@@ -29,6 +29,8 @@
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"/>
diff --git a/res/layout/quickcontact_photo_container.xml b/res/layout/quickcontact_photo_container.xml
index adb647d..2fb372d 100644
--- a/res/layout/quickcontact_photo_container.xml
+++ b/res/layout/quickcontact_photo_container.xml
@@ -37,6 +37,8 @@
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="#7F000000" />
<ImageView
android:id="@+id/contact_details_image"
@@ -45,18 +47,23 @@
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_alignRight="@id/photo_text_bar"
+ android:layout_alignEnd="@id/photo_text_bar" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="42dip"
android:layout_alignBottom="@id/photo"
android:layout_alignLeft="@id/photo"
+ android:layout_alignStart="@id/photo"
android:layout_toLeftOf="@id/open_details_button"
+ android:layout_toStartOf="@id/open_details_button"
android:gravity="center_vertical"
android:paddingLeft="8dip"
+ android:paddingStart="8dip"
android:singleLine="true"
android:ellipsize="end"
android:textColor="@android:color/white"
diff --git a/res/layout/quickcontact_track.xml b/res/layout/quickcontact_track.xml
index 3df7af0..6f50029 100644
--- a/res/layout/quickcontact_track.xml
+++ b/res/layout/quickcontact_track.xml
@@ -36,6 +36,7 @@
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>
diff --git a/res/layout/quickcontact_track_button.xml b/res/layout/quickcontact_track_button.xml
index f1353f2..f9dcd1d 100644
--- a/res/layout/quickcontact_track_button.xml
+++ b/res/layout/quickcontact_track_button.xml
@@ -20,6 +20,8 @@
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"
diff --git a/res/layout/raw_contact_editor_view.xml b/res/layout/raw_contact_editor_view.xml
index c8aa9da..9811602 100644
--- a/res/layout/raw_contact_editor_view.xml
+++ b/res/layout/raw_contact_editor_view.xml
@@ -55,6 +55,7 @@
<include
android:id="@+id/edit_photo"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
layout="@layout/item_photo_editor" />
</LinearLayout>
diff --git a/res/layout/raw_contact_readonly_editor_view.xml b/res/layout/raw_contact_readonly_editor_view.xml
index 998d392..797162d 100644
--- a/res/layout/raw_contact_readonly_editor_view.xml
+++ b/res/layout/raw_contact_readonly_editor_view.xml
@@ -30,7 +30,8 @@
android:layout_width="match_parent"
android:orientation="horizontal"
android:paddingTop="8dip"
- android:paddingLeft="16dip">
+ android:paddingLeft="16dip"
+ android:paddingStart="16dip">
<TextView android:id="@+id/read_only_name"
android:layout_width="0dip"
@@ -45,6 +46,7 @@
<include
android:id="@+id/edit_photo"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
layout="@layout/item_photo_editor" />
</LinearLayout>
@@ -56,7 +58,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="13dip"
android:layout_marginBottom="13dip"
- android:layout_marginLeft="13dip"/>
+ android:layout_marginLeft="13dip"
+ android:layout_marginStart="13dip"/>
<LinearLayout android:id="@+id/sect_general"
android:layout_width="match_parent"
diff --git a/res/layout/select_dialog_item.xml b/res/layout/select_dialog_item.xml
deleted file mode 100644
index d49ae10..0000000
--- a/res/layout/select_dialog_item.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.
--->
-
-<!--
- List item in the pop-up window that appears when tapping a contact's photo
- in the contact editor. This is similar to the framework's select_dialog_item.xml layout
- except the text appearance is medium.
--->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/text1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeightSmall"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="?android:attr/textColorAlertDialogListItem"
- android:gravity="center_vertical"
- android:paddingLeft="14dip"
- android:paddingRight="15dip"
- android:ellipsize="marquee"
-/>
diff --git a/res/layout/set_primary_checkbox.xml b/res/layout/set_primary_checkbox.xml
deleted file mode 100644
index 00b0865..0000000
--- a/res/layout/set_primary_checkbox.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="14dip"
- android:paddingRight="15dip"
- android:orientation="vertical">
-
- <CheckBox
- android:id="@+id/setPrimary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:focusable="true"
- android:clickable="true"
- android:text="@string/make_primary"/>
-</LinearLayout>
diff --git a/res/layout/social_widget.xml b/res/layout/social_widget.xml
index 3668e8d..1267bd9 100644
--- a/res/layout/social_widget.xml
+++ b/res/layout/social_widget.xml
@@ -43,16 +43,19 @@
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:paddingRight="4dp"
- android:paddingLeft="43dp"
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"
diff --git a/res/layout/split_aggregate_list_item.xml b/res/layout/split_aggregate_list_item.xml
index 5c72eda..1d712ee 100644
--- a/res/layout/split_aggregate_list_item.xml
+++ b/res/layout/split_aggregate_list_item.xml
@@ -20,17 +20,22 @@
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingLeft="12dip"
android:paddingRight="12dip"
+ android:paddingStart="12dip"
+ android:paddingEnd="12dip"
>
<ImageView
android:id="@+id/sourceIcon"
android:layout_width="32dip"
android:layout_height="32dip"
android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_marginTop="15dip"
android:layout_marginLeft="5dip"
android:layout_marginRight="8dip"
+ android:layout_marginStart="5dip"
+ android:layout_marginEnd="8dip"
android:gravity="center"
android:scaleType="centerInside"
@@ -40,8 +45,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/sourceIcon"
+ android:layout_toStartOf="@id/sourceIcon"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:layout_alignWithParentIfMissing="true"
android:layout_marginBottom="8dip"
android:layout_marginTop="-8dip"
@@ -56,9 +63,11 @@
android:layout_height="0dip"
android:layout_alignWithParentIfMissing="true"
android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_above="@id/additionalData"
android:layout_toLeftOf="@id/sourceIcon"
+ android:layout_toStartOf="@id/sourceIcon"
android:layout_marginBottom="1dip"
android:textAppearance="?android:attr/textAppearanceLarge"
diff --git a/res/layout/stream_item_container.xml b/res/layout/stream_item_container.xml
index c5d2c0e..33840b6 100644
--- a/res/layout/stream_item_container.xml
+++ b/res/layout/stream_item_container.xml
@@ -19,7 +19,9 @@
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: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
@@ -28,6 +30,8 @@
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"
@@ -50,7 +54,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
- android:textColor="?android:attr/textColorPrimary" />
+ 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.
@@ -70,8 +75,8 @@
<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_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"/>
diff --git a/res/layout/stream_item_photo.xml b/res/layout/stream_item_photo.xml
index 2649828..9e27d2a 100644
--- a/res/layout/stream_item_photo.xml
+++ b/res/layout/stream_item_photo.xml
@@ -15,7 +15,7 @@
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android">
- <com.android.contacts.widget.LayoutSuppressingImageView
+ <com.android.contacts.common.widget.LayoutSuppressingImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
diff --git a/res/layout/stream_item_row_images.xml b/res/layout/stream_item_row_images.xml
index 46e1f4f..a3f1325 100644
--- a/res/layout/stream_item_row_images.xml
+++ b/res/layout/stream_item_row_images.xml
@@ -16,16 +16,17 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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.widget.ProportionalLayout"
+ 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">
@@ -38,9 +39,11 @@
<view
android:id="@+id/second_image_container"
- class="com.android.contacts.widget.ProportionalLayout"
+ 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">
diff --git a/res/layout/structured_name_editor_view.xml b/res/layout/structured_name_editor_view.xml
index d1eace8..6320aa5 100644
--- a/res/layout/structured_name_editor_view.xml
+++ b/res/layout/structured_name_editor_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.editor.StructuredNameEditorView
xmlns:android="http://schemas.android.com/apk/res/android"
@@ -29,9 +30,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:focusable="true"
- android:clickable="true">
+ android:orientation="horizontal">
<include
layout="@layout/edit_field_list_with_anchor_view" />
diff --git a/res/layout/text_fields_editor_view.xml b/res/layout/text_fields_editor_view.xml
index f446c24..5ae83c6 100644
--- a/res/layout/text_fields_editor_view.xml
+++ b/res/layout/text_fields_editor_view.xml
@@ -1,18 +1,19 @@
<?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.
- You may obtain a copy of the License at
+ 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
+ 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.
--->
+ 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.editor.TextFieldsEditorView
xmlns:android="http://schemas.android.com/apk/res/android"
@@ -25,9 +26,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
- android:gravity="center_vertical"
- android:focusable="true"
- android:clickable="true">
+ android:gravity="center_vertical">
<include
layout="@layout/edit_field_list_with_anchor_view" />
diff --git a/res/layout/updates_header_contact.xml b/res/layout/updates_header_contact.xml
index bfcd6e0..66cdac4 100644
--- a/res/layout/updates_header_contact.xml
+++ b/res/layout/updates_header_contact.xml
@@ -19,14 +19,14 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+ 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.widget.ProportionalLayout"
+ 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"
@@ -46,12 +46,16 @@
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"
@@ -61,4 +65,4 @@
</FrameLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/user_profile_button.xml b/res/layout/user_profile_button.xml
index 8735f5a..6a7c3b4 100644
--- a/res/layout/user_profile_button.xml
+++ b/res/layout/user_profile_button.xml
@@ -21,10 +21,13 @@
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="left|center_vertical"
+ 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 67b64d5..ace3106 100644
--- a/res/layout/user_profile_header.xml
+++ b/res/layout/user_profile_header.xml
@@ -19,12 +19,13 @@
android:id="@+id/user_profile_header"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="@dimen/list_header_extra_top_padding"
+ android:layout_height="?attr/list_item_header_height"
android:paddingLeft="?attr/list_item_padding_left"
- android:paddingRight="?attr/list_item_padding_right"
+ android:paddingRight="?attr/list_item_padding_right"
+ android:paddingStart="?attr/list_item_padding_left"
+ android:paddingEnd="?attr/list_item_padding_right"
android:background="@drawable/list_section_divider_holo_custom"
- android:minHeight="?attr/list_item_header_height"
+ android:gravity="center_vertical"
>
<TextView
@@ -35,12 +36,11 @@
android:text="@string/user_profile_contacts_list_header"
android:textStyle="bold"
android:ellipsize="end"
- android:layout_gravity="left|bottom"
- android:layout_marginBottom="2dip"
android:layout_weight="1"
android:textAllCaps="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:paddingLeft="?attr/list_item_text_indent"
+ android:paddingStart="?attr/list_item_text_indent"
android:textColor="@color/people_app_theme_color" />
<TextView
@@ -49,8 +49,6 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
- android:layout_gravity="right|bottom"
- android:layout_marginBottom="2dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12sp"
android:textColor="@color/contact_count_text_color" />
diff --git a/res/menu/call_details_cab.xml b/res/menu/call_details_cab.xml
deleted file mode 100644
index 7de675f..0000000
--- a/res/menu/call_details_cab.xml
+++ /dev/null
@@ -1,22 +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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/copy_phone_number"
- android:icon="?android:attr/actionModeCopyDrawable"
- android:title="@string/menu_copy"
- />
-</menu>
diff --git a/res/menu/call_details_options.xml b/res/menu/call_details_options.xml
deleted file mode 100644
index 63ce8f5..0000000
--- a/res/menu/call_details_options.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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_trash"
- android:icon="@drawable/ic_trash_holo_dark"
- android:showAsAction="ifRoom"
- android:title="@string/recentCalls_trashVoicemail"
- android:onClick="onMenuTrashVoicemail"
- />
- <item
- android:id="@+id/menu_remove_from_call_log"
- android:title="@string/recentCalls_removeFromRecentList"
- android:onClick="onMenuRemoveFromCallLog"
- />
- <item
- android:id="@+id/menu_edit_number_before_call"
- android:title="@string/recentCalls_editNumberBeforeCall"
- android:onClick="onMenuEditNumberBeforeCall"
- />
-</menu>
diff --git a/res/menu/call_log_options.xml b/res/menu/call_log_options.xml
deleted file mode 100644
index bf2973f..0000000
--- a/res/menu/call_log_options.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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
- <item
- android:id="@+id/show_all_calls"
- android:title="@string/menu_show_all_calls"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-
- <item
- android:id="@+id/show_voicemails_only"
- android:title="@string/menu_show_voicemails_only"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-
- <item
- android:id="@+id/show_missed_only"
- android:title="@string/menu_show_missed_only"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-
- <item
- android:id="@+id/show_outgoing_only"
- android:title="@string/menu_show_outgoing_only"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-
- <item
- android:id="@+id/show_incoming_only"
- android:title="@string/menu_show_incoming_only"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-
-
- <item
- android:id="@+id/delete_all"
- android:title="@string/recentCalls_deleteAll"
- android:showAsAction="never"
- android:orderInCategory="1"/>
-</menu>
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
deleted file mode 100644
index 6dda8fc..0000000
--- a/res/menu/dialpad_options.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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_add_contacts"
- android:title="@string/recentCalls_addToContact"
- android:showAsAction="withText"
- android:orderInCategory="1" />
- <item
- android:id="@+id/menu_2s_pause"
- android:title="@string/add_2sec_pause"
- android:showAsAction="withText"
- android:orderInCategory="1" />
-
- <item
- android:id="@+id/menu_add_wait"
- android:title="@string/add_wait"
- android:showAsAction="withText"
- android:orderInCategory="1" />
-
- <item
- android:id="@+id/menu_call_settings_dialpad"
- android:title="@string/call_settings"
- android:showAsAction="withText"
- android:orderInCategory="1" />
-</menu>
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
deleted file mode 100644
index 8eaa915..0000000
--- a/res/menu/dialtacts_options.xml
+++ /dev/null
@@ -1,52 +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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/search_on_action_bar"
- android:title="@string/menu_search"
- android:icon="@drawable/ic_dial_action_search"
- android:showAsAction="ifRoom" />
-
- <!-- This should come after the other menus in CallLog and Dialpad -->
- <item
- android:id="@+id/menu_call_settings"
- android:title="@string/call_settings"
- android:showAsAction="withText"
- android:orderInCategory="2" />
-
- <item
- android:id="@+id/filter_option"
- android:title="@string/menu_contacts_filter"
- android:showAsAction="withText" />
-
- <item
- android:id="@+id/add_contact"
- android:icon="@drawable/ic_add_contact_holo_dark"
- android:title="@string/menu_newContact"
- android:showAsAction="ifRoom" />
-
- <!-- Ugly hack: empty item never clickable.
- This is for forcing search icon on left even when there's a single item
- in the bottom ActionBar.
- We intentionally don't use android:icon to avoid other issues around item with
- a null icon.
-
- TODO: look for better idea. -->
- <item
- android:id="@+id/empty_right_menu_item"
- android:actionLayout="@layout/empty2"
- android:showAsAction="ifRoom" />
-</menu>
diff --git a/res/menu/dialtacts_search_options.xml b/res/menu/dialtacts_search_options.xml
deleted file mode 100644
index 0979ebb..0000000
--- a/res/menu/dialtacts_search_options.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.
--->
-<!-- Used with DialtactsActivity's search mode. -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/filter_option"
- android:title="@string/menu_contacts_filter"
- android:showAsAction="withText" />
- <item
- android:id="@+id/add_contact"
- android:title="@string/menu_newContact"
- android:showAsAction="withText" />
-</menu>
diff --git a/res/menu/phone_favorite_options.xml b/res/menu/phone_favorite_options.xml
deleted file mode 100644
index e37759c..0000000
--- a/res/menu/phone_favorite_options.xml
+++ /dev/null
@@ -1,28 +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.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_import_export"
- android:title="@string/menu_import_export" />
-
- <item
- android:id="@+id/menu_clear_frequents"
- android:title="@string/menu_clear_frequents" />
-
- <item
- android:id="@+id/menu_accounts"
- android:title="@string/menu_accounts" />
-</menu>
diff --git a/res/mipmap-hdpi/ic_launcher_contacts.png b/res/mipmap-hdpi/ic_launcher_contacts.png
deleted file mode 100644
index e0136f6..0000000
--- a/res/mipmap-hdpi/ic_launcher_contacts.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-hdpi/ic_launcher_phone.png b/res/mipmap-hdpi/ic_launcher_phone.png
deleted file mode 100644
index 5a3dff1..0000000
--- a/res/mipmap-hdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_contacts.png b/res/mipmap-mdpi/ic_launcher_contacts.png
deleted file mode 100644
index 3d490c3..0000000
--- a/res/mipmap-mdpi/ic_launcher_contacts.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_phone.png b/res/mipmap-mdpi/ic_launcher_phone.png
deleted file mode 100644
index 9ea0d8c..0000000
--- a/res/mipmap-mdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_contacts.png b/res/mipmap-xhdpi/ic_launcher_contacts.png
deleted file mode 100644
index dde3cbb..0000000
--- a/res/mipmap-xhdpi/ic_launcher_contacts.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_phone.png b/res/mipmap-xhdpi/ic_launcher_phone.png
deleted file mode 100644
index e97836c..0000000
--- a/res/mipmap-xhdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_contacts.png b/res/mipmap-xxhdpi/ic_launcher_contacts.png
deleted file mode 100644
index 99b403b..0000000
--- a/res/mipmap-xxhdpi/ic_launcher_contacts.png
+++ /dev/null
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_phone.png b/res/mipmap-xxhdpi/ic_launcher_phone.png
deleted file mode 100644
index 1594e4e..0000000
--- a/res/mipmap-xxhdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 0082bdd..9965509 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Foon"</string>
<string name="people" msgid="1048457247435785074">"Mense"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakte"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontak"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Meer oor"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Opdaterings"</string>
<string name="searchHint" msgid="8482945356247760701">"Deursoek kontakte"</string>
- <string name="menu_search" msgid="9147752853603483719">"Soek"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nuwe kontak"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Bekyk kontak"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Voeg by gunstelinge"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Verwyder van gunstelinge"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Redigeer"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Vee uit"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopieer"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plaas op tuisskerm"</string>
<string name="menu_call" msgid="3992595586042260618">"Bel kontak"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Teks - kontak"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Klaar"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Kanselleer"</string>
<string name="menu_discard" msgid="6456087569315685632">"Gooi weg"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notas"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetoproep"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Maatskappy"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Skep nuwe kontak"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Foon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-pos"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adres"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisasie"</item>
<item msgid="7196592230748086755">"Let wel"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Geen kontakte nie."</string>
<string name="noGroups" msgid="8614664663561385253">"Geen groepe nie."</string>
<string name="noAccounts" msgid="7768267764545265909">"Jy het \'n rekening nodig om groepe te skep."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Geen passende kontakte gevind nie."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Geen kontakte met foonnommers nie."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Geen mense in hierdie groep nie."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Om \'n paar by te voeg, wysig die groep."</string>
<string name="savingContact" msgid="4075751076741924939">"Stoor tans kontak..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Stoor tans vertoonopsies..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontak gestoor."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Kon nie kontakveranderinge stoor nie."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Groep gestoor."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontak"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakte"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Geen kontakte nie."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Geen sigbare kontakte nie."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Geen gunstelinge nie"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Geen kontakte in <xliff:g id="NAME">%s</xliff:g> nie"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakte in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Enigste kontak"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakte in gepasmaakte aansig"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Meer as <xliff:g id="COUNT">%d</xliff:g> gevind."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Geen kontakte nie"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 gevind"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontakte"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Groepe"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Gunstelinge"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Gunstelinge en alle kontakte"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Foon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Oproeprekord"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Stuur teksboodskap"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Bel <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigeer nommer voor oproep"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Voeg by kontakte"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Verwyder uit oproeprekord"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Maak oproeprekord skoon"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Vee stemboodskap uit"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Deel stemboodskap"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Oproeprekord is leeg."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vee oproeprekord uit?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Al jou oproeprekords sal uitgevee word."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vee tans oproeprekord uit..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vee dikwels-gebruikte kontakte uit?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Jy gaan die lys van dikwels-gebruikte kontakte in die Mense- en Foonprogramme uitvee, en e-posprogramme dwing om jou adresvoorkeure van nuuts af te leer."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Vee tans dikwels-gebruikte kontakte uit..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Stemboodskap"</string>
- <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
- <string name="private_num" msgid="6374339738119166953">"Private nommer"</string>
- <string name="payphone" msgid="4864313342828942922">"Betaalfoon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Gebruik sleutelbord om te skakel"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Skakel om \'n oproep by te voeg"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laai tans van SIM-kaart af…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM-kaartkontakte"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Jy het geen kontakte om te wys nie. (As jy sopas \'n rekening bygevoeg het, kan dit \'n rukkie neem om kontakte te sinkroniseer.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Jy het geen kontakte om te wys nie."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Jy het geen kontakte om te vertoon nie. "\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>", raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy kan sinkroniseer na die tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b></font>"Om \'n nuwe kontak van nuuts af te skep"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"Invoer/Uitvoer"</b></font>"om kontakte van jou SIM of SD-kaart in te voer"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Jy het geen kontakte om te vertoon nie. "\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>", raak dan:"\n\n" "<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy kan sinkroniseer na die foon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b>" "</font>"Om \'n nuwe kontak van nuuts af te skep"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"Invoer/Uitvoer"</b></font>"om kontakte van jou SIM of SD-kaart in te voer"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Jy het nie enige kontakte om te wys nie. (As jy sopas \'n rekening bygevoeg het, kan dit \'n paar minute neem om kontakte te sinkroniseer.)"\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>" en raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy met die tablet kan sinkroniseer"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Vertoonopsies"</b></font>" om te verander watter kontakte sigbaar is"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b></font>" om \'n nuwe kontak van nuuts af te skep"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Invoer/uitvoer "</b></font>"om kontakte van jou SIM of SD-kaart in te voer"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Jy het nie enige kontakte om te wys nie. (As jy sopas \'n rekening bygevoeg het, kan dit \'n paar minute neem om kontakte te sinkroniseer.)"\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>" en raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy met die foon kan sinkroniseer"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Vertoonopsies"</b></font>" om te verander watter kontakte sigbaar is"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b></font>" om \'n nuwe kontak van nuuts af te skep"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Invoer/uitvoer"</b></font>" om kontakte van jou SIM of SD-kaart in te voer"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Jy het geen kontakte om te vertoon nie. "\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>", raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy kan sinkroniseer na die tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b>" "</font>"Om \'n nuwe kontak van nuuts af te skep"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"Invoer/Uitvoer"</b></font>"om kontakte van jou SD-kaart in te voer"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Jy het geen kontakte om te vertoon nie. "\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>", raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy kan sinkroniseer na die foon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b>" "</font>"Om \'n nuwe kontak van nuuts af te skep"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"Invoer/Uitvoer"</b></font>"om kontakte van jou SD-kaart in te voer"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Jy het nie enige kontakte om te wys nie. (As jy sopas \'n rekening bygevoeg het, kan dit \'n paar minute neem om kontakte te sinkroniseer.)"\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>" en raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy met die tablet kan sinkroniseer"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Vertoonopsies"</b></font>" om te verander watter kontakte sigbaar is"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b></font>" om \'n nuwe kontak van nuuts af te skep"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Invoer/uitvoer"</b></font>"om kontakte van jou SD-kaart in te voer"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Jy het nie enige kontakte om te wys nie. (As jy sopas \'n rekening bygevoeg het, kan dit \'n paar minute neem om kontakte te sinkroniseer.)"\n\n"Om kontakte by te voeg, raak "<font fgcolor="#ffffffff"><b>"Kieslys"</b></font>" en raak dan:"\n\n<li><font fgcolor="#ffffffff"><b>"Rekeninge"</b></font>" om \'n rekening met kontakte by te voeg of op te stel wat jy met die foon kan sinkroniseer"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Vertoonopsies"</b></font>" om te verander watter kontakte sigbaar is "\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuwe kontak"</b></font>" om \'n nuwe kontak van nuuts af te skep"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Invoer/uitvoer"</b></font>"om kontakte van jou SD-kaart in te voer"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Jy het nie enige gunstelinge nie."\n\n" Om \'n kontak by jou lys gunstelinge te voeg:"\n\n" "<li>"Raak die "<b>"Kontakte"</b>"-oortjie"\n</li>" "\n<li>"Raak die kontak wat jy by jou gunstelinge wil voeg"\n</li>" "\n<li>"Raak die ster langs die kontak se naam"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gebruik raak-nommerbord"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Keer terug na oproep wat besig is"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Voeg oproep by"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Oproepdetails"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Kon nie details vir die versoekte oproep lees nie."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Inkomende oproep"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Uitgaande oproep"</string>
- <string name="type_missed" msgid="2720502601640509542">"Gemiste oproep"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Stemboodskap"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Inkomende oproepe"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Gereeld gekontak"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Gereeld gebel"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voeg \"<xliff:g id="EMAIL">%s</xliff:g>\" by kontakte?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"een"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"twee"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"drie"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"vier"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"vyf"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"ses"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sewe"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"agt"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nege"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ster"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nul"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"huts"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"stemboodskap"</string>
- <string name="description_search_button" msgid="3660807558587384889">"soek"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"bel"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"terugvee"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nommer om te skakel"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontakfoto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"vee uit"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Bekyk kontak"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Geen berging gevind nie."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Geen SD-kaart gevind nie."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Voer in van SIM-kaart"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Voer in uit berging"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Voer uit na berging"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Deel sigbare kontakte"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Voer een vCard-lêer in"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Voer meerdere vCard-lêers in"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Voer alle vCard-lêers in"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Soek tans vir vCard-data in berging..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Soek tans vir vCard-data op SD-kaart..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Die berging kon nie geskandeer word nie. (Rede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Die SD-kaart kon nie geskandeer word nie. (Rede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"T/A-fout"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nie genoeg geheue nie. Die lêer is dalk te groot."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Kon nie vCard ontleed nie weens onverwagte redes."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Die formaat word nie ondersteun nie."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Kon nie vCard invoer nie."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Geen vCard-lêer in geheue gevind nie."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Geen vCard-lêer op die SD-kaart gevind nie"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Kon nie meta-inligting van gegewe vCard-lêer(s) versamel nie."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Een of meer lêers kon nie ingevoer word nie (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Onbekende fout"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Kies vCard-lêer"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Kas tans..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Kas van vCard(s) na die die plaaslike tydelike stoor. Die werklike invoer sal binnekort begin."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Voer <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> in: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Voer <xliff:g id="NAME">%s</xliff:g> in"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Kon nie vCard-data lees nie"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lees van vCard-data gekanselleer"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Klaar met invoer van vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Invoer van <xliff:g id="FILENAME">%s</xliff:g> gekanselleer"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> sal binnekort ingevoer word."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Die lêer sal binnekort ingevoer word."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard-invoerversoek is verwerp. Probeer asseblief later weer."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> sal binnekort uitgevoer word."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard-uitvoerversoek is verwerp. Probeer asseblief later."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontak"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Voer kontakte uit?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Jou kontaklys sal uitgevoer word na die lêer: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Kon nie uitvoer nie"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Die kontakdata is nie uitgevoer nie."\n"Rede: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Daar is geen uitvoerbare kontak nie."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Te veel vCard-lêers word geberg."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Te veel vCard-lêers is op die SD kaart."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Vereiste lêernaam is te lank (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Het <xliff:g id="FILENAME">%s</xliff:g> klaar uitgevoer."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Uitvoer van <xliff:g id="FILENAME">%s</xliff:g> is gekanselleer."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Voer kontakdata uit"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Jou kontakdata word uitgevoer na: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Kon nie die uitvoerder aktiveer nie: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"\'n Fout het voorgekom tydens uitvoer: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Kon nie databasis-inligting kry nie"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Daar is geen kontakte wat uitgevoer kan word nie. As jy wel kontakte op jou tablet het, mag sommige dataverskaffers nie toelaat dat die kontakte uitgevoer word van die tablet nie."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Daar is geen kontakte om uit te voer nie. As jy kontakte op jou foon het, sal sommige dataverskaffers nie toelaat dat die foon se kontakte uitgevoer word nie."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Die vCard-opsteller het nie behoorlik begin nie."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Kon nie \"<xliff:g id="FILE_NAME">%s</xliff:g>\" open nie: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Kanselleer invoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kanselleer uitvoer van <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kon nie vCard invoer/uitvoer kanselleer nie"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Name van jou kontakte"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Voeg 2-sek.-pouse by"</string>
- <string name="add_wait" msgid="3360818652790319634">"Voeg wagtyd by"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Kies nommer"</string>
- <string name="call_settings" msgid="7666474782093693667">"Instellings"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Kies nommer"</string>
- <string name="make_primary" msgid="5829291915305113983">"Onthou hierdie keuse"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Geen program is gevind om hierdie aksie te hanteer nie."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Geen naam nie)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Rekeninge"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Vee dikwels-gebruiktes uit"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakte om te wys"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Voer in/uit"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Voer kontakte in/uit"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Voer kontakte in"</string>
<string name="menu_share" msgid="943789700636542260">"Deel"</string>
<string name="share_via" msgid="563121028023030093">"Deel kontak met"</string>
- <string name="share_error" msgid="948429331673358107">"Hierdie kontak kan nie gedeel word nie."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Naam"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Bynaam"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisasie"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Webwerf"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Gebeure"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Verhouding"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Groepe"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Skep kontak onder rekening"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Skep groep onder rekening"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Verwyder sinkroniseergroep"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Voeg sinkroniseergroep by"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Meer groepe..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alle ander kontakte"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alle kontakte"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"As jy \'<xliff:g id="GROUP">%s</xliff:g>\' uit sinkronisering verwyder, sal dit ook enige ongegroepeerde kontakte uit sinkronisering verwyder."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Net tablet, ongesinkroniseer"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Net foon, ongesinkroniseer"</string>
- <string name="call_custom" msgid="7756571794763171802">"Bel <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Bel tuis"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Bel selfoon"</string>
- <string name="call_work" msgid="5328785911463744028">"Bel werk"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Bel werkfaks"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Bel huisfaks"</string>
- <string name="call_pager" msgid="9003902812293983281">"Bel roeper"</string>
- <string name="call_other" msgid="8563753966926932052">"Bel"</string>
- <string name="call_callback" msgid="1910165691349426858">"Bel - terugbel"</string>
- <string name="call_car" msgid="3280537320306436445">"Bel motor"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Bel maatskappy, hoof"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Bel ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Bel hoof"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Bel faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Bel radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Bel teleks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Oproep-TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Bel werkselfoon"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Bel werkroeper"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Bel <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Bel MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Teks <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Teks - tuis"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Teks - selfoon"</string>
- <string name="sms_work" msgid="2269624156655267740">"Teks - werk"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Teks - werkfaks"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Teks - huisfaks"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Teks - roeper"</string>
- <string name="sms_other" msgid="806127844607642331">"Teks"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Teks-terugbel"</string>
- <string name="sms_car" msgid="7444227058437359641">"Teks - motor"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Teks - maatskappy, hoof"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Teks - ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Teks - hoof"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Teksfaks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Teks - radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Teks - teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Teks - TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Teks - werkselfoon"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Teks - werkroeper"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Teks <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Teks - MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Teksboodskap"</string>
- <string name="email_home" msgid="8573740658148184279">"E-postuis"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-pos - mobiel"</string>
- <string name="email_work" msgid="2807430017302722689">"E-pos - werk"</string>
- <string name="email_other" msgid="3454004077967657109">"E-pos"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-pos <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-pos"</string>
- <string name="map_home" msgid="1243547733423343982">"Sien huisadres"</string>
- <string name="map_work" msgid="1360474076921878088">"Sien werkadres"</string>
- <string name="map_other" msgid="3817820803587012641">"Sien adres"</string>
- <string name="map_custom" msgid="6184363799976265281">"Sien <xliff:g id="CUSTOM">%s</xliff:g> adres"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Klets met AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Klets met Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Klets met Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Klets met Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Klets met QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Klets met Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Klets met ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Klets met Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Klets"</string>
<string name="audio_chat" msgid="2535716629358298691">"Stemklets"</string>
<string name="video_chat" msgid="1872255818640336072">"Videoklets"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adres"</string>
- <string name="postal_street" msgid="8133143961580058972">"Straat"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Posbus"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Buurt"</string>
- <string name="postal_city" msgid="6597491300084895548">"Stad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Deelstaat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Poskode"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Naam"</string>
- <string name="name_given" msgid="1687286314106019813">"Voornaam"</string>
- <string name="name_family" msgid="3416695586119999058">"Van"</string>
- <string name="name_prefix" msgid="59756378548779822">"Naamvoorvoegsel"</string>
- <string name="name_middle" msgid="8467433655992690326">"Middelnaam"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Naamagtervoegsel"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetiese voornaam"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetiese middelnaam"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetiese van"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetiese naam"</string>
<string name="connections" msgid="8098440723172028350">"Skakelpunte"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Voeg skakelpunt by"</string>
<string name="recent" msgid="2659189233141493004">"Onlangs"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Rangskik lys volgens"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Voornaam"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Van"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Sien kontakname as"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Bekyk kontakname"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Voornaam eerste"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Van eerste"</string>
<string name="take_photo" msgid="7496128293167402354">"Neem foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Wys alle"</string>
<string name="menu_select_all" msgid="621719255150713545">"Kies alle"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Ontkies almal"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Geen kontakte gekies nie."</string>
<string name="add_field" msgid="2384260056674995230">"Voeg nog \'n veld by"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Voeg nuwe by"</string>
<string name="add_organization" msgid="7311893231158291197">"Voeg organisasie by"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nie saamgevoeg nie"</item>
<item quantity="other" msgid="425683718017380845">"saamgevoeg uit <xliff:g id="COUNT">%0$d</xliff:g> bronne"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Ander"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Voeg die huidige kontak by die gekose kontak saam?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Wissel na redigering van die gekose kontak? Inligting wat jy tot dusver ingevoer het, sal gekopieer word."</string>
<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="directory_search_label" msgid="1887759056597975053">"Gids"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alle kontakte"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Skep tans \'n persoonlike kopie..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alle kontakte"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Gester"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Gepasmaak"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Pasmaak"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alle kontakte met telefoonnommers"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontak"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definieer gepasmaakte aansig"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Laai tans…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Instellings"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakte om te wys"</string>
<string name="menu_settings" msgid="377929915873428211">"Instellings"</string>
<string name="menu_help" msgid="5123887102216637725">"Hulp"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Vertoonopsies"</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="hint_findContacts" msgid="1808681193458772072">"Vind kontakte"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Foonnommer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Voeg by kontakte"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Voeg by kontakte"</string>
@@ -497,61 +215,7 @@
<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">"Stel my profiel op"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Voer persoon se naam in"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Sien opdaterings"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Stemboodskap"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> stemboodskappe"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Speel"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuwe stemboodskap van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Kon nie stemboodskap speel nie."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Buffering…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Haal stemboodskappe…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Kon nie stemboodskap haal nie."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nuut"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Ouer"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Slegs oproepe met stemboodskappe"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Slegs inkomende oproepe"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Slegs uitgaande oproepe"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Slegs gemisde oproepe"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Kan nie aan stemboodskapsbediener koppel nie."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Kan nie aan stemboodskapbediener koppel nie. Nuwe stemboodskappe wag."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Stel jou stemboodskapdiens op."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Oudio nie beskikbaar nie."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Stel op"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Bel stemboodskap"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Stadigste spoed"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Stadige spoed"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normale spoed"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Vinnige spoed"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Vinnigste spoed"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>)<xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Groep se naam"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontak ontvang via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Wys slegs uitgaande"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Wys slegs inkomende"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Wys slegs misgeloop"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Wys net stemboodskappe"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Wys alle oproepe"</string>
- <string name="status_available" msgid="5586870015822828392">"Beskikbaar"</string>
- <string name="status_away" msgid="1838861100379804730">"Weg"</string>
- <string name="status_busy" msgid="9147992455450257136">"Besig"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Speel stemboodskap"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Inkomende oproep"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Uitgaande oproep"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Gemiste oproep"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Stemboodskap"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Voeg kontak by"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Bekyk kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Bel <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Stuur teksboodskap aan <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ongeluisterde stemboodskap"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Stuur boodskap aan <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Skakel selfoon <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Vinnige kontak vir <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ek"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Hou plaaslik"</string>
<string name="add_account" msgid="8201790677994503186">"Voeg rekening by"</string>
<string name="add_new_account" msgid="5748627740680940264">"Voeg nuwe rekening by"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Oproep nie gestuur nie"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Om stemboodskapdiens op te stel, gaan na Kieslys > Instellings."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om stemboodskapdiens te bel, skakel eers vliegtuigmodus af."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Voer databasislêers uit"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Meer opsies"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Vou naamvelde uit of in"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Foto. Kies om te verander"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index ebb6c41..deb59bc 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"ስልክ"</string>
<string name="people" msgid="1048457247435785074">"ሰዎች"</string>
<string name="contactsList" msgid="8661624236494819731">"እውቅያዎች"</string>
<string name="shortcutContact" msgid="749243779392912958">"እውቅያ"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"ስለ"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"ማዘመኛ"</string>
<string name="searchHint" msgid="8482945356247760701">"ዕውቅያዎችን ፈልግ"</string>
- <string name="menu_search" msgid="9147752853603483719">"ፍለጋ"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"አዲስ ዕውቅያ"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"ዕውቂያ ዕይ"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"ደውል<xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"ቅዳ"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"መነሻ የማያ ገጽ ላይ አስቀምጥ"</string>
<string name="menu_call" msgid="3992595586042260618">"የጥሪ ዕውቂያ"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"ዕውቂያ ፃፍ"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"ይህ ዕውቂያ ከብዙ መለያዎች መረጃ ይዟል።ከንባብ-ብቻ መለያዎች ውስጥ ያሉ ዕውቂያዎች ይደበቃሉ፣አይሰረዙም።"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"ይህን ዕውቂያ መሰረዝ ከብዙ መለያዎች ውስጥ መረጃ ይሰርዛል።"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"ይህ ማንቂያ ይሰረዛል።"</string>
- <string name="menu_done" msgid="796017761764190697">"ተከናውኗል"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"ይቅር"</string>
<string name="menu_discard" msgid="6456087569315685632">"አስወግድ"</string>
- <string name="label_notes" msgid="8337354953278341042">"ማስታወሻዎች"</string>
- <string name="label_sip_address" msgid="124073911714324974">"የበይነመረብ ጥሪ"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"ኩባንያ"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"አርዕስት"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"ስልክ"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"ኢሜይል"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"ፈጣን መልዕክቶች"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"አድራሻ"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"መስርያ ቤት"</item>
<item msgid="7196592230748086755">"ማስታወሻ"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"ዕውቅያዎች የሉም።"</string>
<string name="noGroups" msgid="8614664663561385253">"ምንም ቡድኖች የሉም።"</string>
<string name="noAccounts" msgid="7768267764545265909">"ቡድኖች ለመፍጠር መለያ ያስፈልግሃል፡፡"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"ምንም ተዛማጅ ዕውቂያዎች አልተገኙም።"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"ከስልክ ቁጥር ጋርየሚታዩዕውቂያዎች የሉም።"</string>
<string name="emptyGroup" msgid="7502116218697177370">"ምንም ሰዎች በዚህ ቡድን ውሰጥ፡፡"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"አንዳንድ ለማከል፣ ቡድኑን አርትዕ፡፡"</string>
<string name="savingContact" msgid="4075751076741924939">"ዕውቂያ በማስቀመጥ ላይ..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"ማሳያ አማራጮችን በማስቀመጥ ላይ..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"ዕውቂያተቀምጧል።"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"የእውቂያ ለውጦች ማስቀመጥ አልተቻለም::"</string>
<string name="groupSavedToast" msgid="1168756874239833756">"ቡድን ተቀምጧል።"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 እውቅያ"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> እውቅያዎች"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"ምንም ዕውቂያዎች የሉም"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"ምንም የሚታዩ ዕውቂያዎች የሉም"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"ምንም ተወዳጅ የለም"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"በ<xliff:g id="NAME">%s</xliff:g> ውስጥ ምንም ዕውቂያዎች የሉም"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"በ<xliff:g id="NAME">%s</xliff:g> ውስጥ ያሉ ዕውቂያዎች"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"ነጠላ እውቂያ"</string>
- <string name="listCustomView" msgid="6950713892532194050">"እውቂያዎች በብጁ እይታ"</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="foundTooManyContacts" msgid="5163335650920020220">"ከ<xliff:g id="COUNT">%d</xliff:g> የበለጠ ተገኝቷል"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"እውቅያዎች የሉም"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 ተገኝቷል"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"ሁሉም እውቂያዎች"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"ቡድኖች"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"ተወዳጆች"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"ተወዳጆች እና ሁሉም እውቂያዎች"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"ስልክ"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"ምዝግብ ማስታወሻ"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"የፅሁፍ መልዕክት ላክ"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"ጥሪ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ከመደወል በፊት ቁጥር አርትዕ"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"ወደ ዕውቂያዎች አክል"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"ከጥሪ ማስታወሻ አስወግድ"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"የጥሪ ማስታወሻ አጥራ"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"የድምፅ መልዕክት ሰርዝ"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"የድምፅ መልዕክት አጋራ"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"ምዝግብ ማስታወሻባዶ ነው..."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"የጥሪ ማስታወሻ አጥራ"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"ሁሉም የጥሪ ማህደሮችህ ይሰረዛሉ፡፡"</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"የጥሪ ምዝግብ ማስታወሻ በማጥራት ላይ…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"በተደጋጋሚ ያገኘሃቸው ይጠረጉ?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"በሰዎች እና በስልክ መተግበሪያዎች ውስጥ በተደጋጋሚ ያገኘሃቸውን ዝርዝር ጠርገህ የኢሜይል መተግበሪያዎች ምርጫዎችህን ከባዶ ተነስተው እንያውቁ ታስገድዳለህ።"</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"በተደጋጋሚ ያገኘሃቸውን በመጥረግ ላይ…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"የድምፅ መልዕክት"</string>
- <string name="unknown" msgid="740067747858270469">"ያልታወቀ"</string>
- <string name="private_num" msgid="6374339738119166953">"የግል ቁጥር"</string>
- <string name="payphone" msgid="4864313342828942922">"የክፍያ ስልክ"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"ለመደወል የሰሌዳ ቁልፍ ተጠቀም"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"ጥሪ ለማከል ደውል"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"ከSIM ካርድ ላይ በመጫን ላይ..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"የSIM ካርድ ዕውቂያዎች"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"ለማሳየት ምንም እውቂያዎች የልዎትም። (መለያ አሁን ገና ካከሉ፣ እውቂያዎችን ለማሳመር ትንሽ ደቂቃ ሊወስድ ይችላል።)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">" ለማሳየት ምንም እውቂያዎች የልዎትም።"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"ምንም ዕውቅያዎች ለማሳየት የለህም፡፡ "\n\n"ዕውቅያዎችን ለማከል፤ዳስ"<font fgcolor="#ffffffff"><b>" ምናሌ"</b></font>"፤ ከዛ ዳስ፤ "\n" "\n<li><font fgcolor="#ffffffff"><b>" መለያዎች"</b></font>" ከእውቅያዎች ጋር ወደ ጡባዊ ተኮ "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" የምታመሳስለው መለያ ለማከል ወይም ለማደራጀት አዲስ እውቅያ"</b></font>" ከምንም"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" አዲስ ዕውቅያ ለመፍጠር ከውጭ አስገባ/ወደ ውጭ ላክ "</b></font>" ከሲምህ ወይም SD ካርድህ "\n</li>" ዕውቅያዎችን ከውጭ ለማስገባት"</string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"ምንም ዕውቅያዎች ለማሳየት የለህም፡፡ "\n\n"ዕውቅያዎችን ለማከል፤ዳስ"<font fgcolor="#ffffffff"><b>" ምናሌ"</b></font>"፤ ከዛ ዳስ፤ "\n" "\n<li><font fgcolor="#ffffffff"><b>" መለያዎች"</b></font>" ከእውቅያዎች ጋር ወደ ስልኩ "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" የምታመሳስለው መለያ ለማከል ወይም ለማደራጀት አዲስ እውቅያ"</b></font>" ከምንም"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" አዲስ ዕውቅያ ለመፍጠር ከውጭ አስገባ/ወደ ውጭ ላክ "</b></font>" ከሲምህ ወይም SD ካርድህ "\n</li>" ዕውቅያዎችን ከውጭ ለማስገባት"</string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"ለማሳየት ምንም ዕውቂያዎች የልዎትም።(መለያ ካከሉ፣ዕውቂያዎችን ለማሳመር ጥቂት ደቂቃዎች ይፈጃል።)"\n\n"ዕውቂያዎች ለማከል፣"<font fgcolor="#ffffffff"><b>"ምናሌ ይጫኑ"</b></font>\n\n<li><font fgcolor="#ffffffff"><b>"መለያዎች"</b></font>"ለማከል ወይም መለያዎች ን ከዕውቂያዎች ጋር ለማወቃር ወደ ጡባዊው ማስመር ይችላሉ"\n</li>\n<li><font fgcolor="#ffffffff"><b>" አማራጮች"</b></font>"የትኞቹ ዕውቂያዎች እንደሚታዩለመለወጥአሳይ"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አዲስ ዕውቂያ"</b></font>"አዲስ ዕውቂያ ከባዶ ለመፍጠር"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አስገባ/ላክ"</b></font>"ከSIM ወይምSD ካርድዎ ዕውቂያዎች ለማስገባት "\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"ለማሳየት ምንም ዕውቂያዎች የለህም።(መለያ ካከልክ፣ዕውቂያዎችን ለማሳመር ጥቂት ደቂቃዎች ይፈጃል።)"\n\n"ዕውቂያዎች ለማከል፣"<font fgcolor="#ffffffff"><b>"ምናሌ ተጫን"</b></font>"እና"\n\n<li><font fgcolor="#ffffffff"><b>"መለያዎች"</b></font>"ለማከል ወይም መለያዎችን ከዕውቂያዎች ጋር ለማወቃር ወደ ስልኩ ማሳመር ትችላለህ፡ይንኩ።"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አማራጮች"</b></font>"የትኞቹ ዕውቂያዎች እንደሚታዩ ለመለወጥ አሳይ"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አዲስ ዕውቂያ"</b></font>"አዲስ ዕውቂያ ከባዶ ለመፍጠር"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አስገባ/ላክ"</b></font>"ከSIM ወይም SD ካርድ ዕውቂያዎች ለማስገባት "\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"ምንም ዕውቅያዎች ለማሳየት የለህም፡፡ "\n\n"ዕውቅያዎችን ለማከል፤ዳስ"<font fgcolor="#ffffffff"><b>" ምናሌ"</b></font>"፤ ከዛ ዳስ፤ "\n" "\n<li><font fgcolor="#ffffffff"><b>" መለያዎች"</b></font>" ከእውቅያዎች ጋር ወደ ስልኩ "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" የምታመሳስለው መለያ ለማከል ወይም ለማደራጀት አዲስ እውቅያ"</b></font>" ከምንም"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" አዲስ ዕውቅያ ለመፍጠር ከውጭ አስገባ/ወደ ውጭ ላክ "</b></font>" ከሲምህ ወይም SD ካርድህ "\n</li>" ዕውቅያዎችን ከውጭ ለማስገባት"</string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"ምንም ዕውቅያዎች ለማሳየት የለህም፡፡ "\n\n"ዕውቅያዎችን ለማከል፤ዳስ"<font fgcolor="#ffffffff"><b>" ምናሌ"</b></font>"፤ ከዛ ዳስ፤ "\n" "\n<li><font fgcolor="#ffffffff"><b>" መለያዎች"</b></font>" ከእውቅያዎች ጋር ወደ ስልኩ "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" የምታመሳስለው መለያ ለማከል ወይም ለማደራጀት አዲስ እውቅያ"</b></font>" ከምንም"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" አዲስ ዕውቅያ ለመፍጠር ከውጭ አስገባ/ወደ ውጭ ላክ "</b></font>" ከሲምህ ወይም SD ካርድህ "\n</li>" ዕውቅያዎችን ከውጭ ለማስገባት"</string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"ለማሳየት ምንም ዕውቂያዎች የልዎትም።(መለያ ካከሉ፣ዕውቂያዎችን ለማሳመር ጥቂት ደቂቃዎች ይፈጃል።)"\n\n"ዕውቂያዎች ለማከል፣"<font fgcolor="#ffffffff"><b>" ምናሌ ይጫኑ"</b></font>\n\n<li><font fgcolor="#ffffffff"><b>"መለያዎች"</b></font>"ለማከል ወይም መለያዎች ን ከዕውቂያዎች ጋርለማወቃር ወደ ጡባዊ ተኮ ማስመር ይችላሉ።"\n</li>\n<li><font fgcolor="#ffffffff"><b>" አማራጮች"</b></font>"የትኞቹ ዕውቂያዎች እንደሚታዩለመለወጥአሳይ"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አዲስ ዕውቂያ"</b></font>"አዲስ ዕውቂያ ከባዶ ለመፍጠር"\n</li>\n<li><font fgcolor="#ffffffff"><b>"አስመጣ/ላክ"</b></font>"ከ SD ካርድዎ ዕውቂያዎች ለማስመጣት"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"ለማሳየት ምንም ዕውቂያዎች የለህም ። (መለያ ካከልክ፣ዕውቂያዎችን ለማሳመር ጥቂት ደቂቃዎች ይፈጃል።) "\n\n" ዕውቂያዎች ለማከል፣"<font fgcolor="#ffffffff"><b>" ምናሌ "</b></font>" ተጫን"\n" "\n<li><font fgcolor="#ffffffff"><b>"መለያዎች"</b></font>"ለማከል ወይም መለያዎችን ከዕውቂያዎች ጋር ለማወቃር ወደ ስልኩ ማሳመር ትችላለህ፡ንካ።"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" አማራጮች"</b></font>" የትኞቹ ዕውቂያዎች እንደሚታዩ ለመለወጥ አሳይ"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"አዲስ ዕውቂያ"</b></font>" አዲስ ዕውቂያ ከባዶ ለመፍጠር"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"አስገባ/ላክ "</b></font>" ከSIM ወይም SD ካርድ ዕውቂያዎች ለማስገባት"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"ምንም ተፈላጊዎች ምርጫ የልዎትም። "\n\n"ዕውቂያዎችዎን ወደ ተፈላጊ ዝርዝር ውስጥ ለማከል፡"\n\n<li>" የዕውቂያዎች"<b>" ትር"</b>" ይንኩ"\n</li>\n<li>" ወደ ተፈላጊዎች ምርጫ ለማከል የፈለጉትን ዕውቂያ ይንኩ"\n</li>\n<li>" ከዕውቂያ ዎች ስም ቀጥሎ ያለውን ኮከብ ይንኩ"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"የድምፅ ቁልፍ ሰሌዳን ንካ"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"በመካሄድ ላይ ወዳለው ጥሪ ተመለስ"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ጥሪ ያክሉ"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"የጥሪ ዝርዝሮች"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"ለተጠየቀው ጥሪዝርዝሮችንማንበብ አልተቻለም።"</string>
- <string name="type_incoming" msgid="6502076603836088532">"ገቢ ጥሪ"</string>
- <string name="type_outgoing" msgid="343108709599392641">"ወጪ ጥሪ"</string>
- <string name="type_missed" msgid="2720502601640509542">"ያመለጠ ጥሪ"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"የድምፅ መልዕክት"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"ገቢ ጥሪዎች"</string>
<string name="callBack" msgid="5498224409038809224">"የኋላ ጥሪ"</string>
<string name="callAgain" msgid="3197312117049874778">"እንደገና ደውል"</string>
<string name="returnCall" msgid="8171961914203617813">"ጥሪ መልስ"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>ደቂቃዎች <xliff:g id="SECONDS">%s</xliff:g> ሰከንዶች"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"በተደጋጋሚ የሚገናኙ"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"በተደጋጋሚ የተደወለ"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"<xliff:g id="EMAIL">%s</xliff:g> ወደ እውቅያዎች ዝርዝር ይታከል"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"አንድ"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"ሁለት"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"ሦስት"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"አራት"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"አምስት"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"ስድስት"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"ሰባት"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"ስምንት"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"ዘጠኝ"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ኮከብ"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"ዜሮ"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"ፓውንድ"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"የድምፅ መልዕክት"</string>
- <string name="description_search_button" msgid="3660807558587384889">"ፈልግ"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"ደውል"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"የኋሊት ደምሳሽ"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"ቁጥር ለመደወል"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"የዕውቂያ ፎቶ"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"ሰርዝ"</string>
<string name="description_plus_button" msgid="515164827856229880">"ተጨማሪ"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"ዕውቂያ ዕይ"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ምንም ማከማቻ አልተገኘም፡፡"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"ምንም SD ካርድ አልተገኘም፡፡"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"ከSIM ካርድ አስመጣ"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ከማከማቻ አስገባ"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ወደማከማቻ ላክ"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"የሚታዩ እውቂያዎችን አጋራ"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"አንድ vCard ፋይል አስመጣ"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"ብዙ vCard ፋይሎች አስመጣ"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"ሁሉም vCard ፋይሎችን አስገባ"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"በማከማቻ ውስጥ የvCard ውሂብ በመፈለግ ላይ"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"በSD ካርድ ላይ vCard ፍለጋ"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ማከማቻው ሊቀረጽ አልተቻለም:: (ምክንያት: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD ካርዱ ሊቀረጽ አልተቻለም:: (ምክንያት: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O ስህተት"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"በቂ ማህደረ ትውስታ የለም፡፡ፋይሉ ምናልባት በጣም ትልቅ ይሆናል፡፡"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"ባልተጠበቀ ምክንያት vCard መተንተን አልተቻለም፡፡"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"ቅርፀቱ አይታገዝም"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard ማስመጣት አልተቻለም"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"በማከማቻ ላይ ምንም vCard ፋይል አልተገኘም::"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"በSD ካርዱ ላይ ምንም vCard ካርድ ፋይል አልተገኘም::"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"በተሰጠው(ጡት) vCard ፋይል(ሎች) ሜታ መረጃ መሰብሰብ አልተቻለም፡፡"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"አንድ ወይም ከዛ በላይ ፋይሎች ማስመጣት አልተቻለም (%s)፡፡"</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"ያልታወቀ ስህተት"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard ፋይል ምረጥ"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"በመሸጎጥ ላይ"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"ወደ ጊዜያዊ ማከማቻ vCard(s) እየሸጎጠ ነው። ትክክለኛው አስመጣ በቅርቡ ይጀምራል።"</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"በማስገባት ላይ<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>፡<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> ማስገባት"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCard ውሂብ ማንበብ አልተቻለም"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"የvCard ውሂብ ማንበብ ተሰርዟል"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">" <xliff:g id="FILENAME">%s</xliff:g> vCard ማስመጣት ጨርሷል"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"<xliff:g id="FILENAME">%s</xliff:g> ማስመጣት ተሰርዞዋል"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> ከአፍታ ቆይታ በኋላ ይመጣል።"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"ፋይሉ ከአፍታ ቆይታ በኋላ ይመጣል።"</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"የvCard ማስመጣት ጥየቃ ውድቅ ተደርጓል። እባክህ ትንሽ ቆይተህ ሞክር።"</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> ከአፍታ ቆይታ በኋላ ይላካል።"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"የvCard ላክ ጥየቃ ውድቅ ተደርጓል። እባክህ ትንሽ ቆይተህ ሞክር።"</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"እውቅያ"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"እውቅያዎች ላክ"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"የእውቂያ ዝርዝርህ ወደዚህ ፋይል ይላካል: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"ወደ ውጭ መላክ አልተቻለም"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"የዕውቅያ ውሂብ ወደ ውጭ አልተላከም፡፡ "\n"ምክንያት፡፡\"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"ምንም ወደ ውጭ መላክ የሚችል ዕውቂያ የለም"</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"በጣም ብዙ vCard ፋይሎች በማከማቻ ውስጥ ናቸው፡፡"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"በSD ካርድ ላይ በጣም ብዙ vCard ፋይሎች"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"የተጠየቀው ፋይል ስም በጣም ረጅም ነው (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> መላክ ጨርሷል"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"መላክ <xliff:g id="FILENAME">%s</xliff:g> ተሰርዟል::"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"የዕውቂያ ውሂብ በመላክ ላይ"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">" የዕውቅያ ውሂብህ ወደ ውጭ በመላክ ላይ ነው፤ <xliff:g id="FILE_NAME">%s</xliff:g>፡፡"</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"ላኪው፡\"<xliff:g id="EXACT_REASON">%s</xliff:g>\" ለማስነሳት አልተቻለም"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"በመላክ ጊዜስህተት ተከስቷል: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"ውሂብ ጎታ መረጃን ማግኘት አልተቻለም"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"ወደ ውጭ የሚላኩ ዕውቅያዎች የሉም፡፡በጡባዊ ተኮህ ላይ ዕውቅያዎች ካሉህ፤ አንዳንድ የውሂብ አቅራቢዎች ከጡባዊው ተኮ ዕውቅያዎች ወደ ውጭ እንዲላክ አይፈቅዱም፡፡"</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"ወደ ውጭ የሚላኩ እውቅያዎች የሉም፡፡ ስልክህ ውስጥ እውቅያዎች ካሉህ፤አንዳንድ ውሂብ አቅራቢዎች ከስልኩ እውቅያዎች ወደ ውጭ እንዲላኩ አይፈቅዱም፡፡"</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"የ vCard አቀናባሪው በትክክል አልጀመረም::"</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" ፡<xliff:g id="EXACT_REASON">%s</xliff:g> መክፈት አልተቻለም"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"የ<xliff:g id="FILENAME">%s</xliff:g>ወደ ውስጥ ማስገባት ይተው?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"የ<xliff:g id="FILENAME">%s</xliff:g> ወደ ውጭ መላክ ይተው?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard ማስመጣት/ወደ ውጪ መላክ መተው አልተቻለም"</string>
<string name="search_settings_description" msgid="2675223022992445813">"የዕውቂያዎችዎ ስሞች"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2 ሰከንድ ፋታ አክል"</string>
- <string name="add_wait" msgid="3360818652790319634">"ጠብቅአክል"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"ቁጥር ምረጥ"</string>
- <string name="call_settings" msgid="7666474782093693667">"ቅንብሮች"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"ቁጥር ምረጥ"</string>
- <string name="make_primary" msgid="5829291915305113983">"ይህን ምርጫ አስታውስ"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"ይህን እርምጃ ለማስተናገድ ምንም መተግበሪያ አልተገኘም፡፡"</string>
- <string name="missing_name" msgid="8745511583852904385">"(ስም የለም)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"መለያዎች"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"ተደጋጋሚዎችን ጥረግ"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"ዕውቂያዎች አሳይ"</string>
- <string name="menu_import_export" msgid="26217871113229507">"አስመጣ/ላክ"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"ዕውቂያዎች አስመጣ/ላክ"</string>
- <string name="dialog_import" msgid="2431698729761448759">"እውቅያዎችን ከውጭ አስመጣ"</string>
<string name="menu_share" msgid="943789700636542260">"መጋሪያ"</string>
<string name="share_via" msgid="563121028023030093">"ዕውቂያበ በኩል አጋራ"</string>
- <string name="share_error" msgid="948429331673358107">"ይህ ዕውቂያ መጋራት አይችልም።"</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"ስም"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"ቅጽል ስም"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"መስርያ ቤት"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"ድረ ገፅ"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"ክስተቶች"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"ግንኙነት"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"ቡድኖች"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"በመለያ ስር ዕውቂያ ፍጠር"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"በመለያ ስር ቡድን ፍጠር"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"የአሳምር ቡድን አስወግድ"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"አሳምርቡድንአክል"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"ተጨማሪቡድኖች..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"ሌላ ሁሉም ዕውቂያዎች"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"ሁሉም እውቅያዎች"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"\'<xliff:g id="GROUP">%s</xliff:g>\' ከአሳምር ማስወገድ እንዲሁ ማንኛውም በተነጣጥል ያሉ ዕውቅያዎችን ከአሳምር ያስወግዳል።"</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"ጡባዊ- ብቻ፣ያልሰመረ"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"ስልክ- ብቻ፣ያልሰመረ"</string>
- <string name="call_custom" msgid="7756571794763171802">"ጥሪ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">" መነሻጥሪ"</string>
- <string name="call_mobile" msgid="7502236805487609178">"ተንቀሳቃሽ ስልክ ጥሪ"</string>
- <string name="call_work" msgid="5328785911463744028">"የሥራ ጥሪ"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"የሥራ ጥሪ ፋክስ"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"የጥሪ መነሻፋክስ"</string>
- <string name="call_pager" msgid="9003902812293983281">"ምልክት ማድረጊያ ጥሪ"</string>
- <string name="call_other" msgid="8563753966926932052">"ደውል"</string>
- <string name="call_callback" msgid="1910165691349426858">"ተዘዋዋሪ ጥሪ ደውል"</string>
- <string name="call_car" msgid="3280537320306436445">"የመኪና ደውል"</string>
- <string name="call_company_main" msgid="6105120947138711257">"የጥሪ ኩባንያ ዋና"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDN ጥሪ"</string>
- <string name="call_main" msgid="6082900571803441339">"ዋና ጥሪ"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"ፋክስ ደውል"</string>
- <string name="call_radio" msgid="8296755876398357063">"የሬዲዮጥሪ"</string>
- <string name="call_telex" msgid="2223170774548648114">"ቴሌክስጥሪ"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDD ጥሪ"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"ተንቀሳቃሽ ሥራ ስልክደውል"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"የሥራ ጥሪ ምልክት ማድረጊያ"</string>
- <string name="call_assistant" msgid="2141641383068514308">"ጥሪ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMS ጥሪ"</string>
- <string name="sms_custom" msgid="5932736853732191825">"ፅሁፍ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"የፅሁፍመነሻ"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"የ ተንቀሳቃሽፅሁፍ"</string>
- <string name="sms_work" msgid="2269624156655267740">"የፅሁፍ ሥራ"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"የፅሁፍ ሥራፋክስ"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"የመነሻ ፅሁፍ ፋክስ"</string>
- <string name="sms_pager" msgid="7730404569637015192">"የፅሁፍ ምልክት ማድረጊያ"</string>
- <string name="sms_other" msgid="806127844607642331">"ፅሁፍ"</string>
- <string name="sms_callback" msgid="5004824430094288752">"የተዘዋዋሪ ጥሪ ፅሁፍ"</string>
- <string name="sms_car" msgid="7444227058437359641">"የፅሁፍ ማሽን"</string>
- <string name="sms_company_main" msgid="118970873419678087">"የኩባንያ ዋናፅሁፍ"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"የ ISDN ፅሁፍ"</string>
- <string name="sms_main" msgid="8621625784504541679">"የዋና ፅሁፍ"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"የፋክስ ፅሁፍ"</string>
- <string name="sms_radio" msgid="3329166673433967820">"የፅሁፍ ሬዲዮ"</string>
- <string name="sms_telex" msgid="9034802430065267848">"የፅሁፍ ቴሌክስ"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"TTY/TDD ፅሁፍ"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"የፅሁፍ ሥራ ተንቀሳቃሽ"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"የፅሁፍ ሥራ ምልክት ማድረጊያ"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"ፅሁፍ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"የMMS ፅሁፍ"</string>
- <string name="sms" msgid="1756857139634224222">"የጽሑፍ መልዕክት"</string>
- <string name="email_home" msgid="8573740658148184279">"የኢሜይል መነሻ"</string>
- <string name="email_mobile" msgid="2042889209787989814">"ኢሜይል ተንቀሳቃሽ"</string>
- <string name="email_work" msgid="2807430017302722689">"ኢሜይልሥራ"</string>
- <string name="email_other" msgid="3454004077967657109">"ኢሜይል"</string>
- <string name="email_custom" msgid="7548003991586214105">"ኢሜይል <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"ኢሜይል"</string>
- <string name="map_home" msgid="1243547733423343982">"የመነሻ አድራሻ ዕይ"</string>
- <string name="map_work" msgid="1360474076921878088">"የሥራ አድራሻ ዕይ"</string>
- <string name="map_other" msgid="3817820803587012641">"አድራሻ እይ"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> አድራሻዎች እይ"</string>
- <string name="chat_aim" msgid="2588492205291249142">"ጨዋታ AIM በመጠቀም"</string>
- <string name="chat_msn" msgid="8041633440091073484">"ጨዋታ Windows Live በመጠቀም"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Yahoo ፣ውይይት በመጠቀም"</string>
- <string name="chat_skype" msgid="1210045020427480566">"ጨዋታ Skype በመጠቀም"</string>
- <string name="chat_qq" msgid="4294637812847719693">"ጨዋታ QQ በመጠቀም"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"የGoogle Talk በመጠቀም ጨዋታ"</string>
- <string name="chat_icq" msgid="8438405386153745775">"ጨዋታ ICQ በመጠቀም"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"ጨዋታ Jabber በመጠቀም"</string>
- <string name="chat" msgid="9025361898797412245">"ጨዋታ"</string>
<string name="audio_chat" msgid="2535716629358298691">"የድምፅ ውይይት"</string>
<string name="video_chat" msgid="1872255818640336072">"የቪዲዮ ውይይት"</string>
- <string name="postal_address" msgid="8765560217149624536">"አድራሻ"</string>
- <string name="postal_street" msgid="8133143961580058972">"ጎዳና"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"ፖስታ ሣጥን ቁጥር"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"ጎረቤት"</string>
- <string name="postal_city" msgid="6597491300084895548">"ከተማ፡"</string>
- <string name="postal_region" msgid="6045263193478437672">"ክልል፡"</string>
- <string name="postal_postcode" msgid="572136414136673751">"ዚፕ ኮድ"</string>
- <string name="postal_country" msgid="7638264508416368690">"አገር፡"</string>
- <string name="full_name" msgid="6602579550613988977">"ስም"</string>
- <string name="name_given" msgid="1687286314106019813">"የተሰጠ ስም"</string>
- <string name="name_family" msgid="3416695586119999058">"የቤተሰብ ስም"</string>
- <string name="name_prefix" msgid="59756378548779822">"ቅድመ ስም"</string>
- <string name="name_middle" msgid="8467433655992690326">"የአባት ስም"</string>
- <string name="name_suffix" msgid="3855278445375651441">"ድህረ ስም"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"በድምፀ ልሳን የተሰጠ ስም"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"የድምፀ ልሳንመካከለኛ ስም"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"የድምፀ ልሳን ቤተሰብ ስም"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"የድምፀ ልሳን ስም"</string>
<string name="connections" msgid="8098440723172028350">"ተያያዦች"</string>
<string name="add_connection_button" msgid="4861308615789601727">"ተያያዥ አክል"</string>
<string name="recent" msgid="2659189233141493004">"የቅርብ ጊዜ"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"የእውቂያ ስሞችን እንደ እይ"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"ምንም እውቂያዎች አልተመረጡም."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"አልተዋሃደም"</item>
<item quantity="other" msgid="425683718017380845">"ከ<xliff:g id="COUNT">%0$d</xliff:g> ምንጮች የተዋሃደ"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"ሌላ"</string>
<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="directory_search_label" msgid="1887759056597975053">" ማውጫ"</string>
- <string name="local_search_label" msgid="2551177578246113614">"ሁሉም እውቅያዎች"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"የግል ቅጂ በመፍጠር ላይ..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"ሁሉም እውቅያዎች"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"ኮከብ የተደረገባቸው"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"ብጁ"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"ብጁ አድርግ"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"የስልክ ቁጥር ያላቸው ሁሉም ዕውቂያዎች"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"እውቅያ"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"ብጁ ዕይታ በይን"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"በመስቀል ላይ…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"ቅንብሮች"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"ዕውቂያዎች አሳይ"</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="hint_findContacts" msgid="1808681193458772072">"ዕውቂያዎች አግኝ"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"አዘምኖችን ዕይ"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"የድምፅ መልዕክት"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"አጫውት"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>፤<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ከ<xliff:g id="CALLER">%1$s</xliff:g> አዲስ የድምፅመልዕክት"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"ድምፅ ደብዳቤን ማጫወት አልተቻለም፡፡"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"በማቋት ላይ…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"ድምፅ ደብዳቤ ፈልጎ በማግኘት ላይ…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"ድምፅ ደብዳቤን ፈልጎ ማግኘት አልተቻለም፡፡"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"አዲስ"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"የድሮ"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"የድምጽ መልዕክት ያላቸው ጥሪዎች ብቻ"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"ገቢ ጥሪዎች ብቻ"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"ወጪ ጥሪዎች ብቻ"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"ያመለጡ ጥሪዎች ብቻ"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"ወደ ድምፅ መልዕክት አገልጋይ ለመገናኘት አልተቻለም።"</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"ወደ ድምፅ መልዕክት ለማያያዝ አልተቻለም። አዲስ የድምፅ መልዕክቶች በመጠበቅ ላይ ።"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"የድምጽ ፖስታህን አዘጋጅ፡፡"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"ኦዲዮ አልተገኘም።"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"አዘጋጅ"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"የድምፅመልዕክት ደውል"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"በጣም ቀርፋፋ ፍጥነት"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"ቀርፋፋ ፍጥነት"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"መደበኛ ፍጥነት"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"ፈጣን ፍጥነት"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"በጣም ፈጣን ፍጥነት"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"የቡድኑ ስም"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"በ NFC የደረሱ ዕውቂያዎች"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ወጪዎቹን ብቻ አሳይ"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"ገቢዎቹን ብቻ አሳይ"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"ያመለጡትን ብቻ አሳይ"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"የድምፅ መልዕክቶች ብቻ አሳይ"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"ሁሉንም ጥሪዎች አሳይ"</string>
- <string name="status_available" msgid="5586870015822828392">"የሚገኝ"</string>
- <string name="status_away" msgid="1838861100379804730">"ወጣ ብሏል"</string>
- <string name="status_busy" msgid="9147992455450257136">"ተይዟ ል"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"የድምፅ መልዕክት አጫውት"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"ገቢ ጥሪ"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"ወጪ ጥሪ"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"ያመለጠ ጥሪ"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"የድምፅ መልዕክት"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"እውቅያዎች አክል"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"ዕውቂያ <xliff:g id="NAME">%1$s</xliff:g> ዕይ"</string>
- <string name="description_call" msgid="3443678121983852666">"ጥሪ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"የፅሁፍ መልዕክት ወደ <xliff:g id="NAME">%1$s</xliff:g> ላክ"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ያልተሰማ የድምፅመልዕክት"</string>
- <string name="description_send_message" msgid="6046623392322890962">"ለ<xliff:g id="NAME">%1$s</xliff:g> መልዕክት ላክ"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"<xliff:g id="NAME">%1$s</xliff:g> ስልክ ደውል"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"ለ <xliff:g id="NAME">%1$s</xliff:g> ፈጣን ዕውቂያ"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"እኔ"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"በአካባቢው አቆይ"</string>
<string name="add_account" msgid="8201790677994503186">"መለያ አክል"</string>
<string name="add_new_account" msgid="5748627740680940264">"አዲስ መለያ አክል"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ጥሪ አልተላከም"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ድምጽ መልዕክትን ለማደራጀት ወደ ምናሌ > ቅንብሮች ሂድ::"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"የድምጽ መልዕክት ጥሪ ለማድረግ፣ በመጀመሪያ የአውሮፕላን ሁነታን አጥፋ።"</string>
<string name="menu_export_database" msgid="2659719297530170820">"የውሂብ ጎታ ፋይሎችን ወደ ውጭ ላክ"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"ተጨማሪ አማራጮች"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"የስም መስኮችን ይዘርጉ ወይም ይሰብስቡ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"ስዕል። ለመቀየር ይምረጡ"</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index e1cccc8..fd98050 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"الهاتف"</string>
<string name="people" msgid="1048457247435785074">"أشخاص"</string>
<string name="contactsList" msgid="8661624236494819731">"جهات الاتصال"</string>
<string name="shortcutContact" msgid="749243779392912958">"الاتصال بـ"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"حول"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"التحديثات"</string>
<string name="searchHint" msgid="8482945356247760701">"البحث في جهات الاتصال"</string>
- <string name="menu_search" msgid="9147752853603483719">"بحث"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"جهة اتصال جديدة"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"عرض جهة الاتصال"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"نسخ"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"وضع على الشاشة الرئيسية"</string>
<string name="menu_call" msgid="3992595586042260618">"الاتصال بجهة الاتصال"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"إرسال رسالة لجهة الاتصال"</string>
@@ -57,7 +52,7 @@
<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="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>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"تحتوي جهة الاتصال هذه على معلومات من عدة حسابات. وسيتم إخفاء المعلومات من الحسابات التي للقراءة فقط في قوائم جهات الاتصال، وليس حذفها."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"سيؤدي حذف جهة الاتصال هذه إلى حذف المعلومات من عدة حسابات."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"سيتم حذف جهة الاتصال هذه."</string>
- <string name="menu_done" msgid="796017761764190697">"تم"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"إلغاء"</string>
<string name="menu_discard" msgid="6456087569315685632">"تجاهل"</string>
- <string name="label_notes" msgid="8337354953278341042">"ملاحظات"</string>
- <string name="label_sip_address" msgid="124073911714324974">"مكالمة عبر الإنترنت"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"شركة"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"المسمى الوظيفي"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"الهاتف"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"البريد الإلكتروني"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"المراسلة الفورية"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"العنوان"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"المؤسسة"</item>
<item msgid="7196592230748086755">"ملاحظة"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"لا توجد جهات اتصال."</string>
<string name="noGroups" msgid="8614664663561385253">"لا توجد مجموعات."</string>
<string name="noAccounts" msgid="7768267764545265909">"يجب توفير حساب لإنشاء مجموعات."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"لم يتم العثور على أية جهات اتصال متطابقة."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"ليس هناك جهات اتصال تشتمل على أرقام هواتف."</string>
<string name="emptyGroup" msgid="7502116218697177370">"ليس هناك أشخاص في هذه المجموعة."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"لإضافة البعض، ابدأ في تعديل المجموعة."</string>
<string name="savingContact" msgid="4075751076741924939">"جارٍ حفظ جهة الاتصال..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"جارٍ حفظ خيارات العرض..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"تم حفظ جهة الاتصال."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"تعذر حفظ التغييرات التي تم إجراؤها على جهة الاتصال."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"تم حفظ المجموعة."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"جهة اتصال واحدة"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> من جهات الاتصال"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"ليست هناك جهات اتصال."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"ليست هناك جهات اتصال مرئية."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"ليست هناك مفضلة."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"ليس هناك جهات اتصال في <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"جهات الاتصال في <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"جهة اتصال واحدة"</string>
- <string name="listCustomView" msgid="6950713892532194050">"جهات الاتصال في عرض مخصص"</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="foundTooManyContacts" msgid="5163335650920020220">"تم العثور على أكثر من <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"ليست هناك جهات اتصال"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"تم العثور على جهة اتصال واحدة"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"جميع جهات الاتصال"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"المجموعات"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"المفضلة"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"المفضلة وكل جهات الاتصال"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"الهاتف"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"سجل المكالمات"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"إرسال رسالة نصية"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"الاتصال بـ <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"تعديل الرقم قبل الاتصال"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"إضافة إلى جهات الاتصال"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"إزالة من سجل المكالمات"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"محو سجل المكالمات"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"حذف بريد صوتي"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"مشاركة البريد الصوتي"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"سجل المكالمات فارغ."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"محو سجل المكالمات؟"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"سيتم حذف جميع سجلات المكالمات."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"جارٍ محو سجل المكالمات..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"هل تريد محو قائمة من يُتصل بهم كثيرًا؟"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"ستمحو قائمة من يتم الاتصال بهم كثيرًا في تطبيقي الأشخاص والهاتف، وستفرض على تطبيقات البريد الإلكتروني التعرف على تفضيلات توجيه الرسائل من البداية."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"جارٍ محو قائمة المُتصل بهم كثيرًا…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"البريد الصوتي"</string>
- <string name="unknown" msgid="740067747858270469">"غير معروف"</string>
- <string name="private_num" msgid="6374339738119166953">"رقم خاص"</string>
- <string name="payphone" msgid="4864313342828942922">"هاتف مدفوع"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"استخدام لوحة المفاتيح للطلب"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"طلب لإضافة مكالمة"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"جارٍ التحميل من بطاقة SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"بطاقة SIM وجهات الاتصال"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"ليس لديك أي جهات اتصال لعرضها. (إذا كنت قد أضفت حسابًا توًا، فيمكن أن تستغرق مزامنة جهات الاتصال دقائق معدودة.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"ليس لديك أية جهات اتصال لعرضها."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"ليست لديك أية جهات اتصال لعرضها."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الجهاز اللوحي"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات اتصال من بطاقة SIM أو SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"ليست لديك أية جهات اتصال لعرضها."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكنك مزامنتها مع الهاتف"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات اتصال من بطاقة SIM أو SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"ليست لديك أية جهات اتصال لعرضها. (إذا أضفت حسابًا لتوك، فيمكن أن تستغرق مزامنة جهات الاتصال بضع دقائق)."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الجهاز اللوحي"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"خيارات العرض"</b></font>" لتغيير جهات الاتصال التي يمكن رؤيتها"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SIM أو SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"ليست لديك أية جهات اتصال لعرضها. (إذا أضفت حسابًا لتوك، فيمكن أن تستغرق مزامنة جهات الاتصال بضع دقائق)."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الهاتف"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"خيارات العرض"</b></font>" لتغيير جهات الاتصال التي يمكن رؤيتها"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SIM أو SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"ليست لديك أية جهات اتصال لعرضها."\n\n"للإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الجهاز اللوحي"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"ليست لديك أية جهات اتصال لعرضها."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الهاتف"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"ليست لديك أية جهات اتصال لعرضها. (إذا أضفت حسابًا لتوك، فيمكن أن تستغرق مزامنة جهات الاتصال بضع دقائق)."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الجهاز اللوحي"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"خيارات العرض"</b></font>" لتغيير جهات الاتصال التي يمكن رؤيتها"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"ليست لديك أية جهات اتصال لعرضها. (إذا أضفت حسابًا لتوك، فيمكن أن تستغرق مزامنة جهات الاتصال بضع دقائق)."\n\n"لإضافة جهات اتصال، المس "<font fgcolor="#ffffffff"><b>"القائمة"</b></font>"، ثم المس:"\n" "\n<li><font fgcolor="#ffffffff"><b>"الحسابات"</b></font>" لإضافة حساب أو إعداده باستخدام جهات الاتصال التي يمكن مزامنتها مع الهاتف"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"خيارات العرض"</b></font>" لتغيير جهات الاتصال التي يمكن رؤيتها"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"جهة اتصال جديدة"</b></font>" لإنشاء جهة اتصال جديدة تمامًا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"استيراد/تصدير"</b></font>" لاستيراد جهات الاتصال من بطاقة SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"ليس لديك أي عناصر في المفضلة."\n\n"لإضافة جهة اتصال إلى قائمة المفضلة:"\n\n" "<li>"المس علامة التبويب "<b>"جهات الاتصال"</b>\n</li>" "\n<li>"المس جهة الاتصال التي تريد إضافتها إلى المفضلة"\n</li>" "\n<li>"المس علامة النجمة إلى جانب اسم جهة الاتصال"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"استخدام لوحة مفاتيح نغمات باللمس"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"عودة إلى المكالمة الجارية"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"إضافة مكالمة"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"تفاصيل المكالمة"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"تعذرت قراءة تفاصيل المكالمة المطلوبة."</string>
- <string name="type_incoming" msgid="6502076603836088532">"مكالمة واردة"</string>
- <string name="type_outgoing" msgid="343108709599392641">"مكالمة صادرة"</string>
- <string name="type_missed" msgid="2720502601640509542">"مكالمة فائتة"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"البريد الصوتي"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"المكالمات الواردة"</string>
<string name="callBack" msgid="5498224409038809224">"معاودة الاتصال"</string>
<string name="callAgain" msgid="3197312117049874778">"الاتصال مرة أخرى"</string>
<string name="returnCall" msgid="8171961914203617813">"معاودة اتصال بمكالمة فائتة"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"عدد الدقائق:<xliff:g id="MINUTES">%s</xliff:g>، عددالثواني: <xliff:g id="SECONDS">%s</xliff:g>"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"يتم الاتصال بهم بشكل متكرر"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"الأكثر اتصالاً"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"هل ترغب في إضافة \"<xliff:g id="EMAIL">%s</xliff:g>\" إلى جهات الاتصال؟"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"واحد"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"اثنان"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"ثلاثة"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"أربعة"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"خمسة"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"ستة"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"سبعة"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"ثمانية"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"تسعة"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"نجمة"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"صفر"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"رنين"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"البريد الصوتي"</string>
- <string name="description_search_button" msgid="3660807558587384889">"بحث"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"طلب"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"الرقم الذي سيتم طلبه"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"صورة جهة الاتصال"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"حذف"</string>
<string name="description_plus_button" msgid="515164827856229880">"علامة زائد"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"عرض جهة الاتصال"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"لم يتم العثور على وحدة تخزين."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"لم يتم العثور على بطاقة SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"استيراد من بطاقة SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"استيراد من وحدة التخزين"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"تصدير إلى وحدة التخزين"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"مشاركة جهات الاتصال المرئية"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"استيراد ملف vCard واحد"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"استيراد ملفات vCard متعددة"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"استيراد جميع ملفات vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"جارٍ البحث عن بيانات vCard في وحدة التخزين..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"جارٍ البحث عن بيانات vCard على بطاقة SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"تعذر فحص وحدة التخزين. (السبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"تعذر فحص بطاقة SD. (السبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"خطأ I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"الذاكرة غير كافية. ربما يكون الملف أكبر مما يجب."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"تعذر تحليل vCard بسبب غير متوقع."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"التنسيق غير معتمد."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"تعذر استيراد vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"لم يتم العثور على أي ملف vCard في وحدة التخزين."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"لم يتم العثور على ملف vCard على بطاقة SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"تعذر جمع معلومات وصفية حول ملفات vCard المحددة."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"تعذر استيراد ملف أو أكثر (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"خطأ غير معروف."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"اختيار ملف vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"تخزين مؤقت"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"يجري تخزين ملفات vCard مؤقتًا على وحدة تخزين مؤقتة محلية. سيبدأ الاستيراد الفعلي قريبًا."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"استيراد <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"جارٍ استيراد <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"تتعذر قراءة بيانات vCard."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"تم إلغاء قراءة بيانات vCard"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"تم الانتهاء من استيراد ملف vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"تم إلغاء استيراد <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"سيتم استيراد <xliff:g id="FILENAME">%s</xliff:g> بعد قليل."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"سيتم استيراد الملف قريبًا."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"تم رفض طلب استيراد vCard. أعد المحاولة لاحقًا."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"سيتم تصدير <xliff:g id="FILENAME">%s</xliff:g> بعد قليل."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"تم رفض طلب تصدير vCard. أعد المحاولة لاحقًا."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"جهة اتصال"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"تصدير جهات الاتصال؟"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"سيتم تصدير قائمة جهات الاتصال إلى الملف: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"تعذر التصدير"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"لم يتم تصدير بيانات جهة الاتصال."\n"السبب: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"ليست هناك جهة اتصال قابلة للتصدير."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"هناك عدد أكبر مما يجب من ملفات vCard في وحدة التخزين."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"هناك ملفات vCard أكثر مما يجب على بطاقة SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"اسم الملف المطلوب أطول مما يجب (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"تم الانتهاء من تصدير <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"تم إلغاء تصدير <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"تصدير بيانات جهة الاتصال"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"يجري تصدير بيانات جهات الاتصال إلى: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"تعذر بدء المُصدر: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"حدث خطأ أثناء التصدير: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"تعذر الحصول على معلومات قاعدة البيانات."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"ليست هناك أية جهات اتصال قابلة للتصدير. إذا كانت لديك جهات اتصال على الجهاز اللوحي، فإن بعض موفري البيانات لا يسمحون بتصدير جهات الاتصال من الجهاز اللوحي."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"ليست هناك أية جهات اتصال قابلة للتصدير. إذا كانت لديك جهات اتصال على هاتفك، فإن بعض موفري البيانات لا يسمحون بتصدير جهات الاتصال من الهاتف."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"لم يبدأ مؤلف vCard بشكل صحيح."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"تعذر فتح \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"هل تريد إلغاء استيراد <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"هل تريد إلغاء تصدير <xliff:g id="FILENAME">%s</xliff:g>؟"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"تعذر إلغاء استيراد/تصدير vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"أسماء جهات الاتصال"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"إضافة فترة إيقاف مؤقت مدتها ثانيتان"</string>
- <string name="add_wait" msgid="3360818652790319634">"إضافة انتظار"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"اختيار رقم"</string>
- <string name="call_settings" msgid="7666474782093693667">"الإعدادات"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"اختيار رقم"</string>
- <string name="make_primary" msgid="5829291915305113983">"تذكر هذا الاختيار"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"لم يتم العثور على تطبيق يمكنه مباشرة هذا الإجراء."</string>
- <string name="missing_name" msgid="8745511583852904385">"(بلا اسم)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"الحسابات"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"محو قائمة من يتصل بهم كثيرًا"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"جهات الاتصال المعروضة"</string>
- <string name="menu_import_export" msgid="26217871113229507">"استيراد/تصدير"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"استيراد/تصدير جهات اتصال"</string>
- <string name="dialog_import" msgid="2431698729761448759">"استيراد جهات الاتصال"</string>
<string name="menu_share" msgid="943789700636542260">"مشاركة"</string>
<string name="share_via" msgid="563121028023030093">"مشاركة جهة الاتصال عبر"</string>
- <string name="share_error" msgid="948429331673358107">"لا يمكن مشاركة جهة الاتصال هذه."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"الاسم"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"اللقب"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"المؤسسة"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"موقع ويب"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"الأحداث"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"العلاقة"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"المجموعات"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"إنشاء جهة اتصال ضمن حساب"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"إنشاء مجموعة ضمن حساب"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"إزالة مجموعة متزامنة"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"إضافة مجموعة متزامنة"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"مزيد من المجموعات..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"جميع جهات الاتصال الأخرى"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"جميع جهات الاتصال"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"ستؤدي إزالة \"<xliff:g id="GROUP">%s</xliff:g>\" من المزامنة أيضًا إلى إزالة أية جهات اتصال غير مجمعة من المزامنة."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"الجهاز اللوحي فقط، غير متزامنة"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"الهاتف فقط، غير متزامنة"</string>
- <string name="call_custom" msgid="7756571794763171802">"الاتصال بـ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"الاتصال بهاتف منزلي"</string>
- <string name="call_mobile" msgid="7502236805487609178">"الاتصال بالجوال"</string>
- <string name="call_work" msgid="5328785911463744028">"الاتصال بهاتف العمل"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"الاتصال بفاكس العمل"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"الاتصال بفاكس المنزل"</string>
- <string name="call_pager" msgid="9003902812293983281">"الاتصال بجهاز النداء"</string>
- <string name="call_other" msgid="8563753966926932052">"اتصال"</string>
- <string name="call_callback" msgid="1910165691349426858">"الاتصال برقم معادوة الاتصال"</string>
- <string name="call_car" msgid="3280537320306436445">"الاتصال بهاتف السيارة"</string>
- <string name="call_company_main" msgid="6105120947138711257">"الاتصال بهاتف الشركة الرئيسي"</string>
- <string name="call_isdn" msgid="1541590690193403411">"اتصال بـ ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"الاتصال بالهاتف الرئيسي"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"الاتصال برقم الفاكس"</string>
- <string name="call_radio" msgid="8296755876398357063">"اتصال بهاتف لاسلكي"</string>
- <string name="call_telex" msgid="2223170774548648114">"الاتصال بالتلكس"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"اتصال بـ TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"الاتصال بجوال العمل"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"الاتصال بجهاز نداء العمل"</string>
- <string name="call_assistant" msgid="2141641383068514308">"الاتصال بـ <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"اتصال بهاتف رسائل الوسائط المتعددة"</string>
- <string name="sms_custom" msgid="5932736853732191825">"إرسال رسالة نصية إلى <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"إرسال رسالة نصية إلى هاتف منزلي"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"إرسال رسالة نصية إلى جوال"</string>
- <string name="sms_work" msgid="2269624156655267740">"إرسال رسالة نصية قصيرة إلى هاتف العمل"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"إرسال رسالة نصية قصيرة إلى فاكس العمل"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"إرسال رسالة نصية إلى فاكس المنزل"</string>
- <string name="sms_pager" msgid="7730404569637015192">"إرسال رسالة نصية إلى جهاز النداء"</string>
- <string name="sms_other" msgid="806127844607642331">"إرسال رسالة نصية"</string>
- <string name="sms_callback" msgid="5004824430094288752">"إرسال رسالة إلى هاتف معاودة الاتصال"</string>
- <string name="sms_car" msgid="7444227058437359641">"إرسال رسالة نصية إلى هاتف السيارة"</string>
- <string name="sms_company_main" msgid="118970873419678087">"إرسال رسالة نصية قصيرة على الهاتف الرئيسي للشركة"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"إرسال رسالة نصية قصيرة إلى ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"إرسال رسالة إلى الهاتف الرئيسي"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"إرسال رسالة إلى فاكس"</string>
- <string name="sms_radio" msgid="3329166673433967820">"إرسال رسالة إلى هاتف لاسلكي"</string>
- <string name="sms_telex" msgid="9034802430065267848">"إرسال رسالة نصية إلى هاتف تليكس"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"إرسال رسالة إلى TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"إرسال رسالة إلى جوال العمل"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"إرسال رسالة نصية قصيرة على جهاز نداء العمل"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"إرسال رسالة نصية إلى <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"إرسال رسالة وسائط متعددة"</string>
- <string name="sms" msgid="1756857139634224222">"رسالة نصية"</string>
- <string name="email_home" msgid="8573740658148184279">"البريد الإلكتروني للمنزل"</string>
- <string name="email_mobile" msgid="2042889209787989814">"إرسال رسالة إلكترونية إلى عنوان بريد إلكتروني على الجوال"</string>
- <string name="email_work" msgid="2807430017302722689">"البريد الإلكتروني للعمل"</string>
- <string name="email_other" msgid="3454004077967657109">"بريد إلكتروني"</string>
- <string name="email_custom" msgid="7548003991586214105">"البريد الإلكتروني <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"بريد إلكتروني"</string>
- <string name="map_home" msgid="1243547733423343982">"عرض عنوان المنزل"</string>
- <string name="map_work" msgid="1360474076921878088">"عرض عنوان العمل"</string>
- <string name="map_other" msgid="3817820803587012641">"عرض عنوان"</string>
- <string name="map_custom" msgid="6184363799976265281">"عرض عنوان <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"الدردشة باستخدام AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"الدردشة باستخدام Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"الدردشة باستخدام Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"الدردشة باستخدام Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"الدردشة باستخدام QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"الدردشة باستخدام Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"الدردشة باستخدام ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"الدردشة باستخدام Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"دردشة"</string>
<string name="audio_chat" msgid="2535716629358298691">"دردشة صوتية"</string>
<string name="video_chat" msgid="1872255818640336072">"دردشة مرئية"</string>
- <string name="postal_address" msgid="8765560217149624536">"العنوان"</string>
- <string name="postal_street" msgid="8133143961580058972">"الشارع"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"صندوق البريد"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"منطقة مجاورة"</string>
- <string name="postal_city" msgid="6597491300084895548">"المدينة"</string>
- <string name="postal_region" msgid="6045263193478437672">"المحافظة"</string>
- <string name="postal_postcode" msgid="572136414136673751">"الرمز البريدي"</string>
- <string name="postal_country" msgid="7638264508416368690">"البلد"</string>
- <string name="full_name" msgid="6602579550613988977">"الاسم"</string>
- <string name="name_given" msgid="1687286314106019813">"الاسم الأول"</string>
- <string name="name_family" msgid="3416695586119999058">"اسم العائلة"</string>
- <string name="name_prefix" msgid="59756378548779822">"بادئة الاسم"</string>
- <string name="name_middle" msgid="8467433655992690326">"الاسم الأوسط"</string>
- <string name="name_suffix" msgid="3855278445375651441">"لاحقة الاسم"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"الاسم الأول - صوتي"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"الاسم الصوتي الأوسط"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"اسم الأسرة الصوتي"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"الاسم"</string>
<string name="connections" msgid="8098440723172028350">"الاتصالات"</string>
<string name="add_connection_button" msgid="4861308615789601727">"إضافة اتصال"</string>
<string name="recent" msgid="2659189233141493004">"الأحدث"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"كيفية عرض الأسماء"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"لم يتم تحديد جهات اتصال."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"لم يتم دمجها"</item>
<item quantity="other" msgid="425683718017380845">"تم دمجها من <xliff:g id="COUNT">%0$d</xliff:g> من المصادر"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"غير ذلك"</string>
<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="directory_search_label" msgid="1887759056597975053">"الدليل"</string>
- <string name="local_search_label" msgid="2551177578246113614">"جميع جهات الاتصال"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"جارٍ إنشاء نسخة شخصية..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"جميع جهات الاتصال"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"مميّزة بنجمة"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"مخصص"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"تخصيص"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"جميع جهات الاتصال التي لها أرقام هواتف"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"جهة الاتصال"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"تحديد عرض مخصص"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"جارٍ التحميل..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"الإعدادات"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"جهات الاتصال المعروضة"</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="hint_findContacts" msgid="1808681193458772072">"البحث عن جهات اتصال"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"عرض التحديثات"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"البريد الصوتي"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"تشغيل"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"بريد صوتي جديد من <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"تعذر تشغيل البريد الصوتي."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"جارٍ التخزين مؤقتًا..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"جارٍ جلب البريد الصوتي..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"تعذر جلب البريد الصوتي."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"جديد"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"أقدم"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"المكالمات التي تشتمل على بريد صوتي فقط"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"المكالمات الواردة فقط"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"المكالمات الصادرة فقط"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"المكالمات الفائتة فقط"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"لا يمكن الاتصال بخادم البريد الصوتي."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"لا يمكن الاتصال بخادم البريد الصوتي. بريد صوتي جديد في انتظارك."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"إعداد البريد الصوتي."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"الصوت غير متوفر."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"إعداد"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"اتصال ببريد صوتي..."</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"أبطأ سرعة"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"سرعة بطيئة"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"سرعة عادية"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"سرعة عالية"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"أعلى سرعة"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"اسم المجموعة"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"استلام ج اتص.NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"عرض الصادر فقط"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"عرض الوارد فقط"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"عرض الفائت فقط"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"إظهار رسائل البريد الصوتي فقط"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"عرض جميع المكالمات"</string>
- <string name="status_available" msgid="5586870015822828392">"متوفر"</string>
- <string name="status_away" msgid="1838861100379804730">"بعيد"</string>
- <string name="status_busy" msgid="9147992455450257136">"مشغول"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"تشغيل البريد الصوتي"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"مكالمة واردة"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"مكالمة صادرة"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"مكالمة فائتة"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"البريد الصوتي"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"إضافة جهة اتصال"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"عرض جهة الاتصال <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"الاتصال بـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"إرسال رسالة نصية إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"البريد الصوتي غير المسموع"</string>
- <string name="description_send_message" msgid="6046623392322890962">"إرسال رسالة إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"طلب هاتف <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"اتصال سريع لـ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"أنا"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"الاحتفاظ بها محليًا"</string>
<string name="add_account" msgid="8201790677994503186">"إضافة حساب"</string>
<string name="add_new_account" msgid="5748627740680940264">"إضافة حساب جديد"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"لم يتم إرسال المكالمة"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"لإعداد البريد الصوتي، انتقل إلى القائمة > الإعدادات."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"للاتصال بالبريد الصوتي، يجب أولاً إيقاف وضع الطائرة."</string>
<string name="menu_export_database" msgid="2659719297530170820">"تصدير ملفات قاعدة البيانات"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"مزيد من الخيارات"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"توسيع أو تصغير حقول الاسم"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"الصورة. حدد للتغيير"</string>
</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 564fdeb..682185b 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Тэлефон"</string>
<string name="people" msgid="1048457247435785074">"Людзі"</string>
<string name="contactsList" msgid="8661624236494819731">"Кантакты"</string>
<string name="shortcutContact" msgid="749243779392912958">"Кантакт"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Інфармацыя"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Абнаўленні"</string>
<string name="searchHint" msgid="8482945356247760701">"Пошук кантактаў"</string>
- <string name="menu_search" msgid="9147752853603483719">"Пошук"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Новы кантакт"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Прагледзець кантакт"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Выклікаць <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Капіраваць"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Размясціць на галоўным экране"</string>
<string name="menu_call" msgid="3992595586042260618">"Выклікаць кантакт"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Паведамленне кантакту"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Гэты кантакт змяшчае інфармацыю з некалькіх уліковых запісаў. Інфармацыя з уліковых запісаў, даступных толькі для чытання, будзе схаваная ў спісах кантактаў, а не выдаленая."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Выдаленне гэтага кантакту выдаліць інфармацыю з некалькіх уліковых запісаў."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Гэты кантакт будзе выдалены."</string>
- <string name="menu_done" msgid="796017761764190697">"Зроблена"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Адмена"</string>
<string name="menu_discard" msgid="6456087569315685632">"Адхіліць"</string>
- <string name="label_notes" msgid="8337354953278341042">"Нататкі"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Iнтэрнэт-выклік"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Кампанія"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Назва"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Тэлефон"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Электронная пошта"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"ІМ"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Адрас"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Установа"</item>
<item msgid="7196592230748086755">"Нататкі"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Няма кантактаў."</string>
<string name="noGroups" msgid="8614664663561385253">"Няма груп."</string>
<string name="noAccounts" msgid="7768267764545265909">"Для стварэння групы патрабуецца ўліковы запіс."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Няма адпаведных кантактаў."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Няма кантактаў з нумарамі тэлефонаў."</string>
<string name="emptyGroup" msgid="7502116218697177370">"У гэтай групе няма карыстальнiкаў."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Каб дадаць, змянiце групу."</string>
<string name="savingContact" msgid="4075751076741924939">"Захаванне кантакту..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Захаванне параметраў адлюстравання..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Кантакт захаваны."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Немагчыма захаваць змены кантакта."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Група захаваная."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 кантакт"</item>
<item quantity="other" msgid="3578469907265375314">"Кантактаў: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Няма кантактаў."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Няма бачных кантактаў."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Няма выбранага."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Няма кантактаў у <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Кантактаў у <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Адзіночны кантакт"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Кантакты ў рэгуляваным выглядзе"</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="foundTooManyContacts" msgid="5163335650920020220">"Знойдзена вынікаў: больш за <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Кантактаў няма"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"знойдзены 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Усе кантакты"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Групы"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Выбранае"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Выбраныя і ўсе кантакты"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Тэлефон"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Спіс"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Адправiць тэкставае паведамленне"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Выклікаць карыстальнiка <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Рэдагаваць нумар перад выклікам"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Дадаць у кантакты"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Выдаліць са спісу выклікаў"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Ачысціць спіс выклікаў"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Выдаліць галасавое паведамленне"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Адправiць галасавое паведамленне"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Спіс выклікаў пусты."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Ачысціць спіс выклікаў?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Усе вашы запісы выклікаў будуць выдалены."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Выдаленне гiсторыi выклiкаў..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Выдалiць частыя кантакты?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Вы выдалiце найбольш частыя кантакты ў прыкладаннях \"Кантакты\" i \"Тэлефон\" i прымусiце прыкладаннi па працы з электроннай поштай вывучыць вашы налады адрасацыi з нуля."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Выдаленне частых кантактаў..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Галасавая пошта"</string>
- <string name="unknown" msgid="740067747858270469">"Невядомы"</string>
- <string name="private_num" msgid="6374339738119166953">"Прыватны нумар"</string>
- <string name="payphone" msgid="4864313342828942922">"Аплата тэлефона"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Выкарыстаць клавіятуру для набору нумара"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"НВыберыце, каб дадаць выклік"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Загрузка з SIM-карты..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Кантакты SIM-карты"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"У вас няма ніякіх кантактаў для адлюстравання. (Калі вы толькі што дадалі ўліковы запіс, сінхранізацыя кантактаў можа заняць некалькі хвілін.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"У вас няма кантактаў для адлюстравання."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Няма кантактаў для адлюстравання."\n\n"Каб дадаць кантакты, перайдзiце ў "<font fgcolor="#ffffffff"><b>"меню"</b></font>", а затым выберыце "\n" "\n<li><font fgcolor="#ffffffff"><b>"Ўлiковыя запiсы"</b></font>", каб дадаць або стварыць улiковы запiс з кантактамi, якiя можна сiнхранiзаваць з тэлефонам."\n</li>" "\n"Каб стварыць новы кантакт з нуля, нацiснiце"<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>"."\n</li>" "\n"Выберыце"<li><font fgcolor="#ffffffff"><b>"Iмпарт/Экспарт"</b></font>", каб iмпартаваць кантакты з SIM-карты або SD-карты."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"У вас няма кантактаў для адлюстравання."\n\n"Каб дадаць кантакты, перайдзiце ў "<font fgcolor="#ffffffff"><b>"меню"</b></font>", а затым выберыце "\n" "\n<li><font fgcolor="#ffffffff"><b>"Ўлiковыя запiсы"</b></font>", каб дадаць або стварыць улiковы запiс з кантактамi, якiя можна сiнхранiзаваць з тэлефонам."\n</li>" "\n"Каб стварыць новы кантакт з нуля, нацiснiце"<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>"."\n</li>" "\n"Выберыце"<li><font fgcolor="#ffffffff"><b>"Iмпарт/Экспарт"</b></font>", каб iмпартаваць кантакты з SIM-карты або SD-карты."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"яма кантактаў для адлюстравання. (Калі вы толькі што дадалі ўліковы запіс, то сінхранізацыя кантактаў можа заняць некалькі хвілін.)"\n\n"Каб дадаць кантакты, націсніце "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", і далей націсніце:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Уліковыя запісы"</b></font>", каб дадаць ці наладзiць уліковы запіс з кантактамі, які можна сінхранізаваць з планшэтам;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Параметры адлюстравання"</b></font>", каб наладзiць, якія кантакты адлюстроўваюцца"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>", каб стварыць новы кантакт \"з чыстага лiста\";"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпарт/экспарт"</b></font>", каб імпартаваць кантакты з SIM-карты ці SD-карты."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Няма кантактаў для адлюстравання. (Калі вы толькі што дадалі ўліковы запіс, то сінхранізацыя кантактаў можа заняць некалькі хвілін.)"\n\n"Каб дадаць кантакты, націсніце "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", і далей націсніце:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Уліковыя запісы"</b></font>", каб дадаць ці наладзiць уліковы запіс з кантактамі, які можна сінхранізаваць з тэлефонам;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Параметры адлюстравання"</b></font>", каб наладзiць, якія кантакты адлюстроўваюцца"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>", каб стварыць новы кантакт \"з чыстага лiста\";"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпарт/экспарт"</b></font>", каб імпартаваць кантакты з SIM-карты ці SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Няма кантактаў для адлюстравання."\n\n"Каб дадаць кантакты, перайдзiце ў "<font fgcolor="#ffffffff"><b>"меню"</b></font>", а затым выберыце"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ўлiковыя запiсы"</b></font>", каб дадаць або стварыць улiковы запiс з кантактамi, якiя можна сiнхранiзаваць з планшэтам."\n</li>" "\n"Каб стварыць новы кантакт з нуля, нацiснiце "<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b>"."</font>\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Iмпарт/экспарт"</b></font>", , каб iмпартаваць кантакты з SIM-карты або SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Няма кантактаў для адлюстравання."\n\n"Каб дадаць кантакты, перайдзiце ў "<font fgcolor="#ffffffff"><b>"меню"</b></font>", а затым выберыце"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ўлiковыя запiсы"</b></font>", каб дадаць або стварыць улiковы запiс з кантактамi, якiя можна сiнхранiзаваць з тэлефонам."\n</li>" "\n"Каб стварыць новы кантакт з нуля, нацiснiце"<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>\n</li>" "\n"Выберыце"<li><font fgcolor="#ffffffff"><b>"Iмпарт/Экспарт"</b></font>", каб iмпартаваць кантакты з SIM-карты або SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"У вас няма кантактаў для адлюстравання. (Калі вы толькі што дадалі ўліковы запіс, сінхранізацыя ўліковых кантактаў можа заняць некалькі хвілін.)"\n\n"Каб дадаць кантакты, націсніце "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" i "\n" "\n<li><font fgcolor="#ffffffff"><b>"Ўлiковыя запiсы"</b></font>", каб дадаць або наладзіць уліковы запіс з кантактамi, якiя можна сінхранізаваць з планшэтам."\n</li>" "\n"Выберыце "<li><font fgcolor="#ffffffff"><b>"Параметры адлюстравання"</b></font>", каб наладзiць бачныя кантакты."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>" – каб стварыць новы кантакт з нуля."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Iмпарт/Экспарт"</b></font>" – каб iмпартаваць кантакты з SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Няма кантактаў для адлюстравання. (Калі вы толькі што дадалі ўліковы запіс, то сінхранізацыя кантактаў можа заняць некалькі хвілін.)"\n\n"Каб дадаць кантакты, націсніце "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" і выберыце:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Уліковыя запісы"</b></font>", каб дадаць ці наладзiць уліковы запіс з кантактамі, які можна сінхранізавць з тэлефонам;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Параметры адлюстравання"</b></font>", каб змяніць, якія кантакты адлюстроўваюцца;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новы кантакт"</b></font>", каб стварыць новы кантакт з нуля;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпарт/экспарт"</b></font>", каб імпартаваць кантакты з SD-карты."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"У вас няма нічога ў спісе \"Выбранае\"."\n\n"Каб дадаць кантакт у гэты спіс:"\n\n<li>"дакраніцеся да ўкладкі "<b>"Кантакты;"</b>\n</li>" "\n<li>"дакраніцеся да кантакта, які трэба дадаць у \"Выбранае\";"\n</li>" "\n<li>"дакраніцеся да зоркі побач з імем кантакту"\n</li>"."</string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Выкарыстанне тонавай клавіятуры"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Звярнуцца да бягучага выкліку"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Дадаць выклік"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Падрабязнасці выкліку"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Не атрымалася прачытаць падрабязнасці запытанага выкліка."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Уваходны выклік"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Выходны выклік"</string>
- <string name="type_missed" msgid="2720502601640509542">"Прапушчаны выклік"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Галасавая пошта"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Уваходныя выклікі"</string>
<string name="callBack" msgid="5498224409038809224">"Зваротны выклік"</string>
<string name="callAgain" msgid="3197312117049874778">"Выклікаць зноў"</string>
<string name="returnCall" msgid="8171961914203617813">"Зваротны выклік"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> хв. <xliff:g id="SECONDS">%s</xliff:g> с."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Частая сувязь"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Частыя званкi"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Дадаць адрас \"<xliff:g id="EMAIL">%s</xliff:g>\" у кантакты?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"адзін"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"тры"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"чатыры"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"пяць"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"шэсць"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"сем"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"восем"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"дзевяць"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"зорка"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"нуль"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"Фунт"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"галасавая пошта"</string>
- <string name="description_search_button" msgid="3660807558587384889">"пошук"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"набор"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"нумар для набору"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"фатаграфія кантакта"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"выдаліць"</string>
<string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Прагледзець кантакт"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Назапашвальнiк не знойдзены."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-карта не знойдзена"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Імпарт з SIM-карты"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Імпарт з назапашвальніка"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Экспарт на назапашвальнік"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Адкрыць бачныя кантакты"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Імпарт аднаго файла vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Імпартаваць некалькі файлаў vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Імпарт усіх файлаў vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Пошук дадзеных vCard на назапашвальніку..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Пошук дадзеных vCard на SD-карце..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не атрымалася праверыць назапашвальнiк. (Прычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не атрымалася праверыць SD-карту. (Прычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Памылка ўводу/вываду"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Недастаткова памяці (магчыма, занадта вялікі файл)"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Немагчыма разабраць файл vCard па нечаканай прычыне."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Фармат не падтрымліваецца."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Немагчыма імпартаваць vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Файлы vCard не знойдзены на назапашвальніку"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Файл vCard не знойдзены на SD-карце."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Немагчыма сабраць мета-інфармацыю з гэтых файлаў vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Адзін або некалькі файлаў не могуць быць імпартаваныя (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Невядомая памылка."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Выберыце файл vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Кэшаванне..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Кэшуе файлы vCard у лакальнае часовае сховішча. Фактычны імпарт пачнецца ў бліжэйшы час."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Імпарт <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Імпарт <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Немагчыма прачытаць дадзеныя vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Чытанне дадзеных з vCard адменена"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Заканчэнне імпартавання vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Імпарт файла <xliff:g id="FILENAME">%s</xliff:g> адменены"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Файл <xliff:g id="FILENAME">%s</xliff:g> будзе імпартаваны ў бліжэйшы час."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Файл будзе імпартаваны ў бліжэйшы час."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Запыт экспарту vCard адхілены. Паспрабуйце пазней."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Файл <xliff:g id="FILENAME">%s</xliff:g> будзе экспартаваны ў бліжэйшы час."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Запыт экспарту vCard адхілены. Паспрабуйце пазней."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"кантакт"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Экспартаваць кантакты?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Спіс кантактаў будзе экспартавацца ў файл <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Не атрымалася экспартаваць"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Памылка экспарта кантактных дадзеных. "\n"Прычына: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Няма кантактаў для экспарту."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Занадта шмат файлаў vCard у памяці."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"На SD-карце занадта шмат файлаў vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Патрабаванае імя файла (\"<xliff:g id="FILENAME">%s</xliff:g>\") занадта доўгае."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Экспарт файла <xliff:g id="FILENAME">%s</xliff:g> завершаны."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Экспарт файла <xliff:g id="FILENAME">%s</xliff:g> адменены."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Экспарт дадзеных кантакту"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Вашы кантактныя дадзеныя ў цяперашні час экспартуецца ў месца: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Не атрымалася запусцiць экспарцёр: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Памылка экспарту: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Немагчыма атрымаць інфармацыю з базы дадзеных."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Няма кантактаў для экспарта. Калі ў вас ёсць кантакты на планшэце, некаторыя пастаўшчыкі дадзеных могуць забаранiць экспарт кантактных дадзеных з планшэта."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Няма кантактаў, якiя можна экспартаваць. Калi ў вашым тэлефоне няма кантактаў, некаторыя пастаўшчыкi дадзеных могуць забараняць экспарт кантактаў з тэлефона."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Памылка запуску складальнiка файлаў vCard."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Немагчыма адкрыць файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Адмянiць iмпарт файла <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Адмянiць экспарт файла <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Немагчыма адмяніць імпарт/экспарт vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Імёны вашых кантактаў"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Дадаць 2-секундную паўзу"</string>
- <string name="add_wait" msgid="3360818652790319634">"Дадаецца, чакайце"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Выбар нумару"</string>
- <string name="call_settings" msgid="7666474782093693667">"Налады"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Выбар нумару"</string>
- <string name="make_primary" msgid="5829291915305113983">"Запомніць гэты выбар"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Не знойдзена прыкладанне для гэтага дзеяння."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Без назвы)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Уліковыя запісы"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Выдалiць частыя кантакты"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Паказаць кантакты"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Імпарт/экспарт"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Імпарт/экспарт кантактаў"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Імпартаваць кантакты"</string>
<string name="menu_share" msgid="943789700636542260">"Апублікаваць"</string>
<string name="share_via" msgid="563121028023030093">"Апублікаваць кантакт з дапамогай"</string>
- <string name="share_error" msgid="948429331673358107">"Нельга падзялiцца гэтым кантактам."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Імя"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Псеўданiм"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Арганізацыя"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Вэб-старонка"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Мерапрыемствы"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Сувязі"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Групы"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Стварыць кантакт ва ўліковым запісе"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Стварыць групу ва ўліковым запісе"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Выдаліць групу сінхранізацыі"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Дадаць групу сінхранізацыі"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Больш груп..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Усе кантакты з тэчкі \"Іншыя\""</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Усе кантакты"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Выдаленне групы \"<xliff:g id="GROUP">%s</xliff:g>\" з сінхранізацыі таксама выдаліць любыя разгрупаваныя кантакты з сінхранізацыі."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Толькі планшэт, несінхранізаваны"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Толькі тэлефон, несінхранізаваны"</string>
- <string name="call_custom" msgid="7756571794763171802">"Выклікаць <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Патэлефанаваць на хатні нумар"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Набраць нумар мабільнага тэлефону"</string>
- <string name="call_work" msgid="5328785911463744028">"Выклікаць працоўны нумар тэлефона"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Набраць нумар працоўнага факса"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Патэлефанаваць на хатні факс"</string>
- <string name="call_pager" msgid="9003902812293983281">"Выклікаць пэйджар"</string>
- <string name="call_other" msgid="8563753966926932052">"Выклікаць"</string>
- <string name="call_callback" msgid="1910165691349426858">"Зрабіць зваротны выклік"</string>
- <string name="call_car" msgid="3280537320306436445">"Выклікаць нумар у машыне"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Выклікаць асноўны нумар кампаніі"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Выклік ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Выклікаць асноўны нумар"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Выклік факса"</string>
- <string name="call_radio" msgid="8296755876398357063">"Патэлефанаваць на радыётэлефон"</string>
- <string name="call_telex" msgid="2223170774548648114">"Выклік на тэлекс"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Выклікаць TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Патэлефанаваць на працоўны мабільны"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Выклікаць працоўны пэйджар"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Выклікаць <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Выклік MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Тэкставае паведамленне на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Тэкставае паведамленне на хатні тэлефон"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Тэкставае паведамленне на мабільны тэлефон"</string>
- <string name="sms_work" msgid="2269624156655267740">"Тэкставае паведамленне на працоўны тэлефон"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Тэкставае паведамленне на працоўны факс"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Тэкставае паведамленне на хатні факс"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Тэкставае паведамленне на пэйджар"</string>
- <string name="sms_other" msgid="806127844607642331">"Тэкст"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Тэкст на нумар зваротнага выкліку"</string>
- <string name="sms_car" msgid="7444227058437359641">"Тэкставае паведамленне ў аўтамабіль"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Паведамленне на асноўны нумар кампаніі"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Тэкст ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Паведамленне на асноўны нумар"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Тэкставае паведамленне на факс"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Тэкставае паведамленее на радыётэлефон"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Тэкставае паведамленне на тэлекс"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Тэкставае паведамленне на TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Тэкставае паведамленне на працоўны мабільны тэлефон"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Тэкставае паведамленне на працоўны пэйджар"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Напiсаць тэкставае паведамленне: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Паведамленне MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Тэкставае паведамленне"</string>
- <string name="email_home" msgid="8573740658148184279">"Паведамленне на хатні адрас электроннай пошты"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Адправіць электронную пошту на мабільны адрас"</string>
- <string name="email_work" msgid="2807430017302722689">"Паведамленне на працоўную электронную пошту"</string>
- <string name="email_other" msgid="3454004077967657109">"Электронная пошта"</string>
- <string name="email_custom" msgid="7548003991586214105">"Напiсаць паведамленне на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Электронная пошта"</string>
- <string name="map_home" msgid="1243547733423343982">"Прагледзець хатні адрас"</string>
- <string name="map_work" msgid="1360474076921878088">"Паглядзець працоўны адрас"</string>
- <string name="map_other" msgid="3817820803587012641">"Прагледзець адрас"</string>
- <string name="map_custom" msgid="6184363799976265281">"Прагледзець адрас <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Чат у AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Чат у Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Чат праз Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Чат у Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Чат у QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Чат у Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Чат праз ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Чат у Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Чат"</string>
<string name="audio_chat" msgid="2535716629358298691">"Галасавы чат"</string>
<string name="video_chat" msgid="1872255818640336072">"Відэачат"</string>
- <string name="postal_address" msgid="8765560217149624536">"Адрас"</string>
- <string name="postal_street" msgid="8133143961580058972">"Вуліца"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Паштовая скрыня"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Наваколле"</string>
- <string name="postal_city" msgid="6597491300084895548">"Горад"</string>
- <string name="postal_region" msgid="6045263193478437672">"Штат"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Паштовы індэкс"</string>
- <string name="postal_country" msgid="7638264508416368690">"Краіна"</string>
- <string name="full_name" msgid="6602579550613988977">"Iмя"</string>
- <string name="name_given" msgid="1687286314106019813">"Імя"</string>
- <string name="name_family" msgid="3416695586119999058">"Прозвішча"</string>
- <string name="name_prefix" msgid="59756378548779822">"Прэфікс імені"</string>
- <string name="name_middle" msgid="8467433655992690326">"Імя па бацьку"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Суфікс да імені"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Фанетычны запіс імя"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Фанетычны запіс імя па бацьку"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Фанетычны запіс прозвішча"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Фанетычны запіс імя"</string>
<string name="connections" msgid="8098440723172028350">"Сувязi"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Дадаць кантакт"</string>
<string name="recent" msgid="2659189233141493004">"Апошнія"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Паглядзець імёны кантактаў як"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Кантакты не выбраныя."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"не аб\'яднаны"</item>
<item quantity="other" msgid="425683718017380845">"аб\'яднаныя з розных крыніц (<xliff:g id="COUNT">%0$d</xliff:g>)"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Іншае"</string>
<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="directory_search_label" msgid="1887759056597975053">"Дырэкторыя"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Усе кантакты"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Стварэнне асабістай копіі..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Усе кантакты"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Пазначана"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Карыстальніцкі"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Карыстальнiцкi"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Усе кантакты з нумарамі тэлефонаў"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Кантакт"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Вызначыць карыстальніцкі выгляд"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Загрузка..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Налады"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Кантакты для адлюстр."</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="hint_findContacts" msgid="1808681193458772072">"Знайсці кантакты"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Прагл. абнаўленняў"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Галас. пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"Галасавых паведамленняў: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Прайграць"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Новае паведамл. ад <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Немагчыма прайгр. пав. галасавой пошты"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Запiс у буфер..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Атрыманне галасавой пошты..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Немагчыма атрымаць галасавую пошту."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Новы"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Старэй"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Толькi выклiкі з галасавой поштай"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Толькi ўваходныя выклiкi"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Толькi выходныя выклiкi"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Толькі прапушчаныя выклiкi"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Немагчыма падлучыцца да сервера галасавой пошты."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Немагч. далучыцца да сервера гал. пошты. Нов. галас. павед. чак."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Налада галасавой пошты."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Аўдыё недаступнае."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Стварыць"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Выкл. гал. пошту"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Самая нiзкая хуткасць"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Нiзкая хуткасць"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Звычайная хуткасць"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Высокая хуткасць"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Максімальная хуткасць"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"( <xliff:g id="COUNT">%1$d</xliff:g> ) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Назва групы"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Кант. атр. праз NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Паказаць толькі выходныя"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Паказаць толькі ўваходныя"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Паказаць толькі прапушчаныя"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Паказаць толькі галас. пошту"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Паказаць усе выклікі"</string>
- <string name="status_available" msgid="5586870015822828392">"Даступны"</string>
- <string name="status_away" msgid="1838861100379804730">"Адсутнічае"</string>
- <string name="status_busy" msgid="9147992455450257136">"Заняты"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Прайграць паведамленне галасавой пошты"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Уваходныя выклікі"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Выходны выклік"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Прапушчаныя выклікі"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Галасавая пошта"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Дадаць кантакт"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Прагледзець кантакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Выклік карыстальнiка <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Адправіць тэкставае паведамленне карыстальніку <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непраслуханая галасавая пошта"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Адправіць паведамленне карыстальніку <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Патэлефанаваць карыстальніку <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Хуткі кантакт для карыстальніка <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Я"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Захоўваць лакальна"</string>
<string name="add_account" msgid="8201790677994503186">"Дадаць уліковы запіс"</string>
<string name="add_new_account" msgid="5748627740680940264">"Дадаць новы ўліковы запіс"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Выклік не зроблены"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Каб наладзіць галасавую пошту, націсніце \"Меню\" i перайдзiце ў налады."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Каб зрабiць выклік галасавой пошты, спачатку адключыце рэжым палёту."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Экспарт базы дадзеных файлаў"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Дадатковыя параметры"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Разгарнуць ці згарнуць назвы палёў"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Выява. Выберыце, каб змяніць"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index a6d716f..08ef113 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Телефон"</string>
<string name="people" msgid="1048457247435785074">"Хора"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Информация"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Актуал."</string>
<string name="searchHint" msgid="8482945356247760701">"Търсене в контактите"</string>
- <string name="menu_search" msgid="9147752853603483719">"Търсене"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Нов контакт"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Преглед на контакт"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Копиране"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Поставяне на началния екран"</string>
<string name="menu_call" msgid="3992595586042260618">"Обаждане на контакт"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Изпращaне на SMS на контакт"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Този контакт съдържа информация от няколко профила. Тази от профили само за четене ще бъде скрита, а не изтрита."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Изтриването на този контакт ще премахна информация от няколко профила."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Този контакт ще бъде изтрит."</string>
- <string name="menu_done" msgid="796017761764190697">"Готово"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Отказ"</string>
<string name="menu_discard" msgid="6456087569315685632">"Отхвърляне"</string>
- <string name="label_notes" msgid="8337354953278341042">"Бележки"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Интернет обаждане"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Фирма"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Заглавие"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Имейл"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Незабавни съобщения"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Адрес"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Организация"</item>
<item msgid="7196592230748086755">"Бележка"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Няма контакти."</string>
<string name="noGroups" msgid="8614664663561385253">"Няма групи."</string>
<string name="noAccounts" msgid="7768267764545265909">"Необходим ви е профил, за да създавате групи."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Не са намерени съответстващи контакти."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Няма контакти с тел. номера."</string>
<string name="emptyGroup" msgid="7502116218697177370">"В тази група няма хора."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"За да добавите, редактирайте групата."</string>
<string name="savingContact" msgid="4075751076741924939">"Контактът се запазва..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Опциите за показване се запазват..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Контактът е запазен."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Промените в контакта не можаха да бъдат запазени."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Групата е запазена."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> контакта"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Няма контакти."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Няма видими контакти."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Няма любими."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Няма контакти във: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Контакти във: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Един контакт"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Контакти в персонализиран изглед"</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="foundTooManyContacts" msgid="5163335650920020220">"Намерени са повече от <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Няма контакти"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 намерен"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Всички контакти"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Групи"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Любими"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Любимите и всички контакти"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Списък на обажданията"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Изпращане на SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Обаждане на <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Редактиране на номер преди обаждане"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Добавяне към контакти"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Премахване от списък с обаждания"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Изчистване на списъка с обажданията"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Изтриване на гласова поща"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Споделяне на гласова поща"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Списъкът на обажданията е празен."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Да се изчисти ли списъкът с обаждания?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Всичките ви записи на обажданията ще бъдат изтрити."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Списъкът с обаждания се изчиства..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Да се изчистят ли често търсените?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Ще изчистите списъка с често търсените в приложенията Хора и Телефон и ще принудите приложенията за имейл да научат предпочитанията ви за адресите, започвайки отначало."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Често търсените се изчистват…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Гласова поща"</string>
- <string name="unknown" msgid="740067747858270469">"Неизвестен"</string>
- <string name="private_num" msgid="6374339738119166953">"Частен номер"</string>
- <string name="payphone" msgid="4864313342828942922">"Импулсен телефон"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Използвайте клавиатурата за набиране"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Наберете за добавяне на разговор"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Зарежда се от SIM карта..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Контакти от SIM карта"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Нямате контакти за показване. (Ако току-що сте добавили профил, синхронизирането може да отнеме няколко минути.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Нямате контакти за показване."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Нямате контакти за показване."\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с таблета;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SIM или SD карта."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Нямате контакти за показване."\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с телефона;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SIM или SD карта."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Нямате контакти за показване. (Ако току-що сте добавили профил, синхронизирането им може да отнеме няколко минути.)"\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с таблета;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опции за показване"</b></font>", за да промените кои контакти са видими;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SIM или SD карта."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Нямате контакти за показване. (Ако току-що сте добавили профил, синхронизирането им може да отнеме няколко минути.)"\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с телефона;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опции за показване"</b></font>", за да промените кои контакти са видими;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>" , за да импортирате контакти от своята SIM или SD карта."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Нямате контакти за показване."\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с таблета;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SD карта."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Нямате контакти за показване."\n\n" За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с телефона;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SD карта."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Нямате контакти за показване. (Ако току-що сте добавили профил, синхронизирането им може да отнеме няколко минути.)"\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с таблета;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опции за показване"</b></font>", за да промените кои контакти са видими;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SD карта."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Нямате контакти за показване. (Ако току-що сте добавили профил, синхронизирането им може да отнеме няколко минути.)"\n\n"За добавяне на контакти докоснете "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и след това:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Профили"</b></font>", за да добавите или настроите профил с контакти, които можете да синхронизирате с телефона;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опции за показване"</b></font>", за да промените кои контакти са видими;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нов контакт"</b></font>", за да създадете съвсем нов контакт;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортиране/Експортиране"</b></font>", за да импортирате контакти от своята SD карта."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Нямате любими контакти."\n\n"За добавяне на контакт към любими:"\n\n" "<li>"Докоснете раздела "<b>"Контакти"</b>\n</li>" "\n<li>"Докоснете желания контакт"\n</li>" "\n<li>"Докоснете звездата до името му"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Използване на тонова клавиатура"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Назад към текущото обаждане"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Добавяне на обаждане"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Подробности за обаждане"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Подробностите за заявения разговор не могат да бъдат прочетени."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Вх. обаждане"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Изх. обаждане"</string>
- <string name="type_missed" msgid="2720502601640509542">"Пропуснато обаждане"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Гласова поща"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Вх. обаждания"</string>
<string name="callBack" msgid="5498224409038809224">"Обратно обаждане"</string>
<string name="callAgain" msgid="3197312117049874778">"Повторно обаждане"</string>
<string name="returnCall" msgid="8171961914203617813">"Отговаряне на обаждане"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Често търсени"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Чести обаждания"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Да се добави ли „<xliff:g id="EMAIL">%s</xliff:g>“ към контакти?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"едно"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"две"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"три"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"четири"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"пет"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"шест"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"седем"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"осем"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"девет"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"звезда"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"нула"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"лира"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"гласова поща"</string>
- <string name="description_search_button" msgid="3660807558587384889">"търсене"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"набиране"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"назад"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"номер за набиране"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"снимка на контакта"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"изтриване"</string>
<string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Преглед на контакта"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Не бе намерено хранилище."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Не бе намерена SD карта."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Импортиране от SIM карта"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Импорт. от хранилището"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Експорт. в хранилището"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Споделяне на видимите контакти"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Импортиране на един vCard файл"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Импортиране на няколко vCard файла"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Импортиране на всички vCard файлове"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Търсят се данни за vCard в хранилището..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Търсят се данни за vCard в SD картата..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Хранилището не можа да бъде сканирано. (Причина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD картата не можа да бъде сканирана. (Причина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O грешка"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Няма достатъчно памет. Файлът може да е твърде голям."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"vCard не можа да бъде анализирана по неочаквана причина."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Форматът не се поддържа."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard не можа да бъде импортирана."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"В хранилището не бе намерен vCard файл."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"На SD картата не бе намерен vCard файл."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Метаинформацията от даден/и vCard файл/ове не можа да бъде събрана."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Един или повече файла не можаха да бъдат импортирани (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Неизвестна грешка."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Избор на vCard файл"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Кешира се"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard се кешира/т във временно локално хранилище. Самото импортиране ще започне скоро."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Импортира се <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> се импортира"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Данните не можаха да бъдат прочетени"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Четенето на данни от vCard е анулирано"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Импортирането на vCard <xliff:g id="FILENAME">%s</xliff:g> завърши"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Импортирането на <xliff:g id="FILENAME">%s</xliff:g> е анулирано"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> ще се импортира скоро."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Файлът ще се импортира скоро."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Заявката за импортиране на vCard бе отхвърлена. Опитайте отново по-късно."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> ще се експортира скоро."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Заявката за експортиране на vCard бе отхвърлена. Опитайте отново по-късно."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"контакт"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Да се експортират ли контактите?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Списъкът ви с контакти ще се експортира във файла: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Не се експортира"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Данните за контакта не бяха експортирани."\n"Причина: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Няма контакт, позволяващ експортиране."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Твърде много vCard файлове са в хранилището."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Твърде много vCard файлове са на SD картата."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Изисканото име на файла е твърде дълго („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Експортирането на <xliff:g id="FILENAME">%s</xliff:g> завърши."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Експортирането на <xliff:g id="FILENAME">%s</xliff:g> е анулирано."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Експортиране на данни за контакти"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Данните за контактите ви се експортират във: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Експортирането не можа да започне: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Възникна грешка при експортирането: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Информацията за базата от данни не можа да бъде получена."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Няма контакти, позволяващи експортиране. Ако в таблета си имате контакти, е възможно някои доставчици на данни да не позволяват експортирането им извън него."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Няма контакти, позволяващи експортиране. Ако в телефона си имате контакти, е възможно някои доставчици на данни да не позволяват експортирането им извън него."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Създателят на vCard не се стартира правилно."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"„<xliff:g id="FILE_NAME">%s</xliff:g>“ не можа да се отвори: <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Да се анулира ли импортирането на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Да се анулира ли експортирането на <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Импорт./експорт. не можа да се анулира"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена на контактите ви"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Добавяне на 2-сек пауза"</string>
- <string name="add_wait" msgid="3360818652790319634">"Добавяне на изчакване"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Избиране на номер"</string>
- <string name="call_settings" msgid="7666474782093693667">"Настройки"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Избиране на номер"</string>
- <string name="make_primary" msgid="5829291915305113983">"Запомняне на този избор"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Не бе намерено приложение за извършване на това действие."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Няма име)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Профили"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Изчистване на често търсените"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за показване"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Импортиране/Експортиране"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Импортиране/Експортиране на контакти"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Импортиране на контактите"</string>
<string name="menu_share" msgid="943789700636542260">"Споделяне"</string>
<string name="share_via" msgid="563121028023030093">"Споделяне на контакт чрез"</string>
- <string name="share_error" msgid="948429331673358107">"Този контакт не може да бъде споделен."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Име"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Псевдоним"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Организация"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Уебсайт"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Събития"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Отношение"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Групи"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Създаване на контакт в профил"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Създаване на група в профил"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Премахване на група за синхронизиране"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Добавяне на група за синхронизиране"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Още групи..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Всички други контакти"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Всички контакти"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Ако синхронизирането на „<xliff:g id="GROUP">%s</xliff:g>“ спре, то ще спре и за негрупираните контакти."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Само в таблета, несинхронизиран"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Само в телефона, несинхронизиран"</string>
- <string name="call_custom" msgid="7756571794763171802">"Обаждане на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Обаждане на домашен"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Обаждане на мобилен"</string>
- <string name="call_work" msgid="5328785911463744028">"Обаждане на служебен"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Обаждане на служебен факс"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Обаждане на домашен факс"</string>
- <string name="call_pager" msgid="9003902812293983281">"Обаждане на пейджър"</string>
- <string name="call_other" msgid="8563753966926932052">"Обаждане"</string>
- <string name="call_callback" msgid="1910165691349426858">"Обаждане на обратно обаждане"</string>
- <string name="call_car" msgid="3280537320306436445">"Обаждане на кола"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Обаждане на основен служебен"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Обаждане на ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Обаждане на основен"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Обаждане на факс"</string>
- <string name="call_radio" msgid="8296755876398357063">"Обаждане на радио"</string>
- <string name="call_telex" msgid="2223170774548648114">"Обаждане на телекс"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Обаждане на TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Обаждане на служебен мобилен"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Обаждане на служебен пейджър"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Обаждане на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Обаждане на MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Изпращане на SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Изпращaне на SMS на домашен"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Изпращaне на SMS на мобилен"</string>
- <string name="sms_work" msgid="2269624156655267740">"Изпращане на SMS на служебен"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Изпращане на SMS на служебен факс"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Изпращане на SMS на домашен факс"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Изпращане на SMS на пейджър"</string>
- <string name="sms_other" msgid="806127844607642331">"Текст"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Изпращане на SMS на отговорилия"</string>
- <string name="sms_car" msgid="7444227058437359641">"Изпращане на SMS на кола"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Изпращaне на SMS на основен служебен"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Изпращaне на SMS на ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Изпращане на SMS на основен"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Изпращане на SMS на факс"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Изпращане на SMS на радио"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Изпращане на SMS на телекс"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Изпращане на SMS на TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Изпращане на SMS на служебен мобилен"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Изпращaне на SMS на служебен пейджър"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Изпращане на SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Изпращане на SMS на MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Текстово съобщение"</string>
- <string name="email_home" msgid="8573740658148184279">"Изпращане на имейл до домашен"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Изпращане на имейл до мобилен"</string>
- <string name="email_work" msgid="2807430017302722689">"Изпращане на имейл до служебен"</string>
- <string name="email_other" msgid="3454004077967657109">"Изпращане на имейл"</string>
- <string name="email_custom" msgid="7548003991586214105">"Изпращане на имейл до <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Изпращане на имейл"</string>
- <string name="map_home" msgid="1243547733423343982">"Преглед на домашен адрес"</string>
- <string name="map_work" msgid="1360474076921878088">"Преглед на служебен адрес"</string>
- <string name="map_other" msgid="3817820803587012641">"Преглед на адрес"</string>
- <string name="map_custom" msgid="6184363799976265281">"Преглед на адреса <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Чат по AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Чат по Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Чат по Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Чат по Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Чат по QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Чат по Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Чат по ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Чат по Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Чат"</string>
<string name="audio_chat" msgid="2535716629358298691">"Гласов разговор"</string>
<string name="video_chat" msgid="1872255818640336072">"Видеоразговор"</string>
- <string name="postal_address" msgid="8765560217149624536">"Адрес"</string>
- <string name="postal_street" msgid="8133143961580058972">"Улица"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"П.К."</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Квартал"</string>
- <string name="postal_city" msgid="6597491300084895548">"Град"</string>
- <string name="postal_region" msgid="6045263193478437672">"Щат"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Пощенски код"</string>
- <string name="postal_country" msgid="7638264508416368690">"Държава"</string>
- <string name="full_name" msgid="6602579550613988977">"Име"</string>
- <string name="name_given" msgid="1687286314106019813">"Собствено име"</string>
- <string name="name_family" msgid="3416695586119999058">"Фамилия"</string>
- <string name="name_prefix" msgid="59756378548779822">"Обръщение"</string>
- <string name="name_middle" msgid="8467433655992690326">"Презиме"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Обръщение"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Собствено име, както се произнася"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Презиме, както се произнася"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Фамилия, както се произнася"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Име, както се произнася"</string>
<string name="connections" msgid="8098440723172028350">"Връзки"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Добавяне на връзка"</string>
<string name="recent" msgid="2659189233141493004">"Скорошни"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Преглед на имената на контакти като"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Няма избрани контакти."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"без обединяване"</item>
<item quantity="other" msgid="425683718017380845">"обединено от <xliff:g id="COUNT">%0$d</xliff:g> източник/а"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Други"</string>
<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="directory_search_label" msgid="1887759056597975053">"Директория"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Всички контакти"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Създава се лично копие..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Всички контакти"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Със звезда"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"По избор"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Персонализиране"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Всички контакти с телефонни номера"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Контакт"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Определяне на персонализиран изглед"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Зарежда се…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти за показване"</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="hint_findContacts" msgid="1808681193458772072">"Намиране на контакти"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Актуализации"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Гласова поща"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> гл. съобщения"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пускане"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова гласова поща от <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Гласовата поща не можа да бъде пусната."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Буферира се..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Гласовата поща се извлича..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Гл. поща не можа да бъде извлечена."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Нови"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"По-стари"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само обаждания с гласова поща"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Само входящи обаждания"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Само изходящи обаждания"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Само пропуснати обаждания"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Не може да се осъществи връзка със сървъра за гласова поща."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Няма връзка със сървъра за гл. поща. Чакат ви нови съобщения."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Настройте гласовата си поща."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Няма звук."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Настройка"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Чуйте гл. си поща"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Най-бавна скорост"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Бавна скорост"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Нормална скорост"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Бърза скорост"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Най-бърза скорост"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Име на групата"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Контакт: Получ. чрез NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Показване само на изходящите"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Показване само на входящите"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Показване само на пропуснатите"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показване само на гл. поща"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Показване на всички обаждания"</string>
- <string name="status_available" msgid="5586870015822828392">"Налице"</string>
- <string name="status_away" msgid="1838861100379804730">"Отсъства"</string>
- <string name="status_busy" msgid="9147992455450257136">"Зает/а"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Пускане на гласовата поща"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Входящо обаждане"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Изходящо обаждане"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Пропуснато обаждане"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Гласова поща"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Добавяне на контакт"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Преглед на контактa <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Обаждане до <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Изпращане на SMS до <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушана гласова поща"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Изпращане на съобщение до <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Набиране на телефона на <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Бърз контакт за <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Аз"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Съхраняване локално"</string>
<string name="add_account" msgid="8201790677994503186">"Добавяне на профил"</string>
<string name="add_new_account" msgid="5748627740680940264">"Добавяне на нов профил"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Обаждането не е извършено"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"За да настроите гласовата поща, отворете „Меню“ > „Настройки“."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"За да чуете гласовата си поща, първо изключете самолетния режим."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Експортиране на файловете на базата от данни"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Още опции"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Разгъване или свиване на полетата за името"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Снимка. Изберете, за да промените"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 20f5ebb..7429cf3 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telèfon"</string>
<string name="people" msgid="1048457247435785074">"Persones"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactes"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacte"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Quant a"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Actualitz."</string>
<string name="searchHint" msgid="8482945356247760701">"Cerca als contactes"</string>
- <string name="menu_search" msgid="9147752853603483719">"Cerca"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Contacte nou"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Visualitza el contacte"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Afegeix als preferits"</string>
<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_copy" msgid="6108677035381940698">"Copia"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Posa-ho 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>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Fet"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancel·la"</string>
<string name="menu_discard" msgid="6456087569315685632">"Descarta"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notes"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Trucada per Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Títol"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Crea un contacte nou"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telèfon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Correu electrònic"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"MI"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adreça"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organització"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"No hi ha contactes."</string>
<string name="noGroups" msgid="8614664663561385253">"Cap grup"</string>
<string name="noAccounts" msgid="7768267764545265909">"Per crear grups necessites un compte."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"No s\'ha trobat cap contacte coincident."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"No hi ha cap contacte amb número de telèfon."</string>
<string name="emptyGroup" msgid="7502116218697177370">"No hi ha persones en aquest grup."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Per afegir-ne, edita el grup."</string>
<string name="savingContact" msgid="4075751076741924939">"S\'està desant el contacte..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"S\'estan desant les opcions de visualització..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"S\'ha desat el contacte."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"No s\'han pogut desar els canvis al contacte."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grup desat."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contacte"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactes"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"No hi ha cap contacte."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"No hi ha cap contacte visible."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"No hi ha cap preferit."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"No hi ha cap contacte a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contactes a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Un sol contacte"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contactes a la visualització personalitzada"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Se n\'han trobat més de <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"No hi ha cap contacte"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 contacte"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Tots els contactes"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grups"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Preferits"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Preferits i tots els contactes"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telèfon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Registre de trucades"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Envia un missatge de text"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Truca a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edita el número abans de trucar"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Afegeix als contactes"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Elimina del registre de trucades"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Esborra el registre de trucades"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Suprimeix missatge de veu"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Comparteix la bústia de veu"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"El registre de trucades és buit."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Esborrament registre"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Se suprimiran tots els registres de trucades."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Esborrant registre de trucades..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vols esborrar contac. més freqüents?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"S\'esborrarà la llista de contactes més freqüents a les aplicacions de contactes i del telèfon i es forçarà les aplicacions de correu electrònic a obtenir informació sobre les preferències de direccionament des de zero."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"S\'està esb. cont. més freqüents..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Correu de veu"</string>
- <string name="unknown" msgid="740067747858270469">"Desconegut"</string>
- <string name="private_num" msgid="6374339738119166953">"Número privat"</string>
- <string name="payphone" msgid="4864313342828942922">"Telèfon de monedes"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilitzeu el teclat per marcar"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Marqueu per afegir una trucada"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"S\'està carregant des de la targeta SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contactes de la targeta SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"No teniu cap contacte per mostrar. (Si acabeu d\'afegir un compte, la sincronització dels contactes pot trigar una estona.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"No teniu cap contacte per mostrar."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"No tens cap contacte per mostrar."\n\n"Per afegir contactes, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i, a continuació, toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb els contactes que pots sincronitzar amb la tauleta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar els contactes de la targeta SIM o SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"No tens cap contacte per mostrar."\n\n"Per afegir contactes, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i, a continuació, toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb els contactes que pots sincronitzar amb el telèfon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar els contactes de la targeta SIM o SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"No tens cap contacte per mostrar. (Si acabes d\'afegir un compte, és possible que la sincronització dels contactes trigui una mica.)"\n\n"Per afegir contactes, prem "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i després toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb contactes que pots sincronitzar amb la tauleta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Opcions de visualització"</b></font>" per modificar quins contactes són visibles"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar contactes de la targeta SIM o SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"No tens cap contacte per mostrar. (Si acabes d\'afegir un compte, és possible que la sincronització dels contactes trigui una mica.)"\n\n"Per afegir contactes, prem "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i després toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb contactes que pots sincronitzar amb el telèfon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Opcions de visualització"</b></font>" per modificar quins contactes són visibles"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar contactes de la targeta SIM o SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"No tens cap contacte per mostrar."\n\n"Per afegir contactes, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i, a continuació, toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb els contactes que pots sincronitzar amb la tauleta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar els contactes de la targeta SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"No tens cap contacte per mostrar."\n\n"Per afegir contactes, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i, a continuació, toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb els contactes que pots sincronitzar amb el telèfon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar els contactes de la targeta SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"No tens cap contacte per mostrar. (Si acabes d\'afegir un compte, és possible que la sincronització dels contactes trigui una mica.)"\n\n"Per afegir contactes, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i després toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb contactes que pots sincronitzar amb la tauleta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Opcions de visualització"</b></font>" per modificar quins contactes són visibles"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar contactes de la teva targeta SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"No tens cap contacte per mostrar. (Si acabes d\'afegir un compte, és possible que la sincronització dels contactes trigui una mica.)"\n\n"Per afegir contactes, prem "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" i després toca:"\n\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" per afegir o per configurar un compte amb contactes que pots sincronitzar amb el telèfon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Opcions de visualització"</b></font>" per modificar quins contactes són visibles"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacte nou"</b></font>" per crear un contacte completament nou"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importa/exporta"</b></font>" per importar contactes de la targeta SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"No teniu preferits."\n\n"Per afegir un contacte a la llista de preferits:"\n\n" "<li>"Toqueu la pestanya"<b>"Contactes"</b>" "\n</li>" "\n<li>"Toqueu el contacte que voleu afegir als preferits"\n</li>" "\n<li>"Toqueu l\'estrella que hi ha al costat del nom del contacte"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilitza el teclat de tons"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Torna a la trucada en curs"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Afegeix una trucada"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detalls de la trucada"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"No s\'han pogut llegir els detalls de la trucada sol·licitada."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Trucada entrant"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Trucada de sortida"</string>
- <string name="type_missed" msgid="2720502601640509542">"Trucada perduda"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Bústia de veu"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Trucades entrants"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactats sovint"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Trucats sovint"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voleu afegir \"<xliff:g id="EMAIL">%s</xliff:g>\" als contactes?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"un"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tres"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quatre"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinc"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"set"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"vuit"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nou"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"destaca"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"coixinet"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"correu de veu"</string>
- <string name="description_search_button" msgid="3660807558587384889">"cerca"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"marca"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"retrocés"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"número que es marcarà"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto del contacte"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"suprimeix"</string>
<string name="description_plus_button" msgid="515164827856229880">"més"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Mostra el contacte"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No s\'ha trobat emmagatzematge."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No s\'ha trobat cap targeta SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importa des de la targeta SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importa de l\'emmagatzematge"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporta a emmagatzematge"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Comparteix els contactes visibles"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importa un fitxer vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importa diversos fitxers vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importa tots els fitxers vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"S\'estan cercant dades de vCard a l\'emmagatzematge..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"S\'estan cercant les dades de vCard a la targeta SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No s\'ha pogut explorar l\'emmagatzematge. (Motiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No s\'ha pogut explorar la targeta SD. (Motiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Error d\'E/S"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"No hi ha prou memòria. És possible que el fitxer sigui massa gran."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"No s\'ha pogut analitzar la vCard a causa d\'un motiu inesperat."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"No s\'admet aquest format."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"No s\'ha pogut importar la vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"No s\'ha trobat cap fitxer vCard a l\'emmagatzematge."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"No s\'ha trobat cap fitxer vCard a la targeta SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"No s\'ha pogut recopilar metainformació dels fitxers de la vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"No s\'ha pogut importar un dels fitxers com a mínim (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"S\'ha produït un error desconegut."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Tria un fitxer vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Desament a la memòria cau"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"S\'estan desant els vCard a l\'emmagatzematge temporal local. La importació real començarà aviat."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"S\'està important <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"S\'està important <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"No s\'han pogut llegir les dades de vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"S\'ha cancel·lat la lectura de dades de vCard"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Importació de vCard <xliff:g id="FILENAME">%s</xliff:g> finalitzada"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"S\'ha cancel·lat la importació de: <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> s\'importarà d\'aquí a una estona."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"D\'aquí a poc s\'importarà el fitxer."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"S\'ha rebutjat la sol·licitud per importar vCard. Torna-ho a provar més tard."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> s\'exportarà en breu."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"S\'ha rebutjat la sol·licitud per exportar vCard. Torna-ho a provar més tard."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contacte"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportació contactes"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"La llista de contactes s\'exportarà al fitxer: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Error en exportar"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"No s\'han exportat les dades de contacte."\n"Motiu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"No hi ha cap contacte que es pugui exportar."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Hi ha massa fitxers vCard a l\'emmagatzematge."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Hi ha massa fitxers vCard a la targeta SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"El nom de fitxer obligatori és massa llarg (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exportació de <xliff:g id="FILENAME">%s</xliff:g> finalitzada."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"S\'ha cancel·lat l\'exportació de: <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"S\'estan exportant les dades de contacte"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"S\'estan exportant les teves dades de contacte a: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"No s\'ha pogut iniciar l\'exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"S\'ha produït un error durant l\'exportació: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"No s\'ha pogut obtenir informació de la base de dades."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"No hi ha cap contacte que es pugui exportar. Si tens contactes a la tauleta, és possible que alguns proveïdors de dades no permetin que els contactes s\'exportin de la tauleta."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"No hi ha cap contacte que es pugui exportar. Si en tens algun al telèfon, és possible que hi hagi proveïdors de dades que no permetin que els contactes s\'exportin des del telèfon."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"No s\'ha iniciat correctament el creador de vCard."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"No s\'ha pogut obrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Vols cancel·lar la importació de: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vols cancel·lar l\'exportació de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"No es pot cancel·lar la imp./exp. vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Noms dels contactes"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Afegeix una pausa de 2 segons"</string>
- <string name="add_wait" msgid="3360818652790319634">"Afegeix espera"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Tria d\'un número"</string>
- <string name="call_settings" msgid="7666474782093693667">"Configuració"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Tria d\'un número"</string>
- <string name="make_primary" msgid="5829291915305113983">"Recorda aquesta selecció"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No s\'ha trobat cap aplicació per processar aquesta acció."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Sense nom)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Comptes"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Esborra els freqüents"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactes per mostrar"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importa/exporta"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importació/exportació de contactes"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importació de contactes"</string>
<string name="menu_share" msgid="943789700636542260">"Comparteix"</string>
<string name="share_via" msgid="563121028023030093">"Comparteix el contacte mitjançant"</string>
- <string name="share_error" msgid="948429331673358107">"No es pot compartir aquest contacte."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nom"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Àlies"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organització"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Lloc web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Esdeveniments"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relació"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grups"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crea el contacte en un compte"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Creació d\'un grup al compte"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Elimina el grup de sincronització"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Afegeix un grup de sincronització"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Més grups..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"La resta de contactes"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Tots els contactes"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Si s\'elimina \"<xliff:g id="GROUP">%s</xliff:g>\" de la sincronització, també se n\'eliminaran els contactes no agrupats."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Només tauleta, sense sincronitzar"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Només telèfon, sense sincronitzar"</string>
- <string name="call_custom" msgid="7756571794763171802">"Truca a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Truca a casa"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Truca al mòbil"</string>
- <string name="call_work" msgid="5328785911463744028">"Truca a la feina"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Truca al fax de la feina"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Truca al fax particular"</string>
- <string name="call_pager" msgid="9003902812293983281">"Truca al cercapersones"</string>
- <string name="call_other" msgid="8563753966926932052">"Truca a"</string>
- <string name="call_callback" msgid="1910165691349426858">"Truca al número de crida de retorn"</string>
- <string name="call_car" msgid="3280537320306436445">"Truca al cotxe"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Truca el telèfon principal de l\'empresa"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Truca a l\'XDSI"</string>
- <string name="call_main" msgid="6082900571803441339">"Truca al telèfon principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Truca al fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Truca a la ràdio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Truca al tèlex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Truca a TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Truca al mòbil de la feina"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Truca al cercapersones de la feina"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Truca a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Truca al número MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Envia un SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Envia un SMS al número particular"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Envia un SMS al mòbil"</string>
- <string name="sms_work" msgid="2269624156655267740">"Envia un SMS a la feina"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Envia un SMS al fax de la feina"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Envia un SMS al fax particular"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Envia un SMS al cercapersones"</string>
- <string name="sms_other" msgid="806127844607642331">"Envia un SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Envia un SMS a la crida de retorn"</string>
- <string name="sms_car" msgid="7444227058437359641">"Envia un SMS al cotxe"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Envia un SMS al telèfon principal de l\'empresa"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Envia un SMS a l\'XDSI"</string>
- <string name="sms_main" msgid="8621625784504541679">"Envia un SMS al telèfon principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Envia un SMS al fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Envia un SMS a la ràdio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Envia un SMS al tèlex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Envia un SMS al TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Envia un SMS al telèfon de la feina"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Envia un SMS al cercapersones de la feina"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Envia un SMS a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Envia un MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Missatge de text"</string>
- <string name="email_home" msgid="8573740658148184279">"Envia un correu electrònic a l\'adreça particular"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Envia un correu electrònic al mòbil"</string>
- <string name="email_work" msgid="2807430017302722689">"Envia un correu electrònic a la feina"</string>
- <string name="email_other" msgid="3454004077967657109">"Envia un correu electrònic"</string>
- <string name="email_custom" msgid="7548003991586214105">"Envia un correu electrònic a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Envia un correu electrònic"</string>
- <string name="map_home" msgid="1243547733423343982">"Visualitza l\'adreça particular"</string>
- <string name="map_work" msgid="1360474076921878088">"Visualitza l\'adreça de la feina"</string>
- <string name="map_other" msgid="3817820803587012641">"Visualitza l\'adreça"</string>
- <string name="map_custom" msgid="6184363799976265281">"Visualitza l\'adreça <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Xateja amb AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Xateja amb Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Xateja amb Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Xateja amb Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Xateja amb QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Xateja amb Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Xateja amb ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Xateja amb Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Fes un xat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Xat de veu"</string>
<string name="video_chat" msgid="1872255818640336072">"Xat de vídeo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adreça"</string>
- <string name="postal_street" msgid="8133143961580058972">"Carrer"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Apartat postal"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Barri"</string>
- <string name="postal_city" msgid="6597491300084895548">"Ciutat"</string>
- <string name="postal_region" msgid="6045263193478437672">"Estat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Codi postal"</string>
- <string name="postal_country" msgid="7638264508416368690">"País"</string>
- <string name="full_name" msgid="6602579550613988977">"Nom"</string>
- <string name="name_given" msgid="1687286314106019813">"Nom"</string>
- <string name="name_family" msgid="3416695586119999058">"Cognom"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefix del nom"</string>
- <string name="name_middle" msgid="8467433655992690326">"Segon nom"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufix del nom"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nom fonètic"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Primer cognom fonètic"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Cognoms fonètics"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nom fonètic"</string>
<string name="connections" msgid="8098440723172028350">"Connexions"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Afegeix una connexió"</string>
<string name="recent" msgid="2659189233141493004">"Recent"</string>
@@ -407,12 +138,12 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Ordena la llista per"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nom"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Cognom"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Visualitza els noms dels contactes com a"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Mostra els noms dels contactes"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nom primer"</string>
<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">"Tria una foto de la galeria"</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="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>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostra-ho tot"</string>
<string name="menu_select_all" msgid="621719255150713545">"Selecciona-ho tot"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Anul·la tota la selecció"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"No s\'ha seleccionat cap contacte."</string>
<string name="add_field" msgid="2384260056674995230">"Afegeix un altre camp"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Afegeix-ne una"</string>
<string name="add_organization" msgid="7311893231158291197">"Afegeix organització"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"no combinat"</item>
<item quantity="other" msgid="425683718017380845">"combinat de <xliff:g id="COUNT">%0$d</xliff:g> fonts"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Altres"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vols ajuntar el contacte actual amb el contacte seleccionat?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vols canviar per editar el contacte seleccionat? Es copiarà la informació que hagis introduït fins ara."</string>
<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="directory_search_label" msgid="1887759056597975053">" Directori"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Tots els contactes"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"S\'està creant una còpia personal..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Tots els contactes"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Destacats"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalitzada"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalitza"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Tots els contactes amb números de telèfon"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contacte"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Defineix la visualització personalitzada"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"S\'està carregant…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configuració"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactes per mostrar"</string>
<string name="menu_settings" msgid="377929915873428211">"Configuració"</string>
<string name="menu_help" msgid="5123887102216637725">"Ajuda"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opcions de visualització"</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="hint_findContacts" msgid="1808681193458772072">"Cerca contactes"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Número de telèfon"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Afegeix-ho als contactes"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Afegeix al contacte"</string>
@@ -497,63 +215,9 @@
<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">"Configura el meu perfil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Escriu el nom de la persona"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Mostra actualitzac."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Missatge de veu"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> missatges de veu"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reprodueix"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nou missatge de veu de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"No s\'ha pogut reproduir correu de veu."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"S\'està emmagatzemant a mem. intermèd.…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"S\'està obtenint el correu de veu…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"No s\'ha pogut obtenir el correu de veu."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nous"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Anteriors"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Només trucades amb bústia de veu"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Només trucades entrants"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Només trucades sortints"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Només trucades perdudes"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"No es pot connectar amb el servidor de la bústia de veu."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"No es pot connectar a servidor bústia de veu. Hi ha miss. nous."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configura la bústia de veu."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Àudio no disponible."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configura"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Truca a bústia veu"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Velocitat mínima"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Velocitat baixa"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Velocitat normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Velocitat alta"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Velocitat màxima"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nom del grup"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contac. reb. NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostra només trucades sortints"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostra només trucades entrants"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra només trucades perdudes"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra només missatges de veu"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra totes les trucades"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponible"</string>
- <string name="status_away" msgid="1838861100379804730">"Absent"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ocupat"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reprodueix el missatge de veu"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Trucada entrant"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Trucada sortint"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Trucada perduda"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Missatge de veu"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Afegeix un contacte"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Visualitza el contacte <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Truca a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Envia un missatge de text a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Missatge de veu no escoltat"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Envia un missatge a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Marca el telèfon <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contacte ràpid per a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Usuari"</string>
<string name="local_profile_title" msgid="2021416826991393684">"El meu perfil local"</string>
- <string name="external_profile_title" msgid="8034998767621359438">"El meu perfil <xliff:g id="EXTERNAL_SOURCE">%1$s</xliff:g>"</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="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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Conserva localment"</string>
<string name="add_account" msgid="8201790677994503186">"Afegeix un compte"</string>
<string name="add_new_account" msgid="5748627740680940264">"Afegeix un compte nou"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"No s\'ha enviat la trucada"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurar la bústia de veu, vés a Menú > Configuració."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per trucar al correu de veu, primer has de desactivar el mode d\'avió."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exporta els fitxers de la base de dades"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Més opcions"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Amplia o redueix els camps de nom"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Imatge. Selecciona-la per canviar-la"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c0cbf33..f9d052e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Lidé"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"O kontaktu"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Aktualizace"</string>
<string name="searchHint" msgid="8482945356247760701">"Vyhledat kontakty"</string>
- <string name="menu_search" msgid="9147752853603483719">"Hledat"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Zobrazit kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Přidat k oblíbeným položkám"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Odebrat z oblíbených položek"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Upravit"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Smazat"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopírovat"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umístit na plochu"</string>
<string name="menu_call" msgid="3992595586042260618">"Volat kontakt"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Odeslat zprávu kontaktu"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Hotovo"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Zrušit"</string>
<string name="menu_discard" msgid="6456087569315685632">"Zahodit"</string>
- <string name="label_notes" msgid="8337354953278341042">"Poznámky"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetový hovor"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Společnost"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Název"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Vytvořit nový kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresa"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizace"</item>
<item msgid="7196592230748086755">"Poznámka"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Žádné kontakty."</string>
<string name="noGroups" msgid="8614664663561385253">"Žádné skupiny."</string>
<string name="noAccounts" msgid="7768267764545265909">"K vytváření skupin potřebujete účet."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nebyly nalezeny žádné odpovídající kontakty."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Ke kontaktům nejsou přiřazena žádná telefonní čísla."</string>
<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="savingDisplayGroups" msgid="2133152192716475939">"Ukládání možností zobrazení…"</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>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"Kontakty: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Žádné kontakty."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Žádné kontakty nejsou viditelné."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Žádné oblíbené kontakty."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Žádné kontakty v položce <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakty v účtu <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Jeden kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakty ve vlastním zobrazení"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Nalezeno více kontaktů než <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Žádné kontakty"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Nalezeno: 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Všechny kontakty"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupiny"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Oblíbené"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Oblíbené kontakty a všechny kontakty"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Hovory"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Odeslat textovou zprávu"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Před voláním upravit číslo"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Přidat do kontaktů"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Odstranit z hovorů"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Vymazat hovory"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Smazat hlasovou zprávu"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Sdílet hlasovou schránku"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Záznam hovorů je prázdný."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazat hovory?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Všechny záznamy hovorů budou smazány."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vymazání hovorů..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vymazat často kontaktované osoby?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Vymažete seznam často kontaktovaných osob v aplikacích Lidé a Telefon a e-mailové aplikace budou muset nastavení adresátů vytvořit znovu."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Mazání často kontaktovaných osob..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
- <string name="unknown" msgid="740067747858270469">"Neznámé"</string>
- <string name="private_num" msgid="6374339738119166953">"Soukromé číslo"</string>
- <string name="payphone" msgid="4864313342828942922">"Veřejný telefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Číslo vytočíte pomocí klávesnice."</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Přidáváte hovor"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Načítání ze SIM karty..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakty na SIM kartě"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nemáte uloženy žádné kontakty, které by bylo možno zobrazit. (Pokud jste účet přidali právě teď, může synchronizace kontaktů trvat několik minut.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nemáte uloženy žádné kontakty, které by bylo možno zobrazit."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nemáte žádné kontakty, které by bylo možné zobrazit."\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit zcela nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty ze SIM karty nebo SD."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nemáte žádné kontakty, které by bylo možné zobrazit."\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit zcela nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty ze SIM karty nebo SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nemáte žádné kontakty, které by bylo možné zobrazit. (Pokud jste právě přidali účet, může synchronizace kontaktů trvat několik minut.)"\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazení"</b></font>", pokud chcete změnit, které kontakty budou zobrazeny;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit úplně nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo Exportovat"</b></font>", pokud chcete importovat kontakty ze SIM karty nebo SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nemáte žádné kontakty, které by bylo možné zobrazit. (Pokud jste právě přidali účet, může synchronizace kontaktů trvat několik minut.)"\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazení"</b></font>", pokud chcete změnit, které kontakty budou zobrazeny;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit úplně nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty ze SIM karty nebo SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nemáte žádné kontakty, které by bylo možné zobrazit."\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit úplně nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nemáte žádné kontakty, které by bylo možné zobrazit."\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit zcela nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nemáte žádné kontakty, které by bylo možné zobrazit. (Pokud jste právě přidali účet, může synchronizace kontaktů trvat několik minut.)"\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazení"</b></font>", pokud chcete změnit, které kontakty budou zobrazeny;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"/}Nový kontakt"</b></font>", pokud chcete vytvořit úplně nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nemáte žádné kontakty, které by bylo možné zobrazit. (Pokud jste právě přidali účet, může synchronizace kontaktů trvat několik minut.)"\n\n"Chcete-li přidat kontakty, dotkněte se možnosti "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a potom se dotkněte položky:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", pokud chcete přidat nebo nastavit účet a kontakty v něm synchronizovat s telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazení"</b></font>", pokud chcete změnit, které kontakty budou zobrazeny;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit úplně nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat nebo exportovat"</b></font>", pokud chcete importovat kontakty z karty SD."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nemáte žádné oblíbené kontakty."\n\n"Přidání kontaktu do seznamu oblíbených:"\n\n" "<li>"Dotkněte se karty "<b>"Kontakty"</b>"."\n</li>" "\n<li>"Dotkněte se kontaktu, který chcete přidat mezi oblíbené."\n</li>" "\n<li>"Dotkněte se hvězdičky vedle jména kontaktu."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Použít dotykovou tónovou klávesnici"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Návrat k probíhajícímu hovoru"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Přidat hovor"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti hovoru"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Detaily požadovaného hovoru nelze načíst."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Příchozí hovor"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Odchozí volání"</string>
- <string name="type_missed" msgid="2720502601640509542">"Zmeškaný hovor"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Hlasová schránka"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Příchozí volání"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Často používané kontakty"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Často volané"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Chcete přidat „<xliff:g id="EMAIL">%s</xliff:g>“ do kontaktů?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"jedna"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dvě"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tři"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"čtyři"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"pět"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"šest"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sedm"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"osm"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"devět"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"hvězdička"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nula"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"hlasová schránka"</string>
- <string name="description_search_button" msgid="3660807558587384889">"vyhledat"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"vytáčení"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"číslo, které chcete vytočit"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografie kontaktu"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"smazat"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Zobrazit kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nebylo nalezeno žádné úložiště."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nebyla nalezena žádná karta SD"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importovat ze SIM karty"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importovat z úložiště"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportovat do úložiště"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Sdílet viditelné kontakty"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importovat jeden soubor vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importovat několik souborů vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importovat všechny soubory vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Vyhledávání dat souboru vCard v úložišti..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Vyhledávání dat souboru vCard na kartě SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Nepodařilo se naskenovat úložiště. (Důvod: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Nepodařilo se naskenovat kartu SD. (Důvod: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Chyba I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Není k dispozici dostatek paměti. Soubor může být příliš velký."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Analýza souboru vCard se z neočekávaných důvodů nezdařila."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formát není podporován."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Soubor vCard se nepodařilo importovat."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"V úložišti nebyl nalezen žádný soubor vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Na kartě SD nebyl nalezen žádný soubor vCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Informace o metadatech daných souborů vCard se nepodařilo shromáždit."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Jeden nebo více souborů se nepodařilo importovat (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Neznámá chyba."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Vyberte soubor vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Ukládání do mezipaměti"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Načítání souboru vCard do mezipaměti místního dočasného úložiště. Vlastní import bude zahájen v krátké době."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Probíhá import: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Probíhá import: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nepodařilo se přečíst údaje vizitky vCard."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Čtení dat souboru vCard bylo zrušeno"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Import souboru vCard byl dokončen <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Import souboru <xliff:g id="FILENAME">%s</xliff:g> byl zrušen."</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Soubor <xliff:g id="FILENAME">%s</xliff:g> bude za okamžik importován."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Soubor bude zakrátko importován."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Požadavek na import souborů vCard byl zamítnut. Zkuste to prosím později."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Soubor <xliff:g id="FILENAME">%s</xliff:g> bude za okamžik exportován."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Požadavek na export souborů vCard byl zamítnut. Zkuste to prosím později."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportovat kontakty?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Seznam kontaktů bude exportován do souboru <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Export se nezdařil"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Data kontaktů nebyla exportována."\n"Důvod: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Žádný kontakt nelze exportovat."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"V úložišti je příliš mnoho souborů vCard."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Na kartě SD je příliš mnoho souborů vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Požadovaný název souboru (<xliff:g id="FILENAME">%s</xliff:g>) je příliš dlouhý."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Export souboru <xliff:g id="FILENAME">%s</xliff:g> byl dokončen."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Export souboru <xliff:g id="FILENAME">%s</xliff:g> byl zrušen."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Export dat kontaktů"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Data kontaktů jsou exportována do souboru <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nelze spustit nástroj pro export: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Při exportu došlo k chybě: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nepodařilo se získat informace o databázi."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nelze exportovat žádné kontakty. Pokud máte v tabletu skutečně uložené kontakty, je možné, že některý poskytovatel datových služeb zakázal jejich export mimo tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nelze exportovat žádné kontakty. Pokud máte v telefonu skutečně uložené kontakty, je možné, že některý poskytovatel datových služeb zakázal jejich export mimo telefon."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Editor souboru vCard nebyl správně spuštěn."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Soubor <xliff:g id="FILE_NAME">%s</xliff:g> nelze otevřít: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Zrušit import souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Zrušit export souboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Import/export vizitky vCard nelze zrušit"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Jména vašich kontaktů"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Přidat 2s pauzu"</string>
- <string name="add_wait" msgid="3360818652790319634">"Přidat čekání"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Zvolte číslo"</string>
- <string name="call_settings" msgid="7666474782093693667">"Nastavení"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Zvolte číslo"</string>
- <string name="make_primary" msgid="5829291915305113983">"Zapamatovat tuto volbu"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikace potřebná k provedení této akce nebyla nalezena."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Žádné jméno)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Vymazat často kontaktované os."</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty k zobrazení"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importovat/Exportovat"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importovat nebo exportovat kontakty"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importovat kontakty"</string>
<string name="menu_share" msgid="943789700636542260">"Sdílet"</string>
<string name="share_via" msgid="563121028023030093">"Sdílet kontakt pomocí"</string>
- <string name="share_error" msgid="948429331673358107">"Tento kontakt nelze sdílet."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Jméno"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Přezdívka"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizace"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Webové stránky"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Události"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Vztah"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Skupiny"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Vytvořit kontakt na základě účtu"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Vytvořit skupinu v účtu"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Odstranit synchronizovanou skupinu"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Přidat synchronizovanou skupinu"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Další skupiny…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Všechny ostatní kontakty"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Všechny kontakty"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Odebráním skupiny <xliff:g id="GROUP">%s</xliff:g> ze synchronizace odeberete ze synchronizace také všechny kontakty mimo skupinu."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Pouze v tabletu, nesynchronizováno"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Pouze v telefonu, nesynchronizováno"</string>
- <string name="call_custom" msgid="7756571794763171802">"Volat kontakt <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Volat domů"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Volat mobil"</string>
- <string name="call_work" msgid="5328785911463744028">"Volat do práce"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Volat pracovní fax"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Volat domácí fax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Volat pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Volat"</string>
- <string name="call_callback" msgid="1910165691349426858">"Volat na číslo zpětného volání"</string>
- <string name="call_car" msgid="3280537320306436445">"Volat do auta"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Volat firmu (hlavní)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Volat na číslo ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Volat na hlavní číslo"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Volat fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Volat radiostanici"</string>
- <string name="call_telex" msgid="2223170774548648114">"Volat na číslo Telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Volat na číslo TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Volat na pracovní mobil"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Volat na pracovní pager"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Volat na číslo <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Volat MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Poslat SMS na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS domů"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS na mobil"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS do práce"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS na pracovní fax"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS na domácí fax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS na pager"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Odeslat zprávu na číslo zpětného volání"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS do auta"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS do firmy (hlavní)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Odeslat zprávu na číslo ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Odeslat zprávu na hlavní číslo"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS na fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS na radiotelefon"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Odeslat zprávu na číslo Telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Odeslat zprávu na číslo TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Odeslat zprávu na pracovní mobil"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Odeslat zprávu na pracovní pager"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Odeslat zprávu asistentovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS na číslo MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Textová zpráva"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail domů"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail na mobil"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail do práce"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mail <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Zobrazit adresu domů"</string>
- <string name="map_work" msgid="1360474076921878088">"Zobrazit pracovní adresu"</string>
- <string name="map_other" msgid="3817820803587012641">"Zobrazit adresu"</string>
- <string name="map_custom" msgid="6184363799976265281">"Zobrazit adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatovat pomocí AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatovat pomocí Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatovat pomocí Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatovat pomocí Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatovat pomocí QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatovat pomocí Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatovat pomocí ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatovat pomocí Jabberu"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Hlasový chat"</string>
<string name="video_chat" msgid="1872255818640336072">"Videochat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresa"</string>
- <string name="postal_street" msgid="8133143961580058972">"Ulice"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Číslo poštovní schránky"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Čtvrť"</string>
- <string name="postal_city" msgid="6597491300084895548">"Město"</string>
- <string name="postal_region" msgid="6045263193478437672">"Stát"</string>
- <string name="postal_postcode" msgid="572136414136673751">"PSČ"</string>
- <string name="postal_country" msgid="7638264508416368690">"Země"</string>
- <string name="full_name" msgid="6602579550613988977">"Jméno"</string>
- <string name="name_given" msgid="1687286314106019813">"Křestní jméno"</string>
- <string name="name_family" msgid="3416695586119999058">"Příjmení"</string>
- <string name="name_prefix" msgid="59756378548779822">"Titul před jménem"</string>
- <string name="name_middle" msgid="8467433655992690326">"Další jméno"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Titul za jménem"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Křestní jméno (foneticky)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Druhé jméno (foneticky)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Příjmení (foneticky)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Jméno (foneticky)"</string>
<string name="connections" msgid="8098440723172028350">"Spojení"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Přidat spojení"</string>
<string name="recent" msgid="2659189233141493004">"Poslední"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Seřadit seznam podle"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Křestní jméno"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Příjmení"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Zobrazení jmen kontaktů"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Zobrazit jména kontaktů"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nejprve křestní jméno"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nejprve příjmení"</string>
<string name="take_photo" msgid="7496128293167402354">"Vyfotit"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Zobrazit vše"</string>
<string name="menu_select_all" msgid="621719255150713545">"Vybrat vše"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Zrušit výběr všech"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nevybrali jste žádné kontakty."</string>
<string name="add_field" msgid="2384260056674995230">"Přidat další pole"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Přidat nové"</string>
<string name="add_organization" msgid="7311893231158291197">"Přidat organizaci"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"sloučení se nezdařilo"</item>
<item quantity="other" msgid="425683718017380845">"sloučeno ze <xliff:g id="COUNT">%0$d</xliff:g> zdrojů"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Ostatní"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Spojit aktuální kontakt s vybraným kontaktem?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Přepnout do režimu úpravy vybraného kontaktu? Doposud zadané informace budou zkopírovány."</string>
<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="directory_search_label" msgid="1887759056597975053">"Adresář"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Všechny kontakty"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Vytváření osobní kopie..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Všechny kontakty"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Označené hvězdičkou"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Vlastní"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Přizpůsobit"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Všechny kontakty s telefonními čísly"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definice vlastního zobrazení"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Načítá se..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavení"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty k zobrazení"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavení"</string>
<string name="menu_help" msgid="5123887102216637725">"Nápověda"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti zobrazení"</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="hint_findContacts" msgid="1808681193458772072">"Najít kontakty"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonní číslo"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Přidat do kontaktů"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Přidat do kontaktu"</string>
@@ -497,61 +215,7 @@
<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">"Nastavit profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Zadejte jméno osoby"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Zobrazit aktualizace"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hlasová schránka"</item>
- <item quantity="other" msgid="5513481419205061254">"Hlasové zprávy: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Přehrát"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová zpráva – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Hlasovou zprávu nelze přehrát."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Ukládání do vyrovnávací paměti…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Načítání hlasové schránky…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nepodařilo se načíst hlasovou zprávu."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nové"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Starší"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Jen hovory s hlasovou schránkou"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Jen příchozí hovory"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Jen odchozí hovory"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Jen zmeškané hovory"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nelze se připojit k serveru hlasové schránky."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Nové zprávy v hlasové schránce. K serveru se nelze připojit."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Nastavte hlasovou schránku."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Zvuk není k dispozici."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavit"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Volat hlas. schránku"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Nejnižší rychlost"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Nízká rychlost"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Běžná rychlost"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Vysoká rychlost"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Nejvyšší rychlost"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Název skupiny"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt přijatý přes NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Zobrazit pouze odchozí"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Zobrazit pouze příchozí"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Zobrazit pouze zmeškané"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobrazit pouze hlas. schránku"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobrazit všechny hovory"</string>
- <string name="status_available" msgid="5586870015822828392">"K dispozici"</string>
- <string name="status_away" msgid="1838861100379804730">"Pryč"</string>
- <string name="status_busy" msgid="9147992455450257136">"Nemám čas"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Přehrát hlasovou schránku"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Příchozí hovor"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Odchozí hovor"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Zmeškaný hovor"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Hlasová schránka"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Přidat kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Zobrazit kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Volat kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Odeslat textovou zprávu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevyslechnutá hlasová zpráva"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Odeslat zprávu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Vytočit číslo kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Rychlý kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Já"</string>
<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>
@@ -564,10 +228,6 @@
<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="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hovor nebyl odeslán"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Chcete-li nastavit hlasovou schránku, přejděte do části Menu > Nastavení."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Chcete-li volat hlasovou schránku, nejdříve vypněte režim V letadle."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportovat soubory databáze"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Více možností"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Rozbalit nebo sbalit pole jména"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Chcete-li obrázek změnit, vyberte jej"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 1319093..87354db 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Personer"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Om"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Opdateringer"</string>
<string name="searchHint" msgid="8482945356247760701">"Søg i kontakter"</string>
- <string name="menu_search" msgid="9147752853603483719">"Søg"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Vis kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Føj til favoritter"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Slet"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiér"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placer på startskærmen"</string>
<string name="menu_call" msgid="3992595586042260618">"Ring til kontakt"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Send sms til kontakt"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Gem"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Annuller"</string>
<string name="menu_discard" msgid="6456087569315685632">"Kassér"</string>
- <string name="label_notes" msgid="8337354953278341042">"Noter"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetopkald"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Virksomhed"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Opret ny kontaktperson"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresse"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisation"</item>
<item msgid="7196592230748086755">"Note"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Der er ingen kontakter."</string>
<string name="noGroups" msgid="8614664663561385253">"Ingen grupper."</string>
<string name="noAccounts" msgid="7768267764545265909">"Du skal have en konto for at kunne oprette grupper."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Der blev ikke fundet nogen matchende kontakter."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Der er ingen kontakter med telefonnumre."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Ingen personer i denne gruppe."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Rediger gruppen for at tilføje nogen."</string>
<string name="savingContact" msgid="4075751076741924939">"Gemmer kontakt..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Gemmer indstillinger for visning…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakten er gemt."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Der kunne ikke gemmes ændringer i kontaktpersoner."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Gruppen er gemt."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontaktperson"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersoner"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Ingen kontaktpersoner."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Ingen synlige kontaktpersoner."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Der er ingen foretrukne."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Ingen kontakter i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontaktpersoner i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Enkelt kontaktperson"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontaktpersoner i tilpasset visning"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Der er fundet mere end <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Ingen kontaktpersoner"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 fundet"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontaktpersoner"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favorit"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Foretrukne og alle kontakter"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Opk.liste"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Send sms"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer inden opkald"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Føj til kontakter"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Fjern fra opkaldsliste"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Ryd opkaldsliste"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Slet telefonsvarerbesked"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Del telefonsvarerbesked"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Opkaldslisten er tom."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Ryd opkaldsliste?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Alle registrerede opkald slettes."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Rydder opkaldslisten..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vil du rydde de ofte kontaktede?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Hvis du gør dette, rydder du listen over personer, som du ofte kontakter, i appene Personer og Telefon. Du vil samtidig tvinge e-mailapps til at lære dine adressepræferencer fra bunden."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Rydder ofte kontaktede personer…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
- <string name="unknown" msgid="740067747858270469">"Ukendte"</string>
- <string name="private_num" msgid="6374339738119166953">"Privat nummer"</string>
- <string name="payphone" msgid="4864313342828942922">"Betalingstelefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Brug tastatur til at ringe op"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Ring og tilføj et opkald"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Indlæser fra SIM-kort ..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Du har ingen kontaktpersoner. (Hvis du lige har tilføjet en konto, kan det tage et par minutter at synkronisere kontaktpersoner)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Du har ingen kontaktpersoner."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Der er ingen kontaktpersoner at vise."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere på din tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SIM-kort eller SD-kort"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Der er ingen kontaktpersoner at vise."\n\n"Du kan tilføje kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SIM- eller SD-kort"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Der er ingen kontaktpersoner at vise. (Hvis du lige har tilføjet en konto, kan det tage et par minutter at synkronisere kontaktpersoner)."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere på din tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsindstillinger"</b></font>" for at ændre, hvilke kontaktpersoner der er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SIM-kort eller SD-kort"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Du har ingen kontaktpersoner at vise. (Hvis du lige har tilføjet en konto, kan det tage et par minutter at synkronisere kontaktpersoner)."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, der kan synkroniseres på telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsindstillinger"</b></font>" for at ændre, hvilke kontaktpersoner der er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SIM-kort eller SD-kort"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Der er ingen kontaktpersoner at vise."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere på din tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SD-kort"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Der er ingen kontaktpersoner at vise."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere på telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SD-kort"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Der er ingen kontaktpersoner at vise. (Hvis du lige har tilføjet en konto, kan det tage nogle minutter at synkronisere kontaktpersoner)."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere med din tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Valgmuligheder for visning"</b></font>" for at ændre, hvilke kontaktpersoner der skal vises"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SD-kort"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Der er ingen kontaktpersoner at vise. (Hvis du lige har tilføjet en konto, kan det tage et par minutter at synkronisere kontaktpersoner)."\n\n"Tilføj kontaktpersoner ved at trykke på "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" og på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>" for at tilføje eller konfigurere en konto med kontaktpersoner, som du kan synkronisere på telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsindstillinger"</b></font>" for at ændre, hvilke kontaktpersoner der er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontaktperson"</b></font>" for at oprette en ny kontaktperson helt fra bunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer og eksporter"</b></font>" for at importere kontaktpersoner fra dit SD-kort"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Du har ingen favoritter."\n\n"Sådan føjer du en kontaktperson til din liste over favoritter:"\n\n" "<li>"Tryk på fanen "<b>"Kontaktpersoner"</b>\n</li>" "\n<li>"Tryk på den kontaktperson, du ønsker at føje til dine foretrukne"\n</li>" "\n<li>"Tryk på stjerne ud for kontaktpersonens navn"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Brug touch-tone-tastatur"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Vend tilbage til igangværende opkald"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tilføj opk."</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Opkaldsdetaljer"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Detaljerne for det anmodede opkald kunne ikke læses."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Indgående opkald"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Udgående opkald"</string>
- <string name="type_missed" msgid="2720502601640509542">"Ubesvarede opkald"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Telefonsvarer"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Indgående opkald"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Jævnligt kontaktet"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ofte ringet til"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Føj \"<xliff:g id="EMAIL">%s</xliff:g>\" til kontaktpersoner?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"et"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"to"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tre"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"fire"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"fem"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seks"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"syv"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"otte"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"ni"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"stjernemarker"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nul"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pund"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"voicemail"</string>
- <string name="description_search_button" msgid="3660807558587384889">"søg"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"ring op"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nummer at ringe op"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontaktpersonfoto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"slet"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Vis kontaktperson"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Intet lager blev fundet."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Ingen SD-kort fundet."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importer fra SIM-kort"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importer fra lager"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksporter til lager"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Del synlige kontaktpersoner"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importer en VCard-fil"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importer flere VCard-filer"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer alle VCard-filer"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Søger efter vCard-data på lager..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Søger efter vCard-data på SD-kortet..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Lageret kunne ikke scannes. (Årsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kortet kunne ikke scannes. (Årsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fejl"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Ikke nok hukommelse. Filen kan være for stor."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"vCard kunne ikke parses af uventede årsager."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formatet understøttes ikke."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard kunne ikke importeres."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Der blev ikke fundet nogen vCard-filer på lageret."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Der blev ikke fundet nogen vCard-filer på SD-kortet."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Metaoplysninger om de angivne vCard-filer kunne ikke hentes."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"En eller flere filer kunne ikke importeres (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Ukendt fejl."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Vælg vCard-fil"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Cachelagrer"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Cachelagrer vCard(s) til lokalt midlertidigt lager. Den egentlige import starter snart."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importerer <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importerer <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Dataene på dette vCard kunne ikke læses"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Læsning af vCard-data blev annulleret"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Import af vCard afsluttet <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Import af <xliff:g id="FILENAME">%s</xliff:g> blev annulleret"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> importeres om et øjeblik."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Filen importeres inden længe."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Anmodningen om import af vCard blev afvist. Prøv igen senere."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> eksporteres om et øjeblik."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Anmodningen om eksport af vCard blev afvist. Prøv igen senere."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksporter kontakter?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Listen over dine kontaktpersoner eksporteres til filen: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Eksport ikke mulig"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontaktpersondataene blev ikke eksporteret."\n"Årsag: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Der er ingen kontaktpersoner, der kan eksporteres."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Der er gemt for mange vCard-filer."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Der er for mange vCard-filer på SD-kortet."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Det krævede filnavn er for langt (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> er eksporteret."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Eksport af <xliff:g id="FILENAME">%s</xliff:g> er annulleret."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Eksporterer kontaktdata"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Dine kontaktdata bliver eksporteret til: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Eksportfunktionen kunne ikke startes: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Der opstod en fejl under eksporten: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Databaseoplysningerne kunne ikke hentes."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Der er ingen kontaktpersoner, der kan eksporteres. Hvis du har kontaktpersoner på din tablet, tillader nogle dataudbydere ikke, at kontaktpersonerne eksporteres fra tabletten."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Der er ingen kontaktpersoner, der kan eksporteres. Hvis du har kontaktpersoner på din telefon, kan nogle dataudbydere ikke tillade, at kontaktpersonerne eksporteres fra telefonen."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Oprettelsen af vCard startede ikke korrekt."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" kunne ikke åbnes: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Vil du annullere import af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vil du annullere eksport af <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Import/eksport af vCard kunne ikke annulleres"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Navne på dine kontakter"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Tilføj pause på 2 sek."</string>
- <string name="add_wait" msgid="3360818652790319634">"Tilføj Vent"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Vælg nummer"</string>
- <string name="call_settings" msgid="7666474782093693667">"Indstillinger"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Vælg nummer"</string>
- <string name="make_primary" msgid="5829291915305113983">"Husk dette valg"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Der blev ikke fundet nogen app, der kan håndtere denne handling."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Intet navn)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Konti"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Ryd hyppige"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter, der skal vises"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importer og eksporter"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/eksport kontakter"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importer kontaktpersoner"</string>
<string name="menu_share" msgid="943789700636542260">"Del"</string>
<string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
- <string name="share_error" msgid="948429331673358107">"Denne kontaktperson kan ikke deles."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Navn"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Kaldenavn"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisation"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Begivenheder"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Forhold"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupper"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Opret kontakt under konto"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Opret gruppe på konto"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Fjern synkroniseringsgruppe"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Tilføj synkroniseringsgruppe"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Flere grupper ..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alle andre kontaktpersoner"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alle kontaktpersoner"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Hvis du fjerner \"<xliff:g id="GROUP">%s</xliff:g>\" fra synkroniseringen, fjernes alle ugrupperede kontaktpersoner fra synkroniseringen."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Kun tablet, ikke synkroniseret"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Kun telefon, ikke synkroniseret"</string>
- <string name="call_custom" msgid="7756571794763171802">"Ring til <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Ring hjem"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Ring til mobil"</string>
- <string name="call_work" msgid="5328785911463744028">"Ring til arbejde"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Ring til arbejdsfax"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Ring til hjemmefax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Ring til personsøger"</string>
- <string name="call_other" msgid="8563753966926932052">"Opkald"</string>
- <string name="call_callback" msgid="1910165691349426858">"Ring til tilbagekald"</string>
- <string name="call_car" msgid="3280537320306436445">"Ring til bil"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Ring til arbejde (hovednummer)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Ring til ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Ring til hoved"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Ring til fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Ring til radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Ring til telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Ring til TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Ring til arbejdsmobiltelefon"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Ring til personsøger på arbejdet"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Ring til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Ring til mms"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Tekst <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Sms til hjem"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Sms til mobil"</string>
- <string name="sms_work" msgid="2269624156655267740">"Sms til arbejde"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Sms til arbejdsfax"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Sms til hjemmefax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Sms til personsøger"</string>
- <string name="sms_other" msgid="806127844607642331">"Send sms"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Send sms til mistede opkald"</string>
- <string name="sms_car" msgid="7444227058437359641">"Sms til bil"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Sms til arbejde (hovednummer)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Send sms til ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Send sms til hoved"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Send sms til fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Sms til radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Send sms til telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Send sms til TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Send sms til arbejdsmobiltelefon"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Send sms til personsøger til arbejdet"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Send sms til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Sms til mms"</string>
- <string name="sms" msgid="1756857139634224222">"Sms"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail til hjem"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail til mobil"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail til arbejde"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mail <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Vis hjemmeadresse"</string>
- <string name="map_work" msgid="1360474076921878088">"Vis arbejdsadresse"</string>
- <string name="map_other" msgid="3817820803587012641">"Vis adresse"</string>
- <string name="map_custom" msgid="6184363799976265281">"Vis <xliff:g id="CUSTOM">%s</xliff:g> adresse"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chat ved hjælp af AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chat ved hjælp af Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chat ved hjælp af Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chat ved hjælp af Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chat ved hjælp af QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chat ved hjælp af Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chat ved hjælp af ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chat ved hjælp af Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Talechat"</string>
<string name="video_chat" msgid="1872255818640336072">"Videochat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresse"</string>
- <string name="postal_street" msgid="8133143961580058972">"Gade"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postboks"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Nabolag"</string>
- <string name="postal_city" msgid="6597491300084895548">"By"</string>
- <string name="postal_region" msgid="6045263193478437672">"Stat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postnummer"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Navn"</string>
- <string name="name_given" msgid="1687286314106019813">"Fornavn"</string>
- <string name="name_family" msgid="3416695586119999058">"Efternavn"</string>
- <string name="name_prefix" msgid="59756378548779822">"Navnepræfiks"</string>
- <string name="name_middle" msgid="8467433655992690326">"Mellemnavn"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Navnesuffiks"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetisk fornavn"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetisk mellemnavn"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetisk efternavn"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetisk navn"</string>
<string name="connections" msgid="8098440723172028350">"Forbindelser"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Tilføj forbindelse"</string>
<string name="recent" msgid="2659189233141493004">"Seneste"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sorter liste efter"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Fornavn"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Efternavn"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Vis personers navne som"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Se kontaktnavne"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Fornavn først"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Efternavn først"</string>
<string name="take_photo" msgid="7496128293167402354">"Tag billede"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Vis alle"</string>
<string name="menu_select_all" msgid="621719255150713545">"Vælg alle"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Fravælg alle"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Ingen kontaktpersoner er valgt."</string>
<string name="add_field" msgid="2384260056674995230">"Tilføj et felt mere"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Tilføj ny"</string>
<string name="add_organization" msgid="7311893231158291197">"Tilføj organisation"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"blev ikke flettet"</item>
<item quantity="other" msgid="425683718017380845">"flettet fra <xliff:g id="COUNT">%0$d</xliff:g> kilder"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Andre"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Forbind den aktuelle kontaktperson med den valgte kontaktperson?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vil du redigere den valgte kontaktperson? Dine indtastninger kopieres."</string>
<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="directory_search_label" msgid="1887759056597975053">"Indeks"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alle kontaktpersoner"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Opretter en privat kopi..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alle kontaktpersoner"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Stjernemarkerede"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Tilpasset"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Tilpas"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alle kontaktpersoner med telefonnumre"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontaktperson"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Angiv tilpasset visning"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Indlæser…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Indstillinger"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Viste kontaktpersoner"</string>
<string name="menu_settings" msgid="377929915873428211">"Indstillinger"</string>
<string name="menu_help" msgid="5123887102216637725">"Hjælp"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Indstillinger for visning"</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="hint_findContacts" msgid="1808681193458772072">"Find kontaktpersoner"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonnummer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Føj til kontaktpersoner"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Føj til kontaktperson"</string>
@@ -497,61 +215,7 @@
<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">"Opret min profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Indtast personens navn"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Se opdateringer"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Telefonsvarer"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> telefonsvarerbeskeder"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spil"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nye besked fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Telefonbeskeden kunne ikke afspilles."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Gemmer i buffer..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Henter telefonsvarerbeskeden..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Telefonsvarerbeskeden kunne ikke hentes."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nye"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Ældre"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Kun opkald med telefonsvarer"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Kun indgående opkald"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Kun udgående opkald"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Kun ubesvarede opkald"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Der kan ikke oprettes forbindelse til telefonsvarerserveren."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Der kan ikke oprettes forbindelse til telefonsvarerserveren. Du har nye beskeder."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Konfigurer din telefonsvarer."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Lyd ikke tilgængelig."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurer"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring til tlfsvarer"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Laveste hastighed"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lav hastighed"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal hastighed"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Høj hastighed"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Højeste hastighed"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Gruppens navn"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Vis kun udgående"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Vis kun indgående"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Vis kun ubesvarede"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis kun telefonsvarerbeskeder"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle opkald"</string>
- <string name="status_available" msgid="5586870015822828392">"Tilgængelig"</string>
- <string name="status_away" msgid="1838861100379804730">"Ikke til stede"</string>
- <string name="status_busy" msgid="9147992455450257136">"Optaget"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Afspil telefonsvarerbesked"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Indgående opkald"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Udgående opkald"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Ubesvaret opkald"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Telefonsvarer"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Tilføj kontaktperson"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Vis kontaktpersonen <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Ring til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Send sms til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Uaflyttet besked på telefonsvareren"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Send meddelelse til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Ring til telefon tilhørende <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Hurtigkontakt for <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Mig"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Gem lokalt"</string>
<string name="add_account" msgid="8201790677994503186">"Tilføj konto"</string>
<string name="add_new_account" msgid="5748627740680940264">"Tilføj ny konto"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Opkaldet blev ikke sendt"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Hvis du vil konfigurere telefonsvareren, skal du gå til Menu > Indstillinger."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hvis du vil ringe til telefonsvareren, skal du først slå Flytilstand fra."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportér databasefiler"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Flere valgmuligheder"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Udvid eller skjul navnefelter"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Billede. Vælg for at ændre"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 5e20e90..a3f040e 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Kontakte"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakte"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Über"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Updates"</string>
<string name="searchHint" msgid="8482945356247760701">"In Kontakten suchen"</string>
- <string name="menu_search" msgid="9147752853603483719">"Suche"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Neuer Kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Kontakt anzeigen"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Zu Favoriten hinzufügen"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Aus Favoriten entfernen"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Bearbeiten"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Löschen"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopieren"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Auf Startbildschirm platzieren"</string>
<string name="menu_call" msgid="3992595586042260618">"Kontakt anrufen"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"SMS an Kontakt"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Fertig"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Abbrechen"</string>
<string name="menu_discard" msgid="6456087569315685632">"Verwerfen"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notizen"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetanruf"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Unternehmen"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Neuen Kontakt erstellen"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-Mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresse"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Firma/Organisation"</item>
<item msgid="7196592230748086755">"Notiz"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Keine Kontakte"</string>
<string name="noGroups" msgid="8614664663561385253">"Keine Gruppen"</string>
<string name="noAccounts" msgid="7768267764545265909">"Sie benötigen ein Konto, um Gruppen erstellen zu können."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Keine passenden Kontakte gefunden"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Keine sichtbaren Kontakte mit Telefonnummern"</string>
<string name="emptyGroup" msgid="7502116218697177370">"Keine Personen in dieser Gruppe"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Bearbeiten Sie die Gruppe, um Personen hinzuzufügen."</string>
<string name="savingContact" msgid="4075751076741924939">"Kontakt wird gespeichert..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Anzeigeoptionen werden gespeichert..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt gespeichert"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Kontaktänderungen konnten nicht gespeichert werden."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Gruppe gespeichert"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 Kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> Kontakte"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Keine Kontakte"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Keine sichtbaren Kontakte"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Keine Favoriten"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Keine Kontakte in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakte in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Einzelner Kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakte in benutzerdefinierter Ansicht"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Mehr als <xliff:g id="COUNT">%d</xliff:g> gefunden"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Keine Kontakte"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 gefunden"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alle Kontakte"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruppen"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoriten"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoriten und alle Kontakte"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Anrufe"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"SMS/MMS senden"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> anrufen"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nr. vor Anruf bearbeiten"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Zu Kontakten hinzufügen"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Aus Anrufliste entfernen"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Anrufliste löschen"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Mailbox-Nachricht löschen"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Mailbox-Nachricht teilen"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Anrufliste ist leer."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Anrufliste löschen?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Ihre gesamte Anrufliste wird gelöscht."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Anrufliste wird gelöscht..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Liste \"Häufig kontaktiert\" löschen?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Sie löschen die Liste \"Häufig kontaktiert\" in den Apps \"Kontakte\" und \"Telefon\" und geben Ihre Adresseinstellungen für E-Mail-Apps neu ein."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"\"Häufig kontaktiert\" wird gelöscht…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Mailbox"</string>
- <string name="unknown" msgid="740067747858270469">"Unbekannt"</string>
- <string name="private_num" msgid="6374339738119166953">"Private Nummer"</string>
- <string name="payphone" msgid="4864313342828942922">"Münztelefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Mit Tastatur wählen"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Nummer wählen"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladevorgang von SIM-Karte läuft..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakte auf SIM-Karte"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Es sind keine Kontakte vorhanden. Wenn Sie gerade ein Konto hinzugefügt haben, kann die Synchronisierung der Kontakte einige Minuten dauern."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Es sind keine Kontakte vorhanden."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Es können keine Kontakte angezeigt werden."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Tablet einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SIM- oder SD-Karte zu importieren."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Es können keine Kontakte angezeigt werden."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Telefon einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SIM- oder SD-Karte zu importieren."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Es können keine Kontakte angezeigt werden. Falls Sie gerade ein Konto hinzugefügt haben, kann die Kontaktsynchronisierung etwas dauern."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Tablet einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anzeigeoptionen"</b></font>", um zu ändern, welche Kontakte angezeigt werden."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SIM- oder SD-Karte zu importieren."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Es können keine Kontakte angezeigt werden. Falls Sie gerade ein Konto hinzugefügt haben, kann die Kontaktsynchronisierung etwas dauern."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Telefon einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anzeigeoptionen"</b></font>", um zu ändern, welche Kontakte angezeigt werden."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SIM- oder SD-Karte zu importieren."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Es können keine Kontakte angezeigt werden."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Tablet einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SD-Karte zu importieren."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Es können keine Kontakte angezeigt werden."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Telefon einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SD-Karte zu importieren."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Es können keine Kontakte angezeigt werden. Falls Sie gerade ein Konto hinzugefügt haben, kann die Kontaktsynchronisierung etwas dauern."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Tablet einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anzeigeoptionen"</b></font>", um zu ändern, welche Kontakte angezeigt werden."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SD-Karte zu importieren."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Es können keine Kontakte angezeigt werden. Falls Sie gerade ein Konto hinzugefügt haben, kann die Kontaktsynchronisierung etwas dauern."\n\n"Zum Hinzufügen von Kontakten drücken Sie "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und tippen dann auf:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konten"</b></font>", um ein Konto hinzuzufügen oder mit Kontakten für die Synchronisierung mit dem Telefon einzurichten."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anzeigeoptionen"</b></font>", um zu ändern, welche Kontakte angezeigt werden."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>", um Kontakte von Ihrer SD-Karte zu importieren."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Es sind keine Favoriten vorhanden."\n\n"So fügen Sie einen Kontakt zu Ihrer Favoritenliste hinzu:"\n\n" "<li>"Berühren Sie den Tab "<b>"Kontakte"</b>"."\n</li>" "\n<li>"Berühren Sie den Kontakt, den Sie zu Ihren Favoriten hinzufügen möchten."\n</li>" "\n<li>"Berühren Sie den Stern neben dem Kontaktnamen."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Telefontastatur verwenden"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Zurück zum aktuellen Anruf"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Anruf hinzufügen"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Anrufdetails"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Details für den angeforderten Anruf konnten nicht gelesen werden."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Eingehender Anruf"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Ausgehender Anruf"</string>
- <string name="type_missed" msgid="2720502601640509542">"Entgangener Anruf"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Mailbox"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Eingehende Anrufe"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> Minuten, <xliff:g id="SECONDS">%s</xliff:g> Sekunden"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Häufig kontaktiert"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Häufig angerufen"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" zu den Kontakten hinzufügen?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"eins"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"zwei"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"drei"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"vier"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"fünf"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sechs"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sieben"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"acht"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"neun"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"Markierung"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"null"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"Pfund"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Mailbox"</string>
- <string name="description_search_button" msgid="3660807558587384889">"Suchen"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"wählen"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Rücktaste"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"Zu wählende Nummer"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"Kontaktbild"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"Löschen"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Kontakt anzeigen"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Kein Speicher gefunden"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Keine SD-Karte gefunden"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Von SIM-Karte importieren"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Aus Speicher importieren"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"In Speicher exportieren"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Sichtbare Kontakte teilen"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Eine vCard-Datei importieren"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Mehrere vCard-Dateien importieren"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Alle vCard-Dateien importieren"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Suche nach vCard-Daten im Speicher..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Suche nach vCard-Daten auf der SD-Karte..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Der Speicher konnte nicht gelesen werden. (Grund: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Die SD-Karte konnte nicht gelesen werden. (Grund: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"E/A-Fehler"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nicht genügend Speicherplatz. Die Datei ist möglicherweise zu groß."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Die vCard konnte aus einem unerwarteten Grund nicht geparst werden."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Das Format wird nicht unterstützt."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Importieren der vCard nicht möglich"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Im Speicher wurde keine vCard-Datei gefunden."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Auf der SD-Karte wurde keine vCard-Datei gefunden."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Abrufen der Metadaten aus angegebenen vCards nicht möglich"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Eine oder mehrere Dateien können nicht importiert werden (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Unbekannter Fehler"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard-Datei wählen"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Caching läuft..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Caching der vCard(s) in lokalen temporären Speicher wird durchgeführt. Der eigentliche Import beginnt gleich."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> wird importiert: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> wird importiert"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Lesen der vCard-Daten nicht möglich"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lesen von vCard-Daten abgebrochen"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Import der vCard <xliff:g id="FILENAME">%s</xliff:g> abgeschlossen"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Import von <xliff:g id="FILENAME">%s</xliff:g> abgebrochen"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> wird demnächst importiert."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Die Datei wird in Kürze importiert."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Die vCard-Importanfrage wurde abgelehnt. Bitte versuchen Sie es später erneut."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> wird demnächst exportiert."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Die vCard-Exportanfrage wurde abgelehnt. Bitte versuchen Sie es später erneut."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"Kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Kontakte exportieren?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Ihre Kontaktliste wird in die Datei \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\" exportiert."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Export nicht möglich"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Die Kontaktdaten wurden nicht exportiert."\n"Grund: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Es ist kein exportierbarer Kontakt vorhanden."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Zu viele vCard-Dateien im Speicher"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Zu viele vCard-Dateien auf der SD-Karte"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Erforderlicher Dateiname ist zu lang (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Export von <xliff:g id="FILENAME">%s</xliff:g> abgeschlossen"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Export von <xliff:g id="FILENAME">%s</xliff:g> abgebrochen"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Kontaktdaten werden exportiert."</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Ihre Kontaktdaten werden in \"<xliff:g id="FILE_NAME">%s</xliff:g>\" exportiert."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Exportprogramm konnte nicht gestartet werden: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Beim Export ist ein Fehler aufgetreten: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Datenbankinformationen konnten nicht abgerufen werden."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Es sind keine exportierbaren Kontakte vorhanden. Falls sich Kontakte auf Ihrem Tablet befinden, ist das Exportieren der Kontakte möglicherweise durch den Datenanbieter gesperrt."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Es sind keine exportierbaren Kontakte vorhanden. Falls sich Kontakte auf Ihrem Telefon befinden, ist das Exportieren der Kontakte möglicherweise durch den Datenanbieter gesperrt."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Das Programm zum Erstellen der vCard wurde nicht richtig gestartet."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" konnte nicht geöffnet werden: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Import von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Export von <xliff:g id="FILENAME">%s</xliff:g> abbrechen?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard-Import/-Export nicht abgebrochen"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Namen meiner Kontakte"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2 Sekunden Pause hinzufügen"</string>
- <string name="add_wait" msgid="3360818652790319634">"Warten hinzufügen"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Nummer auswählen"</string>
- <string name="call_settings" msgid="7666474782093693667">"Einstellungen"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Nummer auswählen"</string>
- <string name="make_primary" msgid="5829291915305113983">"Auswahl speichern"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Für diese Aktion wurde keine App gefunden."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Kein Name)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Konten"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"\"Häufig kontaktiert\" löschen"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakte zur Ansicht"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importieren/Exportieren"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/Export von Kontakten"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Kontakte importieren"</string>
<string name="menu_share" msgid="943789700636542260">"Teilen"</string>
<string name="share_via" msgid="563121028023030093">"Kontakt teilen über"</string>
- <string name="share_error" msgid="948429331673358107">"Dieser Kontakt kann nicht geteilt werden."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Name"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Alias"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Firma/Organisation"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Termine"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Beziehung"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Gruppen"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Neuen Kontakt unter Konto erstellen"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Konto für Gruppenerstellung"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Synchronisierungsgruppe entfernen"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Synchronisierungsgruppe hinzufügen"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Weitere Gruppen..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alle weiteren Kontakte"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alle Kontakte"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Wenn \"<xliff:g id="GROUP">%s</xliff:g>\" aus der Synchronisierung entfernt wird, werden auch alle nicht gruppierten Kontakte aus der Synchronisierung entfernt."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Nur Tablet, keine Synchronisierung"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Nur Telefon, nicht synchronisiert"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g> anrufen"</string>
- <string name="call_home" msgid="1990519474420545392">"Anruf (privat)"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Anruf (mobil)"</string>
- <string name="call_work" msgid="5328785911463744028">"Anruf (geschäftl.)"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Fax (geschäftlich) anrufen"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Fax (privat) anrufen"</string>
- <string name="call_pager" msgid="9003902812293983281">"Anruf (Pager)"</string>
- <string name="call_other" msgid="8563753966926932052">"Anruf"</string>
- <string name="call_callback" msgid="1910165691349426858">"Rückrufnummer anrufen"</string>
- <string name="call_car" msgid="3280537320306436445">"Auto anrufen"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Anruf (Firmenhauptnummer)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDN-Nummer anrufen"</string>
- <string name="call_main" msgid="6082900571803441339">"Hauptnummer anrufen"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Anruf an Fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Anruf (Funktelefon)"</string>
- <string name="call_telex" msgid="2223170774548648114">"Telexnummer anrufen"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDD anrufen"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Anruf Handy (geschäftl.)"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Anruf Pager (geschäftl.)"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g> anrufen"</string>
- <string name="call_mms" msgid="6274041545876221437">"Anruf (MMS)"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Text <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS (privat)"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Text (mobil)"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS (geschäftl.)"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS an Fax (geschäftl.)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS an Fax (privat)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Text-Pager"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS an"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS an Rückrufnummer"</string>
- <string name="sms_car" msgid="7444227058437359641">"Text (Auto)"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Text (Firmenhauptnummer)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS an ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS an Hauptnummer"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS an Fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Text (Funktelefon)"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS an Telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS an TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS an Handy (geschäftl.)"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS an Pager (geschäftl.)"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS an <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Text (MMS)"</string>
- <string name="sms" msgid="1756857139634224222">"SMS"</string>
- <string name="email_home" msgid="8573740658148184279">"E-Mail (privat)"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-Mail (mobil)"</string>
- <string name="email_work" msgid="2807430017302722689">"E-Mail (geschäftl.)"</string>
- <string name="email_other" msgid="3454004077967657109">"E-Mail an"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-Mail <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-Mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Privatadresse anzeigen"</string>
- <string name="map_work" msgid="1360474076921878088">"Geschäftsadresse anzeigen"</string>
- <string name="map_other" msgid="3817820803587012641">"Adresse anzeigen"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g>-Adresse anzeigen"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Über AIM chatten"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Über Windows Live chatten"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Über Yahoo! chatten"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Über Skype chatten"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Über QQ chatten"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Über Google Talk chatten"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Über ICQ chatten"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Über Jabber chatten"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Sprach-Chat"</string>
<string name="video_chat" msgid="1872255818640336072">"Video-Chat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresse"</string>
- <string name="postal_street" msgid="8133143961580058972">"Straße"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postfach"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Nachbarschaft"</string>
- <string name="postal_city" msgid="6597491300084895548">"Stadt"</string>
- <string name="postal_region" msgid="6045263193478437672">"Bundesland"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postleitzahl"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Name"</string>
- <string name="name_given" msgid="1687286314106019813">"Vorname"</string>
- <string name="name_family" msgid="3416695586119999058">"Nachname"</string>
- <string name="name_prefix" msgid="59756378548779822">"Namenpräfix"</string>
- <string name="name_middle" msgid="8467433655992690326">"Zweiter Vorname"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Namensuffix"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Phonetischer Vorname"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Phonetischer zweiter Vorname"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Phonetischer Nachname"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Phonetischer Name"</string>
<string name="connections" msgid="8098440723172028350">"Verbindungen"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Verbindung hinzufügen"</string>
<string name="recent" msgid="2659189233141493004">"Neueste Nachrichten"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Liste sortieren nach"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Vorname"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Nachname"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Kontaktnamen-Anzeige:"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Kontaktnamen anzeigen"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Vorname zuerst"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nachname zuerst"</string>
<string name="take_photo" msgid="7496128293167402354">"Foto machen"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Alle anzeigen"</string>
<string name="menu_select_all" msgid="621719255150713545">"Alle auswählen"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Auswahl für alle aufheben"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Kein Kontakt ausgewählt"</string>
<string name="add_field" msgid="2384260056674995230">"Weiteres Feld hinzufügen"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Hinzufügen"</string>
<string name="add_organization" msgid="7311893231158291197">"Unternehmen hinzufügen"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nicht zusammengeführt"</item>
<item quantity="other" msgid="425683718017380845">"aus <xliff:g id="COUNT">%0$d</xliff:g> Quellen zusammengeführt"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Sonstige"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Aktuellen Kontakt mit ausgewähltem Kontakt zusammenführen?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Zur Bearbeitung des ausgewählten Kontakts wechseln? Die bisher eingegebenen Informationen werden kopiert."</string>
<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="directory_search_label" msgid="1887759056597975053">"Verzeichnis"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alle Kontakte"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Persönliche Kopie wird erstellt..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alle Kontakte"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Markiert"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Benutzerdefiniert"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Anpassen"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alle Kontakte mit Telefonnummern"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Ansicht festlegen"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Wird geladen…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Einstellungen"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakte zur Ansicht"</string>
<string name="menu_settings" msgid="377929915873428211">"Einstellungen"</string>
<string name="menu_help" msgid="5123887102216637725">"Hilfe"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Anzeigeoptionen"</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="hint_findContacts" msgid="1808681193458772072">"Kontakte suchen"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonnummer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Zu Kontakten hinzufügen"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Zu Kontakt hinzufügen"</string>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Updates anzeigen"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mailbox-Nachricht"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Anhören"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Neue Mailbox-Nachricht von <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Abhören der Mailbox nicht möglich"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Pufferung ..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Mailbox-Nachricht wird abgerufen ..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Abrufen der Nachricht nicht möglich"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Neu"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Älter"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Nur Mailbox-Anrufe"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Nur eingehende Anrufe"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Nur ausgehende Anrufe"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Nur entgangene Anrufe"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Es kann keine Verbindung zum Mailbox-Server hergestellt werden."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Verbindung zu Server nicht möglich. Neue Mailbox-Nachrichten"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Mailbox einrichten"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio nicht verfügbar"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Einrichten"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Mailbox anrufen"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Geringste Geschwindigkeit"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Geringe Geschwindigkeit"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normale Geschwindigkeit"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Hohe Geschwindigkeit"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Höchste Geschwindigkeit"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Gruppenname"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt erhalten per NCF"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Nur ausgehende Anrufe anzeigen"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Nur eingehende Anrufe anzeigen"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Nur entgangene Anrufe anzeigen"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Nur Mailbox-Nachr. anzeigen"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle Anrufe anzeigen"</string>
- <string name="status_available" msgid="5586870015822828392">"Verfügbar"</string>
- <string name="status_away" msgid="1838861100379804730">"Abwesend"</string>
- <string name="status_busy" msgid="9147992455450257136">"Beschäftigt"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Mailbox abhören"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Eingehender Anruf"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Ausgehender Anruf"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Entgangener Anruf"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Mailbox-Nachricht"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Kontakt hinzufügen"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Kontakt <xliff:g id="NAME">%1$s</xliff:g> anzeigen"</string>
- <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> anrufen"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"SMS an <xliff:g id="NAME">%1$s</xliff:g> senden"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nicht abgehörte Mailbox-Nachricht"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Nachricht an <xliff:g id="NAME">%1$s</xliff:g> senden"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Telefonnummer für <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Schnellkontakt für <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ich"</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>
@@ -564,10 +228,6 @@
<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="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Anruf nicht verbunden"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Konfigurieren Sie Ihre Mailbox unter \"Menü\" > \"Einstellungen\"."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Deaktivieren Sie zunächst den Flugmodus, um die Mailbox anzurufen."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Datenbankdateien exportieren"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mehr Optionen"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Namensfelder maximieren oder minimieren"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Bild. Zum Ändern auswählen"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 05dbe89..20e2263 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Τηλέφωνο"</string>
<string name="people" msgid="1048457247435785074">"Άτομα"</string>
<string name="contactsList" msgid="8661624236494819731">"Επαφές"</string>
<string name="shortcutContact" msgid="749243779392912958">"Επαφή"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Σχετικά με"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Ενημερώσεις"</string>
<string name="searchHint" msgid="8482945356247760701">"Αναζήτηση επαφών"</string>
- <string name="menu_search" msgid="9147752853603483719">"Αναζήτηση"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Νέα επαφή"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Προβολή επαφής"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Αντιγραφή"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Τοποθέτηση στην αρχική οθόνη"</string>
<string name="menu_call" msgid="3992595586042260618">"Κλήση επαφής"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Αποστολή μηνύματος κειμένου σε επαφή"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Αυτή η επαφή περιέχει πληροφορίες από πολλούς λογαριασμούς. Θα γίνει απόκρυψη και όχι διαγραφή των πληροφοριών που προέρχονται από λογαριασμούς μόνο για ανάγνωση στις λίστες επαφών σας."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Εάν διαγράψετε αυτήν την επαφή, θα γίνει διαγραφή των πληροφοριών από πολλούς λογαριασμούς."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Αυτή η επαφή θα διαγραφεί."</string>
- <string name="menu_done" msgid="796017761764190697">"Τέλος"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Ακύρωση"</string>
<string name="menu_discard" msgid="6456087569315685632">"Απόρριψη"</string>
- <string name="label_notes" msgid="8337354953278341042">"Σημειώσεις"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Κλήση Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Εταιρεία"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Τίτλος"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Τηλέφωνο"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Διεύθυνση ηλεκτρονικού ταχυδρομείου"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Ανταλ.άμεσων μην.(IM)"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Διεύθυνση"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Εταιρεία"</item>
<item msgid="7196592230748086755">"Σημείωση"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Δεν υπάρχουν επαφές."</string>
<string name="noGroups" msgid="8614664663561385253">"Δεν υπάρχουν ομάδες."</string>
<string name="noAccounts" msgid="7768267764545265909">"Για να δημιουργήσετε ομάδες πρέπει να έχετε έναν λογαριασμό."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Δεν βρέθηκαν επαφές που να αντιστοιχούν."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Δεν υπάρχουν επαφές με αριθμούς τηλεφώνου."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Δεν υπάρχουν άτομα σε αυτήν την ομάδα."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Αν θέλετε να προσθέσετε άτομα, επεξεργαστείτε την ομάδα."</string>
<string name="savingContact" msgid="4075751076741924939">"Αποθήκευση επαφής…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Αποθήκευση επιλογών προβολής…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Η επαφή αποθηκεύτηκε."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Δεν ήταν δυνατή η αποθήκευση των αλλαγών που πραγματοποιήθηκαν στις επαφές."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Η ομάδα αποθηκεύτηκε."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 επαφή"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> επαφές"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Δεν υπάρχουν επαφές."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Δεν υπάρχουν ορατές επαφές."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Δεν υπάρχουν αγαπημένα."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Δεν υπάρχουν επαφές στο <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Επαφές στο <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Μία επαφή"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Επαφές σε προσαρμοσμένη προβολή"</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="foundTooManyContacts" msgid="5163335650920020220">"Βρέθηκαν περισσότερα από <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Δεν υπάρχουν επαφές"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Βρέθηκε 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Όλες οι επαφές"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Ομάδες"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Αγαπ."</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Αγαπημένα και όλες οι επαφές"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Τηλέφωνο"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Αρχείο"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Αποστολή μηνύματος κειμένου"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Κλήση <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Επεξεργασία αριθμού πριν την κλήση"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Προσθήκη στις επαφές"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Κατάργηση από το αρχείο καταγραφής κλήσεων"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Εκκαθάριση αρχείου καταγραφής κλήσεων"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Διαγραφή αυτόματου τηλεφωνητή"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Κοινή χρήση αυτόμ. τηλεφωνητή"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Το αρχείο καταγραφής κλήσεων είναι κενό."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Εκκαθάριση αρχείου;"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Όλα τα αρχεία κλήσεων θα διαγραφούν."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Εκκαθάριση αρχ. καταγραφής κλήσεων…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Διαγραφή ατόμων με συχνή επικοινωνία;"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Θα διαγράψετε τη λίστα ατόμων με τα οποία είχατε συχνή επικοινωνία στις εφαρμογές \"Άτομα\" και \"Τηλέφωνο\" και θα κάνετε τις εφαρμογές ηλεκτρονικού ταχυδρομείου να μάθουν τις προτιμήσεις επικοινωνίας σας από την αρχή."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Διαγρ. ατόμων με συχνή επικοινωνία…"</string>
- <string name="imei" msgid="3045126336951684285">"Αριθμός ΙΜΕΙ"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Αυτόματος τηλεφωνητής"</string>
- <string name="unknown" msgid="740067747858270469">"Άγνωστος"</string>
- <string name="private_num" msgid="6374339738119166953">"Απόκρυψη"</string>
- <string name="payphone" msgid="4864313342828942922">"Καρτοτηλέφωνο"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Χρησιμοποιήστε το πληκτρολόγιο για να καλέσετε έναν αριθμό"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Καλέστε έναν αρ. για προσθ. μιας κλήσ."</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Φόρτωση από κάρτα SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Επαφές στην κάρτα SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Δεν υπάρχουν επαφές για προβολή. (Εάν προσθέσατε τώρα ένα λογαριασμό, ο συγχρονισμός των επαφών μπορεί να καθυστερήσει μερικά λεπτά.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Δεν υπάρχουν επαφές για προβολή."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Δεν υπάρχουν επαφές προς εμφάνιση."\n\n"Για να προσθέσετε επαφές, αγγίξτε το στοιχείο "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και έπειτα:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για να προσθέσετε ή να ρυθμίσετε έναν λογαριασμό με επαφές τις οποίες μπορείτε να συγχρονίσετε με το tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για να δημιουργήσετε μαι νέα επαφή"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SIM ή SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Δεν υπάρχουν επαφές προς εμφάνιση."\n\n"Για να προσθέσετε επαφές, αγγίξτε το στοιχείο "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και έπειτα:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για να προσθέσετε ή να ρυθμίσετε έναν λογαριασμό με επαφές τις οποίες μπορείτε να συγχρονίσετε με το τηλέφωνο"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για να δημιουργήσετε μαι νέα επαφή"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα σας SIM ή SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Δεν έχετε επαφές προς προβολή. (Αν προσθέσατε κάποιον λογαριασμό μόλις τώρα, θα χρειαστούν λίγα λεπτά έως ότου γίνει ο συγχρονισμός.)"\n\n"Για την προσθήκη επαφών, πατήστε "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και αγγίξτε την επιλογή:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για την προσθήκη ή ρύθμιση λογαριασμού με επαφές τις οποίες μπορείτε να συγχρονίσετε στο tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Προβολή επιλογών"</b></font>", για να αλλάξετε τις επαφές που είναι ορατές"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για δημιουργία νέας επαφής"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SIM ή SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Δεν έχετε επαφές προς προβολή. (Αν προσθέσατε κάποιον λογαριασμό μόλις τώρα, θα χρειαστούν λίγα λεπτά έως ότου γίνει ο συγχρονισμός.)"\n\n"Για την προσθήκη επαφών, πατήστε "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και αγγίξτε την επιλογή:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για την προσθήκη ή ρύθμιση λογαριασμού με επαφές τις οποίες μπορείτε να συγχρονίσετε στο τηλέφωνο"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Προβολή επιλογών"</b></font>", για να αλλάξετε τις επαφές που είναι ορατές"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για δημιουργία νέας επαφής"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SIM ή SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Δεν υπάρχουν επαφές προς εμφάνιση."\n\n"Για να προσθέσετε επαφές, αγγίξτε το στοιχείο "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και έπειτα:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για να προσθέσετε ή να ρυθμίσετε έναν λογαριασμό με επαφές τις οποίες μπορείτε να συγχρονίσετε με το tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για να δημιουργήσετε μαι νέα επαφή"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα σας SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Δεν υπάρχουν επαφές προς εμφάνιση."\n\n"Για να προσθέσετε επαφές, αγγίξτε το στοιχείο "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και έπειτα:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για να προσθέσετε ή να ρυθμίσετε έναν λογαριασμό με επαφές τις οποίες μπορείτε να συγχρονίσετε με το τηλέφωνο"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για να δημιουργήσετε μαι νέα επαφή"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Δεν έχετε επαφές προς προβολή. (Αν προσθέσατε κάποιον λογαριασμό μόλις τώρα, θα χρειαστούν λίγα λεπτά έως ότου γίνει ο συγχρονισμός.)"\n\n"Για την προσθήκη επαφών, πατήστε "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και αγγίξτε την επιλογή:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για την προσθήκη ή ρύθμιση λογαριασμού με επαφές τις οποίες μπορείτε να συγχρονίσετε στο tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Προβολή επιλογών"</b></font>", για να αλλάξετε τις επαφές που είναι ορατές"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για δημιουργία νέας επαφής"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Δεν έχετε επαφές προς προβολή. (Αν προσθέσατε κάποιον λογαριασμό μόλις τώρα, θα χρειαστούν λίγα λεπτά έως ότου γίνει ο συγχρονισμός.)"\n\n"Για την προσθήκη επαφών, πατήστε "<font fgcolor="#ffffffff"><b>"Μενού"</b></font>" και αγγίξτε την επιλογή:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Λογαριασμοί"</b></font>", για την προσθήκη ή ρύθμιση λογαριασμού με επαφές τις οποίες μπορείτε να συγχρονίσετε στο τηλέφωνο"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Προβολή επιλογών"</b></font>", για να αλλάξετε τις επαφές που είναι ορατές"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Νέα επαφή"</b></font>", για δημιουργία νέας επαφής"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Εισαγωγή/Εξαγωγή"</b></font>" για την εισαγωγή επαφών από την κάρτα SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Δεν έχετε αγαπημένα."\n\n"Για προσθήκη επαφής στη λίστα των αγαπημένων σας:"\n\n" "<li>"Αγγίξτε την καρτέλα "<b>"Επαφές"</b>\n</li>" "\n<li>"Αγγίξτε το όνομα της επαφής που θέλετε να προσθέσετε στα αγαπημένα σας"\n</li>" "\n<li>"Αγγίξτε το αστέρι πλάι στο όνομα της επαφής"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Χρησιμοποιήστε το πληκτρολόγιο αφής ηχητικών τόνων"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Επιστροφή στην κλήση που βρίσκεται σε εξέλιξη"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Προσθήκη κλήσης"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Λεπτομέρειες κλήσης"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Δεν είναι δυνατή η ανάγνωση λεπτομερειών της κλήσης που ζητήθηκε."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Εισερχόμενη κλήση"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Εξερχόμενη κλήση"</string>
- <string name="type_missed" msgid="2720502601640509542">"Αναπάντητη κλήση"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Αυτόματος τηλεφωνητής"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Εισερχόμενες κλήσεις"</string>
<string name="callBack" msgid="5498224409038809224">"Επανάκληση"</string>
<string name="callAgain" msgid="3197312117049874778">"Επανάληψη κλήσης"</string>
<string name="returnCall" msgid="8171961914203617813">"Επιστροφή κλήσης"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> λεπτά <xliff:g id="SECONDS">%s</xliff:g> δευτερόλεπτα"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Επαφές που έχετε συχνή επικοινωνία"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Συχνές κλήσεις"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Προσθήκη του \"<xliff:g id="EMAIL">%s</xliff:g>\" στις επαφές?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"ένα"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"δύο"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"τρία"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"τέσσερα"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"πέντε"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"έξι"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"επτά"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"οχτώ"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"εννιά"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"αστέρι"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"μηδέν"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"σύμβολο δίεσης"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"αυτόματος τηλεφωνητής"</string>
- <string name="description_search_button" msgid="3660807558587384889">"αναζήτηση"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"κλήση"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"αριθμός για κλήση"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"φωτογραφία επαφής"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"διαγραφή"</string>
<string name="description_plus_button" msgid="515164827856229880">"συν"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Προβολή επαφής"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Δεν βρέθηκε χώρος αποθήκευσης."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Δεν βρέθηκε κάρτα SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Εισαγωγή από κάρτα SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Εισαγωγή από τον χώρο αποθ."</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Εξαγωγή στον χώρο αποθ."</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Κοινή χρήση ορατών επαφών"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Εισαγωγή ενός αρχείου VCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Εισαγωγή πολλαπλών αρχείων vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Εισαγωγή όλων των αρχείων vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Αναζήτηση δεδομένων vCard στον χώρο αποθήκευσης..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Αναζήτηση για δεδομένα vCard στην κάρτα SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Δεν ήταν δυνατή η σάρωση του χώρου αποθήκευσης. (Αιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Δεν ήταν δυνατή η σάρωση της κάρτας SD. (Αιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Σφάλμα I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Δεν υπάρχει αρκετή μνήμη. Το αρχείο ενδέχεται να είναι πάρα πολύ μεγάλο."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Δεν ήταν δυνατή η ανάλυση της κάρτας vCard λόγω μη αναμενόμενης αιτίας."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Η μορφή δεν υποστηρίζεται."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Δεν ήταν δυνατή η εισαγωγή κάρτας vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Δεν βρέθηκαν αρχεία vCard στον χώρο αποθήκευσης."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Δεν βρέθηκε αρχείο vCard στην κάρτα SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Δεν ήταν δυνατή η συλλογή πληροφοριών μεταδεδομένων των καρτών vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Δεν ήταν δυνατή η εισαγωγή ενός ή περισσότερων αρχείων (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Άγνωστο σφάλμα."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Επιλογή αρχ. vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Προσωρινή αποθήκευση"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Αλλαγή vCard σε τοπικό χώρο προσωρινής αποθήκευσης. Η εισαγωγή θα ξεκινήσει σύντομα."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Εισαγωγή <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Εισαγωγή <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Αδύν. ανάγν. δεδομ. vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Ακύρωση ανάγνωσης δεδομένων vCard"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Η εισαγωγή vCard ολοκληρώθηκε <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> ακυρώθηκε"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Η <xliff:g id="FILENAME">%s</xliff:g> θα εισαχθεί σύντομα."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Η εισαγωγή του αρχείου θα γίνει σύντομα."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Το αίτημα εισαγωγής vCard απορρίφθηκε. Δοκιμάστε ξανά αργότερα."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Η <xliff:g id="FILENAME">%s</xliff:g> θα εξαχθεί σύντομα."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Το αίτημα εξαγωγής vCard απορρίφθηκε. Δοκιμάστε ξανά αργότερα."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"επαφή"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Εξαγωγή επαφών;"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Η λίστα επαφών σας θα εξαχθεί στο αρχείο: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Αδυναμία εξαγωγής"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Δεν έγινε εξαγωγή των δεδομένων επαφής."\n"Αιτία: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Δεν υπάρχει επαφή με δυνατότητα εξαγωγής."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Υπάρχουν πάρα πολλά αρχεία vCard στον χώρο αποθήκευσης."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Υπάρχουν πάρα πολλά αρχεία vCard στην κάρτα SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Το απαιτούμενο όνομα αρχείου είναι πάρα πολύ μεγάλο (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> ολοκληρώθηκε."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g> ακυρώθηκε."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Εξαγωγή δεδομένων επαφών"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Τα δεδομένα επαφής σας εξάγονται στο αρχείο: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Δεν ήταν δυνατή η έναρξη του εξαγωγέα: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Προέκυψε κάποιο σφάλμα κατά την εξαγωγή: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Δεν ήταν δυνατή η λήψη πληροφοριών βάσης δεδομένων."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Δεν υπάρχουν επαφές προς εξαγωγή. Αν υπάρχουν επαφές στο tablet, ορισμένοι πάροχοι δεδομένων ενδέχεται να μην επιτρέπουν την εξαγωγή επαφών από το tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Δεν υπάρχουν επαφές προς εξαγωγή. Αν υπάρχουν επαφές στο τηλέφωνό σας, ορισμένοι πάροχοι δεδομένων ενδέχεται να μην επιτρέπουν την εξαγωγή των επαφών από το τηλέφωνο."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Η έναρξη της vCard δεν ήταν σωστή."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Δεν ήταν δυνατό το άνοιγμα του αρχείου \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Να ακυρωθεί η εισαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Να ακυρωθεί η εξαγωγή του αρχείου <xliff:g id="FILENAME">%s</xliff:g>;"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Αδ.ακύρ.εισαγ./εξαγ.vCard"</string>
- <string name="search_settings_description" msgid="2675223022992445813">"Ονόματα ων επαφών σας"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Προσθήκη παύσης 2 δευτερολέπτων"</string>
- <string name="add_wait" msgid="3360818652790319634">"Προσθήκη αναμονής"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Επιλέξτε αριθμό"</string>
- <string name="call_settings" msgid="7666474782093693667">"Ρυθμίσεις"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Επιλέξτε αριθμό"</string>
- <string name="make_primary" msgid="5829291915305113983">"Διατήρηση αυτής της ρύθμισης"</string>
+ <string name="search_settings_description" msgid="2675223022992445813">"Ονόματα των επαφών σας"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Δεν βρέθηκε εφαρμογή για τη διαχείριση αυτής της ενέργειας."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Χωρίς όνομα)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Λογαριασμοί"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Διαγραφή ατόμ. με συχνή επικ."</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Επαφές για εμφάνιση"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Εισαγωγή/Εξαγωγή"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Εισαγωγή/Εξαγωγή επαφών"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Εισαγωγή επαφών"</string>
<string name="menu_share" msgid="943789700636542260">"Κοινή χρήση"</string>
<string name="share_via" msgid="563121028023030093">"Κοινή χρήση μέσω"</string>
- <string name="share_error" msgid="948429331673358107">"Δεν είναι δυνατή η κοινή χρήση αυτής της επαφής."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Όνομα"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Ψευδώνυμο"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Οργανισμός"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Ιστότοπος"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Συμβάντα"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Σχέση"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Ομάδες"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Δημιουργία επαφής στον λογαριασμό"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Δημιουργία ομάδας στο λογαριασμό"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Κατάργηση ομάδας συγχρονισμού"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Προσθήκη ομάδας συγχρονισμού"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Περισσότερες ομάδες…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Όλες οι άλλες επαφές"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Όλες οι επαφές"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Η κατάργηση της ομάδας \"<xliff:g id="GROUP">%s</xliff:g>\" από τον συγχρονισμό θα καταργήσει επίσης και τις επαφές χωρίς ομαδοποίηση από τον συγχρονισμό."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Μόνο για tablet, χωρίς συγχρονισμό"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Μόνο στο τηλέφωνο, χωρίς συγχρονισμό"</string>
- <string name="call_custom" msgid="7756571794763171802">"Κλήση <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Κλήση οικίας"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Κλήση κινητής συσκευής"</string>
- <string name="call_work" msgid="5328785911463744028">"Κλήση εργασίας"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Κλήση φαξ εργασίας"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Κλήση φαξ οικίας"</string>
- <string name="call_pager" msgid="9003902812293983281">"Κλήση βομβητή"</string>
- <string name="call_other" msgid="8563753966926932052">"Κλήση"</string>
- <string name="call_callback" msgid="1910165691349426858">"Κλήση αριθμού επανάκλησης"</string>
- <string name="call_car" msgid="3280537320306436445">"Κλήση τηλεφώνου αυτοκινήτου"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Κλήση κύριας εταιρικής γραμμής"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Κλήση ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Κλήση κύριου αριθμού"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Κλήση φαξ"</string>
- <string name="call_radio" msgid="8296755876398357063">"Κλήση πομπού"</string>
- <string name="call_telex" msgid="2223170774548648114">"Κλήση σε τηλέτυπο"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Κλήση σε τηλέφωνο TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Κλήση κινητού τηλεφώνου εργασίας"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Κλήση βομβητή εργασίας"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Κλήση <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Κλήση MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Αποστολή μηνύματος κειμένου προς <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Αποστολή μηνύματος κειμένου προς οικία"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Αποστολή μηνύματος κειμένου προς κινητή συσκευή"</string>
- <string name="sms_work" msgid="2269624156655267740">"Αποστολή μηνύματος κειμένου προς εργασία"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Αποστολή μηνύματος κειμένου προς φαξ εργασίας"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Αποστολή μηνύματος κειμένου προς φαξ οικίας"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Αποστολή μηνύματος κειμένου προς βομβητή"</string>
- <string name="sms_other" msgid="806127844607642331">"Αποστολή μηνύματος κειμένου"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Αποστολή μηνύματος κειμένου σε αριθμό επανάκλησης"</string>
- <string name="sms_car" msgid="7444227058437359641">"Αποστολή μηνύματος κειμένου προς τηλέφωνο αυτοκινήτου"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Αποστολή μηνύματος κειμένου προς κύρια εταιρική γραμμή"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Αποστολή κειμένου σε ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Αποστολή μηνύματος κειμένου προς κύριο αριθμό"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Αποστολή μηνύματος κειμένου σε φαξ"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Αποστολή μηνύματος κειμένου προς πομπό"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Αποστολή μηνύματος κειμένου σε τηλέτυπο"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Αποστολή μηνύματος κειμένου προς τηλέφωνο TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Αποστολή μηνύματος κειμένου προς κινητό τηλέφωνο εργασίας"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Αποστολή μηνύματος κειμένου προς βομβητή εργασίας"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Αποστολή μηνύματος κειμένου προς <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Αποστολή μηνύματος κειμένου ως MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Μήνυμα κειμένου"</string>
- <string name="email_home" msgid="8573740658148184279">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς οικία"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς κινητή συσκευή"</string>
- <string name="email_work" msgid="2807430017302722689">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς εργασία"</string>
- <string name="email_other" msgid="3454004077967657109">"Μήνυμα ηλεκτρονικού ταχυδρομείου"</string>
- <string name="email_custom" msgid="7548003991586214105">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου προς <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Διεύθυνση ηλεκτρονικού ταχυδρομείου"</string>
- <string name="map_home" msgid="1243547733423343982">"Προβολή διεύθυνσης οικίας"</string>
- <string name="map_work" msgid="1360474076921878088">"Προβολή διεύθυνσης εργασίας"</string>
- <string name="map_other" msgid="3817820803587012641">"Προβολή διεύθυνσης"</string>
- <string name="map_custom" msgid="6184363799976265281">"Προβολή διεύθυνσης <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Συζήτηση μέσω AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Συζήτηση μέσω Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Συζήτηση μέσω Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Συζήτηση μέσω Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Συζήτηση μέσω QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Συζήτηση μέσω Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Συζήτηση μέσω ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Συζήτηση μέσω Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Συζήτηση"</string>
<string name="audio_chat" msgid="2535716629358298691">"Φωνητική συνομιλία"</string>
<string name="video_chat" msgid="1872255818640336072">"Συζήτηση μέσω βίντεο"</string>
- <string name="postal_address" msgid="8765560217149624536">"Διεύθυνση"</string>
- <string name="postal_street" msgid="8133143961580058972">"Οδός"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Ταχυδρομική θυρίδα"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Γειτονιά"</string>
- <string name="postal_city" msgid="6597491300084895548">"Πόλη"</string>
- <string name="postal_region" msgid="6045263193478437672">"Πολιτεία"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Ταχυδρομικός κώδικας"</string>
- <string name="postal_country" msgid="7638264508416368690">"Χώρα"</string>
- <string name="full_name" msgid="6602579550613988977">"Όνομα"</string>
- <string name="name_given" msgid="1687286314106019813">"Όνομα"</string>
- <string name="name_family" msgid="3416695586119999058">"Επίθετο"</string>
- <string name="name_prefix" msgid="59756378548779822">"Πρόθεμα ονόματος"</string>
- <string name="name_middle" msgid="8467433655992690326">"Πατρώνυμο"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Επίθημα ονόματος"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Φωνητική μορφή ονόματος"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Φωνητική γραφή ονόματος πατρός"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Φωνητική γραφή επιθέτου"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Όνομα σε φωνητική γραφή"</string>
<string name="connections" msgid="8098440723172028350">"Συνδέσεις"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Προσθ. σύνδεσης"</string>
<string name="recent" msgid="2659189233141493004">"Πρόσφατες"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Προβολή ονομάτων επαφών ως"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Δεν έχουν επιλεγεί επαφές."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"δεν συγχωνεύθηκαν"</item>
<item quantity="other" msgid="425683718017380845">"συγχώνευση από <xliff:g id="COUNT">%0$d</xliff:g> προελεύσεις"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Άλλο"</string>
<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="directory_search_label" msgid="1887759056597975053">"Κατάλογος"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Όλες οι επαφές"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Δημιουργία προσωπικού αντιγράφου..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Όλες οι επαφές"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Με αστέρι"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Προσαρμοσμένη"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Προσαρμογή"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Όλες οι επαφές με αριθμούς τηλεφώνου"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Επαφή"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Ορισμός προσαρμοσμένης προβολής"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Φόρτωση…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ρυθμίσεις"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Επαφές για προβολή"</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="hint_findContacts" msgid="1808681193458772072">"Εύρεση επαφών"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Προβολή ενημερώσεων"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Αυτόματος τηλεφωνητής"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> μηνύμ. αυτόμ. τηλεφωνητή"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Αναπαραγωγή"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Νέα μην. αυτ. τηλεφ. από <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Δεν αναπαράχθηκαν τα μην. αυτ. τηλεφ."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Αποθ. στη πρ. μνήμη"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Ανάκτηση μην. αυτ. τηελφ."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Δεν ανακτήθηκαν τα μην. αυτ. τηλεφ."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Νέο"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Παλαιότερα"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Μόνο κλήσεις με ηχητικά μηνύματα"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Μόνο εισερχόμενες κλήσεις"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Μόνο εξερχόμενες κλήσεις"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Μόνο αναπάντητες κλήσεις"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Αδυναμία σύνδεσης με τον διακομιστή αυτόματου τηλεφωνητή."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Αδύν. η σύνδ. με διακομ. αυτόμ. τηλεφ. Υπάρχ. νέα μηνύματα."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Ρύθμιση του τηλεφωνητή σας."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Ο ήχος δεν είναι διαθέσιμος."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Ρύθμιση"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Κλήση αυτόμ. τηλεφ."</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Μικρότερη δυνατή ταχύτητα"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Χαμηλή ταχύτητα"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Κανονική ταχύτητα"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Μεγάλη ταχύτητα"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Μεγαλύτερη δυνατή ταχύτητα"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Όνομα ομάδας"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Λήψ.επ.μέσω ΕΚΠ"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Εμφάνιση μόνο εξερχόμενων"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Εμφάνιση μόνο εισερχόμενων"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Εμφάνιση μόνο αναπάντητων"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Εμφ. μόνο μην. αυτόμ. τηλεφων."</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Εμφάνιση όλων"</string>
- <string name="status_available" msgid="5586870015822828392">"Διαθέσιμος"</string>
- <string name="status_away" msgid="1838861100379804730">"Απουσιάζω"</string>
- <string name="status_busy" msgid="9147992455450257136">"Απασχολημένος"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Αναπαραγωγή μηνύματος αυτόματου τηλεφωνητή"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Εισερχόμενη κλήση"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Εξερχόμενη κλήση"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Αναπάντητη κλήση"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Αυτόματος τηλεφωνητής"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Προσθήκη επαφής"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Προβολή επαφής <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Κλήση του χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Αποστολή μηνύματος κειμένου στον χρήστη <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Μηνύματα αυτόματου τηλεφωνητή που δεν έχετε ακούσει"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Αποστολή μηνύματος προς <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Κλήση αριθμού τηλεφώνου <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Γρήγορη επαφή για <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Εγώ"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Αποθήκευση τοπικά"</string>
<string name="add_account" msgid="8201790677994503186">"Προσθήκη λογαριασμού"</string>
<string name="add_new_account" msgid="5748627740680940264">"Προσθήκη νέου λογαριασμού"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Η κλήση δεν πραγματοποιήθηκε"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Για τη r;yumish του αυτόματου τηλεφωνητή, μεταβείτε στο στοιχείο Μενού > Ρυθμίσεις."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Για κλήση αυτόματου τηλεφωνητή, πρώτα απενεργοποιήστε τη λειτουργία πτήσης."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Εξαγωγή αρχείων βάσης δεδομένων"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Περισσότερες επιλογές"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Ανάπτυξη ή σύμπτυξη πεδίων ονομάτων"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Εικόνα. Επιλέξτε για αλλαγή"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 96d32d9..4c33ced 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Phone"</string>
<string name="people" msgid="1048457247435785074">"People"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
@@ -38,15 +37,11 @@
<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_search" msgid="9147752853603483719">"Search"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"View contact"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Copy"</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>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Done"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancel"</string>
<string name="menu_discard" msgid="6456087569315685632">"Discard"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notes"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internet call"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Company"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Title"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Phone"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Address"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisation"</item>
<item msgid="7196592230748086755">"Note"</item>
@@ -98,12 +83,9 @@
<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="noMatchingContacts" msgid="4266283206853990471">"No matching contacts found."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"No contacts with phone numbers."</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="savingDisplayGroups" msgid="2133152192716475939">"Saving display options…"</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>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contact"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacts"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"No contacts."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"No visible contacts"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"No favourites."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"No contacts in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contacts in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Single contact"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contacts in customised view"</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="foundTooManyContacts" msgid="5163335650920020220">"More than <xliff:g id="COUNT">%d</xliff:g> found."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"No contacts"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 found"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"All contacts"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Groups"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favourites"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favourites and all contacts"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Call log"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Send text message"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Remove from call log"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Clear call log"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Delete voicemail"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Share voicemail"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Call log is empty."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Clear call log?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"All your call records will be deleted."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Clearing call log…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Clear frequently contacted?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"You\'ll clear the frequently contacted list in the People and Phone apps and force email apps to learn your addressing preferences from scratch."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Clearing frequently contacted…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
- <string name="unknown" msgid="740067747858270469">"Unknown"</string>
- <string name="private_num" msgid="6374339738119166953">"Private number"</string>
- <string name="payphone" msgid="4864313342828942922">"Phonebox"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Use keyboard to dial"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Dial to add a call"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"You don\'t have any contacts to display. (If you\'ve just added an account, it can take a few minutes to sync contacts.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"You don\'t have any contacts to display."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"You don\'t have any contacts to display."\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/export"</b></font>" to import contacts from your SIM or SD card"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"You don\'t have any contacts to display."\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the phone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SIM or SD card"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"You don\'t have any contacts to display. (If you\'ve just added an account, it can take a few minutes to sync contacts.)"\n\n"To add contacts, press "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or configure an account with contacts that you can sync to the tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Display options"</b></font>" to change which contacts are visible"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SIM or SD card"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"You don\'t have any contacts to display. (If you\'ve just added an account, it can take a few minutes to sync contacts.)"\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the phone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Display options"</b></font>" to change which contacts are visible"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SIM or SD card"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"You don\'t have any contacts to display."\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SD card"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"You don\'t have any contacts to display."\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the phone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SD card"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"You don\'t have any contacts to display. (If you\'ve just added an account, it can take a few minutes to sync contacts.)"\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Display options"</b></font>" to change which contacts are visible"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SD card"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"You don\'t have any contacts to display. (If you\'ve just added an account, it can take a few minutes to sync contacts.)"\n\n"To add contacts, touch "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", then touch:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" to add or set up an account with contacts you can sync to the phone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Display options"</b></font>" to change which contacts are visible"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"New contact"</b></font>" to create a new contact from scratch"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Export"</b></font>" to import contacts from your SD card"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"You don\'t have any favourites."\n\n"To add a contact to your list of favourites:"\n\n" "<li>"Touch the "<b>"Contacts"</b>" tab"\n</li>" "\n<li>"Touch the contact that you want to add to your favourites"\n</li>" "\n<li>"Touch the star next to the contact\'s name"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Couldn\'t read details for the requested call."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
- <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</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="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> mins <xliff:g id="SECONDS">%s</xliff:g> secs"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Frequently contacted"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frequently called"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Add \"<xliff:g id="EMAIL">%s</xliff:g>\" to contacts?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"one"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"two"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"three"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"four"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"five"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"six"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"seven"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"eight"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nine"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"Star"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pound"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"voicemail"</string>
- <string name="description_search_button" msgid="3660807558587384889">"search"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"contact photo"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"delete"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"View contact"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No storage was found."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No SD card was found."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Import from SIM card"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import from storage"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Export to storage"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Share visible contacts"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Import one vCard file"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Import multiple vCard files"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Import all vCard files"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Searching for vCard data in storage…"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Searching for vCard data on SD card"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"The storage couldn\'t be scanned. (Reason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"The SD card couldn\'t be scanned. (Reason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O error"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Not enough memory. The file may be too large."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Couldn\'t parse vCard for an unexpected reason."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"The format isn\'t supported."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Couldn\'t import vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"No vCard file found in storage."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"No vCard file found on the SD card."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Couldn\'t collect meta information of given vCard file(s)."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"One or more files couldn\'t be imported (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Unknown error."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Choose vCard file"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Caching"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Caching vCard(s) to local temporary storage. The actual import will start soon."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importing <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importing <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Couldn\'t read vCard data"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Reading vCard data cancelled"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Finished importing vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importing <xliff:g id="FILENAME">%s</xliff:g> cancelled"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> will be imported shortly."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"The file will be imported shortly."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard import request was rejected. Try again later."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> will be exported shortly."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard export request was rejected. Try again later."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contact"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Export contacts?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Your contact list will be exported to file: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Couldn\'t export"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"The contact data wasn\'t exported."\n"Reason: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"There is no exportable contact."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Too many vCard files are in the storage."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Too many vCard files are on the SD card."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Required filename is too long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Finished exporting <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exporting <xliff:g id="FILENAME">%s</xliff:g> cancelled."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exporting contact data"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Your contact data is being exported to: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Couldn\'t start the exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"An error occurred during export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Couldn\'t get database information."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"The vCard composer didn\'t start properly."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Couldn\'t open \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancel import of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancel export of <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Couldn\'t cancel vCard import/export"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Names of your contacts"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
- <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
- <string name="call_settings" msgid="7666474782093693667">"Settings"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
- <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No app was found to handle this action."</string>
- <string name="missing_name" msgid="8745511583852904385">"(No name)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Accounts"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Clear frequents"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contacts to display"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Import/export"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/export contacts"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Import contacts"</string>
<string name="menu_share" msgid="943789700636542260">"Share"</string>
<string name="share_via" msgid="563121028023030093">"Share contact via"</string>
- <string name="share_error" msgid="948429331673358107">"This contact cannot be shared."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Name"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Nickname"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisation"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Events"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relationship"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Groups"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Create contact under account"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Create group under account"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Remove sync group"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Add sync group"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"More groups…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"All other contacts"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"All contacts"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Removing \"<xliff:g id="GROUP">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tablet-only, unsynced"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Phone-only, unsynced"</string>
- <string name="call_custom" msgid="7756571794763171802">"Call <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Call home"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Call mobile"</string>
- <string name="call_work" msgid="5328785911463744028">"Call work"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Call work fax"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Call home fax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Call pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Call"</string>
- <string name="call_callback" msgid="1910165691349426858">"Call callback"</string>
- <string name="call_car" msgid="3280537320306436445">"Call car"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Call company main"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Call ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Call main"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Call fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Call radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Call telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Call TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Call work mobile"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Call work pager"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Call <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Call MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Text <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Text home"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Text mobile"</string>
- <string name="sms_work" msgid="2269624156655267740">"Text work"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Text work fax"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Text home fax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Text pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Text"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Text callback"</string>
- <string name="sms_car" msgid="7444227058437359641">"Text car"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Text company main"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Text ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Text main"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Text fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Text radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Text telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Text TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Text work mobile"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Text work pager"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Text <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Text MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Text message"</string>
- <string name="email_home" msgid="8573740658148184279">"Email home"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Email mobile"</string>
- <string name="email_work" msgid="2807430017302722689">"Email work"</string>
- <string name="email_other" msgid="3454004077967657109">"Email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Email"</string>
- <string name="map_home" msgid="1243547733423343982">"View home address"</string>
- <string name="map_work" msgid="1360474076921878088">"View work address"</string>
- <string name="map_other" msgid="3817820803587012641">"View address"</string>
- <string name="map_custom" msgid="6184363799976265281">"View <xliff:g id="CUSTOM">%s</xliff:g> address"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chat using AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chat using Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chat using Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chat using Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chat using QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chat using Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chat using ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chat using Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Voice chat"</string>
<string name="video_chat" msgid="1872255818640336072">"Video chat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Address"</string>
- <string name="postal_street" msgid="8133143961580058972">"Street"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"PO box"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Neighbourhood"</string>
- <string name="postal_city" msgid="6597491300084895548">"City"</string>
- <string name="postal_region" msgid="6045263193478437672">"County"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postcode"</string>
- <string name="postal_country" msgid="7638264508416368690">"Country"</string>
- <string name="full_name" msgid="6602579550613988977">"Name"</string>
- <string name="name_given" msgid="1687286314106019813">"First name"</string>
- <string name="name_family" msgid="3416695586119999058">"Surname"</string>
- <string name="name_prefix" msgid="59756378548779822">"Name prefix"</string>
- <string name="name_middle" msgid="8467433655992690326">"Middle name"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Name suffix"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Phonetic given name"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Phonetic middle name"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Phonetic family name"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Phonetic name"</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>
@@ -407,7 +138,7 @@
<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="18022868169627979">"View contact names as"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"No contacts selected."</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>
@@ -438,30 +168,18 @@
<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="local_invisible_directory" msgid="6046691709127661065">"Other"</string>
<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="directory_search_label" msgid="1887759056597975053">"Directory"</string>
- <string name="local_search_label" msgid="2551177578246113614">"All contacts"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Creating a personal copy…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"All contacts"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Starred"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Customised"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Customise"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"All contacts with phone numbers"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contact"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Define customised view"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Settings"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contacts to display"</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="hint_findContacts" msgid="1808681193458772072">"Find contacts"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"View updates"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Voicemails"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Couldn\'t play voicemail."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Buffering…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Fetching voicemail…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Couldn\'t fetch voicemail."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"New"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Older"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Cannot connect to voicemail server."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Can\'t connect to voicemail server. New voicemails are waiting."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Set up your voicemail."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio not available."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Slowest speed"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Slow speed"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal speed"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Fast speed"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Fastest speed"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Group\'s name"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contact received over NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
- <string name="status_available" msgid="5586870015822828392">"Available"</string>
- <string name="status_away" msgid="1838861100379804730">"Away"</string>
- <string name="status_busy" msgid="9147992455450257136">"Busy"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Incoming call"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Outgoing call"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Missed call"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Voicemail"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Add contact"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Send text message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Send message to <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Dial phone <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Quick contact for <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Me"</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>
@@ -564,10 +228,6 @@
<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="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Call not sent"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu > Settings."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Export database files"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Expand or collapse name fields"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Picture. Select to change"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 6e0b8dc..ddf10d6 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Teléfono"</string>
<string name="people" msgid="1048457247435785074">"Personas"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Acerca de"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Actualizaciones"</string>
<string name="searchHint" msgid="8482945356247760701">"Buscar contactos"</string>
- <string name="menu_search" msgid="9147752853603483719">"Buscar"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nuevo contacto"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Ver contacto"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Agregar a favoritos"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de favoritos"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar en pantalla principal"</string>
<string name="menu_call" msgid="3992595586042260618">"Llamar al contacto"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Enviar texto al contacto"</string>
@@ -70,21 +65,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 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_done" msgid="796017761764190697">"Finalizado"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancelar"</string>
<string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notas"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Llamada por Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Título"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Crear contacto nuevo"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Teléfono"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Correo"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Mensajería instantánea"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Dirección"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organización"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"No hay contactos."</string>
<string name="noGroups" msgid="8614664663561385253">"Ningún grupo"</string>
<string name="noAccounts" msgid="7768267764545265909">"Para crear grupos, necesitas una cuenta."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"No se encontraron contactos coincidentes."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"No hay contactos con números de teléfono."</string>
<string name="emptyGroup" msgid="7502116218697177370">"No hay contactos en este grupo."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Para agregar alguno, edita el grupo."</string>
<string name="savingContact" msgid="4075751076741924939">"Guardando contacto..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Guardando opciones de visualización..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contacto guardado."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"No se pudieron guardar los cambios realizados al contacto."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupo guardado."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contacto"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"No hay contactos."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"No hay contactos visibles"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"No hay favoritos."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"No hay contactos en <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contactos en <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Contacto único"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contactos en vista personalizada"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Se encontraron más de <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"No hay contactos"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Se encontró uno (1)"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Todos los contactos"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritos"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoritos y todos los contactos"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Llamadas"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Enviar mensaje de texto"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Agregar a contactos"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Eliminar del registro de llamadas"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Eliminar registro de llamadas"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Eliminar mensaje de voz"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Compartir mensaje de voz"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"El registro de llamadas está vacío."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"¿Eliminar registro?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Se eliminarán todos tus registros de llamadas."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Borrando registro de llamadas..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"¿Borrar los contactos frecuentes?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Estás a punto de borrar la lista de contactos frecuentes de las aplicaciones Personas y Teléfono y harás que las aplicaciones de correo deban aprender nuevamente tus preferencias."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Borrando contactos frecuentes…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Correo de voz"</string>
- <string name="unknown" msgid="740067747858270469">"Desconocido"</string>
- <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
- <string name="payphone" msgid="4864313342828942922">"Teléfono público"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilizar teclado para marcar"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Marcar para agreg."</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"No tienes ningún contacto para mostrar. (Si has agregado una cuenta recientemente, la sincronización de los contactos puede demorar algunos minutos)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"No tienes ningún contacto para mostrar."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"No tienes contactos para mostrar."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>" Menú"</b></font>", y luego: "\n\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en la tableta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde de cero"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de la tarjeta SIM o SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"No tienes contactos para mostrar."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>" Menú"</b></font>" y luego toca: "\n\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedes sincronizar con el teléfono"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde de cero"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de la tarjeta SIM o SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"No tienes contactos para mostrar. (Si agregaste una cuenta, la sincronización de contactos puede demorar algunos minutos)."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>", y luego:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en la tableta"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para cambiar los contactos que sean visibles"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de tu tarjeta SIM o SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"No tienes contactos para mostrar. (Si agregaste una cuenta, la sincronización de contactos puede demorar algunos minutos)."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>", y luego:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en el dispositivo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para cambiar los contactos que sean visibles"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de tu tarjeta SIM o SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"No tienes contactos para mostrar."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>", y luego:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en la tableta"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de la tarjeta SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"No tienes contactos para mostrar."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>", y luego: "\n\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en el teléfono"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de la tarjeta SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"No tienes contactos para mostrar. (Si agregaste una cuenta, la sincronización de contactos puede demorar algunos minutos)."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>" y luego toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en la tableta"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para cambiar los contactos que sean visibles"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de tu tarjeta SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"No tienes contactos para mostrar. (Si agregaste una cuenta, la sincronización de contactos puede demorar algunos minutos)."\n\n"Para agregar contactos, toca "<font fgcolor="#ffffffff"><b>"Menú"</b></font>", y luego:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para agregar o configurar una cuenta con contactos que puedas sincronizar en el dispositivo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para cambiar los contactos que sean visibles"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto desde cero"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos de tu tarjeta SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"No tienes ningún favorito."\n\n"Para agregar un contacto a tu lista de favoritos:"\n\n<li>"toca la pestaña "<b>"Contactos"</b>" "\n</li>" "\n<li>"toca el contacto que deseas agregar a tus favoritos"\n</li>" "\n<li>"toca la estrella que está junto al nombre del contacto"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado de tonos del teléfono"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Regresar a la llamada en curso"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Agreg. Llam."</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detalles de llamada"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"No se han podido leer los detalles de la llamada solicitada."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Llamada entrante"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Llamada saliente"</string>
- <string name="type_missed" msgid="2720502601640509542">"Llamada perdida"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Mensaje de voz"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Llamadas entrantes"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactado con frecuencia"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Llamados con frecuencia"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"¿Deseas agregar \"<xliff:g id="EMAIL">%s</xliff:g>\" a los contactos?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tres"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"cuatro"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinco"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"siete"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"ocho"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nueve"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"estrella"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"cero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"buzón de voz"</string>
- <string name="description_search_button" msgid="3660807558587384889">"búsqueda"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"retroceso"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"número para marcar"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto de contacto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"Eliminar"</string>
<string name="description_plus_button" msgid="515164827856229880">"más"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No se encontró almacenamiento."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No se encontró una tarjeta SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importar de la tarjeta SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar desde el almacenamiento"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar al almacenamiento"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Compartir contactos visibles"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importar un archivo de vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importar múltiples archivos de vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos los archivos de vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Buscando datos de vCard en el almacenamiento..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Buscando datos de vCard en la tarjeta SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No se pudo examinar el almacenamiento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No se pudo examinar la tarjeta SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Error de E/S"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Memoria insuficiente (es probable que el archivo sea muy grande)."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"No se pudo analizar el archivo vCard debido a un error inesperado."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"El formato no es compatible."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"No se pudo importar archivo de vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"No se encontró ningún archivo de vCard en el almacenamiento."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"No se encontró un archivo de vCard en la Tarjeta SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"No se pudieron recopilar los metadatos de los archivos vCard proporcionados."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"No se pudieron importar uno o más archivos (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Error desconocido"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Selec. archivo vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Almacenando en caché"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Almacenando vCard(s) en caché local temporal. La importación comenzará pronto."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"No se pudieron leer los datos de vCard."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Se canceló la lectura de datos de la vCard."</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Finalizó la importación de la vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Se canceló la importación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> se importará en breve."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"El archivo se importará en breve."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Se rechazó la solicitud de importación de la vCard. Vuelve a intentarlo más tarde."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> se exportará en breve."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Se rechazó la solicitud de exportación de la vCard. Vuelve a intentarlo más tarde."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contacto"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"¿Exportar contactos?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Tu lista de contactos se exportará al archivo: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"No se pudo exportar"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"No se exportaron los datos del contacto."\n"Motivo: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"No hay contactos para exportar."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Hay demasiados archivos vCard en el almacenamiento."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"La tarjeta SD contiene demasiados archivos de vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"El nombre de archivo requerido es demasiado largo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Finalizó la exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Se canceló la exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exportando datos de contacto"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Los datos de tu contacto se están exportando a: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"No se pudo iniciar el exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Se produjo un error durante la exportación: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"No se pudo obtener la información de la base de datos."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"No hay contactos exportables. Si tienes contactos en la tableta, es posible que algunos proveedores de datos no permitan la exportación de contactos desde la tableta."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"No hay contactos exportables. Si tienes contactos en el dispositivo, es posible que algunos proveedores de datos no permitan la exportación de contactos desde el dispositivo."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"El compositor de la vCard no se inició correctamente."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"No se pudo abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"¿Deseas cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"¿Deseas cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"No se canceló la impor./expor. de vCard."</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Agregar pausa de 2 segundos"</string>
- <string name="add_wait" msgid="3360818652790319634">"Agregar espera"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Elije un número"</string>
- <string name="call_settings" msgid="7666474782093693667">"Configuración"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Elije un número"</string>
- <string name="make_primary" msgid="5829291915305113983">"Recuerda esta opción"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"No se encontró ninguna aplicación que pueda realizar esta acción."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Sin nombre)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Borrar contactos frecuentes"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos para mostrar"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importar/Exportar"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Imp./exp. contactos"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</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="share_error" msgid="948429331673358107">"No es posible compartir este contacto."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nombre"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Apodo"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organización"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Sitio web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Eventos"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relación"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupos"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crear contacto según la cuenta"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crear un grupo en la cuenta"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Eliminar grupo de sincronización"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Agregar grupo de sincronización"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Más grupos…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Todos los demás contactos"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Todos los contactos"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"La eliminación de \"<xliff:g id="GROUP">%s</xliff:g>\" de la sincronización también eliminará de la sincronización todos los contactos que no estén agrupados."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Sólo en tablet, sin sincronizar"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Sólo telefónicamente, no sincronizado"</string>
- <string name="call_custom" msgid="7756571794763171802">"Llamar a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Llamar a casa"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Llamar al celular"</string>
- <string name="call_work" msgid="5328785911463744028">"Llamar al trabajo"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Llamar al fax del trabajo"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Llamar al fax personal"</string>
- <string name="call_pager" msgid="9003902812293983281">"Llamar a localizador"</string>
- <string name="call_other" msgid="8563753966926932052">"Llamar"</string>
- <string name="call_callback" msgid="1910165691349426858">"Llamar a devolución de llamada"</string>
- <string name="call_car" msgid="3280537320306436445">"Llamar al auto"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Llamar empresa principal"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Llamar a ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Llamada principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Llamar a fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Llamar a la radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Llamar a télex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Llamar a TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Llamar al celular del trabajo"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Llamar al localizador del trabajo"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Llamar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Llamar a MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Texto <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Enviar texto al hogar"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Enviar texto a celular"</string>
- <string name="sms_work" msgid="2269624156655267740">"Enviar texto al trabajo"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Enviar texto a fax laboral"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Enviar texto a fax personal"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Enviar texto a localizador"</string>
- <string name="sms_other" msgid="806127844607642331">"Enviar texto"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Enviar texto a devolución de llamada"</string>
- <string name="sms_car" msgid="7444227058437359641">"Enviar texto a auto"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Enviar texto a empresa principal"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ISDN de texto"</string>
- <string name="sms_main" msgid="8621625784504541679">"Texto principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Enviar fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Enviar texto a radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Enviar texto a télex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Enviar texto a TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Enviar texto al celular del trabajo"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Enviar texto a localizador del trabajo"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Enviar texto a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Enviar texto MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mensaje de texto"</string>
- <string name="email_home" msgid="8573740658148184279">"Correo personal"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Correo celular"</string>
- <string name="email_work" msgid="2807430017302722689">"Correo laboral"</string>
- <string name="email_other" msgid="3454004077967657109">"Enviar correo"</string>
- <string name="email_custom" msgid="7548003991586214105">"Enviar correo a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Correo"</string>
- <string name="map_home" msgid="1243547733423343982">"Ver dirección principal"</string>
- <string name="map_work" msgid="1360474076921878088">"Ver dirección laboral"</string>
- <string name="map_other" msgid="3817820803587012641">"Ver dirección"</string>
- <string name="map_custom" msgid="6184363799976265281">"Ver <xliff:g id="CUSTOM">%s</xliff:g> dirección"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chat mediante AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chat mediante Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chat mediante Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chat mediante Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chat mediante QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chat mediante Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chat mediante ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chat mediante Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat de voz"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat de video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Dirección"</string>
- <string name="postal_street" msgid="8133143961580058972">"Dirección postal"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Apartado postal"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Barrio"</string>
- <string name="postal_city" msgid="6597491300084895548">"Ciudad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Estado"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Código POSTAL"</string>
- <string name="postal_country" msgid="7638264508416368690">"País"</string>
- <string name="full_name" msgid="6602579550613988977">"Nombre"</string>
- <string name="name_given" msgid="1687286314106019813">"Nombre"</string>
- <string name="name_family" msgid="3416695586119999058">"Apellido"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefijo del nombre"</string>
- <string name="name_middle" msgid="8467433655992690326">"Segundo nombre"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufijo del nombre"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nombre fonético"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Segundo nombre fonético"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Apellido fonético"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nombre fonético"</string>
<string name="connections" msgid="8098440723172028350">"Conexiones"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Agregar conexión"</string>
<string name="recent" msgid="2659189233141493004">"Recientes"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Ordenar listas por"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nombre"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Apellido"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Mostrar contactos por"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Ver nombres de contactos"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nombre Apellido"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apellido Nombre"</string>
<string name="take_photo" msgid="7496128293167402354">"Tomar foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostrar todos"</string>
<string name="menu_select_all" msgid="621719255150713545">"Seleccionar todo"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Desmarcar todos"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"No hay contactos seleccionados."</string>
<string name="add_field" msgid="2384260056674995230">"Agregar otro campo"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Agregar nuevo"</string>
<string name="add_organization" msgid="7311893231158291197">"Agregar organización"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"no se combinó"</item>
<item quantity="other" msgid="425683718017380845">"combinado a partir de fuentes <xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Otro"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"¿Deseas agrupar el contacto actual con el contacto seleccionado?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"¿Optar por modificar contacto seleccionado? Se copiará la información que ingresaste hasta ahora."</string>
<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="directory_search_label" msgid="1887759056597975053">"Directorio"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Todos los contactos"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Creando una copia personal..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Todos los contactos"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Destacado"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizar"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Todos los contactos con número de teléfono"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contacto"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definir vista personalizada"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Cargando..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configuración"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos para mostrar"</string>
<string name="menu_settings" msgid="377929915873428211">"Configuración"</string>
<string name="menu_help" msgid="5123887102216637725">"Ayuda"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opciones de visualización"</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="hint_findContacts" msgid="1808681193458772072">"Buscar contactos"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Núm. de tel."</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Agregar a contactos"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Agregar al contacto"</string>
@@ -497,61 +215,7 @@
<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">"Configurar mi perfil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Escribe el nombre de la persona."</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Ver actualizaciones"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"No se pudo reproducir el mensaje de voz."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Almacenando en el búfer"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Obteniendo el mensaje de voz"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"No se pudo obtener el mensaje de voz."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nuevo"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Más antigua"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo llamadas con buzón de voz"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo llamadas entrantes"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo llamadas salientes"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Solo llamadas perdidas"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"No se puede conectar al servidor del buzón de voz."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"No se puede conectar al buzón de voz. Nuevos mensajes en espera."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configura tu buzón de voz."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio no disponible"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Llamar buzón de voz"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Más lento"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lento"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Rápido"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Más rápido"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nombre del grupo"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contac recib NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar solo salientes"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar solo entrantes"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo perdidas"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar solo mensajes de voz"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponible"</string>
- <string name="status_away" msgid="1838861100379804730">"Ausente"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ocupado"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reproducir mensaje de voz"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Llamada entrante"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Llamada saliente"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Llamada perdida"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Mensaje de voz"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Agregar contacto"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Buzón de voz no escuchado"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Enviar un mensaje a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Discar el teléfono de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contacto rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Yo"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Guardar localmente"</string>
<string name="add_account" msgid="8201790677994503186">"Agregar una cuenta"</string>
<string name="add_new_account" msgid="5748627740680940264">"Agregar una cuenta nueva"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"No se realizó la llamada."</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, ve a a Menú > Configuración."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para escuchar los mensajes de tu buzón de voz, desactiva primero el modo avión."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar archivos de base de datos"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Más opciones"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Expandir o contraer campos de nombre"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Fotografía. Seleccionar para cambiar"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 8815da5..92a98ac 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Teléfono"</string>
<string name="people" msgid="1048457247435785074">"Contactos"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Información"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Actividad"</string>
<string name="searchHint" msgid="8482945356247760701">"Buscar contactos"</string>
- <string name="menu_search" msgid="9147752853603483719">"Buscar"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Contacto nuevo"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Ver contacto"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Añadir a \"Favoritos\""</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Eliminar de \"Favoritos\""</string>
<string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Añadir al escritorio"</string>
<string name="menu_call" msgid="3992595586042260618">"Llamar al contacto"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS al contacto"</string>
@@ -70,21 +65,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_done" msgid="796017761764190697">"OK"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancelar"</string>
<string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notas"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Llamada por Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Cargo"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"Este contacto no existe."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"El widget de contactos se ha añadido al escritorio."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear contacto nuevo"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"Crear contacto nuevo"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Teléfono"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Correo"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Dirección"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organización"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"No hay ningún contacto."</string>
<string name="noGroups" msgid="8614664663561385253">"No hay grupos"</string>
<string name="noAccounts" msgid="7768267764545265909">"Para poder crear grupos, necesitas una cuenta."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"No se ha encontrado ningún contacto coincidente."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"No hay ningún contacto con número de teléfono."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Este grupo está vacío."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Para añadir contactos al grupo, edítalo."</string>
<string name="savingContact" msgid="4075751076741924939">"Guardando contacto…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Guardando opciones de visualización…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"El contacto se ha guardado."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"No se han guardado los cambios del contacto."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupo guardado"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"Un (1) contacto"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"No hay contactos."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"No hay contactos visibles."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"No hay favoritos."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Ningún contacto en <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contactos en <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Contacto único"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contactos en vista personalizada"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Se han encontrado más de <xliff:g id="COUNT">%d</xliff:g> contactos."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"No hay contactos."</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 encontrado"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Todos los contactos"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritos"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoritos y todos los contactos"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Llamadas"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Enviar un mensaje de texto"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Añadir a contactos"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Eliminar del registro de llamadas"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Borrar registro de llamadas"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Eliminar mensaje de voz"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Compartir mensaje de voz"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"El registro de llamadas está vacío."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"¿Borrar registro?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Se eliminarán todos los registros de llamadas."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Borrando registro de llamadas..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"¿Borrar contactos frecuentes?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Vas a borrar la lista de contactos frecuentes de las aplicaciones Contactos y Teléfono y obligarás a las aplicaciones de correo electrónico a que memoricen tus preferencias de nuevo."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Borrando contactos frecuentes…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Buzón de voz"</string>
- <string name="unknown" msgid="740067747858270469">"Desconocidos"</string>
- <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
- <string name="payphone" msgid="4864313342828942922">"Teléfono público"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilizar teclado para marcar"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Añadir llamada"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Cargando desde tarjeta SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contactos de tarjeta SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"No tienes ningún contacto que mostrar. (Si acabas de añadir una cuenta, es posible que la sincronización de contactos tarde algunos minutos)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"No tienes ningún contacto que mostrar."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"No tienes contactos."\n\n"Si quieres añadir contactos, ve al menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el tablet,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SIM o la tarjeta SD."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"No tienes contactos."\n\n"Si quieres añadir contactos, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el teléfono,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SIM o la tarjeta SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"No tienes contactos. Si acabas de añadir una cuenta, la sincronización puede tardar unos minutos."\n\n"Si quieres añadir contactos, pulsa ve al menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el tablet,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para modificar los contactos visibles,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SIM o la tarjeta SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"No tienes contactos. Si acabas de añadir una cuenta, la sincronización puede tardar unos minutos."\n\n"Si quieres añadir contactos, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el teléfono,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para modificar los contactos visibles,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SIM o la tarjeta SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"No tienes contactos."\n\n"Si quieres añadir contactos, ve al menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el tablet,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"No tienes contactos."\n\n"Si quieres añadir contactos, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el teléfono,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"No tienes contactos. Si acabas de añadir una cuenta, la sincronización de contactos puede tardar unos minutos."\n\n"Si quieres añadir contactos, ve al menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el tablet,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para modificar los contactos visibles,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"No tienes contactos. Si acabas de añadir una cuenta, la sincronización de contactos puede tardar unos minutos."\n\n"Si quieres añadir contactos, ve al menú"<font fgcolor="#ffffffff"><b></b></font>" y toca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Cuentas"</b></font>" para añadir o configurar una cuenta que te permita sincronizar contactos con el teléfono,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opciones de visualización"</b></font>" para modificar los contactos visibles,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un nuevo contacto,"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos desde la tarjeta SD."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"No tienes favoritos."\n\n"Para añadir un contacto a tu lista de favoritos, sigue estos pasos:"\n\n" "<li>"Toca en la pestaña "<b>"Contactos"</b>"."\n</li>" "\n<li>"Selecciona el contacto que quieras añadir a tus favoritos."\n</li>" "\n<li>"Toca la estrella situada junto al nombre del contacto."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado táctil"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Volver a la llamada en curso"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Añadir llamada"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detalles de la llamada"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"No se han podido leer los detalles de la llamada solicitada."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Llamada entrante"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Llamada saliente"</string>
- <string name="type_missed" msgid="2720502601640509542">"Llamada perdida"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Buzón de voz"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Llamadas entrantes"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. y <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactos frecuentes"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Más llamados"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"¿Quieres añadir \"<xliff:g id="EMAIL">%s</xliff:g>\" a Contactos?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dos"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tres"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"cuatro"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinco"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"siete"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"ocho"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nueve"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"estrella"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"cero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"buzón de voz"</string>
- <string name="description_search_button" msgid="3660807558587384889">"buscar"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"retroceder un espacio"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"número que se va a marcar"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto de contacto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"eliminar"</string>
<string name="description_plus_button" msgid="515164827856229880">"más"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"No hay ningún almacenamiento."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"No se ha detectado ninguna tarjeta SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importar contactos desde la tarjeta SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar de almacenamiento"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar a almacenamiento"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Compartir contactos visibles"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importar un archivo de vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importar varios archivos de vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos los archivos de vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Buscando datos de vCard en el almacenamiento..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Buscando datos de vCard en la tarjeta SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"No se ha podido analizar el almacenamiento (motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"No se ha podido analizar la tarjeta SD (motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Error de E/S"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"No hay suficiente espacio de memoria (el archivo puede ser demasiado grande)."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"No se ha podido analizar el archivo vCard debido a un error inesperado."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"No se admite este formato."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Error al importar el archivo vCard"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"No se han encontrado archivos vCard en el almacenamiento."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"No se han encontrado archivos vCard en la tarjeta SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"No se han podido recuperar los metadatos de los archivos vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"No se ha podido importar uno o más archivos (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Error desconocido"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Seleccionar archivo vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Almacenando en caché"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Se están almacenando los archivos vCard en la caché. La importación empezará pronto."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"No se han podido leer los datos de la vCard."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lectura de datos de vCard cancelada"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Importación de <xliff:g id="FILENAME">%s</xliff:g> de vCard finalizada"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Se ha cancelado la importación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> se importará en breve."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"El archivo se importará en breve."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Se ha rechazado la solicitud de importación de vCard. Inténtalo de nuevo más tarde."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> se exportará en breve."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Se ha rechazado la solicitud de exportación de vCard. Inténtalo de nuevo más tarde."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contacto"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"¿Exportar contactos?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Tu lista de contactos se exportará al archivo <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Error al exportar"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"No se han exportado los datos de contactos ("\n"motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")."</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"No hay contactos que exportar."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Hay demasiados archivos vCard en el almacenamiento."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Hay demasiados archivos vCard en la tarjeta SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"El nombre de archivo obligatorio es demasiado largo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exportación de <xliff:g id="FILENAME">%s</xliff:g> finalizada"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Se ha cancelado la exportación de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exportando datos de contacto"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Se están exportando tus datos de contactos a <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"No se ha podido iniciar la exportación: (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Se ha producido un error durante la exportación (\"<xliff:g id="EXACT_REASON">%s</xliff:g>\")."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"No se ha podido obtener información de la base de datos."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"No hay contactos que exportar. Si ya tienes contactos en el tablet, es posible que el proveedor de datos no permita que se exporten los contactos del tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"No hay contactos que exportar. Si ya tienes contactos en el teléfono, es posible que el proveedor de datos no permita que se exporten los contactos del teléfono."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"El redactor de vCard no se ha iniciado correctamente."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"No se ha podido abrir el archivo \"<xliff:g id="FILE_NAME">%s</xliff:g>\" (<xliff:g id="EXACT_REASON">%s</xliff:g>)."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"¿Seguro que quieres cancelar la importación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"¿Seguro que quieres cancelar la exportación de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Error al cancelar la importación/exportación de vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nombres de tus contactos"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Añadir pausa de dos segundos"</string>
- <string name="add_wait" msgid="3360818652790319634">"Añadir espera"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Elige un número"</string>
- <string name="call_settings" msgid="7666474782093693667">"Ajustes"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Elige un número"</string>
- <string name="make_primary" msgid="5829291915305113983">"Recordar esta opción"</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_name" msgid="8745511583852904385">"(Sin nombre)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Borrar frecuentes"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos que mostrar"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importar/exportar contactos"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</string>
<string name="menu_share" msgid="943789700636542260">"Compartir"</string>
<string name="share_via" msgid="563121028023030093">"Compartir contacto a través de"</string>
- <string name="share_error" msgid="948429331673358107">"No se puede compartir este contacto."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nombre"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Seudónimo"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organización"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Sitio web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Eventos"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relación"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupos"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crear contacto en la cuenta"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crear grupo en cuenta"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Eliminar grupo de sincronización"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Añadir grupo de sincronización"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Más grupos…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Todos los demás contactos"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Todos los contactos"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Si eliminas \"<xliff:g id="GROUP">%s</xliff:g>\" de las sincronización, también se eliminarán todos los contactos no agrupados."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Solo en el tablet (sin sincronizar)"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Solo en el teléfono, no sincronizado"</string>
- <string name="call_custom" msgid="7756571794763171802">"Llamar a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Llamar a casa"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Llamar al móvil"</string>
- <string name="call_work" msgid="5328785911463744028">"Llamar al trabajo"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Llamar al fax del trabajo"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Llamar a fax de casa"</string>
- <string name="call_pager" msgid="9003902812293983281">"Llamar al busca"</string>
- <string name="call_other" msgid="8563753966926932052">"Llamar"</string>
- <string name="call_callback" msgid="1910165691349426858">"Llamar a un número de devolución de llamada"</string>
- <string name="call_car" msgid="3280537320306436445">"Llamar al coche"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Llamar al teléfono principal de la empresa"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Llamar a RDSI"</string>
- <string name="call_main" msgid="6082900571803441339">"Llamar al teléfono principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Llamar a fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Llamar a la radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Llamar al télex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Llamar a TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Llamar al móvil del trabajo"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Llamar al busca del trabajo"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Llamar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Llamar a MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Enviar SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Enviar SMS a casa"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Enviar SMS a móvil"</string>
- <string name="sms_work" msgid="2269624156655267740">"Enviar SMS a trabajo"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Enviar SMS al fax del trabajo"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Enviar SMS al fax de casa"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Enviar SMS al busca"</string>
- <string name="sms_other" msgid="806127844607642331">"Enviar SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Enviar SMS a devolución de llamada"</string>
- <string name="sms_car" msgid="7444227058437359641">"Enviar SMS al coche"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Enviar SMS al teléfono principal de la empresa"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Enviar SMS a RDSI"</string>
- <string name="sms_main" msgid="8621625784504541679">"Enviar SMS al teléfono principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Enviar SMS a fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Enviar SMS a la radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Enviar SMS al télex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Enviar SMS a TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Enviar SMS al móvil del trabajo"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Enviar SMS al busca del trabajo"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Enviar un mensaje de texto a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Enviar SMS a MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mensaje de texto"</string>
- <string name="email_home" msgid="8573740658148184279">"Enviar correo a casa"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Enviar correo al móvil"</string>
- <string name="email_work" msgid="2807430017302722689">"Enviar correo al trabajo"</string>
- <string name="email_other" msgid="3454004077967657109">"Enviar correo"</string>
- <string name="email_custom" msgid="7548003991586214105">"Enviar correo a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Correo"</string>
- <string name="map_home" msgid="1243547733423343982">"Ver dirección de casa"</string>
- <string name="map_work" msgid="1360474076921878088">"Ver dirección del trabajo"</string>
- <string name="map_other" msgid="3817820803587012641">"Ver dirección"</string>
- <string name="map_custom" msgid="6184363799976265281">"Ver dirección de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatear con AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatear con Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatear con Yahoo!"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatear con Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatear con QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatear con Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatear con ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatear con Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat de voz"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat de vídeo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Dirección"</string>
- <string name="postal_street" msgid="8133143961580058972">"Calle"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Apartado postal"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vecindario"</string>
- <string name="postal_city" msgid="6597491300084895548">"Ciudad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Provincia/Estado"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Código postal"</string>
- <string name="postal_country" msgid="7638264508416368690">"País"</string>
- <string name="full_name" msgid="6602579550613988977">"Nombre"</string>
- <string name="name_given" msgid="1687286314106019813">"Nombre"</string>
- <string name="name_family" msgid="3416695586119999058">"Apellidos"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefijo del nombre"</string>
- <string name="name_middle" msgid="8467433655992690326">"Segundo nombre"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufijo del nombre"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nombre fonético"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Segundo nombre fonético"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Apellido fonético"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Transcripción fonética nombre"</string>
<string name="connections" msgid="8098440723172028350">"Conexiones"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Añadir conexión"</string>
<string name="recent" msgid="2659189233141493004">"Reciente"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Ordenar lista por"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nombre"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Apellidos"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Ver nombres de contactos por"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Ver nombres de contactos"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nombre primero"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apellidos primero"</string>
<string name="take_photo" msgid="7496128293167402354">"Hacer una foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostrar todos"</string>
<string name="menu_select_all" msgid="621719255150713545">"Seleccionar todo"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Desmarcar todo"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"No hay ningún contacto seleccionado."</string>
<string name="add_field" msgid="2384260056674995230">"Añadir otro campo"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Añadir nuevo"</string>
<string name="add_organization" msgid="7311893231158291197">"Añadir organización"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"sin fusionar"</item>
<item quantity="other" msgid="425683718017380845">"fusionados desde <xliff:g id="COUNT">%0$d</xliff:g> fuentes"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Otro"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"¿Quieres agrupar el contacto actual con el contacto seleccionado?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"¿Quieres editar el contacto seleccionado? Se copiará la información que hayas introducido hasta el momento."</string>
<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="directory_search_label" msgid="1887759056597975053">"Directorio"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Todos los contactos"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Creando una copia personal..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Todos los contactos"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Destacados"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizar"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizar"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Todos los contactos con número"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contacto"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definir vista personalizada"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Cargando..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ajustes"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos que mostrar"</string>
<string name="menu_settings" msgid="377929915873428211">"Ajustes"</string>
<string name="menu_help" msgid="5123887102216637725">"Ayuda"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opciones de visualización"</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="hint_findContacts" msgid="1808681193458772072">"Buscar contactos"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Número de teléfono"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Añadir a contactos"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Añadir al contacto"</string>
@@ -497,61 +215,7 @@
<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">"Configurar mi perfil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Escribe el nombre de la persona"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Ver actualizaciones"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"No se ha podido reproducir el mensaje."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Almacenando en búfer..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Recuperando mensaje de voz..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"No se ha podido recuperar el mensaje."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nuevo"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Anteriores"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo llamadas con mensajes de voz"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo llamadas entrantes"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo llamadas salientes"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Solo llamadas perdidas"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"No se puede conectar con el servidor del buzón de voz."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"No se puede conectar al buzón de voz. Nuevos mensajes en espera"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configurar el buzón de voz"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio no disponible"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Llamar a buzón de voz"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Más lenta"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lenta"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Rápida"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Más rápida"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nombre del grupo"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contacto recibido por NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar solo llamadas salientes"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar solo llamadas entrantes"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo llamadas perdidas"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Solo mensajes de voz"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponible"</string>
- <string name="status_away" msgid="1838861100379804730">"Ausente"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ocupado"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reproducir mensaje de voz"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Llamada entrante"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Llamada saliente"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Llamada perdida"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Buzón de voz"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Añadir contacto"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Ver contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Llamar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensaje de texto a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensaje de voz sin oír"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Enviar mensaje a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Marcar teléfono <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contacto rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Yo"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Guardar localmente"</string>
<string name="add_account" msgid="8201790677994503186">"Añadir cuenta"</string>
<string name="add_new_account" msgid="5748627740680940264">"Añadir una cuenta"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Llamada no enviada"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar el buzón de voz, toca la tecla de menú y, a continuación, toca Ajustes."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para llamar al buzón de voz, debes desactivar el modo avión."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar archivos de base de datos"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Más opciones"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Ampliar o contraer campos de nombre"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagen. Seleccionar para cambiar"</string>
</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 1e4915c..ef17d0e 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Inimesed"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontaktid"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<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_search" msgid="9147752853603483719">"Otsing"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Uus kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Kuva kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Helistage: <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Kopeeri"</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>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Valmis"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Tühista"</string>
<string name="menu_discard" msgid="6456087569315685632">"Loobu"</string>
- <string name="label_notes" msgid="8337354953278341042">"Märkused"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Interneti-kõne"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Ettevõte"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Pealkiri"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-post"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM (Kiirsuhtlus)"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Aadress"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisatsioon"</item>
<item msgid="7196592230748086755">"Märkus"</item>
@@ -98,12 +83,9 @@
<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="noMatchingContacts" msgid="4266283206853990471">"Ei leitud ühtegi sobivat kontakti."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Telefoninumbritega kontakte pole."</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="savingDisplayGroups" msgid="2133152192716475939">"Kuvavalikute 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>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakti"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Kontaktid puuduvad."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nähtavaid kontakte pole."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Lemmikuid pole."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Rühmas <xliff:g id="NAME">%s</xliff:g> ei ole kontakte"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Konto <xliff:g id="NAME">%s</xliff:g> kontaktid"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Üks kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontaktid kohandatud vaates"</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="foundTooManyContacts" msgid="5163335650920020220">"Leitud rohkem kui <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Kontakte pole"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 leitud"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Kõik kontaktid"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupid"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Lemmikud"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Lemmikud ja kõik kontaktid"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Kõnelogi"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Tekstsõnumi saatmine"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Helista kasutajale <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muuda enne helistamist numbrit"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisa kontaktidesse"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Eemalda kõnelogist"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Kustuta kõnelogi"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Kustuta kõnepost"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Jaga kõneposti"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Kõnelogi on tühi."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Kustutada kõnelogi?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Kõik teie kõnesalvestised kustutatakse."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Kõnelogi kustutamine ..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Kas kustutada sagedased kontaktid?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Kustutate jaotistes Inimesed ja Telefonirakendused loendi Sagedased kontaktid ning meilirakendused peavad teie adresseerimiseelistused uuesti omandama."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Saged. kontaktide kustutamine ..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Kõnepost"</string>
- <string name="unknown" msgid="740067747858270469">"Tundmatu"</string>
- <string name="private_num" msgid="6374339738119166953">"Varjatud number"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefoniautomaat"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Kasutage valimiseks klaviatuuri"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Valige kõne lisamiseks"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laadimine SIM-kaardilt ..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM-kaardi kontaktid"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Teil pole ühtegi kontakti kuvamiseks. (Kui lisasite äsja konto, võib kontaktide sünkroonimine mõni minut aega võtta.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Teil pole kuvamiseks ühtki kontakti."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Teil pole ühtki kontakti kuvamiseks."\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda tahvelarvutisse sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" Uus kontakt "</b></font>" uue kontakti loomiseks ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" kontaktide importimiseks SIM- või SD-kaardilt."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Teil pole ühtki kontakti kuvamiseks."\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda saate telefoni sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontaktk"</b></font>" uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" kontaktide importimiseks teie SIM- või SD-kaardilt."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Teil pole ühtki kontakti kuvamiseks. (Kui lisasite äsja konto, võib selle kontaktide sünkroonimine veidi aega võtta.)"\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda tahvelarvutisse sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kuvamisvalikud"</b></font>" muutmaks seda, millised kontaktid on nähtavad;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>" uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" kontaktide importimiseks SIM- või SD-kaardilt."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Teil pole ühtki kontakti kuvamiseks. (Kui lisasite äsja konto, võib selle kontaktide sünkroonimine veidi aega võtta.)"\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>"konto lisamiseks või seadistamiseks kontaktidega, keda telefoni sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kuvamisvalikud"</b></font>"muutmaks seda, millised kontaktid on nähtavad;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>"uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>"kontaktide importimiseks SIM- või SD-kaardilt."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Teil pole ühtki kontakti kuvamiseks."\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda tahvelarvutisse sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>" uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" kontaktide importimiseks SD-kaardilt."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Teil pole ühtki kontakti kuvamiseks."\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda telefoni sünkroonida; "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>" /} uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eskport"</b></font>" kontaktide importimiseks SD-kaardilt."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Teil pole ühtki kontakti kuvamiseks. (Kui lisasite äsja konto, võib selle kontaktide sünkroonimine veidi aega võtta.)"\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda tahvelarvutisse sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kuvamisvalikud"</b></font>" muutmaks seda, millised kontaktid on nähtavad;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>" uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" kontaktide importimiseks SD-kaardilt."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Teil pole ühtki kontakti kuvamiseks. (Kui lisasite äsja konto, võib selle kontaktide sünkroonimine veidi aega võtta.)"\n\n"Kontaktide lisamiseks puudutage valikut "<font fgcolor="#ffffffff"><b>"Menüü"</b></font>" ja seejärel valikuid:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontod"</b></font>" konto lisamiseks või seadistamiseks kontaktidega, keda telefoni sünkroonida;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kuvamisvalikud "</b></font>" muutmaks seda, millised kontaktid on nähtavad;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uus kontakt"</b></font>" uue kontakti loomiseks;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" kontaktide importimiseks SD-kaardilt. "\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Teil pole ühtegi lemmikut."\n\n"Kontakti lisamiseks lemmikute loendisse:"\n\n" "<li>"puudutage vahekaarti "<b>"Kontaktid"</b>" "\n</li>" "\n<li>"Puudutage kontakti, keda soovite lemmikutesse lisada"\n</li>" "\n<li>"Puudutage kontakti nime kõrval olevat tärni"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Kasuta puutetooniga klahvistikku"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Tagasi käimasolevale kõnele"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lisa kõne"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Kõne üksikasjad"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Taotletud kõne üksikasju ei saa lugeda."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Sissetulev kõne"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Väljuv kõne"</string>
- <string name="type_missed" msgid="2720502601640509542">"Vastamata kõne"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Kõnepost"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Sissetulevad kõned"</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="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Sageli valitud kontaktid"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Sageli valitud üksus"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Kas lisada „<xliff:g id="EMAIL">%s</xliff:g>” kontaktidesse?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"üks"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"kaks"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"kolm"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"neli"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"viis"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"kuus"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"seitse"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"kaheksa"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"üheksa"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"tärn"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"null"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"nael"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"kõnepost"</string>
- <string name="description_search_button" msgid="3660807558587384889">"otsing"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"Helista"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"tagasilüke"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"number valimiseks"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontakti foto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"kustutamine"</string>
<string name="description_plus_button" msgid="515164827856229880">"pluss"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Vaadake kontakti"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Mäluruumi ei leitud."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-kaarti ei leitud."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Impordi SIM-kaardilt"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Impordi mäluseadmest"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Ekspordi mäluseadmesse"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Jaga nähtavaid kontakte"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Impordi üks vCardi fail"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Impordi mitu vCardi faili"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Impordi kõik vCardi failid"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Mäluruumist vCardi andmete otsimine ..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD-kaardilt vCardi andmete otsimine ..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Mäluruumi ei saa kontrollida. (Põhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kaarti ei saa kontrollida. (Põhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O viga"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Pole piisavalt mälu. Fail võib olla liiga suur."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Ootamatul põhjusel vCardi sõelumine ebaõnnestus."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Vormingut ei toetata."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCardi importimine ebaõnnestus."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Mälust ei leitud vCardi faili."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD-kaardilt ei leitud vCardi faili."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"vCardi faili(de) metaandmete kogumine ebaõnnestus."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Vähemalt ühe faili importimine ebaõnnestus (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Tundmatu viga."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Valige vCardi fail"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Vahemällu salvestamine"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCardi(de) vahemälustamine kohalikku ajutisse mäluruumi. Tegelik importimine algab peagi."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importimine: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importimine: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCardi andmete lugemine ebaõnnestus"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCardi andmete lugemine tühistati"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCardi faili <xliff:g id="FILENAME">%s</xliff:g> importimine on lõpetatud"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Faili <xliff:g id="FILENAME">%s</xliff:g> importimine tühistati"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Fail <xliff:g id="FILENAME">%s</xliff:g> imporditakse peagi."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Fail imporditakse peagi."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCardi importimistaotlus lükati tagasi. Proovige hiljem uuesti."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Fail <xliff:g id="FILENAME">%s</xliff:g> eksporditakse peagi."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCardi eksportimistaotlus lükati tagasi. Proovige hiljem uuesti."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksportida kontakt?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Teie kontaktide loend eksporditakse faili: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Eksport ebaõnnestus"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontaktandmeid ei eksporditud."\n"Põhjus: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Eksporditavad kontaktid puuduvad."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Mälus on liiga palju vCardi faile."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD-kaardil on liiga palju vCardi faile."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Kohustuslik failinimi on liiga pikk („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine on lõpetatud."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine tühistati."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Kontaktandmete eksportimine"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Teie kontaktandmed eksporditakse faili: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Eksportijat ei saa lähtestada: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Viga eksportimisel: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Andmebaasiteabe hankimine ebaõnnestus."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Eksporditavaid kontakte pole. Kui teil siiski on tahvelarvutis kontakte, ei pruugi mõned andmesidepakkujad kontaktide eksportimist tahvelarvutist lubada."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Eksporditavaid kontakte pole. Kui teil siiski on telefonis kontakte, ei pruugi mõned andmesidepakkujad kontaktide eksportimist telefonist lubada."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCardi helilooja ei käivitunud korralikult."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Faili „<xliff:g id="FILE_NAME">%s</xliff:g>” ei saa avada: <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> importimine?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kas tühistada faili <xliff:g id="FILENAME">%s</xliff:g> eksportimine?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardi impordi/ekspordi tühist. ebaõnn."</string>
<string name="search_settings_description" msgid="2675223022992445813">"Teie kontaktide nimed"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Lisa 2-sekundiline paus"</string>
- <string name="add_wait" msgid="3360818652790319634">"Lisa ootama"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Valige number"</string>
- <string name="call_settings" msgid="7666474782093693667">"Seaded"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Valige number"</string>
- <string name="make_primary" msgid="5829291915305113983">"Pea see valik meeles"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Selle toimingu käsitsemiseks ei leitud ühtegi rakendust."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Nimi puudub)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Kontod"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Sagedaste kustutamine"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kuvatavad kontaktisikud"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Import/eksport"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Kontaktide import/eksport"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Kontaktide importimine"</string>
<string name="menu_share" msgid="943789700636542260">"Jaga"</string>
<string name="share_via" msgid="563121028023030093">"Kontakti jagamisvalikud"</string>
- <string name="share_error" msgid="948429331673358107">"Seda kontakti ei saa jagada."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nimi"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Hüüdnimi"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisatsioon"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Veebisait"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Sündmused"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Suhe"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupid"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Loo konto all kontakt"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Kontopõhise grupi loomine"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Eemalda sünkroonimisrühm"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Lisa sünkroonimisrühm"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Rohkem rühmi ..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Kõik teised kontaktid"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Kõik kontaktid"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Rühma „<xliff:g id="GROUP">%s</xliff:g>” eemaldamisel sünkroonimisest eemaldatakse sünkroonimisest ka kõik rühmitamata kontaktid."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Ainult tahvelarvuti, sünkroonimata"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Ainult telefon, sünkroonimata"</string>
- <string name="call_custom" msgid="7756571794763171802">"Helista numbrile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Helista kodu telefoninumbrile"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Helista mobiilinumbrile"</string>
- <string name="call_work" msgid="5328785911463744028">"Helista töönumbrile"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Helista tööfaksinumbrile"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Helista kodu faksinumbrile"</string>
- <string name="call_pager" msgid="9003902812293983281">"Helista piiparinumbrile"</string>
- <string name="call_other" msgid="8563753966926932052">"Helista"</string>
- <string name="call_callback" msgid="1910165691349426858">"Helista tagasihelistusnumbrile"</string>
- <string name="call_car" msgid="3280537320306436445">"Helista autotelefoninumbrile"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Helista ettevõtte põhinumbrile"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Helista ISDN-telefoninumbrile"</string>
- <string name="call_main" msgid="6082900571803441339">"Helista põhinumbrile"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Helista faksinumbrile"</string>
- <string name="call_radio" msgid="8296755876398357063">"Helista raadiotelefoninumbrile"</string>
- <string name="call_telex" msgid="2223170774548648114">"Helista teleksinumbrile"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Helista TTY-/TDD-numbrile"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Helista töömobiilinumbrile"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Helista tööpiiparinumbrile"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Helista numbrile <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Helista MMS-i numbrile"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Saada SMS numbrile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Saada SMS kodu telefoninumbrile"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Saada SMS mobiilinumbrile"</string>
- <string name="sms_work" msgid="2269624156655267740">"Saada SMS töönumbrile"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Saada SMS tööfaksinumbrile"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Saada SMS kodusele faksinumbrile"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Saada SMS piiparinumbrile"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Saada SMS tagasihelistusnumbrile"</string>
- <string name="sms_car" msgid="7444227058437359641">"Saada SMS autotelefoninumbrile"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Saada SMS ettevõtte peamisele telefoninumbrile"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Saada SMS ISDN-telefoninumbrile"</string>
- <string name="sms_main" msgid="8621625784504541679">"Saada SMS põhinumbrile"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Saada SMS faksinumbrile"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Saada SMS raadiotelefoninumbrile"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Saada SMS teleksinumbrile"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Saada SMS TTY-/TDD-numbrile"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Saada SMS töömobiilinumbrile"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Saada SMS tööpiiparinumbrile"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Saada SMS numbrile <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Saada MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Tekstsõnum"</string>
- <string name="email_home" msgid="8573740658148184279">"Saada meilisõnum kodusele aadressile"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Saada meilisõnum mobiilile"</string>
- <string name="email_work" msgid="2807430017302722689">"Saada meiliaadress tööaadressile"</string>
- <string name="email_other" msgid="3454004077967657109">"E-post"</string>
- <string name="email_custom" msgid="7548003991586214105">"Saada meilisõnum aadressile <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-post"</string>
- <string name="map_home" msgid="1243547733423343982">"Vaata kodu aadressi"</string>
- <string name="map_work" msgid="1360474076921878088">"Vaata tööaadressi"</string>
- <string name="map_other" msgid="3817820803587012641">"Vaata aadressi"</string>
- <string name="map_custom" msgid="6184363799976265281">"Vaata <xliff:g id="CUSTOM">%s</xliff:g> aadressi"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Vestle AIM-i kasutades"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Vestle Windows Live\'i abil"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Vestle Yahoo abil"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Vestle Skype\'i abil"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Vestle QQ abil"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Vestle Google Talki kasutades"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Vestle ICQ-d kasutades"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Vestle Jabberi abil"</string>
- <string name="chat" msgid="9025361898797412245">"Vestlus"</string>
<string name="audio_chat" msgid="2535716629358298691">"Häälvestlus"</string>
<string name="video_chat" msgid="1872255818640336072">"Videovestlus"</string>
- <string name="postal_address" msgid="8765560217149624536">"Aadress"</string>
- <string name="postal_street" msgid="8133143961580058972">"Tänav"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postkast"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Naabruskond"</string>
- <string name="postal_city" msgid="6597491300084895548">"Linn"</string>
- <string name="postal_region" msgid="6045263193478437672">"Riik"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Sihtnumber"</string>
- <string name="postal_country" msgid="7638264508416368690">"Riik"</string>
- <string name="full_name" msgid="6602579550613988977">"Nimi"</string>
- <string name="name_given" msgid="1687286314106019813">"Eesnimi"</string>
- <string name="name_family" msgid="3416695586119999058">"Perekonnanimi"</string>
- <string name="name_prefix" msgid="59756378548779822">"Nime eesliide"</string>
- <string name="name_middle" msgid="8467433655992690326">"Teine nimi"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Nime järelliide"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Foneetiline eesnimi"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Foneetiline keskmine nimi"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Foneetiline perekonnanimi"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Foneetiline nimi"</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>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Kuva kontaktinimed:"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Kontakte pole valitud."</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>
@@ -438,30 +168,18 @@
<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="local_invisible_directory" msgid="6046691709127661065">"Muu"</string>
<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="directory_search_label" msgid="1887759056597975053">"Kataloog"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Kõik kontaktid"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Isikliku koopia loomine ..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Kõik kontaktid"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Tärniga tähistatud"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Kohandatud"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Kohanda"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Kõik telefoninumbritega kontaktid"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Kohandatud vaate määramine"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Laadimine ..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Seaded"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kuvatavad kontaktid"</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="hint_findContacts" msgid="1808681193458772072">"Otsige kontakte"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Kuva värskendused"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Kõnepost"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> kõnepostisõnumit"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Esitamine"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uus kõnepostisõnum kasutajalt <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Kõnepostisõnumi esitamine ebaõnnestus."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Puhverdamine ..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Kõneposti toomine ..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Kõneposti toomine ebaõnnestus."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Uued"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Vanemad"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Ainult kõnepostiga kõned"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Ainult sissetulevad kõned"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Ainult väljuvad kõned"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Ainult vastamata kõned"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Kõnepostiserveriga ei saa ühendust."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Kõnepostiserveriga ei saa ühendust. Uued kõnepostisõnumid ootel."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Seadistage oma kõnepost."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Heli pole saadaval."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Seadistamine"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Helista kõneposti"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Aeglaseim kiirus"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Aeglane kiirus"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Tavaline kiirus"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Kiire kiirus"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Kiireim kiirus"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Rühma nimi"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt võeti vastu NFC kaudu"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Kuva ainult väljuvad"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Kuva ainult sissetulevad"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Kuva ainult vastamata"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Kuva ainult kõnepostisõnumeid"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Kuva kõik kõned"</string>
- <string name="status_available" msgid="5586870015822828392">"Saadaval"</string>
- <string name="status_away" msgid="1838861100379804730">"Eemal"</string>
- <string name="status_busy" msgid="9147992455450257136">"Hõivatud"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Esita kõnepostisõnum"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Sissetulev kõne"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Väljuv kõne"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Vastamata kõne"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Kõnepost"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Lisa kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Kuva kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Helista: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Saada tekstsõnum kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuulamata kõnepostisõnum"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Saada sõnum kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Helistamine kontaktile <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Kiirkontakt: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Mina"</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>
@@ -564,10 +228,6 @@
<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="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Kõnet ei tehtud"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Kõneposti seadistamiseks minge valikusse Menüü > Seaded."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kõneposti kuulamiseks lülitage lennurežiim välja."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Andmebaasi failide eksportimine"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Rohkem valikuid"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Nimeväljade laiendamine või ahendamine"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Pilt. Muutmiseks valige"</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 221c516..1f16ca4 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"تلفن"</string>
<string name="people" msgid="1048457247435785074">"افراد"</string>
<string name="contactsList" msgid="8661624236494819731">"مخاطبین"</string>
<string name="shortcutContact" msgid="749243779392912958">"مخاطب"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"درباره"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"نسخههای به روز"</string>
<string name="searchHint" msgid="8482945356247760701">"جستجوی مخاطبین"</string>
- <string name="menu_search" msgid="9147752853603483719">"جستجو"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"مخاطب جدید"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"مشاهده مخاطب"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"کپی"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"محل بر روی صفحهٔ اصلی"</string>
<string name="menu_call" msgid="3992595586042260618">"تماس با مخاطب"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"ارسال متن به مخاطب"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"این مخاطب دارای اطلاعاتی از چند حساب است. اطلاعات حسابهای فقط خواندنی در لیستهای مخاطبین پنهان میشوند اما حذف نمیشوند."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"حذف این مخاطب اطلاعات را از حسابهای متعدد حذف میکند."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"این مخاطب حذف میشود."</string>
- <string name="menu_done" msgid="796017761764190697">"انجام شد"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"لغو"</string>
<string name="menu_discard" msgid="6456087569315685632">"صرفنظر"</string>
- <string name="label_notes" msgid="8337354953278341042">"یادداشتها"</string>
- <string name="label_sip_address" msgid="124073911714324974">"تماس اینترنتی"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"شرکت"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"عنوان"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"تلفن"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"ایمیل"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"آدرس"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"سازمان"</item>
<item msgid="7196592230748086755">"توجه"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"مخاطبی موجود نیست."</string>
<string name="noGroups" msgid="8614664663561385253">"گروهی وجود ندارد."</string>
<string name="noAccounts" msgid="7768267764545265909">"برای ایجاد گروهها، نیاز به یک حساب دارید."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"مخاطب منطبقی یافت نشد."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"مخاطبی با شماره تلفن موجود نیست."</string>
<string name="emptyGroup" msgid="7502116218697177370">"هیچ فردی در این گروه نیست."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"برای افزودن چند عضو، گروه را ویرایش کنید."</string>
<string name="savingContact" msgid="4075751076741924939">"در حال ذخیره مخاطب..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"در حال ذخیره گزینههای نمایش..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"مخاطب ذخیره شد."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"تغییرات مخاطب ذخیره نمیشود."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"گروه ذخیره شد."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"۱ مخاطب"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> مخاطب"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"مخاطبی موجود نیست."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"مخاطب قابل مشاهدهای موجود نیست."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"بدون مورد دلخواه."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"هیچ مخاطبی در <xliff:g id="NAME">%s</xliff:g> موجود نیست"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"مخاطبین در <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"مخاطب تکی"</string>
- <string name="listCustomView" msgid="6950713892532194050">"مخاطبین موجود در نمای سفارشی"</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="foundTooManyContacts" msgid="5163335650920020220">"بیش از <xliff:g id="COUNT">%d</xliff:g> مورد پیدا شد."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"مخاطبی موجود نیست"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 مورد پیدا شد"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"همه مخاطبین"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"گروهها"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"موارد دلخواه"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"موارد دلخواه و همه مخاطبین"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"تلفن"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"گزارش تماس"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"ارسال پیام متنی"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"تماس با <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ویرایش شماره قبل از تماس"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"افزودن به مخاطبین"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"حذف از گزارش تماس"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"پاک کردن گزارش تماس"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"حذف پست صوتی"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"اشتراکگذاری پست صوتی"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"گزارش تماس خالی است."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"گزارش تماس پاک شود؟"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"تمام سابقه تماس شما حذف خواهد شد."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"در حال پاک کردن گزارش تماس..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"لیست تماس مکرر با مخاطب پاک شود؟"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"با این کار شما در برنامه «افراد» و «تلفن»، لیست افرادی را که با آنها بیشترین تماس را داشتهاید پاک خواهید کرد و برنامههای ایمیل مجبور میشوند تنظیمات برگزیده آدرسدهی شما را از اول یاد بگیرند."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"در حال پاک کردن لیست تماس مکرر..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"پست صوتی"</string>
- <string name="unknown" msgid="740067747858270469">"ناشناس"</string>
- <string name="private_num" msgid="6374339738119166953">"شماره خصوصی"</string>
- <string name="payphone" msgid="4864313342828942922">"تلفن عمومی"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"استفاده از صفحهکلید برای شماره گیری"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"شماره گیری برای افزودن یک تماس"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"در حال بارگیری سیم کارت..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"مخاطبین سیم کارت"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب را اضافه کردید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"شما مخاطبی برای نمایش ندارید."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با رایانهٔ لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطب، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمی کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا پیکربندی یک حساب با مخاطبینی که میتوانید در رایانهٔ لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطب، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با رایانهٔ لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از سیم کارت یا کارت SD شما"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"شما مخاطبی برای نمایش ندارید."\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا پیکربندی یک حساب با مخاطبینی که میتوانید در رایانهٔ لوحی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"شما مخاطبی برای نمایش ندارید. (در صورتی که اکنون یک حساب اضافه کردهاید، همگامسازی مخاطبین چند دقیقه طول میکشد.)"\n\n"برای افزودن مخاطبین، "<font fgcolor="#ffffffff"><b>"منو"</b></font>" را لمس کرده و سپس این موارد را لمس کنید:"\n" "\n<li><font fgcolor="#ffffffff"><b>"حسابها"</b></font>" برای افزودن یا تنظیم یک حساب با مخاطبینی که میتوانید با گوشی همگامسازی کنید"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"گزینههای نمایش"</b></font>" برای تغییر مخاطبینی که قابل مشاهده هستند"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"مخاطب جدید"</b></font>" برای ایجاد یک مخاطب جدید از ابتدا"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"وارد کردن/صادر کردن"</b></font>" برای وارد کردن مخاطبین از کارت SD شما"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"شما هیچ مورد دلخواهی ندارید."\n\n"برای افزودن یک مخاطب به لیست موارد دلخواه خود: "\n\n" "<li>"برگه "<b>"مخاطبین"</b>\n</li>" را لمس کنید"\n<li>"مخاطبی را که میخواهید به لیست موارد دلخواه خود اضافه کنید لمس کنید"\n</li>" "\n<li>"ستاره واقع در کنار نام مخاطب را لمس کنید"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"استفاده از صفحهکلید لمسی"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"برگشت به تماس در حال انجام"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"افزودن تماس"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"جزئیات تماس"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"جزئیات تماس درخواستی خوانده نشد."</string>
- <string name="type_incoming" msgid="6502076603836088532">"تماس ورودی"</string>
- <string name="type_outgoing" msgid="343108709599392641">"تماس خروجی"</string>
- <string name="type_missed" msgid="2720502601640509542">"تماس بی پاسخ"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"پست صوتی"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"تماسهای ورودی"</string>
<string name="callBack" msgid="5498224409038809224">"بازگرداندن تماس"</string>
<string name="callAgain" msgid="3197312117049874778">"تماس مجدد"</string>
<string name="returnCall" msgid="8171961914203617813">"برگشت تماس"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> دقیقه و <xliff:g id="SECONDS">%s</xliff:g> ثانیه"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"اغلب تماس گرفته شده"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"اغلب به نام"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" به مخاطبین افزوده شود؟"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"یک"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"دو"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"سه"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"چهار"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"پنج"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"شش"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"هفت"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"هشت"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"نه"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ستاره"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"صفر"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"پوند"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"پست صوتی"</string>
- <string name="description_search_button" msgid="3660807558587384889">"جستجو"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"شماره گیری"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"شماره برای شماره گیری"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"عکس مخاطب"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"حذف"</string>
<string name="description_plus_button" msgid="515164827856229880">"به اضافه"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"مشاهده مخاطب"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"هیچ دستگاه ذخیرهای یافت نشد."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"کارت SD یافت نشد."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"وارد کردن از سیم کارت"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"وارد کردن از حافظه"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"صادر کردن به حافظه"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"اشتراکگذاری مخاطبین قابل مشاهده"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"وارد کردن یک فایل کارت ویزیت"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"وارد کردن چند فایل کارت ویزیت"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"وارد کردن همه فایلهای کارت ویزیت"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"جستجوی داده کارت ویزیت در دستگاه ذخیره..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"در حال جستجوی دادههای کارت ویزیت در کارت SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"دستگاه ذخیره نمیتواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"کارت SD نمیتواند بررسی شود. (علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"خطای ورودی/خروجی"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"حافظه کافی نیست. ممکن است فایل بسیار بزرگ باشد."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"تفسیر کارت ویزیت به دلیل پیشبینی نشدهای ممکن نیست."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"قالب پشتیبانی نمیشود."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"وارد کردن کارت ویزیت انجام نشد."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"هیچ فایل کارت ویزیتی در حافظه یافت نشد."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"هیچ فایل کارت ویزیتی در کارت SD یافت نشد."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"نمیتوان اطلاعات متای فایل کارت ویزیت داده شده را جمعآوری کرد."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"نمیتوان یک یا چند فایل را وارد کرد (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"خطای ناشناخته."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"فایل کارت ویزیت را انتخاب کنید"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"در حال ذخیره در حافظهٔ پنهان"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"در حال ذخیره کارتهای ویزیت در حافظه موقت محلی است. وارد کردن واقعی به زودی آغاز خواهد شد."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"وارد کردن <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"وارد کردن <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"خواندن دادههای کارت ویزیت ممکن نیست"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"خواندن داده کارت ویزیت لغو شد"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"وارد کردن کارت ویزیت <xliff:g id="FILENAME">%s</xliff:g> پایان یافت"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"واردکردن <xliff:g id="FILENAME">%s</xliff:g> لغو شد"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> به زودی وارد میشود."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"فایل پس از مدت کوتاهی وارد میشود."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"درخواست وارد کردن کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> به زودی صادر میشود."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"درخواست صدور کارت ویزیت رد شد. لطفاً بعداً امتحان کنید."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"مخاطب"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"مخاطبین صادر شوند؟"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"لیست مخاطبین شما به این فایل صادر میشود: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"صادر نمیشود"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"دادههای مخاطب صادر نشد."\n"علت: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"هیچ مخاطب قابل صدوری موجود نیست."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"تعداد فایلهای کارت ویزیت در حافظه بسیار زیاد است."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"فایلهای کارت ویزیت بسیار زیادی در کارت SD وجود دارد."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"نام فایل خیلی طولانی است (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> پایان یافت."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شد."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"صدور اطلاعات مخاطب"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"دادههای تماس شما در حال صادر شدن به این فایل هستند: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"صادر کننده راهاندازی نشد: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"خطایی در هنگام صادر کردن روی داد: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"نمیتوان اطلاعات پایگاه داده را دریافت کرد."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"مخاطب قابل صدوری وجود ندارد. اگر بر روی رایانهٔ لوحی خود مخاطبینی دارید، بعضی از ارائهدهندگان داده ممکن است اجازه ندهند مخاطبین از رایانهٔ لوحی صادر شوند."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"هیچ مخاطب قابل صدوری وجود ندارد. اگر در گوشی خود مخاطبینی دارید، بعضی از ارائهدهندگان داده ممکن است اجازه ندهند تا مخاطبین از گوشی صادر شوند."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"سازنده فایل کارت ویزیت به درستی اجرا نشد."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" باز نشد: <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"وارد کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"صادر کردن <xliff:g id="FILENAME">%s</xliff:g> لغو شود؟"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"نمیتوان وارد کردن/ صادر کردن کارت ویزیت را لغو کرد"</string>
<string name="search_settings_description" msgid="2675223022992445813">"نامهای مخاطبین شما"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث ۲ ثانیهای"</string>
- <string name="add_wait" msgid="3360818652790319634">"افزودن انتظار"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"انتخاب شماره"</string>
- <string name="call_settings" msgid="7666474782093693667">"تنظیمات"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"انتخاب شماره"</string>
- <string name="make_primary" msgid="5829291915305113983">"این گزینه را به خاطر بسپار"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"برنامهای برای انجام این عملکرد یافت نشد."</string>
- <string name="missing_name" msgid="8745511583852904385">"(بدون نام)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"حسابها"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"پاک کردن تماسهای مکرر"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"مخاطبین جهت نمایش"</string>
- <string name="menu_import_export" msgid="26217871113229507">"وارد کردن/صادر کردن"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"وارد کردن/صادر کردن مخاطبین"</string>
- <string name="dialog_import" msgid="2431698729761448759">"وارد کردن مخاطبین"</string>
<string name="menu_share" msgid="943789700636542260">"اشتراکگذاری"</string>
<string name="share_via" msgid="563121028023030093">"اشتراکگذاری مخاطب از طریق"</string>
- <string name="share_error" msgid="948429331673358107">"این مخاطب قابل اشتراکگذاری نیست."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"نام"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"نام مستعار"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"سازمان"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"وب سایت"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"رویدادها"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"رابطه"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"گروهها"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"ایجاد مخاطبین تحت حساب"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"ایجاد گروه تحت حساب کاربری"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"حذف گروه همگامسازی"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"افزودن گروه همگامسازی"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"گروههای بیشتر..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"همهٔ مخاطبین دیگر"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"همه مخاطبین"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"حذف \"<xliff:g id="GROUP">%s</xliff:g>\" از همگامسازی نیز هر گونه مخاطب گروهبندی نشدهای را از همگامسازی حذف میکند."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"فقط رایانهٔ لوحی، همگامسازی نشده"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"فقط تلفن، همگامسازی نشده"</string>
- <string name="call_custom" msgid="7756571794763171802">"تماس با <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"تماس با خانه"</string>
- <string name="call_mobile" msgid="7502236805487609178">"تماس با تلفن همراه"</string>
- <string name="call_work" msgid="5328785911463744028">"تماس با محل کار"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"تماس با نمابر محل کار"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"تماس با نمابر خانه"</string>
- <string name="call_pager" msgid="9003902812293983281">"تماس با پیجو"</string>
- <string name="call_other" msgid="8563753966926932052">"تماس"</string>
- <string name="call_callback" msgid="1910165691349426858">"تماس با شماره بازگرداندن تماس"</string>
- <string name="call_car" msgid="3280537320306436445">"تماس با تلفن خودرو"</string>
- <string name="call_company_main" msgid="6105120947138711257">"تماس با خط اصلی شرکت"</string>
- <string name="call_isdn" msgid="1541590690193403411">"تماس با ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"تماس با خط اصلی"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"تماس با نمابر"</string>
- <string name="call_radio" msgid="8296755876398357063">"تماس با تلفن رادیویی"</string>
- <string name="call_telex" msgid="2223170774548648114">"تماس با تلکس"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"تماس با TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"تماس با تلفن همراه محل کار"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"تماس با پیجر محل کار"</string>
- <string name="call_assistant" msgid="2141641383068514308">"تماس با <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"تماس با MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"ارسال متن به <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"ارسال متن به تلفن خانه"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"ارسال متن به تلفن همراه"</string>
- <string name="sms_work" msgid="2269624156655267740">"ارسال متن به محل کار"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"ارسال متن به نمابر محل کار"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"ارسال متن به نمابر خانه"</string>
- <string name="sms_pager" msgid="7730404569637015192">"ارسال متن به پیجر"</string>
- <string name="sms_other" msgid="806127844607642331">"ارسال متن"</string>
- <string name="sms_callback" msgid="5004824430094288752">"ارسال متن برگرداندن پاسخ"</string>
- <string name="sms_car" msgid="7444227058437359641">"ارسال متن به تلفن خودرو"</string>
- <string name="sms_company_main" msgid="118970873419678087">"ارسال متن به خط اصلی شرکت"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ارسال متن به ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"ارسال متن به خط اصلی"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"ارسال متن به نمابر"</string>
- <string name="sms_radio" msgid="3329166673433967820">"ارسال متن به تلفن رادیویی"</string>
- <string name="sms_telex" msgid="9034802430065267848">"ارسال متن به تلکس"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"ارسال متن به TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"ارسال متن به تلفن همراه محل کار"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"ارسال متن به پیجر محل کار"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"ارسال متن به <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"ارسال متن به MMS"</string>
- <string name="sms" msgid="1756857139634224222">"پیام نوشتاری"</string>
- <string name="email_home" msgid="8573740658148184279">"ایمیل به خانه"</string>
- <string name="email_mobile" msgid="2042889209787989814">"ایمیل به تلفن همراه"</string>
- <string name="email_work" msgid="2807430017302722689">"ایمیل به محل کار"</string>
- <string name="email_other" msgid="3454004077967657109">"ایمیل"</string>
- <string name="email_custom" msgid="7548003991586214105">"ایمیل <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"ایمیل"</string>
- <string name="map_home" msgid="1243547733423343982">"مشاهده آدرس منزل"</string>
- <string name="map_work" msgid="1360474076921878088">"مشاهده آدرس محل کار"</string>
- <string name="map_other" msgid="3817820803587012641">"مشاهده آدرس"</string>
- <string name="map_custom" msgid="6184363799976265281">"مشاهده آدرس <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"گپ با استفاده از AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"گپ با استفاده از Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"گپ با استفاده از Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"گپ با استفاده از Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"گپ با استفاده از QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"گپ با استفاده از Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"گپ با استفاده از ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"گپ با استفاده از Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"گپ"</string>
<string name="audio_chat" msgid="2535716629358298691">"گپ صوتی"</string>
<string name="video_chat" msgid="1872255818640336072">"گپ ویدئویی"</string>
- <string name="postal_address" msgid="8765560217149624536">"آدرس"</string>
- <string name="postal_street" msgid="8133143961580058972">"خیابان"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"صندوق پستی"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"محله"</string>
- <string name="postal_city" msgid="6597491300084895548">"شهر"</string>
- <string name="postal_region" msgid="6045263193478437672">"ایالت"</string>
- <string name="postal_postcode" msgid="572136414136673751">"کد پستی"</string>
- <string name="postal_country" msgid="7638264508416368690">"کشور"</string>
- <string name="full_name" msgid="6602579550613988977">"نام"</string>
- <string name="name_given" msgid="1687286314106019813">"نام"</string>
- <string name="name_family" msgid="3416695586119999058">"نام خانوادگی"</string>
- <string name="name_prefix" msgid="59756378548779822">"پیشوند نام"</string>
- <string name="name_middle" msgid="8467433655992690326">"نام میانی"</string>
- <string name="name_suffix" msgid="3855278445375651441">"پسوند نام"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"تلفظ نام"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"تلفظ نام میانی"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"تلفظ آوایی نام خانوادگی"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"تلفظ نام"</string>
<string name="connections" msgid="8098440723172028350">"اتصالها"</string>
<string name="add_connection_button" msgid="4861308615789601727">"افزودن اتصال"</string>
<string name="recent" msgid="2659189233141493004">"اخیر"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"مشاهده نامهای مخاطب بهعنوان"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"مخاطبی انتخاب نشده است."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"ادغام نشد"</item>
<item quantity="other" msgid="425683718017380845">"ادغام شده از منابع <xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"سایر موارد"</string>
<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="directory_search_label" msgid="1887759056597975053">"دایرکتوری"</string>
- <string name="local_search_label" msgid="2551177578246113614">"همه مخاطبین"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"ایجاد یک کپی شخصی..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"همه مخاطبین"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"ستارهدار"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"سفارشی"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"سفارشی کردن"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"همه مخاطبین دارای شماره تلفن"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"مخاطب"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"تعیین نمای سفارشی"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"در حال بارگیری..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"تنظیمات"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"مخاطبین جهت نمایش"</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="hint_findContacts" msgid="1808681193458772072">"پیدا کردن مخاطبین"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"مشاهده بهروزرسانیها"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"پست صوتی"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> پست صوتی"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"پخش"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"پست صوتی جدید از <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"پخش پست صوتی ممکن نیست."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"در حال بافر کردن؟؟؟"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"در حال واکشی پست صوتی؟؟؟"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"واکشی پست صوتی ممکن نیست."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"جدید"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"قدیمیتر"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"فقط تماسهای دارای پست صوتی"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"فقط تماسهای دریافتی"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"فقط تماسهای خروجی"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"فقط تماسهای بیپاسخ"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"اتصال به سرور پست صوتی امکانپذیر نیست."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"اتصال به سرور پست صوتی امکانپذیر نیست. پستهای صوتی جدید در انتظارند."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"پست صوتی خود را تنظیم کنید."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"صدا موجود نیست."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"راهاندازی"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"تماس با پست صوتی"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"کمترین سرعت"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"سرعت کم"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"سرعت عادی"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"سرعت زیاد"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"بیشترین سرعت"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"نام گروه"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"مخاطب از طریق NFC رسید"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"فقط نمایش خروجی"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"فقط نمایش ورودی"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"فقط نمایش بیپاسخ"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"فقط نمایش پستهای صوتی"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"نمایش همه مکالمات"</string>
- <string name="status_available" msgid="5586870015822828392">"در دسترس"</string>
- <string name="status_away" msgid="1838861100379804730">"غایب"</string>
- <string name="status_busy" msgid="9147992455450257136">"مشغول"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"پخش پست صوتی"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"تماس ورودی"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"تماس خروجی"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"تماس بیپاسخ"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"پست صوتی"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"افزودن مخاطب"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"مشاهده مخاطب <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"تماس با <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"ارسال پیام متنی به <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"پست صوتی شنیده نشده"</string>
- <string name="description_send_message" msgid="6046623392322890962">"ارسال پیام به <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"شمارهگیری <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"تماس سریع برای <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"من"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"ذخیره بهصورت محلی"</string>
<string name="add_account" msgid="8201790677994503186">"افزودن حساب"</string>
<string name="add_new_account" msgid="5748627740680940264">"اافزودن حساب جدید"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"تماس ارسال نشد"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"برای راهاندازی پست صوتی به منو > تنظیمات بروید."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"برای تماس با پست صوتی، ابتدا حالت هواپیما را غیرفعال کنید."</string>
<string name="menu_export_database" msgid="2659719297530170820">"صدور فایلهای پایگاه داده"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"گزینههای بیشتر"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"بزرگ یا کوچک کردن قسمتهای نام"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"عکس. جهت تغییر انتخاب کنید"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 773552e..9fd99d2 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Puhelin"</string>
<string name="people" msgid="1048457247435785074">"Henkilöt"</string>
<string name="contactsList" msgid="8661624236494819731">"Yhteystiedot"</string>
<string name="shortcutContact" msgid="749243779392912958">"Yhteystieto"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Tietoja"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Päivitykset"</string>
<string name="searchHint" msgid="8482945356247760701">"Hae yhteystiedoista"</string>
- <string name="menu_search" msgid="9147752853603483719">"Haku"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Uusi yhteystieto"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Näytä yhteystieto"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Lisää suosikkeihin"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Poista suosikeista"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Muokkaa"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Poista"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopioi"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Paikka aloitusruudussa"</string>
<string name="menu_call" msgid="3992595586042260618">"Soita"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Lähetä tekstiviesti yhteystiedolle"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Valmis"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Peruuta"</string>
<string name="menu_discard" msgid="6456087569315685632">"Hylkää"</string>
- <string name="label_notes" msgid="8337354953278341042">"Muistiinpanot"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internet-puhelu"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Yritys"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Nimi"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Luo uusi yhteystieto"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Puhelin"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Sähköposti"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Pikaviestitili"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Osoite"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisaatio"</item>
<item msgid="7196592230748086755">"Muistiinpano"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Ei yhteystietoja."</string>
<string name="noGroups" msgid="8614664663561385253">"Ei ryhmiä."</string>
<string name="noAccounts" msgid="7768267764545265909">"Tarvitset tilin ryhmien luomiseen."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Hakua vastaavia yhteystietoja ei löydy."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Ei yhteystietoja, joissa on puhelinnumero."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Tässä ryhmässä ei ole ihmisiä."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Muokkaa ryhmää, niin voit lisätä ihmisiä."</string>
<string name="savingContact" msgid="4075751076741924939">"Tallennetaan yhteystietoa…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Tallennetaan näyttövalintoja…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Yhteystieto tallennettu"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Ei voitu tallentaa yhteystietojen muutoksia."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Ryhmä tallennettu."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 yhteystieto"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> yhteystietoa"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Ei yhteystietoja."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Ei näkyviä yhteystietoja."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Ei suosikkeja."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Ei yhteystietoja ryhmässä <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Yhteystiedot: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Yksi kontakti"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontaktit muokatussa näkymässä"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Löytyi yli <xliff:g id="COUNT">%d</xliff:g> yhteystietoa."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Ei kontakteja"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Löytyi 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Kaikki kontaktit"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Ryhmät"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Suosikit"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Suosikit ja kaikki yhteystiedot"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Puhelin"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Puheluloki"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Lähetä tekstiviesti"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Soita: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muokkaa numeroa ennen puhelua"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisää yhteystietoihin"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Poista puhelulokista"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Tyhjennä puheluloki"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Poista vastaajaviesti"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Jaa vastaajaviesti"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Puheluloki on tyhjä."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Tyhjennä puheluloki?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Kaikki puhelutallenteet poistetaan."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Tyhjennetään puhelulokia..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Tyhjennetäänkö usein käytetyt?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Toiminto tyhjentää Henkilöt- ja Puhelin-sovellusten usein käytettyjen kontaktien luettelon. Lisäksi sähköpostisovellukset pakotetaan opettelemaan osoiteasetuksesi uudestaan."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Tyhjennetään usein käytetyt..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI-koodi"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Vastaaja"</string>
- <string name="unknown" msgid="740067747858270469">"Tuntematon"</string>
- <string name="private_num" msgid="6374339738119166953">"Yksityinen numero"</string>
- <string name="payphone" msgid="4864313342828942922">"Puhelinkoppi"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Valitse numero näppäimistöllä"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Lisää puhelu näppäilemällä numero"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ladataan SIM-kortilta…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM-kortin yhteystiedot"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Ei näytettäviä yhteystietoja. (Jos olet juuri lisännyt tilin, yhteystietojen synkronoinnissa voi mennä hetki.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Ei näytettäviä yhteystietoja."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Ei näytettäviä yhteystietoja."\n\n"Voit lisätä yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida tablet-laitteen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SIM- tai SD-kortiltasi"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Ei näytettäviä yhteystietoja."\n\n"Lisää yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida puhelimen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SIM- tai SD-kortiltasi"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Ei näytettäviä yhteystietoja. (Jos lisäsit tilin äskettäin, yhteystietojen synkronointi voi kestää muutaman minuutin.)"\n\n"Lisää yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida tablet-laitteen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Näyttövalinnat"</b></font>" muuttaaksesi sitä, mitkä yhteystiedot ovat näkyvissä"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SIM- tai SD-kortiltasi"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Ei näytettäviä yhteystietoja. (Jos lisäsit tilin äskettäin, yhteystietojen synkronointi voi kestää muutaman minuutin.)"\n\n"Lisää yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida puhelimen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Näyttövalinnat"</b></font>" muuttaaksesi sitä, mitkä yhteystiedot ovat näkyvissä"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SIM- tai SD-kortiltasi"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Ei näytettäviä yhteystietoja."\n\n"Lisää yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida tablet-laitteen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SD-kortiltasi"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Ei näytettäviä yhteystietoja."\n\n"Voit lisätä yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida puhelimen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SD-kortiltasi"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Ei näytettäviä yhteystietoja. (Jos olet juuri lisännyt tilin, yhteystietojen synkronoinnissa voi mennä hetki.)"\n\n"Voit lisätä yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida tablet-laitteen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Näyttövalinnat"</b></font>" muuttaaksesi sitä, mitkä yhteystiedot ovat näkyvissä"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SD-kortiltasi"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Ei näytettäviä yhteystietoja. (Jos lisäsit tilin äskettäin, yhteystietojen synkronointi voi kestää muutaman minuutin."\n\n"Lisää yhteystietoja koskettamalla "<font fgcolor="#ffffffff"><b>"Valikko"</b></font>" ja koskettamalla:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tilit"</b></font>" lisätäksesi tilin tai muokataksesi tiliä, jonka yhteystiedot voit synkronoida puhelimen kanssa"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Näyttövalinnat"</b></font>" muuttaaksesi sitä, mitkä yhteystiedot ovat näkyvissä"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uusi yhteystieto"</b></font>" luodaksesi uudet yhteystiedot alusta alkaen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tuo/Vie"</b></font>" tuodaksesi yhteystietoja SD-kortiltasi"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Sinulla ei ole suosikkeja."\n\n"Yhteystiedon lisääminen suosikkeihin:"\n\n" "<li>"Kosketa "<b>"Yhteystiedot"</b>"-välilehteä"\n</li>" "\n<li>"Kosketa yhteystietoa, jonka haluat lisätä suosikkeihisi"\n</li>" "\n<li>"Kosketa yhteystiedon nimen vieressä näkyvää tähteä"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Käytä näppäimistöä"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Palaa käynnissä olevaan puheluun"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lisää puhelu"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Puhelun tiedot"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Valitun puhelun tietoja ei voi lukea."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Saapuva puhelu"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Lähtevä puhelu"</string>
- <string name="type_missed" msgid="2720502601640509542">"Vastaamatta jäänyt puhelu"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Vastaaja"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Saapuvat puhelut"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Usein käytetyt"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Soitettu usein"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Lisätäänkö <xliff:g id="EMAIL">%s</xliff:g> yhteystietoihin?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"yksi"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"kaksi"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"kolme"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"neljä"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"viisi"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"kuusi"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"seitsemän"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"kahdeksan"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"yhdeksän"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"tähti"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nolla"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"punta"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"vastaaja"</string>
- <string name="description_search_button" msgid="3660807558587384889">"haku"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"soita"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"askelpalautin"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numero johon soitetaan"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"yhteystiedon valokuva"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"poista"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Näytä yhteystieto"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tallennustilaa ei löydy."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-korttia ei löydy."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Tuo SIM-kortilta"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Tuo tallennustilasta"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Vie tallennustilaan"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Jaa näkyvät yhteystiedot"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Tuo yksi vCard-tiedosto"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Tuo useita vCard-tiedostoja"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Tuo kaikki vCard-tiedostot"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Etsitään vCard-tietoja tallennustilasta..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Etsitään vCard-tietoja SD-kortilta..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Tallennustilan luku epäonnistui. (Syy: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-korttia ei voi lukea. (Syy: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-virhe"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Muisti ei riitä. Tiedosto voi olla liian suuri."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"vCardia ei voi jäsentää odottamattomasta syystä."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Muotoa ei tueta."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard-tietojen tuominen epäonnistui."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Tallennustilasta ei löydy vCard-tiedostoja."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD-kortilta ei löydy vCard-tiedostoa."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Annettujen vCard-tiedostojen sisällönkuvaustietojen noutaminen epäonnistui."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Ainakin yhden tiedoston tuominen epäonnistui (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Tuntematon virhe."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Valitse vCard-tiedosto"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Vie välimuistiin"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Lisätään vCard-tietojen välimuistiversiot paikalliseen väliaikaistallennustilaan. Tuonti alkaa pian."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Tuodaan <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Tuodaan <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCard-tietojen luku epäonnistui."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCard-tietojen lukeminen peruttu"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCardin <xliff:g id="FILENAME">%s</xliff:g> tuonti valmis"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Kohteen <xliff:g id="FILENAME">%s</xliff:g> tuonti peruttu"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> tuodaan pian."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Tiedosto tuodaan pian."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard-tuontipyyntö hylättiin. Yritä myöhemmin uudelleen."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> viedään pian."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard-vientipyyntö hylättiin. Yritä myöhemmin uudelleen."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"yhteystieto"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Vie yhteystietoja?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Yhteystietoluettelosi viedään tiedostoon: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Vieminen epäonnistui"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Yhteystietoja ei viety."\n"Syy: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Ei vietäviä yhteystietoja."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Tallennustilassa on liian monta vCard-tiedostoa."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD-kortilla on liian monta vCard-tiedostoa."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Tarvittava tiedostonimi on liian pitkä (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti valmis."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti peruutettu."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Viedään yhteystietoja"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Yhteystietosi viedään kohteeseen: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Vientiohjelman käynnistys epäonnistui: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Virhe viennin aikana: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Tietokannan tietojen hakeminen epäonnistui."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Ei vietäviä yhteystietoja. Jos tablet-laitteellasi on yhteystietoja, tietojen tarjoaja on saattanut estää niiden viemisen tablet-laitteen ulkopuolelle."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Ei vietäviä yhteystietoja. Jos puhelimessasi on yhteystietoja, tietojen tarjoaja on saattanut estää niiden viemisen puhelimen ulkopuolelle."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-luonti ei käynnistynyt oikein."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tiedostoa \"<xliff:g id="FILE_NAME">%s</xliff:g>\" ei voi avata: <xliff:g id="EXACT_REASON">%s</xliff:g>"</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> yhteystietoa"</string>
- <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Peruuta kohteen <xliff:g id="FILENAME">%s</xliff:g> tuonti?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Peruuta kohteen <xliff:g id="FILENAME">%s</xliff:g> vienti?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardin tuonnin/viennin peruutus epäonn."</string>
<string name="search_settings_description" msgid="2675223022992445813">"Yhteystietojen nimet"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Lisää 2 sekunnin tauko"</string>
- <string name="add_wait" msgid="3360818652790319634">"Lisää tauko"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Valitse numero"</string>
- <string name="call_settings" msgid="7666474782093693667">"Asetukset"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Valitse numero"</string>
- <string name="make_primary" msgid="5829291915305113983">"Muista valinta"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Tätä toimintoa käsittelevää sovellusta ei löydy."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Ei nimeä)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Tilit"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Tyhjennä usein käytetyt"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Näytettävät yhteystiedot"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Tuo/Vie"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Tuo/Vie yhteystietoja"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Tuo yhteystietoja"</string>
<string name="menu_share" msgid="943789700636542260">"Jaa"</string>
<string name="share_via" msgid="563121028023030093">"Jaa yhteystieto"</string>
- <string name="share_error" msgid="948429331673358107">"Tätä yhteystietoa ei voi jakaa."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nimi"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Lempinimi"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisaatio"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Sivusto"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Tapahtumat"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Suhde"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Ryhmät"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Luo yhteystieto tilissä"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Luo ryhmä tilissä"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Poista synkronointiryhmä"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Lisää synkronointiryhmä"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Lisää ryhmiä…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Kaikki muut yhteystiedot"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Kaikki yhteystiedot"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Ryhmän <xliff:g id="GROUP">%s</xliff:g> poistaminen synkronoinnista lopettaa myös ryhmittelemättömien yhteystietojen synkronoinnin."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Vain tablet-laite, ei synkronoitu"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Vain puhelin, ei synkronoitu"</string>
- <string name="call_custom" msgid="7756571794763171802">"Soita: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Soita kotinumeroon"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Soita matkapuhelimeen"</string>
- <string name="call_work" msgid="5328785911463744028">"Soita työnumeroon"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Soita faksinumeroon (työ)"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Soita faksinumeroon (koti)"</string>
- <string name="call_pager" msgid="9003902812293983281">"Soita hakulaitteeseen"</string>
- <string name="call_other" msgid="8563753966926932052">"Soita"</string>
- <string name="call_callback" msgid="1910165691349426858">"Soita takaisinsoittonumeroon"</string>
- <string name="call_car" msgid="3280537320306436445">"Soita autopuhelimeen"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Soita yrityksen ensisijaiseen numeroon"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Soita ISDN-numeroon"</string>
- <string name="call_main" msgid="6082900571803441339">"Soita ensisijaiseen numeroon"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Soita faksinumeroon"</string>
- <string name="call_radio" msgid="8296755876398357063">"Soita radiopuhelimeen"</string>
- <string name="call_telex" msgid="2223170774548648114">"Soita teleksinumeroon"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Soita tekstipuhelimeen"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Soita matkapuhelimeen (työ)"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Soita hakulaitteeseen (työ)"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Soita: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Soita MMS-numeroon"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Lähetä tekstiviesti: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Lähetä tekstiviesti kotinumeroon"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Lähetä tekstiviesti matkapuhelimeen"</string>
- <string name="sms_work" msgid="2269624156655267740">"Lähetä tekstiviesti työnumeroon"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Lähetä tekstiviesti faksinumeroon (työ)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Lähetä tekstiviesti faksinumeroon (koti)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Lähetä tekstiviesti hakulaitteeseen"</string>
- <string name="sms_other" msgid="806127844607642331">"Tekstiviesti"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Lähetä tekstiviesti takaisinsoittonumeroon"</string>
- <string name="sms_car" msgid="7444227058437359641">"Lähetä tekstiviesti autopuhelimeen"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Lähetä tekstiviesti yrityksen ensisijaiseen numeroon"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Lähetä tekstiviesti ISDN-numeroon"</string>
- <string name="sms_main" msgid="8621625784504541679">"Lähetä tekstiviesti ensisijaiseen numeroon"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Lähetä tekstiviesti faksinumeroon"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Lähetä tekstiviesti radiopuhelimeen"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Lähetä tekstiviesti teleksinumeroon"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Lähetä tekstiviesti tekstipuhelimeen"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Lähetä tekstiviesti matkapuhelimeen (työ)"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Lähetä tekstiviesti hakulaitteeseen (työ)"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Lähetä tekstiviesti: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Lähetä tekstiviesti MMS-numeroon"</string>
- <string name="sms" msgid="1756857139634224222">"Tekstiviesti"</string>
- <string name="email_home" msgid="8573740658148184279">"Lähetä sähköpostia kotiosoitteeseen"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Lähetä sähköpostia mobiiliosoitteeseen"</string>
- <string name="email_work" msgid="2807430017302722689">"Lähetä sähköpostia työosoitteeseen"</string>
- <string name="email_other" msgid="3454004077967657109">"Sähköposti"</string>
- <string name="email_custom" msgid="7548003991586214105">"Lähetä sähköpostia osoitteeseen <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Sähköposti"</string>
- <string name="map_home" msgid="1243547733423343982">"Näytä kotiosoite"</string>
- <string name="map_work" msgid="1360474076921878088">"Näytä työosoite"</string>
- <string name="map_other" msgid="3817820803587012641">"Näytä osoite"</string>
- <string name="map_custom" msgid="6184363799976265281">"Näytä osoite <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Keskustele AIM:n avulla"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Keskustele Windows Liven avulla"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Keskustele Yahoon avulla"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Keskustele Skypen avulla"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Keskustele QQ:n avulla"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Keskustele Google Talkin avulla"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Keskustele ICQ:n avulla"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Keskustele Jabberin avulla"</string>
- <string name="chat" msgid="9025361898797412245">"Pikaviesti"</string>
<string name="audio_chat" msgid="2535716629358298691">"Äänikeskustelu"</string>
<string name="video_chat" msgid="1872255818640336072">"Videokeskustelu"</string>
- <string name="postal_address" msgid="8765560217149624536">"Osoite"</string>
- <string name="postal_street" msgid="8133143961580058972">"Katuosoite"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postilokero"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Kaupunginosa"</string>
- <string name="postal_city" msgid="6597491300084895548">"Kaupunki"</string>
- <string name="postal_region" msgid="6045263193478437672">"Lääni"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postinumero"</string>
- <string name="postal_country" msgid="7638264508416368690">"Maa"</string>
- <string name="full_name" msgid="6602579550613988977">"Nimi"</string>
- <string name="name_given" msgid="1687286314106019813">"Etunimi"</string>
- <string name="name_family" msgid="3416695586119999058">"Sukunimi"</string>
- <string name="name_prefix" msgid="59756378548779822">"Nimen etuliite"</string>
- <string name="name_middle" msgid="8467433655992690326">"Toinen nimi"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Nimen jälkiliite"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Etunimen ääntämistapa"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Toisen nimen ääntämistapa"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Sukunimen ääntämistapa"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nimen ääntämistapa"</string>
<string name="connections" msgid="8098440723172028350">"Yhteydet"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Lisää yhteys"</string>
<string name="recent" msgid="2659189233141493004">"Viimeisimmät"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Luettelon lajittelutapa"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Etunimi"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Sukunimi"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Näytä yhteystietojen nimet"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Näytä kontaktien nimet"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Etunimi ensin"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Sukunimi ensin"</string>
<string name="take_photo" msgid="7496128293167402354">"Ota valokuva"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Näytä kaikki"</string>
<string name="menu_select_all" msgid="621719255150713545">"Valitse kaikki"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Poista kaikki valinnat"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Ei valittuja yhteystietoja."</string>
<string name="add_field" msgid="2384260056674995230">"Lisää toinen kenttä"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Lisää uusi"</string>
<string name="add_organization" msgid="7311893231158291197">"Lisää organisaatio"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"ei yhdistetty"</item>
<item quantity="other" msgid="425683718017380845">"yhdistetty <xliff:g id="COUNT">%0$d</xliff:g> lähteestä"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Muu"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Yhdistetäänkö nykyiset yhteystiedot valittujen yhteystietojen kanssa?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Haluatko muokata valittuja yhteystietoja? Antamasi tiedot kopioidaan."</string>
<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="directory_search_label" msgid="1887759056597975053">"Hakemisto"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Kaikki yhteystiedot"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Luodaan kopio..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Kaikki yhteystiedot"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Tähdelliset"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Oma"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Muokkaa"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Kaikki kontaktit puhelinnumeroineen"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Yhteystiedot"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Määritä oma näkymä"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Ladataan..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Asetukset"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Näytettävät yhteystiedot"</string>
<string name="menu_settings" msgid="377929915873428211">"Asetukset"</string>
<string name="menu_help" msgid="5123887102216637725">"Ohje"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Näyttövalinnat"</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="hint_findContacts" msgid="1808681193458772072">"Etsi yhteystietoja"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Puhelinnumero"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Lisää yhteystietoihin"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Lisää yhteystietoon"</string>
@@ -497,61 +215,7 @@
<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">"Luo profiili"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Kirjoita henkilön nimi"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Näytä päivitykset"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Vastaaja"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Toista"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uusi vastaajaviesti: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Vastaajaviestin toisto ei onnistu."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Puskuroidaan..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Haetaan vastaajaviestiä..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Vastaajaviestin nouto epäonnistui."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Uusi"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Vanhemmat"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Vain vastaajaan menneet puhelut"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Vain saapuvat puhelut"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Vain soitetut puhelut"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Vain vastaamattomat puhelut"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Ei voi yhdistää vastaajapalvelimeen."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Ei voi yhdist. vastaajapalvelimeen. Uusia viestejä vastaajassa."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Ota puhelinvastaaja käyttöön."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Ääntä ei ole saatavilla."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Asetusten määritys"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Soita vastaajaan"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Hitain"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Hidas"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normaali nopeus"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Nopea"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Nopein"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Ryhmän nimi"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakti saatu (NFC)"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Näytä vain soitetut"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Näytä vain saapuneet"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Näytä vain vastaamattomat"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Näytä vain vastaajaviestit"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Näytä kaikki puhelut"</string>
- <string name="status_available" msgid="5586870015822828392">"Tavoitettavissa"</string>
- <string name="status_away" msgid="1838861100379804730">"Poissa"</string>
- <string name="status_busy" msgid="9147992455450257136">"Varattu"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Toista vastaajaviesti"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Saapuva puhelu"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Lähtevä puhelu"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Vastaamaton puhelu"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Vastaaja"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Lisää yhteystieto"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Näytä yhteystieto <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Soita: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Lähetä tekstiviesti: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Kuuntelematon vastaajaviesti"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Lähetä viesti henkilölle <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Henkilön <xliff:g id="NAME">%1$s</xliff:g> puhelinnumero"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Pikayhteys henkilöön <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Minä"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Säilytä paikallisena"</string>
<string name="add_account" msgid="8201790677994503186">"Lisää tili"</string>
<string name="add_new_account" msgid="5748627740680940264">"Lisää uusi tili"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Puhelua ei soitettu"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Määritä puhelinvastaajan asetukset kohdassa Valikko > Asetukset."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Poista lentokonetila käytöstä ennen vastaajaan soittamista."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Vie tietokantatiedostot"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Lisää vaihtoehtoja"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Laajenna tai tiivistä nimikentät"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Kuva. Vaihda valitsemalla"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 54e5fbd..aae5705 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Téléphone"</string>
<string name="people" msgid="1048457247435785074">"Contacts"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"À propos de"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Mises à jour"</string>
<string name="searchHint" msgid="8482945356247760701">"Rech. des contacts"</string>
- <string name="menu_search" msgid="9147752853603483719">"Rechercher"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nouveau contact"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Afficher le contact"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Copier"</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>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"OK"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Annuler"</string>
<string name="menu_discard" msgid="6456087569315685632">"Ignorer"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notes"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Appel Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Entreprise"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titre"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Téléphone"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresse"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisation"</item>
<item msgid="7196592230748086755">"Remarque"</item>
@@ -98,12 +83,9 @@
<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="noMatchingContacts" msgid="4266283206853990471">"Aucun contact correspondant n\'a été trouvé."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Aucun contact disposant d\'un numéro téléphone."</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="savingDisplayGroups" msgid="2133152192716475939">"Enregistrement des options d\'affichage..."</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>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contact"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacts"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Aucun contact"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Aucun contact visible"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Aucun favori"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Aucun contact dans <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contacts dans <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Contact unique"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contacts en affichage personnalisé"</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> contact(s) trouvé(s)"</item>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Plus de <xliff:g id="COUNT">%d</xliff:g> résultats trouvés."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Aucun contact"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 contact trouvé"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Tous les contacts"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Groupes"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoris"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoris et tous les contacts"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Tél."</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Appels"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Envoyer un SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifier le numéro avant d\'effectuer l\'appel"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ajouter aux contacts"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Supprimer du journal d\'appels"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Effacer tous les appels"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Supprimer le message vocal"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Partager le message vocal"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Aucun appel."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Effacer les appels ?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Votre journal d\'appels va être supprimé."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Effacement des appels…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Effacer les contacts fréquents ?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Cette opération efface la liste des personnes que vous contactez le plus souvent dans les applications Contacts et Téléphone, et oblige vos applications de messagerie électronique à apprendre à nouveau les adresses que vous utilisez le plus souvent."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Suppression des contacts fréquents"</string>
- <string name="imei" msgid="3045126336951684285">"Code IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Messagerie vocale"</string>
- <string name="unknown" msgid="740067747858270469">"Inconnu"</string>
- <string name="private_num" msgid="6374339738119166953">"Numéro privé"</string>
- <string name="payphone" msgid="4864313342828942922">"Cabine téléphonique"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilisez le clavier pour composer le numéro"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Composer"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargement depuis la carte SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contacts de carte SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Vous n\'avez aucun contact à afficher. Si vous venez d\'ajouter un compte, la synchronisation des contacts peut prendre quelques minutes."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Vous n\'avez aucun contact à afficher."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Vous n\'avez aucun contact à afficher."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec votre tablette"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SIM ou votre carte SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Vous n\'avez aucun contact à afficher."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec votre téléphone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SIM ou votre carte SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Vous n\'avez aucun contact à afficher (si vous venez d\'ajouter un compte, la synchronisation des contacts peut prendre quelques minutes)."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec la tablette"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Options d\'affichage"</b></font>" pour modifier les paramètres de visibilité des contacts"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer des contacts depuis votre carte SIM ou votre carte SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Vous n\'avez aucun contact à afficher (si vous venez d\'ajouter un compte, la synchronisation des contacts peut prendre quelques minutes)."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec le téléphone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Options d\'affichage"</b></font>" pour modifier les paramètres de visibilité des contacts"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer des contacts depuis votre carte SIM ou votre carte SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Vous n\'avez aucun contact à afficher."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec votre tablette"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Vous n\'avez aucun contact à afficher."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec votre téléphone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Vous n\'avez aucun contact à afficher (si vous venez d\'ajouter un compte, la synchronisation des contacts peut prendre quelques minutes)."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec la tablette"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Options d\'affichage"</b></font>" pour modifier les paramètres de visibilité des contacts"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Vous n\'avez aucun contact à afficher (si vous venez d\'ajouter un compte, la synchronisation des contacts peut prendre quelques minutes)."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", puis sur :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Comptes"</b></font>" pour ajouter ou configurer un compte dont vous pourrez synchroniser les contacts avec le téléphone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Options d\'affichage"</b></font>" pour modifier les paramètres de visibilité des contacts"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer/Exporter"</b></font>" pour importer les contacts depuis votre carte SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Vous ne disposez d\'aucun favoris."\n\n"Pour ajouter un contact à la liste de favoris :"\n\n" "<li>"Appuyez sur l\'onglet "<b>"Contacts"</b>"."\n</li>" "\n<li>"Appuyez sur le contact à ajouter à vos favoris."\n</li>" "\n<li>"Appuyez sur l\'étoile en regard du nom du contact."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utiliser le clavier DTMF"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Reprendre l\'appel en cours"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Autre appel"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Détails sur l\'appel"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Impossible de consulter les détails de l\'appel demandé."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Appel entrant"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Appel sortant"</string>
- <string name="type_missed" msgid="2720502601640509542">"Appel manqué"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Messagerie vocale"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Appels entrants"</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="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contacts fréquents"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Appels fréquents"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ajouter \"<xliff:g id="EMAIL">%s</xliff:g>\" aux contacts ?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"un"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"deux"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trois"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quatre"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinq"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"six"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sept"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"huit"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"neuf"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"étoile"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zéro"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"dièse"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"messagerie vocale"</string>
- <string name="description_search_button" msgid="3660807558587384889">"rechercher"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"composer"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"retour arrière"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numéro à composer"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"photo du contact"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"supprimer"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Afficher le contact"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Aucune mémoire stock. trouvée."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Aucune carte SD détectée."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importer à partir de la carte SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importer depuis mémoire"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporter vers la mémoire"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Partager les contacts visibles"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importer un fichier vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importer plusieurs fichiers vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer tous les fichiers vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Recherche de données vCard dans la mémoire de stockage…"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Recherche de données vCard sur la carte SD…"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Impossible d\'explorer la mémoire de stockage pour la raison suivante : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Impossible d\'explorer la carte SD pour la raison suivante : <xliff:g id="FAIL_REASON">%s</xliff:g>."</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Erreur d\'E/S."</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Mémoire insuffisante. Le fichier est peut-être trop volumineux."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Impossible d\'analyser le fichier vCard pour une raison inattendue."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Ce format n\'est pas compatible."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Impossible d\'importer le fichier vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Aucun fichier vCard trouvé dans la mémoire de stockage."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Aucun fichier vCard trouvé sur la carte SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Impossible de collecter des métadonnées contenues dans le ou les fichiers vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Impossible d\'importer un ou plusieurs fichiers (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Erreur inconnue."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Sélectionner vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Mise en cache…"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Mise en cache des fichiers vCard dans l\'espace de stockage temporaire local. L\'importation va bientôt démarrer."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importation en cours <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> : <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importation en cours : <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Impossible de lire les données vCard."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lecture des données vCard annulée"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Fichier vCard <xliff:g id="FILENAME">%s</xliff:g> importé"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importation de \"<xliff:g id="FILENAME">%s</xliff:g>\" annulée"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Importation du fichier <xliff:g id="FILENAME">%s</xliff:g> imminente"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Le fichier va bientôt être importé."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"La demande d\'importation du fichier vCard a été rejetée. Veuillez réessayer ultérieurement."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Exportation du fichier <xliff:g id="FILENAME">%s</xliff:g> imminente"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"La demande d\'exportation du fichier vCard a été rejetée. Veuillez réessayer ultérieurement."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contact"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exporter contacts ?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Votre liste de contacts va être exportée vers le fichier \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\"."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Échec exportation"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Les données du contact n\'ont pas été exportées."\n"Motif : \"<xliff:g id="FAIL_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Aucun contact ne peut être exporté."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"La mémoire de stockage contient trop de fichiers vCard."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"La carte SD contient trop de fichiers vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Le nom de fichier requis est trop long (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exportation de \"<xliff:g id="FILENAME">%s</xliff:g>\" terminée"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exportation de \"<xliff:g id="FILENAME">%s</xliff:g>\" annulée"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exportation des données des contacts"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Vos données de contact sont en cours d\'exportation vers : \"<xliff:g id="FILE_NAME">%s</xliff:g>\"."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Impossible de démarrer le programme d\'exportation : \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Une erreur s\'est produite lors de l\'exportation : \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Impossible d\'obtenir les informations concernant la base de données."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre tablette, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Aucun contact ne peut être exporté. Si des contacts sont enregistrés sur votre téléphone, il est possible qu\'un fournisseur de données n\'autorise pas l\'exportation de contacts vers un autre appareil."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Le système de composition vCard n\'a pas démarré correctement."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Impossible d\'ouvrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\" pour la raison suivante : <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Annuler l\'importation de \"<xliff:g id="FILENAME">%s</xliff:g>\" ?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Annuler l\'exportation de \"<xliff:g id="FILENAME">%s</xliff:g>\" ?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Impossible annuler import./export. vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Noms de vos contacts"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
- <string name="add_wait" msgid="3360818652790319634">"Ajouter Attendre"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Sélectionner un numéro"</string>
- <string name="call_settings" msgid="7666474782093693667">"Paramètres"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Sélectionner un numéro"</string>
- <string name="make_primary" msgid="5829291915305113983">"Mémoriser ce choix"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aucune application pouvant gérer cette action n\'a été trouvée."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Sans nom)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Comptes"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Effacer les contacts fréquents"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contacts à afficher"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importer/Exporter"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/Export contacts"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importer des contacts"</string>
<string name="menu_share" msgid="943789700636542260">"Partager"</string>
<string name="share_via" msgid="563121028023030093">"Partager contact via"</string>
- <string name="share_error" msgid="948429331673358107">"Impossible de partager ce contact."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nom"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Pseudo"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisation"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Site Web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Événements"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relation"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Groupes"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Créer un contact sous le compte"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Sélectionner le compte associé au groupe"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Supprimer le groupe de synchronisation"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Ajouter groupe de synchronisation"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Autres groupes..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Tous les autres contacts"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Tous les contacts"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Le retrait de \"<xliff:g id="GROUP">%s</xliff:g>\" de la synchronisation entraînera également le retrait des contacts n\'appartenant à aucun groupe."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tablette uniquement ; non synchronisé"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Téléphone uniquement, sans synchronisation"</string>
- <string name="call_custom" msgid="7756571794763171802">"Appeler <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Appeler domicile"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Appeler mobile"</string>
- <string name="call_work" msgid="5328785911463744028">"Appeler bureau"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Composer télécopie (bureau)"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Composer fax (domicile)"</string>
- <string name="call_pager" msgid="9003902812293983281">"Appeler téléavertisseur"</string>
- <string name="call_other" msgid="8563753966926932052">"Appeler"</string>
- <string name="call_callback" msgid="1910165691349426858">"Appeler numéro de rappel"</string>
- <string name="call_car" msgid="3280537320306436445">"Appeler voiture"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Appeler entreprise (principal)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Appeler numéro RNIS"</string>
- <string name="call_main" msgid="6082900571803441339">"Appeler numéro principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Appeler numéro de fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Appeler par signal radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Appeler par télex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Appeler TTY/TTD (malentendants)"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Appeler mobile bureau"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Appeler téléavertisseur bureau"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Appeler <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Appeler MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Envoyer un SMS à <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Envoyer un SMS au domicile"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Envoyer un SMS vers mobile"</string>
- <string name="sms_work" msgid="2269624156655267740">"Envoyer un SMS au bureau"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Envoyer un SMS vers télécopie (bureau)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Envoyer un SMS vers télécopie (domicile)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Envoyer un SMS vers téléavertisseur"</string>
- <string name="sms_other" msgid="806127844607642331">"Envoyer un SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Envoyer un SMS au numéro de rappel"</string>
- <string name="sms_car" msgid="7444227058437359641">"Envoyer un SMS vers voiture"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Envoyer un SMS à entreprise (principal)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Envoyer un SMS vers numéro RNIS"</string>
- <string name="sms_main" msgid="8621625784504541679">"Envoyer un SMS au numéro principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Envoyer un SMS à ce numéro de fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Envoyer un SMS vers radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Envoyer un SMS par télex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Envoyer SMS vers numéro TTY/TTD (malentendants)"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Envoyer un SMS sur le mobile professionnel"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Envoyer un SMS vers téléavertisseur (bureau)"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Envoyer un SMS à <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Envoyer un MMS"</string>
- <string name="sms" msgid="1756857139634224222">"SMS"</string>
- <string name="email_home" msgid="8573740658148184279">"Env. e-mail domicile"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Envoyer un e-mail sur le mobile"</string>
- <string name="email_work" msgid="2807430017302722689">"Env. e-mail bureau"</string>
- <string name="email_other" msgid="3454004077967657109">"Envoyer un e-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"Envoyer un e-mail à <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Envoyer un e-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Afficher adresse perso"</string>
- <string name="map_work" msgid="1360474076921878088">"Afficher adresse prof."</string>
- <string name="map_other" msgid="3817820803587012641">"Afficher l\'adresse"</string>
- <string name="map_custom" msgid="6184363799976265281">"Afficher adresse <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatter via AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatter via Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatter via Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatter via Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatter via QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatter via Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatter via ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatter via Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chatter"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat audio"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat vidéo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresse"</string>
- <string name="postal_street" msgid="8133143961580058972">"Rue"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Boîte postale"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Voisinage"</string>
- <string name="postal_city" msgid="6597491300084895548">"Ville"</string>
- <string name="postal_region" msgid="6045263193478437672">"État"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Code postal"</string>
- <string name="postal_country" msgid="7638264508416368690">"Pays"</string>
- <string name="full_name" msgid="6602579550613988977">"Nom"</string>
- <string name="name_given" msgid="1687286314106019813">"Prénom"</string>
- <string name="name_family" msgid="3416695586119999058">"Nom"</string>
- <string name="name_prefix" msgid="59756378548779822">"Titre"</string>
- <string name="name_middle" msgid="8467433655992690326">"2e prénom"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Suffixe"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Phonétique du prénom"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Phonétique 2e prénom"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Phonétique du nom"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nom phonétique"</string>
<string name="connections" msgid="8098440723172028350">"Contacts"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Ajouter un contact"</string>
<string name="recent" msgid="2659189233141493004">"Récentes"</string>
@@ -407,13 +138,13 @@
<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="18022868169627979">"Afficher les contacts par"</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="3746334626214970837">"Sélectionner une photo dans la galerie"</string>
- <string name="pick_new_photo" msgid="7962368009197147617">"Sélectionner une autre photo dans la galerie"</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="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\n"Cette opération nécessite environ <xliff:g id="SIZE_IN_MEGABYTES">%s</xliff:g> Mo de mémoire de stockage interne."\n\n"Veuillez sélectionner l\'une des options suivantes :"</string>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Aucun contact sélectionné"</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"1 contact non fusionné"</item>
<item quantity="other" msgid="425683718017380845">"1 contact fusionné à partir de <xliff:g id="COUNT">%0$d</xliff:g> sources"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Autre"</string>
<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="directory_search_label" msgid="1887759056597975053">"Annuaire"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Tous les contacts"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Création d\'une copie personnelle…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Tous les contacts"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Contacts favoris"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personnalisé"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personnaliser"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Tous les contacts disposant d\'un numéro de téléphone"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contact"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Définir un affichage personnalisé"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Chargement…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Paramètres"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contacts à afficher"</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="hint_findContacts" msgid="1808681193458772072">"Rechercher contacts"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Afficher mises à jour"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Messages vocaux"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messages vocaux"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Impossible d\'écouter le message vocal."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Mise en mémoire tampon..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Récupération des messages vocaux..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Impossible de récupérer messages vocaux."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nouveau"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Précédent"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Seulement les appels avec message vocal"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Seulement les appels entrants"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Seulement les appels sortants"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Seulement les appels manqués"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Impossible de se connecter au serveur de messagerie vocale."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Connexion messagerie vocale impossible. Messages en attente."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configurez votre messagerie vocale."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Contenu audio indisponible."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configuration"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Appeler mess. vocale"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Vitesse minimale"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"vitesse lente"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Vitesse normale"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Vitesse rapide"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Vitesse maximale"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nom du groupe"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contact reçu via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Afficher appels sortants uniq."</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Afficher appels entrants uniq."</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponible"</string>
- <string name="status_away" msgid="1838861100379804730">"Absent"</string>
- <string name="status_busy" msgid="9147992455450257136">"Occupé"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Écouter le message vocal"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Appel entrant"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Appel sortant"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Appel manqué"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Message vocal"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Ajouter un contact"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Afficher le contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Appeler <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Envoyer un SMS à <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nouveau message vocal"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Envoyer un message à <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Composer le numéro de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Liens rapides vers <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Moi"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Enregistrer localement"</string>
<string name="add_account" msgid="8201790677994503186">"Ajouter un compte"</string>
<string name="add_new_account" msgid="5748627740680940264">"Ajouter un compte"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Appel non effectué."</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pour configurer la messagerie vocale, accédez à Menu > Paramètres."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Veuillez désactiver le mode Avion avant d\'appeler la messagerie vocale."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exporter les fichiers de la base de données"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Plus d\'options"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Développer ou réduire les champs de nom"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Image : sélectionner pour modifier"</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 617453a..a019c62 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"फ़ोन"</string>
<string name="people" msgid="1048457247435785074">"लोग"</string>
<string name="contactsList" msgid="8661624236494819731">"संपर्क"</string>
<string name="shortcutContact" msgid="749243779392912958">"संपर्क"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"इस बारे में"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"अपडेट"</string>
<string name="searchHint" msgid="8482945356247760701">"संपर्क खोजें"</string>
- <string name="menu_search" msgid="9147752853603483719">"खोज"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"नया संपर्क"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"संपर्क देखें"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</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_copy" msgid="6108677035381940698">"प्रतिलिपि"</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>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"इस संपर्क में एकाधिक खातों की जानकारी है. केवल-पढ़ने के लिए खातों की जानकारी आपकी संपर्क सूचियों में छिपी रहेगी, उसे हटाया नहीं जाएगा."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"इस संपर्क को हटाने से एकाधिक खातों से जानकारी हट जाएगी."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"यह संपर्क हटा दिया जाएगा."</string>
- <string name="menu_done" msgid="796017761764190697">"पूर्ण"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"रद्द करें"</string>
<string name="menu_discard" msgid="6456087569315685632">"छोड़ें"</string>
- <string name="label_notes" msgid="8337354953278341042">"नोट"</string>
- <string name="label_sip_address" msgid="124073911714324974">"इंटरनेट कॉल"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"कंपनी"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"शीर्षक"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"फ़ोन"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"ईमेल"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"पता"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"संगठन"</item>
<item msgid="7196592230748086755">"नोट"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"कोई संपर्क नहीं."</string>
<string name="noGroups" msgid="8614664663561385253">"कोई समूह नहीं."</string>
<string name="noAccounts" msgid="7768267764545265909">"समूह बनाने के लिए आपको किसी खाते की आवश्यकता होती है."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"कोई मेल खाते संपर्क नहीं मिले."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"फ़ोन नंबरों वाले कोई संपर्क नहीं."</string>
<string name="emptyGroup" msgid="7502116218697177370">"इस समूह में कोई व्यक्ति नहीं."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"कुछ जोड़ने के लिए, समूह संपादित करें."</string>
<string name="savingContact" msgid="4075751076741924939">"संपर्क सहेज रहा है…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"प्रदर्शन विकल्प सहेज रहा है…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"संपर्क सहेजा गया."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"संपर्क परिवर्तन सहेजे नहीं जा सके."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"समूह सहेजा गया."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 संपर्क"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> संपर्क"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"कोई संपर्क नहीं."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"कोई दृश्यमान संपर्क नहीं."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"कोई पसंदीदा नहीं."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"<xliff:g id="NAME">%s</xliff:g> में कोई संपर्क नहीं"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g> में संपर्क"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"एकल संपर्क"</string>
- <string name="listCustomView" msgid="6950713892532194050">"कस्टम दृश्य में संपर्क"</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="foundTooManyContacts" msgid="5163335650920020220">"<xliff:g id="COUNT">%d</xliff:g> से अधिक मिले."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"कोई संपर्क नहीं"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 मिला"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"सभी संपर्क"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"समूह"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"पसंदीदा"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"पसंदीदा और सभी संपर्क"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"फ़ोन"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"कॉल लॉग"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"पाठ संदेश भेजें"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> को कॉल करें"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"कॉल करने से पहले नंबर संपादित करें"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"संपर्कों में जोड़ें"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"कॉल लॉग से निकालें"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"कॉल लॉग साफ़ करें"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ध्वनि मेल हटाएं"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ध्वनिमेल साझा करें"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"कॉल लॉग खाली है."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"कॉल लॉग साफ़ करें?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"आपके सभी कॉल रिकॉर्ड हटा दिए जाएंगे."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"कॉल लॉग साफ़ हो रहा है..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"अक्सर किए जाने वाले संपर्क साफ करें?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"आपको लोग और फ़ोन एप्लिकेशन में अक्सर संपर्क करने की सूची साफ़ करनी होगी, और अपने ईमेल एप्लिकेशन को आपकी प्राथमिकताओं को प्रारंभ से जानने के लिए बाध्य करना होगा."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"अक्सर किए जाने वाले संपर्क साफ़ कर रहा है…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"ध्वनिमेल"</string>
- <string name="unknown" msgid="740067747858270469">"अज्ञात"</string>
- <string name="private_num" msgid="6374339738119166953">"निजी नंबर"</string>
- <string name="payphone" msgid="4864313342828942922">"सशुल्क फ़ोन"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"डायल करने के लिए कीबोर्ड का उपयोग करें"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"कोई कॉल जोड़ने के लिए डायल करें"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"सिम कार्ड से लोड हो रहा है…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"सिम कार्ड के संपर्क"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"प्रदर्शन के लिए आपके पास कोई भी संपर्क नहीं है. (यदि आपने अभी कोई खाता जोड़ा हो, तो संपर्क सिंक करने में कुछ मिनट लग सकते हैं.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"प्रदर्शन के लिए आपके पास कोई भी संपर्क नहीं है."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है."\n\n"संपर्क जोड़ने के लिए "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप टेबलेट पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SIM या SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है."\n\n"संपर्क जोड़ने के लिए, "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप फ़ोन पर समन्वयित कर सकें"\n</li>" प्रारंभ से कोई नया संपर्क बनाने के लिए"\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" स्पर्श करें"\n</li>" अपने SIM या SD कार्ड से संपर्क आयात करने के लिए"\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" स्पर्श करें"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है. (यदि आपने अभी-अभी कोई खाता जोड़ा है, तो संपर्कों को समन्वयित करने में, उसे कुछ मिनट लग सकते हैं.)"\n\n"संपर्क जोड़ने के लिए "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप टेबलेट पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"प्रदर्शन विकल्प"</b></font>" को यह बदलने के लिए स्पर्श करें कि कौन से संपर्क दृश्यमान हों"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SIM या SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है. (यदि आपने अभी-अभी कोई खाता जोड़ा है, तो संपर्कों को समन्वयित करने में, उसे कुछ मिनट लग सकते हैं.)"\n\n"संपर्क जोड़ने के लिए "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप फ़ोन पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"प्रदर्शन विकल्प"</b></font>" को यह बदलने के लिए स्पर्श करें कि कौन से संपर्क दृश्यमान हों"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SIM या SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है."\n\n"संपर्क जोड़ने के लिए "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप टेबलेट पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है."\n\n"संपर्क जोड़ने के लिए, "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप फ़ोन पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है. (यदि आपने अभी-अभी कोई खाता जोड़ा है, तो संपर्कों को समन्वयित करने में उसे कुछ मिनट लग सकते हैं.)"\n\n"संपर्क जोड़ने के लिए, "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप टेबलेट पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"प्रदर्शन विकल्प"</b></font>" को यह बदलने के लिए स्पर्श करें कि कौन से संपर्क दृश्यमान हों"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"आपके पास प्रदर्शित करने के लिए कोई संपर्क नहीं है. (यदि आपने अभी-अभी कोई खाता जोड़ा है, तो संपर्कों को समन्वयित करने में, उसे कुछ मिनट लग सकते हैं.)"\n\n"संपर्क जोड़ने के लिए "<font fgcolor="#ffffffff"><b>"मेनू"</b></font>" स्पर्श करें, फिर उन संपर्कों के साथ कोई खाता जोड़ने या सेट करने के लिए:"\n" "\n<li><font fgcolor="#ffffffff"><b>"खाते"</b></font>" स्पर्श करें जिन्हें आप फ़ोन पर समन्वयित कर सकें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"प्रदर्शन विकल्प"</b></font>" को यह बदलने के लिए स्पर्श करें कौन से संपर्क दृश्यमान हों"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"नया संपर्क"</b></font>" को प्रारंभ से कोई नया संपर्क बनाने के लिए स्पर्श करें"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"आयात/निर्यात"</b></font>" को अपने SD कार्ड से संपर्क आयात करने के लिए स्पर्श करें"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"आपके पास कोई भी पसंदीदा नहीं है."\n\n"अपने पसंदीदा की सूची में कोई संपर्क जोड़ने के लिए:"\n\n" "<li>" "<b>"संपर्क"</b>" टैब स्पर्श करें"\n</li>" "\n<li>"उस संपर्क को स्पर्श करें जिसे आप अपने पसंदीदा में जोड़ना चाहते हैं"\n</li>" "\n<li>"संपर्क के नाम के पास वाले तारे को स्पर्श करें"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"टच टोन कीपैड का उपयोग करें"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"कॉल पर लौटना प्रगति पर है"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"कॉल जोड़ें"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"कॉल विवरण"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"अनुरोध किए गए कॉल का विवरण नहीं पढ़ा जा सका."</string>
- <string name="type_incoming" msgid="6502076603836088532">"इनकमिंग कॉल"</string>
- <string name="type_outgoing" msgid="343108709599392641">"आउटगोइंग कॉल"</string>
- <string name="type_missed" msgid="2720502601640509542">"छूटी कॉल"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"ध्वनिमेल"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"इनकमिंग कॉल"</string>
<string name="callBack" msgid="5498224409038809224">"कॉल बैक करें"</string>
<string name="callAgain" msgid="3197312117049874778">"फिर से कॉल करें"</string>
<string name="returnCall" msgid="8171961914203617813">"रिटर्न कॉल"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> मिनट <xliff:g id="SECONDS">%s</xliff:g> सेकंड"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"बार-बार संपर्क किया गया"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"बार-बार कॉल किया गया"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" को संपर्कों में जोड़ें?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"एक"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"दो"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"तीन"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"चार"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"पांच"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"छ:"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"सात"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"आठ"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"नौ"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"तारा"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"शून्य"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"पाउंड"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"ध्वनि मेल"</string>
- <string name="description_search_button" msgid="3660807558587384889">"खोजें"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"डायल करें"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"हटाएं"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"डायल करने के लिए नंबर"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"संपर्क का फ़ोटो"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"हटाएं"</string>
<string name="description_plus_button" msgid="515164827856229880">"जोड़ें"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"संपर्क देखें"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"कोई संग्रहण नहीं मिला."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"कोई SD कार्ड नहीं मिला."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"सिम कार्ड से आयात करें"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"संग्रहण से आयात करें"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"संग्रहण में निर्यात करें"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"दिखाई देने वाले संपर्क साझा करें"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"एक vCard फ़ाइल आयात करें"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"एकाधिक vCard फ़ाइलें आयात करें"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"सभी vCard फ़ाइलें आयात करें"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"संग्रहण में vCard डेटा खोज रहा है..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD कार्ड पर vCard डेटा खोज रहा है…"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"संग्रहण स्कैन नहीं किया जा सका. (कारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD कार्ड स्कैन नहीं किया जा सका. (कारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O त्रुटि"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"स्मृति पर्याप्त नहीं है. हो सकता है फ़ाइल बहुत बड़ी हो."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"किसी अप्रत्याशित कारण से vCard पार्स नहीं किया जा सका."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"प्रारूप समर्थित नहीं है."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard आयात नहीं कर सका."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"संग्रहण में कोई vCard फ़ाइल नहीं मिली."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD कार्ड पर कोई vCard फ़ाइल नहीं मिली."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"दी गई vCard फ़ाइल(फ़ाइलों) की मेटा जानकारी एकत्र नहीं की जा सकी."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"एक या अधिक फ़ाइलें आयात नहीं की जा सकीं (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"अज्ञात त्रुटि."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard फ़ाइल चुनें"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"संचय कर रहा है"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard को स्थानीय अस्थायी संग्रहण में संचित कर रहा है. वास्तविक आयात जल्दी ही प्रारंभ होगा."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> आयात कर रहा है: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> आयात कर रहा है"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCard डेटा नहीं पढ़ा जा सका"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCard डेटा को पढ़ना रद्द किया गया"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCard <xliff:g id="FILENAME">%s</xliff:g> आयात करना पूर्ण"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"<xliff:g id="FILENAME">%s</xliff:g> को आयात करना रद्द किया गया"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> को जल्दी ही आयात किया जाएगा."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"फ़ाइल शीघ्र ही आयात की जाएगी."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard आयात अनुरोध अस्वीकार हो गया था. बाद में पुन: प्रयास करें."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> को जल्दी ही निर्यात किया जाएगा."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard आयात अनुरोध अस्वीकार हो गया था. बाद में पुन: प्रयास करें."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"संपर्क"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"संपर्क निर्यात करें?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"आपकी संपर्क सूची इस फ़ाइल में निर्यात कर दी जाएगी: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"निर्यात नहीं कर सका"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"संपर्क डेटा निर्यात नहीं किया गया था."\n"कारण: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"कोई निर्यात-योग्य संपर्क नहीं है."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"संग्रहण में बहुत अधिक vCard फ़ाइलें हैं."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD कार्ड पर बहुत अधिक VCard फ़ाइलें हैं."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"आवश्यक फ़ाइल नाम बहुत बड़ा है (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> का निर्यात करना पूर्ण."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"<xliff:g id="FILENAME">%s</xliff:g> को निर्यात करना रद्द किया गया."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"संपर्क डेटा निर्यात हो रहा है"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"आपका संपर्क डेटा इस पर निर्यात किया जा रहा है: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"निर्यातकर्ता प्रारंभ नहीं किया जा सका: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"निर्यात करते समय कोई त्रुटि आई: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"डेटाबेस जानकारी नहीं मिल सकी."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"कोई भी निर्यात-योग्य संपर्क नहीं है. यदि आपके पास अपने टेबलेट पर संपर्क हों, तो हो सकता है कि कुछ डेटा प्रदाता संपर्कों को टेबलेट से निर्यात न करने दें."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"कोई भी निर्यात-योग्य संपर्क नहीं है. यदि आपके पास अपने फ़ोन पर संपर्क हों, तो हो सकता है कि कुछ डेटा प्रदाता संपर्कों को फ़ोन से निर्यात न करने दें."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard कंपोज़र ठीक से शुरू नहीं हुआ."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" नहीं खोली जा सकी: <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> का आयात रद्द करें?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> का निर्यात रद्द करें?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard आयात/निर्यात रद्द नहीं हो सका"</string>
<string name="search_settings_description" msgid="2675223022992445813">"आपके संपर्कों के नाम"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंड का विराम जोड़ें"</string>
- <string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा का समय बढ़ाएं"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"नंबर चुनें"</string>
- <string name="call_settings" msgid="7666474782093693667">"सेटिंग"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"नंबर चुनें"</string>
- <string name="make_primary" msgid="5829291915305113983">"यह विकल्प याद रखें"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"यह कार्यवाही प्रबंधित करने के लिए कोई एप्लिकेशन नहीं मिला."</string>
- <string name="missing_name" msgid="8745511583852904385">"(कोई नाम नहीं)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"खाते"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"अक्सर किए जाने वाले साफ़ करें"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"प्रदर्शन के लिए संपर्क"</string>
- <string name="menu_import_export" msgid="26217871113229507">"आयात करें/निर्यात करें"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"संपर्क आयात/निर्यात करें"</string>
- <string name="dialog_import" msgid="2431698729761448759">"संपर्क आयात करें"</string>
<string name="menu_share" msgid="943789700636542260">"साझा करें"</string>
<string name="share_via" msgid="563121028023030093">"इसके द्वारा संपर्क साझा करें"</string>
- <string name="share_error" msgid="948429331673358107">"यह संपर्क साझा नहीं किया जा सकता."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"नाम"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"प्रचलित नाम"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"संगठन"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"वेबसाइट"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"ईवेंट"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"संबंध"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"समूह"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"खाते के तहत संपर्क बनाएं"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"खाते के तहत समूह बनाएं"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"सिंक समूह निकालें"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"सिंक समूह जोड़ें"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"अधिक समूह…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"अन्य सभी संपर्क"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"सभी संपर्क"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"\"<xliff:g id="GROUP">%s</xliff:g>\" को समन्वयन से निकालने से समन्वयन से सभी असमूहीकृत संपर्क भी निकल जाएंगे."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"केवल टेबलेट पर, सिंक नहीं होगा"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"केवल-फ़ोन पर, सिंक नहीं होगा"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g> को कॉल करें"</string>
- <string name="call_home" msgid="1990519474420545392">"घर के फ़ोन नंबर पर कॉल करें"</string>
- <string name="call_mobile" msgid="7502236805487609178">"मोबाइल पर कॉल करें"</string>
- <string name="call_work" msgid="5328785911463744028">"कार्यस्थल के फ़ोन नंबर पर कॉल करें"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"कार्यस्थल फ़ैक्स पर कॉल करें"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"घर के फ़ैक्स पर कॉल करें"</string>
- <string name="call_pager" msgid="9003902812293983281">"पेजर पर कॉल करें"</string>
- <string name="call_other" msgid="8563753966926932052">"कॉल करें"</string>
- <string name="call_callback" msgid="1910165691349426858">"कॉलबैक नंबर पर कॉल करें"</string>
- <string name="call_car" msgid="3280537320306436445">"कार फ़ोन पर कॉल करें"</string>
- <string name="call_company_main" msgid="6105120947138711257">"कंपनी के मुख्य नंबर पर कॉल करें"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDN फ़ोन नं. को कॉल करें"</string>
- <string name="call_main" msgid="6082900571803441339">"मुख्य फ़ोन पर कॉल करें"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"अन्य फ़ैक्स नंबर पर कॉल करें"</string>
- <string name="call_radio" msgid="8296755876398357063">"रेडियो पर कॉल करें"</string>
- <string name="call_telex" msgid="2223170774548648114">"इस टेलेक्स पर कॉल करें"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDD फ़ोन नंबर पर कॉल करें"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"कार्यस्थल मोबाइल पर कॉल करें"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"कार्यस्थल पेजर पर कॉल करें"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g> को कॉल करें"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMS फ़ोन नंबर पर कॉल करें"</string>
- <string name="sms_custom" msgid="5932736853732191825">"<xliff:g id="CUSTOM">%s</xliff:g> को SMS भेजें"</string>
- <string name="sms_home" msgid="7524332261493162995">"घर के फ़ोन पर SMS भेजें"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"मोबाइल पर SMS भेजें"</string>
- <string name="sms_work" msgid="2269624156655267740">"कार्यस्थल के फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"कार्यस्थल फ़ैक्स नंबर पर SMS भेजें"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"घर के फ़ैक्स पर SMS भेजें"</string>
- <string name="sms_pager" msgid="7730404569637015192">"पेजर पर SMS भेजें"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS भेजें"</string>
- <string name="sms_callback" msgid="5004824430094288752">"कॉलबैक नंबर पर SMS भेजें"</string>
- <string name="sms_car" msgid="7444227058437359641">"कार फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_company_main" msgid="118970873419678087">"कंपनी के मुख्या फ़ोन पर SMS भेजें"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ISDN फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_main" msgid="8621625784504541679">"मुख्य फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"इस फ़ैक्स नंबर पर SMS भेजें"</string>
- <string name="sms_radio" msgid="3329166673433967820">"रेडियो फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_telex" msgid="9034802430065267848">"टेलेक्स फ़ोन नंबर पर SMS भेजें"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"TTY/TDD को SMS भेजें"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"कार्यस्थल मोबाइल को SMS भेजें"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"कार्यस्थल पेजर पर SMS भेजें"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"<xliff:g id="ASSISTANT">%s</xliff:g> को SMS भेजें"</string>
- <string name="sms_mms" msgid="4069352461380762677">"MMS भेजें"</string>
- <string name="sms" msgid="1756857139634224222">"पाठ संदेश"</string>
- <string name="email_home" msgid="8573740658148184279">"घर का ईमेल"</string>
- <string name="email_mobile" msgid="2042889209787989814">"मोबाइल पर ईमेल भेजें"</string>
- <string name="email_work" msgid="2807430017302722689">"कार्यस्थल का ईमेल"</string>
- <string name="email_other" msgid="3454004077967657109">"ईमेल भेजें"</string>
- <string name="email_custom" msgid="7548003991586214105">"<xliff:g id="CUSTOM">%s</xliff:g> पर ईमेल भेजें"</string>
- <string name="email" msgid="5668400997660065897">"ईमेल भेजें"</string>
- <string name="map_home" msgid="1243547733423343982">"घर का पता देखें"</string>
- <string name="map_work" msgid="1360474076921878088">"कार्यस्थल का पता देखें"</string>
- <string name="map_other" msgid="3817820803587012641">"पता देखें"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> पता देखें"</string>
- <string name="chat_aim" msgid="2588492205291249142">"AIM का उपयोग करके चैट करें"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Windows Live का उपयोग करके चैट करें"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Yahoo का उपयोग करके चैट करें"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Skype का उपयोग करके चैट करें"</string>
- <string name="chat_qq" msgid="4294637812847719693">"QQ का उपयोग करके चैट करें"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Google टॉक का उपयोग करके चैट करें"</string>
- <string name="chat_icq" msgid="8438405386153745775">"ICQ का उपयोग करके चैट करें"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Jabber का उपयोग करके चैट करें"</string>
- <string name="chat" msgid="9025361898797412245">"चैट करें"</string>
<string name="audio_chat" msgid="2535716629358298691">"ध्वनि चैट"</string>
<string name="video_chat" msgid="1872255818640336072">"वीडियो चैट"</string>
- <string name="postal_address" msgid="8765560217149624536">"पता"</string>
- <string name="postal_street" msgid="8133143961580058972">"मार्ग का नाम"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"पीओ बॉक्स"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"पड़ोस"</string>
- <string name="postal_city" msgid="6597491300084895548">"शहर"</string>
- <string name="postal_region" msgid="6045263193478437672">"राज्य"</string>
- <string name="postal_postcode" msgid="572136414136673751">"ज़िप कोड"</string>
- <string name="postal_country" msgid="7638264508416368690">"देश"</string>
- <string name="full_name" msgid="6602579550613988977">"नाम"</string>
- <string name="name_given" msgid="1687286314106019813">"दिया गया नाम"</string>
- <string name="name_family" msgid="3416695586119999058">"कुलनाम"</string>
- <string name="name_prefix" msgid="59756378548779822">"नाम उपसर्ग"</string>
- <string name="name_middle" msgid="8467433655992690326">"मध्य नाम"</string>
- <string name="name_suffix" msgid="3855278445375651441">"नाम का अंतिम भाग"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"दिया गया फ़ोनेटिक नाम"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"फ़ोनेटिक मध्य नाम"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"फ़ोनेटिक परिवार नाम"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"फ़ोनेटिक नाम"</string>
<string name="connections" msgid="8098440723172028350">"कनेक्शन"</string>
<string name="add_connection_button" msgid="4861308615789601727">"कनेक्शन जोड़ें"</string>
<string name="recent" msgid="2659189233141493004">"हाल ही के"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"संपर्क नामों को इस रूप में देखें"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"कोई भी संपर्क नहीं चुने गए."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"मर्ज नहीं किए गए"</item>
<item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> स्रोतों से मर्ज किया गया"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"अन्य"</string>
<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="directory_search_label" msgid="1887759056597975053">"निर्देशिका"</string>
- <string name="local_search_label" msgid="2551177578246113614">"सभी संपर्क"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"एक व्यक्तिगत प्रतिलिपि बना रहा है…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"सभी संपर्क"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"तारांकित"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"कस्टम"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"कस्टमाइज़ करें"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"फ़ोन नंबरों वाले सभी संपर्क."</string>
- <string name="list_filter_single" msgid="5871400283515893087">"संपर्क"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"कस्टम दृश्य निर्धारित करें"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"लोड हो रही है..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"सेटिंग"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"प्रदर्शन के लिए संपर्क"</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="hint_findContacts" msgid="1808681193458772072">"संपर्क ढूंढें"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"अपडेट देखें"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ध्वनिमेल"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ध्वनिमेल"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"चलाएं"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> की ओर से नया ध्वनिमेल"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"ध्वनिमेल नहीं चलाया जा सका."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"बफ़र हो रहा है…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"ध्वनिमेल फ़ेच कर रहा है…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"ध्वनिमेल फ़ेच नहीं किया जा सका."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"नया"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"पुराने"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"केवल ध्वनिमेल वाले कॉल"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"केवल इनकमिंग कॉल"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"केवल आउटगोइंग कॉल"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"केवल छूटे कॉल"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"ध्वनिमेल सर्वर से कनेक्ट नहीं हो सकता."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"ध्वनिमेल सर्वर से कनेक्ट नहीं हो सकता. नए ध्वनिमेल प्रतीक्षा में हैं."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"अपना ध्वनिमेल सेट करें."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"ऑडियो उपलब्ध नहीं."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"सेट करें"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ध्वनिमेल कॉल करें"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"सबसे धीमी गति"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"धीमी गति"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"सामान्य गति"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"तेज़ गति"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"सबसे तेज़ गति"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"समूह का नाम"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"NFC पर प्राप्त संपर्क"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"केवल आउटगोइंग ही दिखाएं"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"केवल इनकमिंग ही दिखाएं"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"केवल छूटे हुए ही दिखाएं"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"केवल ध्वनिमेल दिखाएं"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"सभी कॉल दिखाएं"</string>
- <string name="status_available" msgid="5586870015822828392">"उपलब्ध"</string>
- <string name="status_away" msgid="1838861100379804730">"दूर"</string>
- <string name="status_busy" msgid="9147992455450257136">"व्यस्त"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"ध्वनिमेल चलाएं"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"इनकमिंग कॉल"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"आउटगोइंग कॉल"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"छूटी कॉल"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"ध्वनिमेल"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"संपर्क जोड़ें"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क देखें"</string>
- <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> को पाठ संदेश भेजें"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"नहीं सुना गया ध्वनिमेल"</string>
- <string name="description_send_message" msgid="6046623392322890962">"<xliff:g id="NAME">%1$s</xliff:g> को संदेश भेजें"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"<xliff:g id="NAME">%1$s</xliff:g> का फ़ोन डायल करें"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g> के लिए त्वरित संपर्क"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"मुझे"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"स्थानीय रखें"</string>
<string name="add_account" msgid="8201790677994503186">"खाता जोड़ें"</string>
<string name="add_new_account" msgid="5748627740680940264">"नया खाता जोड़ें"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"कॉल नहीं भेजा गया"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ध्वनिमेल सेट करने के लिए, मेनू > सेटिंग पर जाएं."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ध्वनिमेल कॉल करने के लिए, पहले हवाई जहाज़ मोड बंद करें."</string>
<string name="menu_export_database" msgid="2659719297530170820">"डेटाबेस फ़ाइलें निर्यात करें"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"अधिक विकल्प"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"नाम फ़ील्ड विस्तृत या संक्षिप्त करें"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"चित्र. बदलने के लिए चुनें"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index ed5ead6..d149f4f 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Osobe"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakti"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"O kontaktu"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Ažuriranja"</string>
<string name="searchHint" msgid="8482945356247760701">"Pretraži kontakte"</string>
- <string name="menu_search" msgid="9147752853603483719">"Pretraži"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Novi kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Prikaži kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Nazovite <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Dodaj u favorite"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Ukloni iz favorita"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Izbriši"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiranje"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Mjesto na početnom zaslonu"</string>
<string name="menu_call" msgid="3992595586042260618">"Nazovi kontakt"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Poruka kontaktu"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Gotovo"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Odustani"</string>
<string name="menu_discard" msgid="6456087569315685632">"Odbaci"</string>
- <string name="label_notes" msgid="8337354953278341042">"Bilješke"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetski poziv"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Tvrtka"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Naslov"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Stvori novi kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-pošta"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresa"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizacija"</item>
<item msgid="7196592230748086755">"Napomena"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nema kontakata."</string>
<string name="noGroups" msgid="8614664663561385253">"Nema grupa."</string>
<string name="noAccounts" msgid="7768267764545265909">"Za stvaranje grupa potreban vam je račun"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nisu pronađeni podudarni kontakti."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nema kontakata s telefonskim brojevima."</string>
<string name="emptyGroup" msgid="7502116218697177370">"U ovoj grupi nema osoba."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Da biste dodali neke članove, uredite grupu."</string>
<string name="savingContact" msgid="4075751076741924939">"Spremanje kontakta..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Spremanje opcija prikaza..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt je spremljen."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Promjene kontakta nije moguće spremiti."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Skupina spremljena."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"Broj kontakata: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nema kontakata."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nema vidljivih kontakata"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Nema odabranih."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nema kontakata pod: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakti u <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Jedan kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakti u prilagođenom prikazu"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Pronađeno je više od ovoliko kontakata: <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nema kontakata"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 pronađen"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Svi kontakti"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupe"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoriti"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoriti i svi kontakti"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Zapisnik poziva"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Pošalji tekstnu poruku"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Nazovi <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Uredi broj prije pozivanja"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj u kontakte"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Ukloni iz zapisnika poziva"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Izbriši zapisnik poziva"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Brisanje govorne pošte"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Podijeli govornu poštu"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Zapisnik poziva je prazan"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Izbrisati dnevnik poziva?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Svi vaši zapisi poziva bit će izbrisani."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Brisanje dnevnika poziva..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Brisati podatke o čestim kontaktima?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Obrisat ćete popis osoba s kojima često kontaktirate u aplikacijama Osobe i Telefoni tako da će aplikacije e-pošte morati naučiti vaše preference adresiranja od početka."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Brisanje često kontaktiranih..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Govorna pošta"</string>
- <string name="unknown" msgid="740067747858270469">"Nepoznato"</string>
- <string name="private_num" msgid="6374339738119166953">"Privatni broj"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefonska govornica"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Birajte pomoću tipkovnice"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Nazovi za dodavanje poziva"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Učitavanje sa SIM kartice..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakti SIM kartice"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nemate kontakata za prikazivanje. (Ako ste upravo dodali račun, sinkroniziranje kontakata može potrajati nekoliko minuta.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nemate kontakata za prikaz"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nemate kontakata za prikaz."\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim tabletnim računalom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SIM ili SD kartice"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nemate kontakata za prikaz."\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SIM ili SD kartice"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nemate kontakata za prikaz. (Ako ste upravo dodali račun, sinkroniziranje kontakata moglo bi potrajati nekoliko minuta.)"\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati s tabletnim računalom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcije prikaza"</b></font>" za promjenu vidljivih kontakata"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SIM ili SD kartice"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nemate kontakata za prikaz. (Ako ste upravo dodali račun, sinkroniziranje kontakata moglo bi potrajati nekoliko minuta.)"\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcije prikaza"</b></font>" za promjenu vidljivih kontakata"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SIM ili SD kartice"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nemate kontakata za prikaz."\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim tabletnim računalom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SD kartice"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nemate kontakata za prikaz."\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa svoje SD kartice"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nemate kontakata za prikaz. (Ako ste upravo dodali račun, sinkroniziranje kontakata moglo bi potrajati nekoliko minuta.)"\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim tabletnim računalom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcije prikaza"</b></font>" za promjenu vidljivih kontakata"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SIM ili SD kartice"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nemate kontakata za prikaz. (Ako ste upravo dodali račun, sinkroniziranje kontakata moglo bi potrajati nekoliko minuta.)"\n\n"Za dodavanje kontakata dodirnite "<font fgcolor="#ffffffff"><b>"Izbornik"</b></font>", a zatim dodirnite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>" kako biste dodali ili postavili račun s kontaktima koje možete sinkronizirati sa svojim telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcije prikaza"</b></font>" za promjenu vidljivih kontakata"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novi kontakt"</b></font>" za stvaranje novog kontakta iz početka"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>" za uvoz kontakata sa SD kartice"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nemate favorita."\n\n"Da biste dodali kontakt svojem popisu favorita:"\n\n" "<li>"Dodirnite karticu "<b>"Kontakti"</b>" "\n</li>" "\n<li>"Dodirnite kontakt koji želite dodati u favorite"\n</li>" "\n<li>"Dodirnite zvjezdicu pokraj naziva kontakta"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Koristi dodirnu zvučnu tipkovnicu"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Natrag na poziv u tijeku"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj poziv"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Pojedinosti poziva"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nije moguće pročitati pojedinosti za traženi poziv."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Dolazni poziv"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Izlazni poziv"</string>
- <string name="type_missed" msgid="2720502601640509542">"Propušteni poziv"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Govorna pošta"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Dolazni pozivi"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> minuta <xliff:g id="SECONDS">%s</xliff:g> sekundi"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Često kontaktirani"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Često nazivani"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Dodati \"<xliff:g id="EMAIL">%s</xliff:g>\" kontaktima?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"jedan"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tri"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"četiri"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"pet"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"šest"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sedam"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"osam"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"devet"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"zvjezdica"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nula"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"funta"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"govorna pošta"</string>
- <string name="description_search_button" msgid="3660807558587384889">"pretraži"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"biraj"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"broj za pozivanje"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografija kontakta"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"izbriši"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Prikaži kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nije pronađena nijedna pohrana."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nije pronađena SD kartica."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Uvezi sa SIM kartice"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Uvoz iz pohrane"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Izvoz u pohranu"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Dijeli vidljive kontakte"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Uvezi jednu vCard datoteku"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Uvoz više vCard datoteka"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Uvezi sve vCard datoteke"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Traženje vCard podataka u pohrani..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Pretraživanje vCard podataka na SD kartici..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Pohrana se ne može skenirati. (Razlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kartica ne može se skenirati. (Razlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O pogreška"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nema dovoljno memorije. Datoteka je možda prevelika."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Iz neočekivanog razloga nije moguće analizirati vCard datoteku."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Format nije podržan."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Uvoz vCard datoteke nije uspio."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Nijedna vCard datoteka nije pronađena u pohrani."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Na SD kartici nije pronađena datoteka vCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Neuspješno prikupljanje meta-informacija danih datoteka kartice vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Uvoz jedne ili više datoteka nije uspio (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Nepoznata pogreška."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Odaberi vCard datoteku"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Spremanje u predmemoriju"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Spremanje vCard datoteka u predmemoriju za lokalnu privremenu pohranu. Stvarni uvoz uskoro će početi."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Uvoz <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Uvoz <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Čitanje podataka vCarda nije uspjelo"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Čitanje podataka vCard otkazano je"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Završetak uvoza kartice vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> otkazan je"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> uskoro će biti uvezena."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Datoteka će uskoro biti uvezena."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Zahtjev za uvoz formata vCard odbijen je. Pokušajte ponovo kasnije."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Datoteka <xliff:g id="FILENAME">%s</xliff:g> uskoro će biti izvezena."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Zahtjev za izvoz formata vCard odbijen je. Pokušajte ponovo kasnije."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Izvesti kontakte?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Vaš popis kontakata bit će izvezen u datoteku: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Izvoz nije uspio"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Podaci o kontaktu nisu izvezeni."\n"Razlog: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nema kontakata koji se mogu izvoziti."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Previše je vCard datoteka u pohrani."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Previše vCard datoteka na SD kartici."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Obavezan naziv datoteke predug je (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Završetak izvoza datoteke <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> otkazan je."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Izvoz podataka o kontaktu"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Vaši podaci o kontaktu izvoze se u datoteku <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Alat za izvoz ne može se pokrenuti; razlog: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Tijekom izvoza došlo je do pogreške zbog: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Dohvaćanje podataka iz baze podataka nije uspjelo."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nema kontakata koji se mogu izvoziti. Ako na svojem tabletnom računalu imate kontakte, neki davatelji podataka možda ne dopuštaju izvoz kontakata s tog tabletnog računala."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nema kontakata koji se mogu izvoziti. Ako na svojem telefonu imate kontakte, neki davatelji podataka možda ne dopuštaju izvoz kontakata s tog telefona."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Sastavljač za vCard nije se ispravno pokrenuo."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Datoteku \"<xliff:g id="FILE_NAME">%s</xliff:g>\" nije moguće otvoriti radi: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Otkazati uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Otkazati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Uvoz/izvoz kartice vCard nije otkazan"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nazivi vaših kontakata"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj pauzu od 2 sek."</string>
- <string name="add_wait" msgid="3360818652790319634">"Dodaj čekanje"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Odaberite broj"</string>
- <string name="call_settings" msgid="7666474782093693667">"Postavke"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Odaberite broj"</string>
- <string name="make_primary" msgid="5829291915305113983">"Zapamti ovaj izbor"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nije pronađena nijedna aplikacija koja može provesti ovu radnju."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Bez imena)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Računi"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Briši često kontaktirane"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakti za prikaz"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Uvoz/izvoz"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Uvoz/izvoz kontakata"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Uvezi kontakte"</string>
<string name="menu_share" msgid="943789700636542260">"Podijeli"</string>
<string name="share_via" msgid="563121028023030093">"Dijeli kontakt putem"</string>
- <string name="share_error" msgid="948429331673358107">"Ovaj kontakt nije moguće dijeliti."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Ime"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Nadimak"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizacija"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Web-lokacija"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Događaji"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Odnos"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupe"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Izrada kontakta pod računom"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Napravite skupinu pod računom"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Ukloni grupu sinkronizacije"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Dodaj grupu sinkroniziranja"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Više grupa..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Svi ostali kontakti"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Svi kontakti"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Uklanjanje grupe \"<xliff:g id="GROUP">%s</xliff:g>\" iz sinkronizacije uklonit će i sve negrupirane kontakte iz sinkronizacije."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Samo tabletni uređaj, bez sinkronizacije"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Samo mobitel, bez sinkronizacije"</string>
- <string name="call_custom" msgid="7756571794763171802">"Nazovi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Nazovi kućni"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Nazovi mobitel"</string>
- <string name="call_work" msgid="5328785911463744028">"Nazovi poslovni"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Nazovi poslovni faks"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Nazovi faks kod kuće"</string>
- <string name="call_pager" msgid="9003902812293983281">"Nazovi dojavljivač"</string>
- <string name="call_other" msgid="8563753966926932052">"Pozovi"</string>
- <string name="call_callback" msgid="1910165691349426858">"Pozovi povratno"</string>
- <string name="call_car" msgid="3280537320306436445">"Nazovi automobil"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Nazovi glavni u tvrtki"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Nazovi ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Pozovi glavni"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Pozovi faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Nazovi radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Nazovi teleks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Nazovi TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Nazovi poslovni mobitel"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Nazovi poslovni dojavljivač"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Nazovi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Nazovi MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Poruka za <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Poruka na kućni"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Poruka na mobitel"</string>
- <string name="sms_work" msgid="2269624156655267740">"Poruka na poslovni"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Poruka na poslovni faks"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Poruka na kućni faks"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Poruka na dojavljivač"</string>
- <string name="sms_other" msgid="806127844607642331">"Tekst"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Poruka za povratni poziv"</string>
- <string name="sms_car" msgid="7444227058437359641">"Poruka u automobil"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Poruka na glavni u tvrtki"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Poruka na ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Poruka na glavni"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Poruka na faks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Poruka na radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Poruka na teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Poruka za TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Poruka na poslovni mobitel"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Poruka na poslovni dojavljivač"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Poruka za <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Poruka na MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Tekstualna poruka"</string>
- <string name="email_home" msgid="8573740658148184279">"E-pošta - Početna stranica"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-pošta na mobitel"</string>
- <string name="email_work" msgid="2807430017302722689">"E-pošta na poslovni"</string>
- <string name="email_other" msgid="3454004077967657109">"E-pošta"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-pošta <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-pošta"</string>
- <string name="map_home" msgid="1243547733423343982">"Prikaz kućne adrese"</string>
- <string name="map_work" msgid="1360474076921878088">"Prikaži adresu na poslu"</string>
- <string name="map_other" msgid="3817820803587012641">"Prikaz adrese"</string>
- <string name="map_custom" msgid="6184363799976265281">"Prikaz <xliff:g id="CUSTOM">%s</xliff:g> adresa"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatajte koristeći AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatajte koristeći Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatanje koristeći Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatajte koristeći Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatajte koristeći QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatajte koristeći Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatajte koristeći ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatajte koristeći Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Glasovni chat"</string>
<string name="video_chat" msgid="1872255818640336072">"Videochat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresa"</string>
- <string name="postal_street" msgid="8133143961580058972">"Ulica"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Poštanski sandučić"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Susjedstvo"</string>
- <string name="postal_city" msgid="6597491300084895548">"Grad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Država"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Poštanski broj"</string>
- <string name="postal_country" msgid="7638264508416368690">"Zemlja"</string>
- <string name="full_name" msgid="6602579550613988977">"Ime"</string>
- <string name="name_given" msgid="1687286314106019813">"Ime"</string>
- <string name="name_family" msgid="3416695586119999058">"Prezime"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefiks imena"</string>
- <string name="name_middle" msgid="8467433655992690326">"Srednje ime"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufiks imena"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetsko ime"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetsko srednje ime"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetsko prezime"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Ime fonetski"</string>
<string name="connections" msgid="8098440723172028350">"Veze"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Dodaj vezu"</string>
<string name="recent" msgid="2659189233141493004">"Nedavni"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Poredaj popis prema"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Ime"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Prezime"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Prikaži nazive kontakata kao"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Prikaži imena kontakata"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Najprije ime"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najprije prezime"</string>
<string name="take_photo" msgid="7496128293167402354">"Snimi fotografiju"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Pokaži sve"</string>
<string name="menu_select_all" msgid="621719255150713545">"Odaberi sve"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Poništi odabir svega"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nije odabran nijedan kontakt."</string>
<string name="add_field" msgid="2384260056674995230">"Dodaj drugo polje"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Dodaj novo"</string>
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizaciju"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nije spojen"</item>
<item quantity="other" msgid="425683718017380845">"spojen s <xliff:g id="COUNT">%0$d</xliff:g> izvora"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Drugo"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Pridružiti trenutačni kontakt odabranom kontaktu?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Prebaciti se na uređivanje odabranog kontakta? Informacije koje ste unijeli dosad kopirat će se."</string>
<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="directory_search_label" msgid="1887759056597975053">"Direktorij"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Svi kontakti"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Stvaranje osobne kopije..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Svi kontakti"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Sa zvjezdicom"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Prilagođeno"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Prilagodi"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Svi kontakti s telefonskim brojevima"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definiranje prilagođenog prikaza"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Učitavanje..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Postavke"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakti za prikaz"</string>
<string name="menu_settings" msgid="377929915873428211">"Postavke"</string>
<string name="menu_help" msgid="5123887102216637725">"Pomoć"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opcije prikaza"</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="hint_findContacts" msgid="1808681193458772072">"Pronađi kontakte"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Broj telefona"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Dodaj kontaktima"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Dodavanje kontaktu"</string>
@@ -497,61 +215,7 @@
<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">"Postavi moj profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Upišite ime osobe"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Prikaži ažuriranja"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Govorna pošta"</item>
- <item quantity="other" msgid="5513481419205061254">"Br. govornih pošta: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduciraj"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova govorna pošta od kontakta <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Reprodukcija govorne pošte nije uspjela"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Stavljanje u međuspremnik..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Dohvaćanje govorne pošte..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Dohvaćanje govorne pošte nije uspjelo."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Novo"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Starije"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo pozivi s govornom poštom"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dolazni pozivi"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Samo odlazni pozivi"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Samo propušteni pozivi"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Povezivanje s poslužiteljem govorne pošte nije moguće."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Vezu s poslužiteljem govorne pošte nije moguće uspostaviti. Nova govorna pošta čeka."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Postavite svoju govornu poštu."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Zvuk nije dostupan."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Postavljanje"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Zovi govornu poštu"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Najsporije"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Sporo"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normalna brzina"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Brzo"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Najbrže"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Naziv grupe"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt NFC-om"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Prikaži samo odlazne"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Prikaži samo dolazne"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Prikaži samo propuštene"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Prikaži samo govorne pošte"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Prikaz svih poziva"</string>
- <string name="status_available" msgid="5586870015822828392">"Dostupan"</string>
- <string name="status_away" msgid="1838861100379804730">"Odsutan"</string>
- <string name="status_busy" msgid="9147992455450257136">"Zauzet"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reprodukcija govorne pošte"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Dolazni poziv"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Odlazni poziv"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Propušteni poziv"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Govorna pošta"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Dodaj kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Prikaz kontakta <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Pozovi: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Slanje tekstualne poruke: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nepreslušana govorna pošta"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Slanje poruke kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Birajte telefonski broj korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Brzi kontakt za korisnika <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ja"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Zadrži lokalno"</string>
<string name="add_account" msgid="8201790677994503186">"Dodaj račun"</string>
<string name="add_new_account" msgid="5748627740680940264">"Dodaj novi račun"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Poziv nije poslan"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Da biste postavili govornu poštu, idite na Izbornik > Postavke."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Da biste nazvali govornu poštu, najprije isključite način rada u zrakoplovu."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Izvezi datoteke podatkovne baze"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Više opcija"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Proširi ili sažmi nazive polja"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Slika. Odaberite za promjenu"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 0a02ca9..53cda2b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Személyek"</string>
<string name="contactsList" msgid="8661624236494819731">"Címtár"</string>
<string name="shortcutContact" msgid="749243779392912958">"Névjegy"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Információ"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Frissítések"</string>
<string name="searchHint" msgid="8482945356247760701">"Keresés a névjegyek között"</string>
- <string name="menu_search" msgid="9147752853603483719">"Keresés"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Új névjegy"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Névjegy megtekintése"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Hozzáadás a kedvencekhez"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Eltávolítás a kedvencek közül"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Szerkesztés"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Törlés"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Másolás"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Helyezze el a kezdőképernyőn"</string>
<string name="menu_call" msgid="3992595586042260618">"Ismerős hívása"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"SMS küldése ismerősnek"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Kész"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Mégse"</string>
<string name="menu_discard" msgid="6456087569315685632">"Elvetés"</string>
- <string name="label_notes" msgid="8337354953278341042">"Jegyzetek"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetes hívás"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Cég"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Beosztás"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Új névjegy létrehozása"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail cím"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Azonnali üzenetküldés"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Cím"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Szervezet"</item>
<item msgid="7196592230748086755">"Jegyzet"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nincsenek névjegyek."</string>
<string name="noGroups" msgid="8614664663561385253">"Nincsenek csoportok"</string>
<string name="noAccounts" msgid="7768267764545265909">"Csoportok létrehozásához szükség van egy fiókra."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nincsenek a keresési feltételeknek megfelelő névjegyek."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nincsenek telefonszámot is tartalmazó névjegyek."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Ebben a csoportban nincsenek személyek."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Felhasználók hozzáadásához szerkessze a csoportot."</string>
<string name="savingContact" msgid="4075751076741924939">"Névjegy mentése..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Megjelenítési beállítások mentése..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Névjegy mentve."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nem sikerült menteni a névjegymódosításokat."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Csoport mentve."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nincsenek névjegyek"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nincsenek látható névjegyek."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Nincsenek kedvencek."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nincsenek névjegyek itt: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Ismerősök itt: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Egyetlen névjegy"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Névjegyek egyéni nézetben"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Több mint <xliff:g id="COUNT">%d</xliff:g> találat."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nincsenek névjegyek"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 találat"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Az összes névjegy"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Csoportok"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Kedvencek"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Kedvencek és az összes névjegy"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Híváslista"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"SMS küldése"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> hívása"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Szám szerkesztése hívás előtt"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Hozzáadás a névjegyekhez"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Eltávolítás a híváslistából"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Híváslista törlése"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Hangposta törlése"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Hangposta megosztása"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"A híváslista üres."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Törli a híváslistát?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Minden telefonhívás törlésre kerül."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Híváslista törlése..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Törli a gyakran keresetteket?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Törölni fogja a gyakran keresett személyek listáját a Személyek és a Telefon alkalmazásokban, és arra kényszeríti az e-mail alkalmazásokat, hogy újra, elölről megtanulják az Ön címzési preferenciáit."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Gyakran keresettek törlése..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Hangposta"</string>
- <string name="unknown" msgid="740067747858270469">"Ismeretlen"</string>
- <string name="private_num" msgid="6374339738119166953">"Magántelefonszám"</string>
- <string name="payphone" msgid="4864313342828942922">"Nyilvános telefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"A tárcsázáshoz használja a billentyűzetet"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Tárcsázás hívás hozzáadásához"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Betöltés a SIM-kártyáról..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Névjegyek a SIM-kártyán"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nincsenek megjeleníthető névjegyei. (Ha a fiókot csak most adta hozzá, a névjegyek szinkronizálása néhány percig is eltarthat.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nincsenek megjeleníthető névjegyek."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nincsenek megjeleníthető névjegyek."\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a táblagéppel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": névjegyek importálása a SIM vagy az SD-kártyáról"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nincsenek megjeleníthető névjegyek."\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a telefonnal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": névjegyek importálása a SIM vagy az SD-kártyáról"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nincsenek megjeleníthető névjegyei. (Ha most adott hozzá egy fiókot, a szinkronizálás eltarthat pár percig.)"\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a táblagéppel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Megjelenítési beállítások"</b></font>": annak beállítása, hogy mely névjegyek legyenek láthatók"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": SIM vagy SD-kártyáról történő importálás"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nincsenek megjeleníthető névjegyei. (Ha most adott hozzá egy fiókot, a szinkronizálás eltarthat pár percig.)"\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a telefonnal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Megjelenítési beállítások"</b></font>": annak beállítása, hogy mely névjegyek legyenek láthatók"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": SIM vagy SD-kártyáról történő importálása"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nincsenek megjeleníthető névjegyek."\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a táblagéppel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": névjegyek importálása a SIM vagy az SD-kártyáról"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nincsenek megjeleníthető névjegyek."\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a telefonnal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": névjegyek importálása a SIM vagy az SD-kártyáról"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nincsenek megjeleníthető névjegyei. (Ha most adott hozzá egy fiókot, a szinkronizálás eltarthat pár percig.)"\n\n"Névjegyek hozzáadásához érintse meg a"<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget olyan, névjegyekkel rendelkező fiók hozzáadásához vagy beállításához, amelyet szinkronizálhat a táblagépen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Megjelenítési beállítások"</b></font>": annak beállítása, hogy mely névjegyek legyenek láthatók"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": SIM vagy SD-kártyáról történő importálás"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nincsenek megjeleníthető névjegyei. (Ha most adott hozzá egy fiókot, a szinkronizálás eltarthat pár percig.)"\n\n"Névjegyek hozzáadásához érintse meg a "<font fgcolor="#ffffffff"><b>"Menü"</b></font>", majd a"\n" "\n<li><font fgcolor="#ffffffff"><b>"Fiókok"</b></font>" lehetőséget; így hozzáadhat vagy beállíthat egy névjegyeket tartalmazó fiókot, amelyet szinkronizálhat a telefonnal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Megjelenítési beállítások"</b></font>": annak beállítása, hogy mely névjegyek legyenek láthatók"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Új névjegy"</b></font>": teljesen új névjegy létrehozása"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importálás/Exportálás"</b></font>": SIM vagy SD-kártyáról történő importálása"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nincsenek kedvencei."\n\n"Így adhat hozzá névjegyet a kedvencek listájához:"\n\n" "<li>"Érintse meg a "<b>"Címtár"</b>" lapot"\n</li>" "\n<li>"Érintse meg a kedvencekhez hozzáadni kívánt névjegyet"\n</li>" "\n<li>"Érintse meg az ismerős neve melletti csillagot"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Hangkódos telefonbillentyűzet használata"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Vissza a folyamatban lévő híváshoz"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Hívás hozzáadása"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Hívás adatai"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nem sikerült olvasni a megadott hívás adatait."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Bejövő hívás"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Kimenő hívás"</string>
- <string name="type_missed" msgid="2720502601640509542">"Nem fogadott hívás"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Hangposta"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Bejövő hívások"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> perc <xliff:g id="SECONDS">%s</xliff:g> másodperc"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Gyakran keresett"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Gyakran hívott"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Hozzáadja a(z) \"<xliff:g id="EMAIL">%s</xliff:g>\"címet a Címtárhoz?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"egy"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"kettő"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"három"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"négy"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"öt"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"hat"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"hét"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"nyolc"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"kilenc"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"csillag"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nulla"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"kettős kereszt"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"hangposta"</string>
- <string name="description_search_button" msgid="3660807558587384889">"keresés"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"tárcsázás"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"a tárcsázandó szám"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotó a névjegyhez"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"törlés"</string>
<string name="description_plus_button" msgid="515164827856229880">"plusz"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Névjegy megtekintése"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nem található tárhely."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nem található SD-kártya."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importálás a SIM-kártyáról"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importálás a tárhelyről"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportálás a tárhelyre"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Látható névjegyek megosztása"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Egyetlen vCard fájl importálása"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Több vCard fájl importálása"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Az összes vCard fájl importálása"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"vCard-adatok keresése a tárhelyen..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"vCard-adatok keresése az SD-kártyán..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"A tárhelyet nem lehet beolvasni. (Indok: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Az SD-kártyát nem lehet beolvasni. (Ok: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O hiba"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nincs elég memória. Lehet, hogy túl nagy a fájl."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Váratlan ok miatt nem sikerült a vCard szintaktikai elemzése."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"A formátum nem támogatott."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Nem sikerült a vCard importálása."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Nem található vCard fájl a tárhelyen."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Nem található vCard fájl az SD-kártyán"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Nem sikerült begyűjteni a vCard-fájl(ok) metaadatait."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Egy vagy több fájl nem importálható (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Ismeretlen hiba."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Válassza ki a vCard fájlt"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Gyorsítótárazás"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard(ok) mentése az ideiglenes helyi tárolóba. A tényleges importálás hamarosan megkezdődik."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importálás - <xliff:g id="TOTAL_NUMBER">%s</xliff:g>/<xliff:g id="CURRENT_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importálás - <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nem sikerült beolvasni a vCard adatait."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"A vCard-adatok beolvasása megszakítva"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"A(z) <xliff:g id="FILENAME">%s</xliff:g> vCard importálása befejeződött"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"A(z) <xliff:g id="FILENAME">%s</xliff:g> importálása megszakítva"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"A(z) <xliff:g id="FILENAME">%s</xliff:g> hamarosan importálásra kerül."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"A fájl importálása hamarosan megtörténik."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"A vCard-importálási kérelem elutasítva. Próbálja újra később."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"A(z) <xliff:g id="FILENAME">%s</xliff:g> hamarosan exportálásra kerül."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"A vCard-exportálási kérelem elutasítva. Próbálja újra később."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kapcsolat"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportálni szeretné?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"A névjegyek listájának exportálása a(z) <xliff:g id="VCARD_FILENAME">%s</xliff:g> fájlba."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Sikertelen export"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Nem sikerült a névjegyadatok exportálása."\n"Ok: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nincs exportálható névjegy."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Túl sok vCard fájl van a tárhelyen."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Túl sok vCard fájl van az SD-kártyán."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"A fájlnév túl hosszú (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"A(z) <xliff:g id="FILENAME">%s</xliff:g> exportálása befejeződött."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"A(z) <xliff:g id="FILENAME">%s</xliff:g> exportálása megszakítva."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Névjegyadatok exportálása"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Névjegyadatok exportálása ide: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nem sikerült elindítani az exportálót: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Hiba történt az exportálás során: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nem sikerült lekérni az adatbázis-információkat."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nincsenek exportálható névjegyek. Ha vannak névjegyek a táblagépén, akkor elképzelhető, hogy az adatszolgáltatója nem teszi lehetővé a névjegyek exportálását a táblagépről."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nincsenek exportálható névjegyek. Ha vannak névjegyek a telefonján, akkor előfordulhat, hogy az adatszolgáltató nem teszi lehetővé a névjegyek exportálását a telefonról."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"A vCard-készítő nem megfelelően indult el."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"A(z) \"<xliff:g id="FILE_NAME">%s</xliff:g>\" fájl nem nyitható meg: <xliff:g id="EXACT_REASON">%s</xliff:g>"</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> névjegy"</string>
- <string name="cancel_import_confirmation_message" msgid="3929951040347726757">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> importálását?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Megszakítja <xliff:g id="FILENAME">%s</xliff:g> exportálását?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard imp./exp. megszakítása sikertelen"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Ismerősök nevei"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2 mp-es szünet hozzáadása"</string>
- <string name="add_wait" msgid="3360818652790319634">"Várakozás hozzáadása"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Válassza ki a számot"</string>
- <string name="call_settings" msgid="7666474782093693667">"Beállítások"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Válassza ki a számot"</string>
- <string name="make_primary" msgid="5829291915305113983">"Választás megjegyzése"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nincs megfelelő alkalmazás a művelet elvégzésére."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Nincs név)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Fiókok"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Gyakran keresettek törlése"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Megjelenítendő névjegyek"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importálás/exportálás"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Névjegyek importálása/exportálása"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Névjegyek importálása"</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="share_error" msgid="948429331673358107">"Ez a névjegy nem osztható meg."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Név"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Becenév"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Szervezet"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Webhely"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Események"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Kapcsolat"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Csoportok"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Névjegy létrehozása a következő fiókban"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Csoport létrehozása a fiókban"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Szinkronizálási csoport eltávolítása"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Szinkronizálási csoport hozzáadása"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"További csoportok..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Az összes többi névjegy"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Összes névjegy"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Ha leállítja a(z) \"<xliff:g id="GROUP">%s</xliff:g>\" csoport szinkronizálását, ugyanez történik a nem csoportosított névjegyekkel is."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Csak a táblagépen, nem szinkronizált"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Csak a telefonon, nem szinkronizált"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g> hívása"</string>
- <string name="call_home" msgid="1990519474420545392">"Otthoni szám hívása"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Mobil hívása"</string>
- <string name="call_work" msgid="5328785911463744028">"Munkahelyi telefon hívása"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Munkahelyi fax hívása"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Otthoni fax hívása"</string>
- <string name="call_pager" msgid="9003902812293983281">"Csipogó hívása"</string>
- <string name="call_other" msgid="8563753966926932052">"Hívás"</string>
- <string name="call_callback" msgid="1910165691349426858">"Visszahívási szám hívása"</string>
- <string name="call_car" msgid="3280537320306436445">"Gépkocsi hívása"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Céges fővonal hívása"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDN-telefon hívása"</string>
- <string name="call_main" msgid="6082900571803441339">"Fő telefonszám hívása"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Fax hívása"</string>
- <string name="call_radio" msgid="8296755876398357063">"Rádiótelefon hívása"</string>
- <string name="call_telex" msgid="2223170774548648114">"Telex hívása"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDD-szám hívása"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Munkahelyi mobil hívása"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Munkahelyi csipogó hívása"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g> hívása"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMS-ben szereplő telefonszám hívása"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS küldése ide: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS küldése haza"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS küldése mobiltelefonra"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS küldése munkahelyi telefonra"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS küldése munkahelyi faxszámra"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS küldése otthoni faxszámra"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS küldése csipogóra"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS küldése"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS küldése visszahívandó számra"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS küldése gépkocsinak"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS küldése a céges fővonalra"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS küldése ISDN-telefonra"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS küldése fő telefonszámra"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS küldése faxszámra"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS küldése rádiótelefonra"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS küldése telexre"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS küldése szöveges telefonra (TTY/TDD)"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS küldése munkahelyi mobilra"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS küldése munkahelyi csipogóra"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS küldése ide: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS küldése MMS-ben szereplő számra"</string>
- <string name="sms" msgid="1756857139634224222">"Szöveges üzenet"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail küldése haza"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail küldése mobiltelefonra"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail küldése munkahelyi címre"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail küldése"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mail küldése a(z) <xliff:g id="CUSTOM">%s</xliff:g> címre"</string>
- <string name="email" msgid="5668400997660065897">"E-mail küldése"</string>
- <string name="map_home" msgid="1243547733423343982">"Otthoni cím megtekintése"</string>
- <string name="map_work" msgid="1360474076921878088">"Munkahelyi cím megtekintése"</string>
- <string name="map_other" msgid="3817820803587012641">"Cím megtekintése"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> cím megtekintése"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Csevegés AIM-on"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Csevegés a Windows Live-on"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Csevegés a Yahoon"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Csevegés Skype használatával"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Csevegés a QQ-n"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Csevegés a Google Csevegő használatával"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Csevegés az ICQ-n"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Csevegés Jabberen"</string>
- <string name="chat" msgid="9025361898797412245">"Csevegés"</string>
<string name="audio_chat" msgid="2535716629358298691">"Audiocsevegés"</string>
<string name="video_chat" msgid="1872255818640336072">"Videocsevegés"</string>
- <string name="postal_address" msgid="8765560217149624536">"Cím"</string>
- <string name="postal_street" msgid="8133143961580058972">"Utca"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postafiók"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Környék"</string>
- <string name="postal_city" msgid="6597491300084895548">"Település"</string>
- <string name="postal_region" msgid="6045263193478437672">"Állapot"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Irányítószám"</string>
- <string name="postal_country" msgid="7638264508416368690">"Ország"</string>
- <string name="full_name" msgid="6602579550613988977">"Név"</string>
- <string name="name_given" msgid="1687286314106019813">"Utónév"</string>
- <string name="name_family" msgid="3416695586119999058">"Vezetéknév"</string>
- <string name="name_prefix" msgid="59756378548779822">"Név előtagja"</string>
- <string name="name_middle" msgid="8467433655992690326">"Második név"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Név utótagja"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Utónév fonetikusan"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Második utónév fonetikusan"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Vezetéknév fonetikusan"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Név fonetikusan"</string>
<string name="connections" msgid="8098440723172028350">"Kapcsolatok"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Kapcsolat hozzáadása"</string>
<string name="recent" msgid="2659189233141493004">"Legújabbak"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Lista rendezési elve:"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Utónév"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Vezetéknév"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Nevek megtekintése mint"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Névjegyek megtekintése"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Utónév előre"</string>
<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>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Összes megjelenítése"</string>
<string name="menu_select_all" msgid="621719255150713545">"Összes kijelölése"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Összes kijelölés megszüntetése"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nincs kijelölt névjegy."</string>
<string name="add_field" msgid="2384260056674995230">"Más mező hozzáadása"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Új hozzáadása"</string>
<string name="add_organization" msgid="7311893231158291197">"Szervezet hozzáadása"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nincs egyesítve"</item>
<item quantity="other" msgid="425683718017380845">"egyesítve <xliff:g id="COUNT">%0$d</xliff:g> forrásból"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Egyéb"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Összekapcsolja a jelenlegi névjegyet a kiválasztott névjeggyel?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"A kiválasztott névjegy szerkesztésére vált? Az eddig beírt információk át lesznek másolva."</string>
<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="directory_search_label" msgid="1887759056597975053">"Mappa"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Összes névjegy"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Személyes másolat készítése..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Összes névjegy"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Csillaggal megjelölt"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Egyéni"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Személyre szabás"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Minden névjegy telefonszámokkal"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kapcsolat"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Egyéni nézet megadása"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Betöltés..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Beállítások"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Megjelenítendő névjegyek"</string>
<string name="menu_settings" msgid="377929915873428211">"Beállítások"</string>
<string name="menu_help" msgid="5123887102216637725">"Súgó"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Megjelenítési beállítások"</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="hint_findContacts" msgid="1808681193458772072">"Névjegy keresése"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonszám"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Hozzáadása a névjegyekhez"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Hozzáadás névjegyhez"</string>
@@ -497,61 +215,7 @@
<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">"Saját profil beállítása"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Írja be a személy nevét"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Frissítések"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hangposta"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> hangüzenet"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lejátszás"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Új hangüzenet tőle: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nem lehet lejátszani a hangpostát."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Pufferelés…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Hangpostaüzenet lekérése…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"A hangposta nem hívható le."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Új"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Régebbi"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Csak hangpostahívások"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Csak bejövő hívások"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Csak kimenő hívások"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Csak nem fogadott hívások"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nem lehet csatlakozni a hangpostaszerverhez."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"A hangposta nem érhető el. Új hangüzenetek várakoznak."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Állítsa be a hangpostát."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Nincs hang."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Beállítás"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Hangposta hívása"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Leglassabb"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lassú"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normál sebesség"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Gyors"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Leggyorsabb"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Csoport neve"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"NFC-n kapott névjegy"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Csak a kimenők megjelenítése"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Csak a bejövők megjelenítése"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Csak a nem fogadottak"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Csak a hangüzenetek"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Összes hívás megjelenítése"</string>
- <string name="status_available" msgid="5586870015822828392">"Elérhető"</string>
- <string name="status_away" msgid="1838861100379804730">"Nincs a gépnél"</string>
- <string name="status_busy" msgid="9147992455450257136">"Elfoglalt"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Hangposta lejátszása"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Bejövő hívás"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Kimenő hívás"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Nem fogadott hívás"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Hangüzenet"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Névjegy hozzáadása"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> névjegyének megtekintése"</string>
- <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> hívása"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"SMS küldése neki: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nem lejátszott hangüzenet"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Üzenet küldése a következőnek: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"<xliff:g id="NAME">%1$s</xliff:g> tárcsázása"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g> gyors elérése"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Én"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Tárolás helyben"</string>
<string name="add_account" msgid="8201790677994503186">"Fiók hozzáadása"</string>
<string name="add_new_account" msgid="5748627740680940264">"Új fiók hozzáadása"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"A hívás nem indítható."</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"A hangposta beállításához válassza a Menü > Beállítások pontot."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Hangposta hívásához kapcsolja ki a Repülőgép üzemmódot."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Adatbázisfájlok exportálása"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"További beállítások"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Névmezők kinyitása és összecsukása"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Kép. Válassza ki a módosításhoz"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index ea55071..dab156b 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telepon"</string>
<string name="people" msgid="1048457247435785074">"Orang"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontak"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontak"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Tentang"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Pembaruan"</string>
<string name="searchHint" msgid="8482945356247760701">"Telusuri kontak"</string>
- <string name="menu_search" msgid="9147752853603483719">"Telusuri"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Kontak baru"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Lihat kontak"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Tambahkan ke favorit"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Hapus dari favorit"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Edit"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Hapus"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Salin"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Letakkan di layar Utama"</string>
<string name="menu_call" msgid="3992595586042260618">"Hubungi kontak"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"SMS kontak"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Selesai"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Batal"</string>
<string name="menu_discard" msgid="6456087569315685632">"Buang"</string>
- <string name="label_notes" msgid="8337354953278341042">"Catatan"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Panggilan internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Perusahaan"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Judul"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Buat kontak baru"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telepon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Alamat"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisasi"</item>
<item msgid="7196592230748086755">"Catatan"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Tidak ada kontak."</string>
<string name="noGroups" msgid="8614664663561385253">"Tidak ada grup."</string>
<string name="noAccounts" msgid="7768267764545265909">"Untuk membuat grup, Anda memerlukan sebuah akun."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Tidak ditemukan kontak yang cocok."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Tidak ada kontak dengan nomor telepon."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Tidak ada orang dalam grup ini."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Untuk menambah beberapa orang, edit grup tersebut."</string>
<string name="savingContact" msgid="4075751076741924939">"Menyimpan kontak..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Menyimpan opsi tampilan..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontak disimpan."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Tidak dapat menyimpan perubahan kontak."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grup disimpan."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontak"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontak"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Tidak ada kontak."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Tidak ada kontak yang terlihat."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Tidak ada favorit."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Tidak ada kontak di <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontak di <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Kontak tunggal"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontak dalam tampilan khusus"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Ditemukan lebih dari <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Tidak ada kontak"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Ada 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Semua kontak"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grup"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favorit"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favorit dan semua kontak"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telepon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Log panggilan"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Kirim SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nomor sebelum memanggil"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambahkan ke kontak"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Hapus dari log panggilan"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Hapus log panggilan"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Hapus pesan suara"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Bagikan kotak pesan"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Log panggilan kosong."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Hapus log panggilan?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Semua catatan panggilan Anda akan dihapus."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Menghapus log panggilan..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Hapus yang sering dihubungi?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Anda akan menghapus daftar yang sering dihubungi pada aplikasi Orang dan Ponsel, serta memaksa aplikasi email untuk mempelajari preferensi penanganan Anda dari awal."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Menghapus yang sering dihubungi..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Kotak Pesan"</string>
- <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
- <string name="private_num" msgid="6374339738119166953">"Nomor pribadi"</string>
- <string name="payphone" msgid="4864313342828942922">"Telepon berbayar"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Gunakan keyboard untuk memanggil"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Panggil untuk menambahkan panggilan"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuat dari kartu SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontak pada kartu SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Anda tidak memiliki kontak untuk ditampilkan. (Jika Anda baru saja menambahkan akun, diperlukan waktu beberapa menit untuk menyinkronkan kontak.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Anda tak memiliki kontak untuk ditampilkan."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Anda tidak memiliki kontak untuk ditampilkan."\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambah atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SIM atau kartu SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Anda tidak memiliki kontak untuk ditampilkan."\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambah atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke ponsel"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Data kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SIM atau kartu SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Anda tidak memiliki kontak untuk ditampilkan. (Jika Anda baru saja menambahkan akun, dibutuhkan beberapa menit untuk menyinkronkan kontak)"\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", lalu sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambahkan atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opsi tampilan"</b></font>" untuk mengubah kontak mana yang dapat dilihat"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Anda tidak memiliki kontak untuk ditampilkan. (Jika Anda baru saja menambahkan akun, dibutuhkan beberapa menit untuk menyinkronkan kontak)"\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", lalu sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambahkan atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke ponsel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opsi tampilan"</b></font>" untuk mengubah kontak mana yang dapat dilihat"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Anda tidak memiliki kontak untuk ditampilkan."\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambah atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SIM atau kartu SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Anda tidak memiliki kontak untuk ditampilkan."\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambah atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke ponsel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SIM atau kartu SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Anda tidak memiliki kontak untuk ditampilkan. (Jika Anda baru saja menambahkan akun, dibutuhkan beberapa menit untuk menyinkronkan kontak)"\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", lalu sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambahkan atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opsi tampilan"</b></font>" untuk mengubah kontak mana yang dapat dilihat"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Anda tidak memiliki kontak untuk ditampilkan. (Jika Anda baru saja menambahkan akun, dibutuhkan beberapa menit untuk menyinkronkan kontak)"\n\n"Untuk menambahkan kontak, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", lalu sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akun"</b></font>" untuk menambahkan atau menyiapkan akun dengan kontak yang dapat Anda sinkronkan ke ponsel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opsi tampilan"</b></font>" untuk mengubah kontak mana yang dapat dilihat"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Kontak baru"</b></font>" untuk membuat kontak baru dari awal"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Impor/Ekspor"</b></font>" untuk mengimpor kontak dari kartu SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Anda tidak memiliki favorit."\n\n"Untuk menambahkan kontak ke daftar favorit:"\n\n" "<li>"Sentuh tab "<b>"Kontak"</b>\n</li>" "\n<li>"Sentuh kontak yang ingin Anda tambahkan ke favorit"\n</li>" "\n<li>"Sentuh bintang di samping nama kontak"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gunakan keypad nada sentuh"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kembali ke panggilan sedang berlangsung"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tambahkan panggilan"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detail panggilan"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Tidak dapat membaca detail untuk panggilan yang diminta."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Panggilan masuk"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Panggilan keluar"</string>
- <string name="type_missed" msgid="2720502601640509542">"Panggilan tak terjawab"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Kotak Pesan"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Panggilan masuk"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> menit <xliff:g id="SECONDS">%s</xliff:g> detik"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Paling sering dihubungi"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Paling sering dipanggil"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Tambahkan \"<xliff:g id="EMAIL">%s</xliff:g>\" ke kontak?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"satu"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dua"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tiga"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"empat"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"lima"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"enam"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"tujuh"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"delapan"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"sembilan"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"bintangi"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nol"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pound"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"kotak pesan"</string>
- <string name="description_search_button" msgid="3660807558587384889">"telusuri"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"panggil"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nomor untuk dipanggil"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto kontak"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"hapus"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Lihat kontak"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tidak ditemukan penyimpanan."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Tidak ditemukan kartu SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Impor dari kartu SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Impor dari penyimpanan"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Ekspor ke penyimpanan"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Bagikan kontak yang terlihat"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Impor satu file vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Impor beberapa file vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Impor semua file vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Menelusuri data vCard dalam penyimpanan..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Menelusuri data vCard pada kartu SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Penyimpanan tidak dapat dipindai. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartu SD tidak dapat dipindai. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Kesalahan I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Memori tidak cukup. File mungkin terlalu besar."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Tidak dapat mengurai vCard karena alasan yang tak terduga."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Format tidak didukung."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Tidak dapat mengimpor vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Tidak ditemukan file vCard dalam penyimpanan."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Tidak ditemukan file vCard pada kartu SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Tidak dapat mengumpulkan informasi meta dari file vCard yang diberikan."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Satu file atau lebih tidak dapat diimpor (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Kesalahan tidak dikenal."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Pilih file vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Menyimpan ke cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Menyimpan vCard ke cache untuk penyimpanan lokal sementara. Impor yang sebenarnya akan segera dimulai."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Mengimpor <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Mengimpor <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Tidak dapat membaca data vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Membaca data vCard dibatalkan"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Selesai mengimpor vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Mengimpor <xliff:g id="FILENAME">%s</xliff:g> dibatalkan"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> akan segera diimpor."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"File akan diimpor segera."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Permintaan impor vCard ditolak. Coba lagi nanti."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> akan segera diekspor."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Permintaan ekspor vCard ditolak. Coba lagi nanti."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontak"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Ekspor kontak?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Daftar kontak Anda akan diekspor ke file: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Tak dapat mengekspor"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontak tidak diekspor."\n"Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Tidak ada kontak yang dapat diekspor."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Terlalu banyak file vCard dalam penyimpanan."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Terlalu banyak file vCard di kartu SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Nama file yang diperlukan terlalu panjang (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Selesai mengekspor <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Mengekspor <xliff:g id="FILENAME">%s</xliff:g> dibatalkan."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Mengekspor kontak"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Kontak Anda sedang diekspor ke: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Tidak dapat memulai pengeskpor: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Terjadi kesalahan saat ekspor: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Tidak dapat memperoleh informasi basis data."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Tidak ada kontak yang dapat diekspor. Jika Anda menyimpan kontak di tablet, beberapa penyedia data mungkin tidak mengizinkan kontak untuk diekspor dari tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Tidak ada kontak yang dapat diekspor. Jika Anda menyimpan kontak pada ponsel, beberapa penyedia data tidak mengizinkan kontak diekspor dari ponsel."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Penyusun vCard tidak memulai dengan semestinya."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Batalkan impor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Batalkan ekspor <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Tidak dpt membatalkan impor/ekspor vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nama kontak Anda"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Tambahkan jeda 2-det"</string>
- <string name="add_wait" msgid="3360818652790319634">"Tambahkan tunggu"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Pilih nomor"</string>
- <string name="call_settings" msgid="7666474782093693667">"Setelan"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Pilih nomor"</string>
- <string name="make_primary" msgid="5829291915305113983">"Ingat pilihan ini"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Tidak ada apl yang ditemukan untuk menangani tindakan ini."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Tanpa nama)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Akun"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Hapus yang sering"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontak untuk ditampilkan"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Impor/ekspor"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Impor/ekspor kontak"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Impor kontak"</string>
<string name="menu_share" msgid="943789700636542260">"Bagikan"</string>
<string name="share_via" msgid="563121028023030093">"Bagikan kontak melalui"</string>
- <string name="share_error" msgid="948429331673358107">"Kontak ini tidak dapat dibagi."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nama"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Nama panggilan"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisasi"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Situs web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Acara"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Hubungan"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grup"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Buat kontak di bawah akun"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Buat grup dalam akun"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Hapus grup sinkronisasi"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Tambahkan grup sinkronisasi"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Grup lainnya..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Semua kontak lainnya"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Semua kontak"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Menghapus \"<xliff:g id="GROUP">%s</xliff:g>\" dari sinkronisasi juga akan menghapus setiap kontak yang tidak berada dalam grup dari sinkronisasi."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tablet saja, tidak disinkronkan"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Ponsel saja, tidak disinkronkan"</string>
- <string name="call_custom" msgid="7756571794763171802">"Panggil <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Panggil nomor telepon rumah"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Panggil nomor seluler"</string>
- <string name="call_work" msgid="5328785911463744028">"Panggil nomor kantor"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Panggil faks kantor"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Panggil nomor faks rumah"</string>
- <string name="call_pager" msgid="9003902812293983281">"Panggil pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Telepon"</string>
- <string name="call_callback" msgid="1910165691349426858">"Hubungi panggilan balik"</string>
- <string name="call_car" msgid="3280537320306436445">"Hubungi nomor telepon mobil"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Hubungi nomor telepon utama perusahaan"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Panggil ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Panggil nomor utama"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Panggil faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Panggil radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Panggil teleks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Panggil TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Panggil nomor seluler kantor"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Panggil pager kantor"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Panggil <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Panggil MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS rumah"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS seluler"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS kantor"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS faks kantor"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS faks rumah"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS pager"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS panggilan balik"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS mobil"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS nomor utama perusahaan"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS utama"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS faks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS seluler kantor"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Teks pager kantor"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Pesan teks"</string>
- <string name="email_home" msgid="8573740658148184279">"Email ke rumah"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Email ke seluler"</string>
- <string name="email_work" msgid="2807430017302722689">"Email ke kantor"</string>
- <string name="email_other" msgid="3454004077967657109">"Email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Email"</string>
- <string name="map_home" msgid="1243547733423343982">"Tampilkan alamat rumah"</string>
- <string name="map_work" msgid="1360474076921878088">"Tampilkan alamat kantor"</string>
- <string name="map_other" msgid="3817820803587012641">"Lihat alamat"</string>
- <string name="map_custom" msgid="6184363799976265281">"Tampilkan alamat <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Ngobrol menggunakan AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Ngobrol menggunakan Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Ngobrol menggunakan Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Ngobrol menggunakan Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Ngobrol menggunakan QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Ngobrol menggunakan Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Ngobrol menggunakan ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Ngobrol menggunakan Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Ngobrol"</string>
<string name="audio_chat" msgid="2535716629358298691">"Obrolan suara"</string>
<string name="video_chat" msgid="1872255818640336072">"Obrolan video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Alamat"</string>
- <string name="postal_street" msgid="8133143961580058972">"Jalan"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Kotak pos"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Lingkungan"</string>
- <string name="postal_city" msgid="6597491300084895548">"Kota"</string>
- <string name="postal_region" msgid="6045263193478437672">"Neg. Bagian/Prov"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Kode pos"</string>
- <string name="postal_country" msgid="7638264508416368690">"Negara"</string>
- <string name="full_name" msgid="6602579550613988977">"Nama"</string>
- <string name="name_given" msgid="1687286314106019813">"Nama depan"</string>
- <string name="name_family" msgid="3416695586119999058">"Nama keluarga"</string>
- <string name="name_prefix" msgid="59756378548779822">"Awalan nama"</string>
- <string name="name_middle" msgid="8467433655992690326">"Nama tengah"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Akhiran nama"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nama depan fonetik"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Nama tengah fonetik"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Nama keluarga fonetik"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nama fonetik"</string>
<string name="connections" msgid="8098440723172028350">"Hubungan"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Tambahkan hubungan"</string>
<string name="recent" msgid="2659189233141493004">"Terbaru"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sortir 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="18022868169627979">"Tampilkan nama kontak sebagai"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Lihat nama kontak"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nama depan pertama"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Nama keluarga pertama"</string>
<string name="take_photo" msgid="7496128293167402354">"Ambil foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Tampilkan semua"</string>
<string name="menu_select_all" msgid="621719255150713545">"Pilih semua"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Batal pilih semua"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Tidak ada kontak yang dipilih."</string>
<string name="add_field" msgid="2384260056674995230">"Tambahkan bidang lain"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Tambah baru"</string>
<string name="add_organization" msgid="7311893231158291197">"Tambahkan organisasi"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"tidak digabung"</item>
<item quantity="other" msgid="425683718017380845">"digabungkan dari <xliff:g id="COUNT">%0$d</xliff:g> sumber"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Lainnya"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Gabungkan kontak ini dengan kontak yang dipilih?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Beralih ke mengedit kontak yang dipilih? Informasi yang telah Anda masukkan sejauh ini akan disalin."</string>
<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="directory_search_label" msgid="1887759056597975053">"Direktori"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Semua kontak"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Membuat salinan pribadi..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Semua kontak"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Yang berbintang"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Khusus"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Khusus"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Semua kontak dengan nomor telepon"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontak"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Tentukan tampilan khusus"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Memuat..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Setelan"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontak untuk ditampilkan"</string>
<string name="menu_settings" msgid="377929915873428211">"Setelan"</string>
<string name="menu_help" msgid="5123887102216637725">"Bantuan"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opsi tampilan"</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="hint_findContacts" msgid="1808681193458772072">"Temukan kontak"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Nomor telepon"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Tambahkan ke kontak"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Tambahkan ke kontak"</string>
@@ -497,61 +215,7 @@
<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">"Siapkan profil saya"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Ketik nama seseorang"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Lihat pembaruan"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Pesan suara"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Pesan suara"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Putar"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Pesan suara baru dari <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Tidak dapat memutar pesan suara."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Menyangga…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Mengambil pesan suara…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Tidak dapat mengambil pesan suara."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Baru"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Lawas"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Hanya panggilan dengan pesan suara"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Hanya panggilan masuk"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Hanya panggilan keluar"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Hanya panggilan tak terjawab"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Tidak dapat tersambung ke server kotak pesan."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Tak dpt trsmbung ke srvr ktk pesan. Ktk pesan baru sdg menunggu."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Siapkan kotak pesan Anda."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio tidak tersedia."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Siapkan"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Panggil pesan suara"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Kecepatan paling rendah"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Kecepatan rendah"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Kecepatan normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Kecepatan tinggi"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Kecepatan tertinggi"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nama grup"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontak yang diterima lewat NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Tampilkan panggilan keluar"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Tampilkan panggilan masuk saja"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Tampilkan panggilan terlewat"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tampilkan pesan suara saja"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Tampilkan semua panggilan"</string>
- <string name="status_available" msgid="5586870015822828392">"Tersedia"</string>
- <string name="status_away" msgid="1838861100379804730">"Tidak di Tempat"</string>
- <string name="status_busy" msgid="9147992455450257136">"Sibuk"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Putar pesan suara"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Panggilan masuk"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Panggilan keluar"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Panggilan tak terjawab"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Pesan suara"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Tambahkan kontak"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Lihat kontak <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Panggil <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Kirim SMS ke <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Pesan suara yang belum didengar"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Kirim pesan ke <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Panggil nomor telepon <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Kontak cepat untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Saya"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Simpan secara lokal"</string>
<string name="add_account" msgid="8201790677994503186">"Tambahkan akun"</string>
<string name="add_new_account" msgid="5748627740680940264">"Tambahkan akun baru"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Panggilan tidak terkirim"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuk menyiapkan kotak pesan, buka Menu > Setelan."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk memanggil pesan suara, pertama-tama matikan mode Pesawat."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Ekspor file basis data"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Opsi lainnya"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Luaskan atau ciutkan bidang nama"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Gambar. Pilih untuk mengubah"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index d1481f6..ffdde89 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefono"</string>
<string name="people" msgid="1048457247435785074">"Persone"</string>
<string name="contactsList" msgid="8661624236494819731">"Contatti"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contatto"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Informazioni"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Aggiornamenti"</string>
<string name="searchHint" msgid="8482945356247760701">"Cerca contatti"</string>
- <string name="menu_search" msgid="9147752853603483719">"Cerca"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nuovo contatto"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Visualizza contatto"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Aggiungi a preferiti"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Rimuovi dai preferiti"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Modifica"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Elimina"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copia"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Aggiungi a schermata Home"</string>
<string name="menu_call" msgid="3992595586042260618">"Chiama"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Invia SMS"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Salva"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Annulla"</string>
<string name="menu_discard" msgid="6456087569315685632">"Ignora"</string>
- <string name="label_notes" msgid="8337354953278341042">"Note"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Chiamata Internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Società"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titolo"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Crea nuovo contatto"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefono"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Indirizzo"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizzazione"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nessun contatto."</string>
<string name="noGroups" msgid="8614664663561385253">"Nessun gruppo."</string>
<string name="noAccounts" msgid="7768267764545265909">"Per creare gruppi è necessario un account."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nessun contatto corrispondente trovato."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nessun contatto con numeri di telefono."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Nessuna persona in questo gruppo."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Per aggiungerne qualcuno, modifica il gruppo."</string>
<string name="savingContact" msgid="4075751076741924939">"Salvataggio contatto..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Salvataggio opzioni di visualizzazione..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contatto salvato."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Salvataggio delle modifiche ai contatti non riuscito."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Gruppo salvato."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contatto"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contatti"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nessun contatto."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nessun contatto visibile."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Nessun preferito."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nessun contatto in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contatti in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Contatto singolo"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contatti in visualizzazione personalizzata"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Ne sono stati trovati più di <xliff:g id="COUNT">%d</xliff:g>"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nessun contatto"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 trovato"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Tutti i contatti"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruppi"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Preferiti"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Preferiti e tutti i contatti"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefono"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Chiamate"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Invia messaggio di testo"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifica prima di chiamare"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Aggiungi a contatti"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Rimuovi da registro"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Cancella registro chiamate"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Elimina messaggio vocale"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Condividi messaggio vocale"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Il registro chiamate è vuoto."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Cancellare registro?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tutte le voci nel registro chiamate verranno eliminate."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Cancellazione registro chiamate..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Cancellare contattati di frequente?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Cancellerai l\'elenco degli utenti contattati di frequente nelle applicazioni Persone e Telefono e imposterai l\'acquisizione forzata delle tue preferenze di indirizzamento da zero nelle applicazioni email."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Cancellazione contattati di frequente…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Segreteria"</string>
- <string name="unknown" msgid="740067747858270469">"Sconosciuto"</string>
- <string name="private_num" msgid="6374339738119166953">"Numero privato"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefono a monete"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Usa la tastiera"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Componi per aggiungere chiamata"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Caricamento da SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contatti SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Non ci sono contatti da visualizzare (se hai appena aggiunto un account, la sincronizzazione dei contatti potrebbe richiedere alcuni minuti)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Non ci sono contatti da visualizzare."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Non hai alcun contatto da visualizzare."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o impostare un account con contatti sincronizzabili con il tablet."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto da zero."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare i contatti dalla SIM o dalla scheda SD."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Non hai alcun contatto da visualizzare."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o impostare un account con contatti sincronizzabili con il telefono."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto da zero."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare i contatti dalla SIM o dalla scheda SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Non sono presenti contatti da visualizzare. (Se hai appena aggiunto un account, la sincronizzazione dei contatti potrebbe richiedere alcuni minuti)."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o configurare un account con contatti sincronizzabili con il tablet."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opzioni di visualizzazione"</b></font>" per modificare i contatti visibili."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare da zero un nuovo contatto."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare contatti dalla SIM o dalla scheda SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Non sono presenti contatti da visualizzare. (Se hai appena aggiunto un account, la sincronizzazione dei contatti potrebbe richiedere alcuni minuti)."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o configurare un account con contatti sincronizzabili con il telefono."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opzioni di visualizzazione"</b></font>" per modificare i contatti visibili."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare da zero un nuovo contatto."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare contatti dalla SIM o dalla scheda SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Non hai alcun contatto da visualizzare."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" , quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o impostare un account con contatti sincronizzabili con il tablet."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto da zero."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare i contatti dalla scheda SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Non hai alcun contatto da visualizzare."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" , quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o impostare un account con contatti sincronizzabili con il telefono."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto da zero."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare i contatti dalla scheda SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Non sono presenti contatti da visualizzare. (Se hai appena aggiunto un account, la sincronizzazione dei contatti potrebbe richiedere alcuni minuti)."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o configurare un account con contatti sincronizzabili con il tablet."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opzioni di visualizzazione"</b></font>" per modificare i contatti visibili."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare da zero un nuovo contatto."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare contatti dalla scheda SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Non sono presenti contatti da visualizzare. (Se hai appena aggiunto un account, la sincronizzazione dei contatti potrebbe richiedere alcuni minuti)."\n\n"Per aggiungere contatti, tocca "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", quindi tocca:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Account"</b></font>" per aggiungere o configurare un account con contatti sincronizzabili con il telefono."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opzioni di visualizzazione"</b></font>" per modificare i contatti visibili."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare da zero un nuovo contatto."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa/esporta"</b></font>" per importare contatti dalla scheda SD."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Non sono presenti preferiti."\n\n"Per aggiungere un contatto al tuo elenco di preferiti:"\n\n<li>"Tocca la scheda "<b>"Contatti."</b>\n</li>" "\n<li>"Tocca il contatto da aggiungere ai preferiti."\n</li>" "\n<li>"Tocca la stella accanto al nome del contatto."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usa tastierino per selezione a toni"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Torna alla chiamata in corso"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Aggiungi"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Dettagli chiamata"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Impossibile leggere i dettagli per la chiamata richiesta."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Chiamata ricevuta"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Chiamata effettuata"</string>
- <string name="type_missed" msgid="2720502601640509542">"Chiamata persa"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Segreteria"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Chiamate in arrivo"</string>
<string name="callBack" msgid="5498224409038809224">"Richiama"</string>
<string name="callAgain" msgid="3197312117049874778">"Richiama"</string>
<string name="returnCall" msgid="8171961914203617813">"Chiama numero"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contattati spesso"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Numeri più chiamati"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Aggiungi \"<xliff:g id="EMAIL">%s</xliff:g>\" ai contatti?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"uno"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"due"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tre"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quattro"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinque"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sei"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sette"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"otto"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nove"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"stella"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"sterlina"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"segreteria"</string>
- <string name="description_search_button" msgid="3660807558587384889">"cerca"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"componi"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numero da comporre"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto contatto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"elimina"</string>
<string name="description_plus_button" msgid="515164827856229880">"più"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Visualizza contatto"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nessun archivio trovato."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nessuna scheda SD trovata."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importa da scheda SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importa da archivio"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Esporta in archivio"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Condividi contatti visibili"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importa un file vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importa più file vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importa tutti i file vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Ricerca di dati vCard nell\'archivio..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Ricerca dati vCard su scheda SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Scansione dell\'archivio non riuscita. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Scansione della scheda SD non riuscita. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Errore I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Memoria insufficiente. Il file potrebbe essere troppo grande."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Analisi vCard non riuscita per motivo imprevisto."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Il formato non è supportato."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Importazione vCard non riuscita."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Nessun file vCard trovato nell\'archivio."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Nessun file vCard trovato sulla scheda SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Raccolta dei metadati dei file vCard specificati non riuscita."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Importazione di uno o più file non riuscita (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Errore sconosciuto."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Scegli file vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Memorizzazione nella cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Memorizzazione delle vCard nella cache di archiviazione temporanea locale. L\'importazione reale inizierà a breve."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importazione di <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importazione di <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Lettura dati vCard non riuscita"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lettura dati vCard annullata"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Importazione vCard <xliff:g id="FILENAME">%s</xliff:g> terminata"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importazione di <xliff:g id="FILENAME">%s</xliff:g> annullata"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"La vCard <xliff:g id="FILENAME">%s</xliff:g> verrà importata a breve."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Il file sarà importato a breve."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Richiesta importazione vCard rifiutata. Riprova più tardi."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"La vCard <xliff:g id="FILENAME">%s</xliff:g> verrà esportata a breve."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Richiesta esportazione vCard rifiutata. Riprova più tardi."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contatto"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Esportare contatti?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"L\'elenco dei contatti verrà esportato nel file: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Impossibile esportare"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"I dati dei contatti non sono stati esportati."\n"Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nessun contatto esportabile."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Troppi file vCard nell\'archivio."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Troppi file vCard sulla scheda SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Il nome file richiesto è troppo lungo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Esportazione di <xliff:g id="FILENAME">%s</xliff:g> terminata."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Esportazione di <xliff:g id="FILENAME">%s</xliff:g> annullata."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Esportazione dati di contatto"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"I dati dei contatti sono in fase di esportazione in: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Avvio dell\'utilità di esportazione non riuscito: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Si è verificato un errore durante l\'esportazione: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Recupero informazioni database non riuscito."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Non sono presenti contatti esportabili. Se hai contatti sul tablet, è possibile che alcuni fornitori di dati non consentano l\'esportazione dei contatti dal tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Non sono presenti contatti esportabili. Se hai contatti sul telefono, è possibile che alcuni fornitori di dati non consentano l\'esportazione dei contatti dal telefono."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Il compositore di vCard non si è avviato correttamente."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Apertura di \"<xliff:g id="FILE_NAME">%s</xliff:g>\" non riuscita: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Annullare l\'importazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Annullare l\'esportazione di <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Annullam. import./esport. vCard non riuscito"</string>
<string name="search_settings_description" msgid="2675223022992445813">"I nomi dei tuoi contatti"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Aggiungi pausa 2 sec"</string>
- <string name="add_wait" msgid="3360818652790319634">"Aggiungi attesa"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Scegli numero"</string>
- <string name="call_settings" msgid="7666474782093693667">"Impostazioni"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Scegli numero"</string>
- <string name="make_primary" msgid="5829291915305113983">"Memorizza questa scelta"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nessuna applicazione trovata per gestire questa azione."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Nessun nome)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Account"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Cancella frequenti"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contatti da visualizzare"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importa/esporta"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importa/esporta contatti"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importa contatti"</string>
<string name="menu_share" msgid="943789700636542260">"Condividi"</string>
<string name="share_via" msgid="563121028023030093">"Condividi contatto tramite"</string>
- <string name="share_error" msgid="948429331673358107">"Questo contatto non può essere condiviso."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Nickname"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizzazione"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Sito web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Eventi"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relazione"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Gruppi"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crea contatto sotto account"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Crea un gruppo nell\'account"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Rimuovi gruppo sinc."</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Aggiungi gruppo sinc."</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Altri gruppi..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Tutti gli altri contatti"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Tutti i contatti"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Se rimuovi \"<xliff:g id="GROUP">%s</xliff:g>\" dalla sincronizzazione, verranno rimossi anche gli eventuali contatti separati."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Solo su tablet, non sincronizzato"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Solo su telefono, non sincronizzato"</string>
- <string name="call_custom" msgid="7756571794763171802">"Chiama n. <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Chiama casa"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Chiama cellulare"</string>
- <string name="call_work" msgid="5328785911463744028">"Chiama n. lavoro"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Chiama fax lavoro"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Chiama n. fax casa"</string>
- <string name="call_pager" msgid="9003902812293983281">"Chiama cercapersone"</string>
- <string name="call_other" msgid="8563753966926932052">"Chiama"</string>
- <string name="call_callback" msgid="1910165691349426858">"Chiama n. callback"</string>
- <string name="call_car" msgid="3280537320306436445">"Chiama n. automobile"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Chiama n. azienda, principale"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Chiama n. ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Chiama n. principale"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Chiama n. fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Chiama radiotelefono"</string>
- <string name="call_telex" msgid="2223170774548648114">"Chiama telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Chiama n. TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Chiama cellulare lavoro"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Chiama cercapersone lavoro"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Chiama <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Chiama n. MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Invia SMS a n. <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Invia SMS a n. casa"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Invia SMS a cellulare"</string>
- <string name="sms_work" msgid="2269624156655267740">"Invia SMS a n. lavoro"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Invia SMS a fax lavoro"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Invia SMS a n. fax casa"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Invia SMS a n. cercapersone"</string>
- <string name="sms_other" msgid="806127844607642331">"Invia SMS a n."</string>
- <string name="sms_callback" msgid="5004824430094288752">"Invia SMS a n. callback"</string>
- <string name="sms_car" msgid="7444227058437359641">"Invia SMS a n. automobile"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Invia SMS a n. azienda, principale"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Invia SMS a n. ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Invia SMS a n. principale"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Invia SMS a n. fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Invia SMS a radiotelefono"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Invia SMS a n. telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Invia SMS a n. TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Invia SMS a cellulare lavoro"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS a cercapersone lavoro"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Invia testo a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Invia SMS a n. MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Messaggio di testo"</string>
- <string name="email_home" msgid="8573740658148184279">"Invia email a ind. casa"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Invia email a ind. cellulare"</string>
- <string name="email_work" msgid="2807430017302722689">"Invia email a ind. lavoro"</string>
- <string name="email_other" msgid="3454004077967657109">"Invia email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Invia email a ind. <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Email"</string>
- <string name="map_home" msgid="1243547733423343982">"Visualizza indirizzo casa"</string>
- <string name="map_work" msgid="1360474076921878088">"Visualizza indirizzo lavoro"</string>
- <string name="map_other" msgid="3817820803587012641">"Visualizza indirizzo"</string>
- <string name="map_custom" msgid="6184363799976265281">"Visualizza indirizzo <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatta su AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatta su Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatta su Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatta su Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatta su QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatta su Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatta su ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatta su Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chatta"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat vocale"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Indirizzo"</string>
- <string name="postal_street" msgid="8133143961580058972">"Indirizzo postale"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Casella postale"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Zona"</string>
- <string name="postal_city" msgid="6597491300084895548">"Città"</string>
- <string name="postal_region" msgid="6045263193478437672">"Provincia"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Codice postale"</string>
- <string name="postal_country" msgid="7638264508416368690">"Paese"</string>
- <string name="full_name" msgid="6602579550613988977">"Nome"</string>
- <string name="name_given" msgid="1687286314106019813">"Nome fornito"</string>
- <string name="name_family" msgid="3416695586119999058">"Cognome"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefisso nome"</string>
- <string name="name_middle" msgid="8467433655992690326">"Secondo nome"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Suffisso nome"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nome fonetico fornito"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Secondo nome fonetico"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Cognome fonetico"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nome fonetico"</string>
<string name="connections" msgid="8098440723172028350">"Connessioni"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Aggiungi connessione"</string>
<string name="recent" msgid="2659189233141493004">"Recenti"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Ordina elenco per"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nome"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Cognome"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Visualizza nomi contatti con"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Visualizza nomi contatti"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Prima il nome"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Prima il cognome"</string>
<string name="take_photo" msgid="7496128293167402354">"Scatta foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostra tutto"</string>
<string name="menu_select_all" msgid="621719255150713545">"Seleziona tutto"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Deseleziona tutto"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nessun contatto selezionato."</string>
<string name="add_field" msgid="2384260056674995230">"Aggiungi un altro campo"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Aggiungi nuovo"</string>
<string name="add_organization" msgid="7311893231158291197">"Aggiungi organizzazione"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"non uniti"</item>
<item quantity="other" msgid="425683718017380845">"uniti da <xliff:g id="COUNT">%0$d</xliff:g> origini"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Altro"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unire il contatto corrente al contatto selezionato?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Passare alla modifica del contatto selezionato? Le informazioni inserite finora verranno copiate."</string>
<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="directory_search_label" msgid="1887759056597975053">"Directory"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Tutti i contatti"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Creazione di una copia personale..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Tutti i contatti"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Speciali"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizzato"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizza"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Tutti i contatti con numeri di telefono"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contatto"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definisci visualizzazione personalizzata"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Caricamento..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Impostazioni"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contatti da visualizzare"</string>
<string name="menu_settings" msgid="377929915873428211">"Impostazioni"</string>
<string name="menu_help" msgid="5123887102216637725">"Guida"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opzioni di visualizzazione"</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="hint_findContacts" msgid="1808681193458772072">"Trova contatti"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Numero di telefono"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Aggiungi a contatti"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Aggiungi al contatto"</string>
@@ -497,61 +215,7 @@
<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">"Imposta il mio profilo"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Digita il nome della persona"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Visualizza aggiornamenti"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Segreteria"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messaggi vocali"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Riproduci"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuovo messaggio vocale da <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Riproduzione messaggio vocale non riuscita."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Buffering..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Recupero messaggi segreteria..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Recupero messaggi segreteria non riuscito."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nuovi"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Precedenti"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Solo chiamate con segreteria"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Solo chiamate in arrivo"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Solo chiamate in uscita"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Solo chiamate perse"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Impossibile collegarsi al server della segreteria."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Impossibile collegarsi al server. Nuovi mess. vocali in attesa."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Imposta la tua segreteria."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio non disponibile."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Imposta"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chiama segreteria"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Velocità più bassa"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Bassa velocità"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Velocità normale"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Alta velocità"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Massima velocità"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nome del gruppo"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contatto ricevuto via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostra solo in uscita"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostra solo in arrivo"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra solo senza risposta"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra solo messaggi vocali"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra tutte le chiamate"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponibile"</string>
- <string name="status_away" msgid="1838861100379804730">"Assente"</string>
- <string name="status_busy" msgid="9147992455450257136">"Occupato"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Riproduci messaggio vocale"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Chiamata in arrivo"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Chiamata in uscita"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Chiamata senza risposta"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Messaggio vocale"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Aggiungi contatto"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Visualizza <xliff:g id="NAME">%1$s</xliff:g> contatto"</string>
- <string name="description_call" msgid="3443678121983852666">"Chiama <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Invia messaggio di testo a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Messaggio vocale non ascoltato"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Invia messaggio a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Componi numero di telefono <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contatto rapido per <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Io"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Memorizza in locale"</string>
<string name="add_account" msgid="8201790677994503186">"Aggiungi account"</string>
<string name="add_new_account" msgid="5748627740680940264">"Aggiungi nuovo account"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chiamata non inviata"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Per configurare la segreteria, seleziona Menu > Impostazioni."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Per chiamare la segreteria, disattiva la modalità aereo."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Esporta file database"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Altre opzioni"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Espandi o comprimi i campi dei nomi"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Immagine. Seleziona per modificare"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index ce789ad..0788d99 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"טלפון"</string>
<string name="people" msgid="1048457247435785074">"אנשים"</string>
<string name="contactsList" msgid="8661624236494819731">"אנשי קשר"</string>
<string name="shortcutContact" msgid="749243779392912958">"איש קשר"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"מידע על"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"עדכונים"</string>
<string name="searchHint" msgid="8482945356247760701">"חפש אנשי קשר"</string>
- <string name="menu_search" msgid="9147752853603483719">"חפש"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"איש קשר חדש"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"הצג איש קשר"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"העתק"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"הצב במסך הבית"</string>
<string name="menu_call" msgid="3992595586042260618">"התקשר לאיש קשר"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"שלח הודעת טקסט לאיש קשר"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"איש קשר זה מכיל מידע מחשבונות מרובים. מידע מחשבונות לקריאה בלבד יוסתר ברשימות אנשי הקשר ולא יימחק."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"מחיקת איש קשר זה תמחק מידע מחשבונות מרובים."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"איש קשר זה יימחק."</string>
- <string name="menu_done" msgid="796017761764190697">"סיום"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"בטל"</string>
<string name="menu_discard" msgid="6456087569315685632">"מחק"</string>
- <string name="label_notes" msgid="8337354953278341042">"הערות"</string>
- <string name="label_sip_address" msgid="124073911714324974">"שיחת אינטרנט"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"חברה"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"שם"</string>
<string name="invalidContactMessage" msgid="8215051456181842274">"איש הקשר לא קיים."</string>
<string name="createContactShortcutSuccessful" msgid="7874133287558150877">"widget של אנשי קשר נוסף למסך הבית."</string>
<string name="pickerNewContactHeader" msgid="7750705279843568147">"צור איש קשר חדש"</string>
<string name="pickerNewContactText" msgid="6166997164401048211">"צור איש קשר חדש"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"טלפון"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"דוא\"ל"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"הודעה מיידית"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"כתובת"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"ארגון"</item>
<item msgid="7196592230748086755">"הערה"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"אין אנשי קשר."</string>
<string name="noGroups" msgid="8614664663561385253">"אין קבוצות."</string>
<string name="noAccounts" msgid="7768267764545265909">"כדי ליצור קבוצות, נחוץ חשבון."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"לא נמצאו אנשי קשר תואמים."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"אין אנשי קשר עם מספרי טלפון."</string>
<string name="emptyGroup" msgid="7502116218697177370">"אין אנשים בקבוצה זו."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"כדי להוסיף, ערוך את הקבוצה."</string>
<string name="savingContact" msgid="4075751076741924939">"שומר איש קשר…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"שומר אפשרויות תצוגה..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"איש הקשר נשמר."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"לא ניתן לשמור את השינויים באנשי הקשר."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"הקבוצה נשמרה."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"איש קשר אחד"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> אנשי קשר"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"אין אנשי קשר."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"אין אנשי קשר גלויים."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"אין מועדפים."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"אין אנשי קשר ב<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"אנשי קשר ב-<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"איש קשר יחיד"</string>
- <string name="listCustomView" msgid="6950713892532194050">"אנשי קשר בתצוגה מותאמת אישית"</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="foundTooManyContacts" msgid="5163335650920020220">"נמצאו יותר מ-<xliff:g id="COUNT">%d</xliff:g> פריטים."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"אין אנשי קשר"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"נמצא אחד"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"כל אנשי הקשר"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"קבוצות"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"מועדפים"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"מועדפים וכל אנשי הקשר"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"טלפון"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"יומן שיחות"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"שלח הודעת טקסט"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"התקשר אל <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ערוך מספר לפני השיחה"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"הוסף לאנשי הקשר"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"הסר מיומן השיחות"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"נקה יומן שיחות"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"מחק דואר קולי"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"שתף דואר קולי"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"יומן השיחות ריק."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"לנקות את יומן השיחות?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"כל רשומות השיחה שלך יימחקו."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"מנקה את יומן השיחות..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"האם למחוק אנשי קשר קבועים?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"פעולה זו תמחק את רשימת האנשים שאתה יוצר איתם קשר בתדירות הגבוהה ביותר ביישומים \'אנשים\' ו\'טלפון\' ותאלץ יישומי דוא\"ל ללמוד מהתחלה את העדפות הכתובות שלך."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"מוחק אנשי קשר קבועים…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"דואר קולי"</string>
- <string name="unknown" msgid="740067747858270469">"לא ידוע"</string>
- <string name="private_num" msgid="6374339738119166953">"מספר פרטי"</string>
- <string name="payphone" msgid="4864313342828942922">"טלפון ציבורי"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"השתמש במקלדת כדי לחייג"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"חייג כדי להוסיף שיחה"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"טוען מכרטיס SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"אנשי קשר בכרטיס SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"אין לך אנשי קשר להצגה. (אם הוספת הרגע חשבון, יחלפו כמה דקות עד לסינכרון אנשי הקשר.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"אין לך אנשי קשר להצגה."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"אין לך אנשי קשר להצגה."\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטבלט"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SIM או ה-SD שלך"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"אין לך אנשי קשר להצגה."\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטלפון"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייבוא/ייצוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SIM או ה-SD שלך"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"אין לך אנשי קשר להצגה. (אם הוספת חשבון זה עתה, ייתכן שיידרשו מספר דקות לסנכרון אנשי הקשר.)"\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטבלט"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"אפשרויות תצוגה"</b></font>" כדי לשנות את אנשי הקשר הגלויים"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SIM או ה-SD שלך"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"אין לך אנשי קשר להצגה. (אם הוספת חשבון זה עתה, ייתכן שיידרשו מספר דקות לסנכרון אנשי הקשר.)"\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטלפון"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"אפשרויות תצוגה"</b></font>" כדי לשנות את אנשי הקשר הגלויים"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SIM או ה-SD שלך"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"אין לך אנשי קשר להצגה."\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטבלט"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SD שלך"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"אין לך אנשי קשר להצגה."\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטלפון"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SD שלך"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"אין לך אנשי קשר להצגה. (אם הוספת חשבון זה עתה, ייתכן שיידרשו מספר דקות לסנכרון אנשי הקשר.)"\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטבלט"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"אפשרויות תצוגה"</b></font>" כדי לשנות את אנשי הקשר הגלויים"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SD שלך"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"אין לך אנשי קשר להצגה. (אם הוספת חשבון זה עתה, ייתכן שיידרשו מספר דקות לסנכרון אנשי הקשר.)"\n\n"כדי להוסיף אנשי קשר, גע באפשרות "<font fgcolor="#ffffffff"><b>"תפריט"</b></font>", ולאחר מכן גע באפשרות:"\n" "\n<li><font fgcolor="#ffffffff"><b>"חשבונות"</b></font>" כדי להוסיף או להגדיר חשבון עם אנשי קשר שתוכל לסנכרן לטלפון"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"אפשרויות תצוגה"</b></font>" כדי לשנות את אנשי הקשר הגלויים"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"איש קשר חדש"</b></font>" כדי ליצור איש קשר חדש מהבסיס"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"ייצוא/ייבוא"</b></font>" כדי לייבא אנשי קשר מכרטיס ה-SD שלך"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"אין לך מועדפים."\n\n"כדי להוסיף איש קשר לרשימת המועדפים:"\n\n" "<li>"גע בכרטיסייה "<b>"אנשי קשר"</b>\n</li>" "\n<li>"גע באיש הקשר שברצונך להוסיף למועדפים"\n</li>" "\n<li>"גע בכוכב שליד שמו של איש הקשר"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"השתמש במקלדת עם חיוג צלילים"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"חזור לשיחה מתבצעת"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"הוסף שיחה"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"פרטי שיחה"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"לא ניתן לקרוא את פרטי השיחה המבוקשת."</string>
- <string name="type_incoming" msgid="6502076603836088532">"שיחה נכנסת"</string>
- <string name="type_outgoing" msgid="343108709599392641">"שיחה יוצאת"</string>
- <string name="type_missed" msgid="2720502601640509542">"שיחה שלא נענתה"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"דואר קולי"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"שיחות נכנסות"</string>
<string name="callBack" msgid="5498224409038809224">"התקשר חזרה"</string>
<string name="callAgain" msgid="3197312117049874778">"התקשר שוב"</string>
<string name="returnCall" msgid="8171961914203617813">"התקשר בחזרה"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> דקות <xliff:g id="SECONDS">%s</xliff:g> שניות"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"בקשר לעתים קרובות"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"התקשרות לעתים קרובות"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"להוסיף את \"<xliff:g id="EMAIL">%s</xliff:g>\" לאנשי הקשר?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"אחד"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"שתיים"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"שלוש"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"ארבע"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"חמש"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"שש"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"שבע"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"שמונה"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"תשע"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"סמן בכוכב"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"אפס"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"סולמית"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"דואר קולי"</string>
- <string name="description_search_button" msgid="3660807558587384889">"חפש"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"חייג"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"מספר לחיוג"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"תמונה של איש קשר"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"מחק"</string>
<string name="description_plus_button" msgid="515164827856229880">"חיבור"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"הצג איש קשר"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"לא נמצאו התקני אחסון."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"לא נמצא כרטיס SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"ייבא מכרטיס SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ייבא מאמצעי אחסון"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ייצא לאמצעי אחסון"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"שתף אנשי קשר גלויים"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"ייבא קובץ vCard אחד"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"ייבא קובצי vCard מרובים"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"ייבא את כל קובצי vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"מחפש נתוני vCard באמצעי האחסון..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"מחפש נתוני vCard בכרטיס ה-SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"לא ניתן לסרוק את אמצעי האחסון. (סיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"לא ניתן לסרוק את כרטיס ה-SD. (סיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"שגיאת קלט/פלט"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"אין מספיק זיכרון. ייתכן שהקובץ גדול מדי."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"אין אפשרות לנתח את ה-vCard מסיבה בלתי צפויה."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"הפורמט אינו נתמך."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"לא ניתן לייבא את ה-vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"לא נמצאו באמצעי האחסון קובצי vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"לא נמצא קובץ vCard בכרטיס ה-SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"לא ניתן לאסוף מטא-מידע של קבצים נתונים של vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"לא ניתן לייבא קובץ אחד או יותר (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"שגיאה לא ידועה."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"בחר קובץ vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"הופך לקובץ שמור"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"קובצי ה-vCard נשמרים כקבצים באחסון מקומי זמני. הייבוא בפועל יחל בקרוב."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"מייבא <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"מייבא את <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"לא ניתן לקרוא נתוני vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"קריאת נתוני ה-VCard בוטלה"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"הייבוא של vCard בשם <xliff:g id="FILENAME">%s</xliff:g> הסתיים"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"הייבוא של <xliff:g id="FILENAME">%s</xliff:g> בוטל"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"הייבוא של <xliff:g id="FILENAME">%s</xliff:g> יתבצע תוך זמן קצר."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"הייבוא של הקובץ יתבצע תוך זמן קצר."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"הבקשה לייבוא ה-vCard נדחתה. נסה שוב מאוחר יותר."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> יתבצע תוך זמן קצר."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"הבקשה לייצוא ה-vCard נדחתה. נסה שוב מאוחר יותר."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"איש קשר"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"לייצא את אנשי הקשר?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"רשימת אנשי הקשר שלך תיוצא לקובץ: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"לא ניתן לייצא"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"נתוני אנשי הקשר לא יוצאו."\n"סיבה: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"אין אנשי קשר הניתנים לייצוא."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"באמצעי האחסון קיימים קובצי vCard רבים מדי."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"קיימים בכרטיס ה-SD קובצי vCard רבים מדי."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"שם הקובץ הדרוש ארוך מדי (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> הסתיים."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"הייצוא של <xliff:g id="FILENAME">%s</xliff:g> בוטל."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"מייצא נתונים של אנשי קשר"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"נתוני אנשי הקשר שלך מיוצאים אל: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"לא ניתן להפעיל את המייצא: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"אירעה שגיאה במהלך הייצוא: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"לא ניתן לקבל מידע ממסד הנתונים."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"אין אנשי קשר הניתנים לייצוא. אם מוגדרים בטבלט שלך אנשי קשר, ייתכן שספקי נתונים מסוימים אינם מאפשרים ייצוא של אנשי קשר מהטבלט."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"אין אנשי קשר הניתנים לייצוא. אם מוגדרים אנשי קשר בטלפון שלך, ייתכן שספקי נתונים מסוימים אינם מאפשרים ייצוא של אנשי קשר מהטלפון."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"יישום היצירה של ה-vCard לא הופעל כהלכה."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"לא ניתן לפתוח את \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"לבטל את הייבוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"לבטל את הייצוא של <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"לא ניתן לבטל ייבוא/ייצוא של vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"השמות של אנשי הקשר"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"הוסף השהיה של 2 שניות"</string>
- <string name="add_wait" msgid="3360818652790319634">"הוסף המתנה"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"בחר מספר"</string>
- <string name="call_settings" msgid="7666474782093693667">"הגדרות"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"בחר מספר"</string>
- <string name="make_primary" msgid="5829291915305113983">"זכור בחירה זו"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"לא נמצא יישום שיכול לטפל בפעולה זו."</string>
- <string name="missing_name" msgid="8745511583852904385">"(ללא שם)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"חשבונות Google"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"מחק אנשי קשר קבועים"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"אנשי קשר להצגה"</string>
- <string name="menu_import_export" msgid="26217871113229507">"ייבוא/ייצוא"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"יבא/יצא אנשי קשר"</string>
- <string name="dialog_import" msgid="2431698729761448759">"יבוא אנשי קשר"</string>
<string name="menu_share" msgid="943789700636542260">"שתף"</string>
<string name="share_via" msgid="563121028023030093">"שתף איש קשר באמצעות"</string>
- <string name="share_error" msgid="948429331673358107">"לא ניתן לשתף איש קשר זה."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"שם"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"כינוי"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"ארגון"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"אתר"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"אירועים"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"קשר"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"קבוצות"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"צור איש קשר בחשבון"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"צור קבוצה עבור חשבון"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"הסר קבוצת סינכרון"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"הוסף קבוצת סינכרון"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"קבוצות נוספות…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"כל אנשי הקשר האחרים"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"כל אנשי הקשר"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"הסרת \"<xliff:g id="GROUP">%s</xliff:g>\" מהסנכרון תסיר מהסנכרון גם אנשי קשר שאינם מקובצים."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"טאבלט בלבד, לא מסונכרן"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"טלפון בלבד, לא מסונכרן"</string>
- <string name="call_custom" msgid="7756571794763171802">"התקשר אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"התקשר לבית"</string>
- <string name="call_mobile" msgid="7502236805487609178">"התקשר לנייד"</string>
- <string name="call_work" msgid="5328785911463744028">"התקשר לעבודה"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"התקשר לפקס בעבודה"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"התקשר לפקס בבית"</string>
- <string name="call_pager" msgid="9003902812293983281">"התקשר לזימונית"</string>
- <string name="call_other" msgid="8563753966926932052">"חייג"</string>
- <string name="call_callback" msgid="1910165691349426858">"התקשר חזרה"</string>
- <string name="call_car" msgid="3280537320306436445">"התקשר למכונית"</string>
- <string name="call_company_main" msgid="6105120947138711257">"התקשר למספר הטלפון הראשי של החברה"</string>
- <string name="call_isdn" msgid="1541590690193403411">"התקשר ל-ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"התקשר למספר הראשי"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"התקשר לפקס"</string>
- <string name="call_radio" msgid="8296755876398357063">"התקשר לרדיו"</string>
- <string name="call_telex" msgid="2223170774548648114">"התקשר לטלקס"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"התקשר ל-TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"התקשר לנייד של העבודה"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"התקשר לזימונית של העבודה"</string>
- <string name="call_assistant" msgid="2141641383068514308">"התקשר אל <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"התקשר ל-MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"שלח הודעת טקסט אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"שלח הודעת טקסט לבית"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"שלח הודעת טקסט לנייד"</string>
- <string name="sms_work" msgid="2269624156655267740">"שלח הודעת טקסט לעבודה"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"שלח הודעת טקסט לפקס בעבודה"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"שלח הודעת טקסט לפקס בבית"</string>
- <string name="sms_pager" msgid="7730404569637015192">"שלח הודעת טקסט לזימונית"</string>
- <string name="sms_other" msgid="806127844607642331">"הודעת טקסט"</string>
- <string name="sms_callback" msgid="5004824430094288752">"שלח הודעת טקסט למספר להתקשרות חזרה"</string>
- <string name="sms_car" msgid="7444227058437359641">"שלח SMS לטלפון במכונית"</string>
- <string name="sms_company_main" msgid="118970873419678087">"שלח הודעת טקסט למספר הטלפון הראשי של החברה"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"שלח הודעת טקסט ל-ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"שלח הודעת טקסט למספר הטלפון הראשי"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"שלח הודעת טקסט לפקס"</string>
- <string name="sms_radio" msgid="3329166673433967820">"שלח הודעת טקסט לרדיו"</string>
- <string name="sms_telex" msgid="9034802430065267848">"שלח הודעת טקסט לטלקס"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"שלח הודעת טקסט ל-TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"שלח הודעת טקסט לנייד של עבודה"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"שלח הודעת טקסט לזימונית של העבודה"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"שלח הודעת טקסט אל <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"שלח הודעת טקסט ל-MMS"</string>
- <string name="sms" msgid="1756857139634224222">"הודעת טקסט"</string>
- <string name="email_home" msgid="8573740658148184279">"שלח דוא\"ל לבית"</string>
- <string name="email_mobile" msgid="2042889209787989814">"שלח דוא\"ל לנייד"</string>
- <string name="email_work" msgid="2807430017302722689">"שלח דוא\"ל לעבודה"</string>
- <string name="email_other" msgid="3454004077967657109">"דוא\"ל"</string>
- <string name="email_custom" msgid="7548003991586214105">"שלח דוא\"ל אל <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"דוא\"ל"</string>
- <string name="map_home" msgid="1243547733423343982">"הצג כתובת בית"</string>
- <string name="map_work" msgid="1360474076921878088">"הצג כתובת עבודה"</string>
- <string name="map_other" msgid="3817820803587012641">"הצג כתובת"</string>
- <string name="map_custom" msgid="6184363799976265281">"הצג כתובת <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"שוחח בצ\'אט באמצעות AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"שוחח בצ\'אט באמצעות Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"שוחח בצ\'אט באמצעות Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"שוחח בצ\'אט באמצעות Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"שוחח בצ\'אט באמצעות QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"שוחח בצ\'אט באמצעות Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"שוחח בצ\'אט באמצעות ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"שוחח בצ\'אט באמצעות Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"שוחח בצ\'אט"</string>
<string name="audio_chat" msgid="2535716629358298691">"צ\'אט קולי"</string>
<string name="video_chat" msgid="1872255818640336072">"וידאו צ\'אט"</string>
- <string name="postal_address" msgid="8765560217149624536">"כתובת"</string>
- <string name="postal_street" msgid="8133143961580058972">"רחוב"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"תא דואר"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"שכונה"</string>
- <string name="postal_city" msgid="6597491300084895548">"עיר"</string>
- <string name="postal_region" msgid="6045263193478437672">"מדינה"</string>
- <string name="postal_postcode" msgid="572136414136673751">"מיקוד"</string>
- <string name="postal_country" msgid="7638264508416368690">"ארץ"</string>
- <string name="full_name" msgid="6602579550613988977">"שם"</string>
- <string name="name_given" msgid="1687286314106019813">"שם פרטי"</string>
- <string name="name_family" msgid="3416695586119999058">"שם משפחה"</string>
- <string name="name_prefix" msgid="59756378548779822">"קידומת שם"</string>
- <string name="name_middle" msgid="8467433655992690326">"שם אמצעי"</string>
- <string name="name_suffix" msgid="3855278445375651441">"סיומת שם"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"שם פרטי פונטי"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"שם אמצעי פונטי"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"שם משפחה פונטי"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"שם פונטי"</string>
<string name="connections" msgid="8098440723172028350">"חיבורים"</string>
<string name="add_connection_button" msgid="4861308615789601727">"הוסף חיבור"</string>
<string name="recent" msgid="2659189233141493004">"פריטים אחרונים"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"הצג שמות אנשי קשר בתור"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"לא נבחרו אנשי קשר."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"לא מוזגו"</item>
<item quantity="other" msgid="425683718017380845">"מוזגו מ-<xliff:g id="COUNT">%0$d</xliff:g> מקורות"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"אחר"</string>
<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="directory_search_label" msgid="1887759056597975053">"ספריה"</string>
- <string name="local_search_label" msgid="2551177578246113614">"כל אנשי הקשר"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"יוצר עותק אישי..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"כל אנשי הקשר"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"מסומן בכוכב"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"מותאם אישית"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"התאם אישית"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"כל אנשי הקשר עם מספרי טלפון"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"איש קשר"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"הגדר תצוגה מותאמת אישית"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"טוען..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"הגדרות"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"אנשי קשר להצגה"</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="hint_findContacts" msgid="1808681193458772072">"חפש אנשי קשר"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"הצג עדכונים"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"דואר קולי"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> הודעות קוליות"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"הפעל"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"דואר קולי חדש מאת <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"לא ניתן להפעיל דואר קולי."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"מבצע אחסון זמני..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"מאחזר דואר קולי..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"לא ניתן להשיג דואר קולי."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"חדש"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"ישן יותר"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"שיחות עם דואר קולי בלבד"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"שיחות נכנסות בלבד"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"שיחות יוצאות בלבד"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"שיחות שלא נענו בלבד"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"לא ניתן להתחבר לשרת הדואר הקולי."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"לא ניתן להתחבר לשרת הדואר הקולי. הודעות קוליות חדשות ממתינות."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"הגדר את הדואר הקולי שלך."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"אודיו אינו זמין."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"הגדר"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"התקשר לדואר קולי"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"המהירות הנמוכה ביותר"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"מהירות נמוכה"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"מהירות רגילה"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"מהירות גבוהה"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"המהירות הגבוהה ביותר"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"שם הקבוצה"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"איש הקשר התקבל באמצעות NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"הצג רק שיחות יוצאות"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"הצג רק שיחות נכנסות"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"הצג רק שיחות שלא נענו"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"הצג הודעות דואר קולי בלבד"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"הצג את כל השיחות"</string>
- <string name="status_available" msgid="5586870015822828392">"זמין"</string>
- <string name="status_away" msgid="1838861100379804730">"לא נמצא"</string>
- <string name="status_busy" msgid="9147992455450257136">"עסוק"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"הפעל דואר קולי"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"שיחה נכנסת"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"שיחה יוצאת"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"שיחה שלא נענתה"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"דואר קולי"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"הוסף איש קשר"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"הצג את איש הקשר <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"התקשר אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"שלח הודעת טקסט אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"דואר קולי שעדיין לא נשמע"</string>
- <string name="description_send_message" msgid="6046623392322890962">"שלח הודעה אל <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"חייג לטלפון <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"קשר מהיר עבור <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"אני"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"שמור באופן מקומי"</string>
<string name="add_account" msgid="8201790677994503186">"הוסף חשבון"</string>
<string name="add_new_account" msgid="5748627740680940264">"הוסף חשבון חדש"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"השיחה לא נשלחה."</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"כדי להגדיר את הדואר הקולי, עבור אל \'תפריט\' > \'הגדרות\'."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"כדי להתקשר לדואר קולי, ראשית כבה את מצב הטיסה."</string>
<string name="menu_export_database" msgid="2659719297530170820">"ייצוא קובצי מסד נתונים"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"אפשרויות נוספות"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"הרחב או כווץ שמות של שדות"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"תמונה. בחר כדי לשנות"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 90dcb93..3e67080 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"電話"</string>
<string name="people" msgid="1048457247435785074">"連絡帳"</string>
<string name="contactsList" msgid="8661624236494819731">"連絡先"</string>
<string name="shortcutContact" msgid="749243779392912958">"連絡先"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"概要"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"最新情報"</string>
<string name="searchHint" msgid="8482945356247760701">"連絡先を検索"</string>
- <string name="menu_search" msgid="9147752853603483719">"検索"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"連絡先を新規登録"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"連絡先詳細"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</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_copy" msgid="6108677035381940698">"コピー"</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>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"この連絡先には、複数のアカウント情報が含まれています。読み取り専用アカウントの情報を連絡先リストで非表示にすることはできますが、削除はできません。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"この連絡先を削除すると、複数のアカウント情報が削除されます。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"この連絡先を削除します。"</string>
- <string name="menu_done" msgid="796017761764190697">"完了"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"キャンセル"</string>
<string name="menu_discard" msgid="6456087569315685632">"キャンセル"</string>
- <string name="label_notes" msgid="8337354953278341042">"メモ"</string>
- <string name="label_sip_address" msgid="124073911714324974">"インターネット通話"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"会社"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"役職"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"電話番号"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"メール"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"チャット"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"住所"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"所属"</item>
<item msgid="7196592230748086755">"メモ"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"連絡先がありません。"</string>
<string name="noGroups" msgid="8614664663561385253">"グループはありません。"</string>
<string name="noAccounts" msgid="7768267764545265909">"グループを作成するにはアカウントが必要です。"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"一致する連絡先が見つかりません。"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"電話番号付きの連絡先はありません。"</string>
<string name="emptyGroup" msgid="7502116218697177370">"このグループにはメンバーがいません。"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"メンバーを追加するにはグループを編集します。"</string>
<string name="savingContact" msgid="4075751076741924939">"連絡先を保存しています..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"表示オプションを保存中..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"連絡先を保存しました。"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"連絡先の変更を保存できませんでした。"</string>
<string name="groupSavedToast" msgid="1168756874239833756">"グループを保存しました。"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"連絡先1件"</item>
<item quantity="other" msgid="3578469907265375314">"連絡先<xliff:g id="COUNT">%d</xliff:g>件"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"連絡先はありません。"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"表示できる連絡先はありません。"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"お気に入りはありません。"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"<xliff:g id="NAME">%s</xliff:g>の連絡先はありません"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g>の連絡先"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"単独の連絡先"</string>
- <string name="listCustomView" msgid="6950713892532194050">"連絡先のカスタム表示"</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="foundTooManyContacts" msgid="5163335650920020220">"<xliff:g id="COUNT">%d</xliff:g>件以上見つかりました。"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"連絡先はありません"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1件見つかりました"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"すべての連絡先"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"グループ"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"お気入り"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"お気に入りとすべての連絡先"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"通話履歴"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"SMSを送信"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>に発信"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"発信前に番号を編集"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"連絡先に追加"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"通話履歴から消去"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"通話履歴を全件消去"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ボイスメールを削除"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ボイスメールを共有"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"通話履歴なし"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"通話履歴を消しますか?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"すべての通話記録は削除されます。"</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"通話履歴を消去しています..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"よく使う連絡先をクリアしますか?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"連絡帳アプリや電話アプリのよく使う連絡先リストをクリアし、メールアプリがアドレス設定を初めから保存していくようにします。"</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"よく使う連絡先をクリアしています…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI(端末識別番号)"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"ボイスメール"</string>
- <string name="unknown" msgid="740067747858270469">"通知不可能"</string>
- <string name="private_num" msgid="6374339738119166953">"非通知"</string>
- <string name="payphone" msgid="4864313342828942922">"公衆電話発信"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"キーボードで番号を入力してください"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"ダイヤルして追加"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIMカードから読み取り中..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIMカードの連絡先"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"表示する連絡先がありません(アカウントを追加した直後の場合は、連絡先の同期に数分かかることがあります)。"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"表示する連絡先がありません。"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"表示できる連絡先がありません。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"タブレットと同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SIMカードまたはSDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"表示できる連絡先がありません。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"携帯端末と同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SIMカードまたはSDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"表示できる連絡先がありません(アカウントを追加した直後の場合は、連絡先が同期されるまでに数分かかることがあります)。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"タブレットと同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"連絡先の表示方法を変更するには["<font fgcolor="#ffffffff"><b>"表示オプション"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SIMカードまたはSDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"表示できる連絡先がありません(アカウントを追加した直後の場合は、連絡先が同期されるまでに数分かかることがあります)。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"携帯端末と同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"連絡先の表示方法を変更するには["<font fgcolor="#ffffffff"><b>"表示オプション"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SIMカードまたはSDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"表示できる連絡先がありません。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"タブレットと同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"表示できる連絡先がありません。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"携帯端末と同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"表示できる連絡先がありません(アカウントを追加した直後の場合は、連絡先が同期されるまでに数分かかることがあります)。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"タブレットと同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"連絡先の表示方法を変更するには["<font fgcolor="#ffffffff"><b>"表示オプション"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"表示できる連絡先がありません(アカウントを追加した直後の場合は、連絡先が同期されるまでに数分かかることがあります)。"\n\n"連絡先を追加するには、"<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーをタップして次の操作を行います:"\n\n<li>"携帯端末と同期可能な連絡先を使ってアカウントを追加またはセットアップする場合は["<font fgcolor="#ffffffff"><b>"アカウント"</b></font>"]をタップします"\n</li>\n<li>"連絡先の表示方法を変更するには["<font fgcolor="#ffffffff"><b>"表示オプション"</b></font>"]をタップします"\n</li>\n<li>"新しい連絡先を最初から作成する場合は["<font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>"]をタップします"\n</li>\n<li>"SDカードから連絡先をインポートする場合は["<font fgcolor="#ffffffff"><b>"インポート/エクスポート"</b></font>"]をタップします"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"お気に入りはありません。"\n\n"お気に入りのリストに連絡先を追加するには: "\n\n<li>"["<b>"連絡先"</b>"]タブをタップします"\n</li>" "\n<li>"お気に入りに追加する連絡先をタップします"\n</li>" "\n<li>"連絡先名の横にあるスターをタップします"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"プッシュホン式キーパッドを使う"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"通話に戻る"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"別の通話を追加"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"通話詳細"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"通話要求の詳細が読み込めませんでした。"</string>
- <string name="type_incoming" msgid="6502076603836088532">"通話着信"</string>
- <string name="type_outgoing" msgid="343108709599392641">"発信履歴"</string>
- <string name="type_missed" msgid="2720502601640509542">"不在着信"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"ボイスメール"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"着信"</string>
<string name="callBack" msgid="5498224409038809224">"コールバック"</string>
<string name="callAgain" msgid="3197312117049874778">"再発信"</string>
<string name="returnCall" msgid="8171961914203617813">"発信"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"よく使う連絡先"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"よく使う連絡先"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"<xliff:g id="EMAIL">%s</xliff:g> を連絡先に追加しますか?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"3"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"4"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"5"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"6"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"7"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"8"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"9"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"スター"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"0"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"ポンド"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"ボイスメール"</string>
- <string name="description_search_button" msgid="3660807558587384889">"検索"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"発信"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"発信番号"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"連絡先の写真"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"削除"</string>
<string name="description_plus_button" msgid="515164827856229880">"プラス"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"連絡先を表示"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ストレージはありませんでした。"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SDカードが見つかりませんでした。"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"SIMカードからインポート"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"ストレージからインポート"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ストレージにエクスポート"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"表示可能な連絡先を共有"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"vCardファイルを1つインポート"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"複数のvCardファイルをインポート"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"すべてのvCardファイルをインポート"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"ストレージ内でvCardデータを検索しています..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SDカードでvCardデータを検索しています..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ストレージをスキャンできませんでした(理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」)。"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SDカードをスキャンできませんでした(理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」)。"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"送受信エラー"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"メモリが不足しています。ファイルが大きすぎる可能性があります。"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"予期しない理由によりvCardを解析できませんでした。"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"このフォーマットには対応していません。"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCardをインポートできませんでした。"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"ストレージ内にvCardファイルが見つかりません。"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SDカードにvCardファイルが見つかりません。"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"指定されたvCardファイルのメタ情報を取得できませんでした。"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"1つ以上のファイルをインポートできませんでした(%s)。"</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"不明なエラーです。"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCardファイルを選択"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"キャッシュしています"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCardをローカル一時ストレージにキャッシュしています。まもなくインポート処理を開始します。"</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>件(<xliff:g id="NAME">%s</xliff:g>)をインポート中"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g>をインポート中"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCardデータを読み取れませんでした"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCardデータの読取をキャンセルしました"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCard<xliff:g id="FILENAME">%s</xliff:g>のインポートが終了しました"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"<xliff:g id="FILENAME">%s</xliff:g>のインポートをキャンセルしました"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g>はまもなくインポートされます。"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"ファイルはまもなくインポートされます。"</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCardのインポートリクエストは拒否されました。しばらくしてからもう一度お試しください。"</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g>はまもなくエクスポートされます。"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCardのエクスポートリクエストは拒否されました。しばらくしてからもう一度お試しください。"</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"連絡先"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"エクスポートしますか?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"連絡先リストをファイル「<xliff:g id="VCARD_FILENAME">%s</xliff:g>」にエクスポートします。"</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"エクスポート失敗"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"連絡先データはエクスポートされませんでした。"\n"理由: 「<xliff:g id="FAIL_REASON">%s</xliff:g>」"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"エクスポートできる連絡先がありません。"</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"ストレージ内のvCardファイルが多すぎます。"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SDカードのvCardファイルが多すぎます。"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"ファイル名(必須)が長すぎます(「<xliff:g id="FILENAME">%s</xliff:g>」)。"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートが完了しました。"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートをキャンセルしました。"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"連絡先データのエクスポート"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"連絡先データを<xliff:g id="FILE_NAME">%s</xliff:g>にエクスポートします。"</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"エクスポータを起動できませんでした: 「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"エクスポート中にエラーが発生しました: 「<xliff:g id="EXACT_REASON">%s</xliff:g>」。"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"データベース情報を取得できませんでした。"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"エクスポートできる連絡先がありません。タブレットに連絡先がある場合でも、データプロバイダによってはタブレットから連絡先をエクスポートできないことがあります。"</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"エクスポートできる連絡先がありません。携帯端末に連絡先がある場合でも、データプロバイダによっては携帯端末から連絡先をエクスポートできないことがあります。"</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCardコンポーザーが正しく起動しませんでした。"</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"「<xliff:g id="FILE_NAME">%s</xliff:g>」を開けませんでした: <xliff:g id="EXACT_REASON">%s</xliff:g>。"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g>のインポートをキャンセルしますか?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g>のエクスポートをキャンセルしますか?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCardインポート/エクスポート取り消し不可"</string>
<string name="search_settings_description" msgid="2675223022992445813">"連絡先の名前"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2秒間の停止を追加"</string>
- <string name="add_wait" msgid="3360818652790319634">"待機を追加"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"番号を選択"</string>
- <string name="call_settings" msgid="7666474782093693667">"設定"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"番号を選択"</string>
- <string name="make_primary" msgid="5829291915305113983">"この選択を保存"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"この操作を行うアプリが見つかりませんでした。"</string>
- <string name="missing_name" msgid="8745511583852904385">"(名前なし)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"アカウント"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"よく使う連絡先のクリア"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"表示する連絡先"</string>
- <string name="menu_import_export" msgid="26217871113229507">"インポート/エクスポート"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"連絡先のインポート/エクスポート"</string>
- <string name="dialog_import" msgid="2431698729761448759">"連絡先のインポート"</string>
<string name="menu_share" msgid="943789700636542260">"共有"</string>
<string name="share_via" msgid="563121028023030093">"連絡先の共有ツール"</string>
- <string name="share_error" msgid="948429331673358107">"この連絡先は共有できません。"</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"名前"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"ニックネーム"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"所属"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"ウェブサイト"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"予定"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"関係"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"グループ"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"アカウントに連絡先を作成"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"次のアカウントにグループを作成"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"同期グループを削除"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"同期グループに追加"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"他のグループ..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"その他すべての連絡先"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"すべての連絡先"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"「<xliff:g id="GROUP">%s</xliff:g>」を同期から除外すると、グループに含まれない連絡先もすべて同期から除外されます。"</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"タブレットのみ(非同期)"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"電話のみ(非同期)"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g>に発信"</string>
- <string name="call_home" msgid="1990519474420545392">"自宅に発信"</string>
- <string name="call_mobile" msgid="7502236805487609178">"携帯電話に発信"</string>
- <string name="call_work" msgid="5328785911463744028">"勤務先に発信"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"勤務先FAXに発信"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"自宅のFAXに発信"</string>
- <string name="call_pager" msgid="9003902812293983281">"ポケベルに発信"</string>
- <string name="call_other" msgid="8563753966926932052">"発信"</string>
- <string name="call_callback" msgid="1910165691349426858">"コールバック先に発信"</string>
- <string name="call_car" msgid="3280537320306436445">"クルマに発信"</string>
- <string name="call_company_main" msgid="6105120947138711257">"会社代表番号に発信"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDNに発信"</string>
- <string name="call_main" msgid="6082900571803441339">"電話番号1に発信"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"FAXに電話"</string>
- <string name="call_radio" msgid="8296755876398357063">"無線に発信"</string>
- <string name="call_telex" msgid="2223170774548648114">"テレックスに発信"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDDに発信"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"携帯電話(勤務先)に発信"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"ポケベル(勤務先)に発信"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g>に発信"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMSに発信"</string>
- <string name="sms_custom" msgid="5932736853732191825">"<xliff:g id="CUSTOM">%s</xliff:g>にSMS"</string>
- <string name="sms_home" msgid="7524332261493162995">"自宅にSMS"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"携帯にSMS"</string>
- <string name="sms_work" msgid="2269624156655267740">"勤務先にSMS"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"勤務先FAXにSMS"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"自宅FAXにSMS"</string>
- <string name="sms_pager" msgid="7730404569637015192">"ポケベルにSMS"</string>
- <string name="sms_other" msgid="806127844607642331">"電話にSMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"コールバック先にSMS"</string>
- <string name="sms_car" msgid="7444227058437359641">"クルマにSMS"</string>
- <string name="sms_company_main" msgid="118970873419678087">"会社代表番号にSMS"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ISDNにSMS"</string>
- <string name="sms_main" msgid="8621625784504541679">"電話番号1にSMS"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"FAXにSMS"</string>
- <string name="sms_radio" msgid="3329166673433967820">"無線にSMS"</string>
- <string name="sms_telex" msgid="9034802430065267848">"テレックスにSMS"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"TTY/TDDにSMS"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"携帯電話(勤務先)にSMS"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"ポケベル(勤務先)にSMS"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"<xliff:g id="ASSISTANT">%s</xliff:g>にSMS"</string>
- <string name="sms_mms" msgid="4069352461380762677">"MMSにSMS"</string>
- <string name="sms" msgid="1756857139634224222">"テキストメッセージ"</string>
- <string name="email_home" msgid="8573740658148184279">"自宅にメール"</string>
- <string name="email_mobile" msgid="2042889209787989814">"携帯電話にメール"</string>
- <string name="email_work" msgid="2807430017302722689">"勤務先にメール"</string>
- <string name="email_other" msgid="3454004077967657109">"メール送信"</string>
- <string name="email_custom" msgid="7548003991586214105">"<xliff:g id="CUSTOM">%s</xliff:g>にメール"</string>
- <string name="email" msgid="5668400997660065897">"メール"</string>
- <string name="map_home" msgid="1243547733423343982">"自宅の住所を表示"</string>
- <string name="map_work" msgid="1360474076921878088">"勤務先の住所を表示"</string>
- <string name="map_other" msgid="3817820803587012641">"住所を表示"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g>の住所を表示"</string>
- <string name="chat_aim" msgid="2588492205291249142">"AIMでチャット"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Windows Liveでチャット"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Yahooでチャット"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Skypeでチャット"</string>
- <string name="chat_qq" msgid="4294637812847719693">"QQでチャット"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Googleトークでチャット"</string>
- <string name="chat_icq" msgid="8438405386153745775">"ICQでチャット"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Jabberでチャット"</string>
- <string name="chat" msgid="9025361898797412245">"チャット"</string>
<string name="audio_chat" msgid="2535716629358298691">"ボイスチャット"</string>
<string name="video_chat" msgid="1872255818640336072">"ビデオチャット"</string>
- <string name="postal_address" msgid="8765560217149624536">"住所"</string>
- <string name="postal_street" msgid="8133143961580058972">"番地"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"私書箱"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"街区 (中国等で使用)"</string>
- <string name="postal_city" msgid="6597491300084895548">"市区町村"</string>
- <string name="postal_region" msgid="6045263193478437672">"都道府県"</string>
- <string name="postal_postcode" msgid="572136414136673751">"郵便番号"</string>
- <string name="postal_country" msgid="7638264508416368690">"国"</string>
- <string name="full_name" msgid="6602579550613988977">"名前"</string>
- <string name="name_given" msgid="1687286314106019813">"名"</string>
- <string name="name_family" msgid="3416695586119999058">"姓"</string>
- <string name="name_prefix" msgid="59756378548779822">"敬称(名前の前)"</string>
- <string name="name_middle" msgid="8467433655992690326">"ミドルネーム"</string>
- <string name="name_suffix" msgid="3855278445375651441">"敬称(名前の後)"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"名のよみがな"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"ミドルネームのよみがな"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"姓のよみがな"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"よみがな"</string>
<string name="connections" msgid="8098440723172028350">"連絡先情報"</string>
<string name="add_connection_button" msgid="4861308615789601727">"連絡先を招待"</string>
<string name="recent" msgid="2659189233141493004">"最近"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"名前の表示形式"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"連絡先が選択されていません。"</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"結合する連絡先はありません"</item>
<item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g>件の連絡先が結合されました"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"その他"</string>
<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">"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="directory_search_label" msgid="1887759056597975053">"ディレクトリ"</string>
- <string name="local_search_label" msgid="2551177578246113614">"すべての連絡先"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"個人用コピーを作成しています..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"すべての連絡先"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"スター付き"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"カスタム"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"カスタマイズ"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"電話番号のあるすべての連絡先"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"連絡先"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"カスタム表示の設定"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"読み込んでいます..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"表示する連絡先"</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="hint_findContacts" msgid="1808681193458772072">"連絡先を検索"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"更新情報を表示"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ボイスメール"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"再生"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>から新着ボイスメール"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"ボイスメールを再生できませんでした。"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"バッファリング中..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"ボイスメールを取得中..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"ボイスメールを取得できませんでした。"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"新しい着信"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"以前の着信"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"ボイスメールのある着信のみ"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"着信のみ"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"発信のみ"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"不在着信のみ"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"ボイスメールサーバーに接続できません。"</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"ボイスメールサーバーに接続できません(新着ボイスメールあり)。"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"ボイスメールをセットアップします。"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"音声を再生できません。"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"セットアップ"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ボイスメール呼び出し"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"最も遅い"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"遅い"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"標準"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"速い"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"最も速い"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>)<xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"グループの名前"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"NFC受信の連絡先"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"発信のみを表示"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"着信のみを表示"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"不在着信のみを表示"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ボイスメールのみ表示"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"すべての通話を表示"</string>
- <string name="status_available" msgid="5586870015822828392">"オンライン"</string>
- <string name="status_away" msgid="1838861100379804730">"不在"</string>
- <string name="status_busy" msgid="9147992455450257136">"取り込み中"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"ボイスメールを再生"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"着信"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"発信"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"不在着信"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"ボイスメール"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"連絡先を追加"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g>の連絡先を表示"</string>
- <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g>に発信"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>にテキストメッセージを送信"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未再生のボイスメール"</string>
- <string name="description_send_message" msgid="6046623392322890962">"<xliff:g id="NAME">%1$s</xliff:g>さんにメッセージを送信"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"<xliff:g id="NAME">%1$s</xliff:g>さんの電話"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g>さんのクイックコンタクト"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"自分"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"ローカルに保存"</string>
<string name="add_account" msgid="8201790677994503186">"アカウントを追加"</string>
<string name="add_new_account" msgid="5748627740680940264">"新しいアカウントを追加"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"発信できません"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ボイスメールをセットアップするには、MENUキー>[設定]をタップします。"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"機内モードをOFFにしてからボイスメールを呼び出してください。"</string>
<string name="menu_export_database" msgid="2659719297530170820">"データベースファイルをエクスポート"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"その他のオプション"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"名前フィールドの展開/折りたたみ"</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 256b4ac..88eecc2 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"휴대전화"</string>
<string name="people" msgid="1048457247435785074">"주소록"</string>
<string name="contactsList" msgid="8661624236494819731">"주소록"</string>
<string name="shortcutContact" msgid="749243779392912958">"연락처"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"정보"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"업데이트"</string>
<string name="searchHint" msgid="8482945356247760701">"주소록 검색"</string>
- <string name="menu_search" msgid="9147752853603483719">"검색"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"새 연락처"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"연락처 보기"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</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_copy" msgid="6108677035381940698">"복사"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"홈 화면에 만들기"</string>
<string name="menu_call" msgid="3992595586042260618">"연락처로 전화 걸기"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"연락처에 문자 보내기"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"연락처에 여러 계정의 정보가 들어 있습니다. 읽기 전용 계정의 정보는 주소록 목록에서 숨길 수 있지만 삭제할 수는 없습니다."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"이 연락처를 삭제하면 여러 계정의 정보가 삭제됩니다."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"이 연락처를 삭제합니다."</string>
- <string name="menu_done" msgid="796017761764190697">"완료"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"취소"</string>
<string name="menu_discard" msgid="6456087569315685632">"취소"</string>
- <string name="label_notes" msgid="8337354953278341042">"메모"</string>
- <string name="label_sip_address" msgid="124073911714324974">"인터넷 통화"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"회사"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"직함"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"전화"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"이메일"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"메신저"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"주소"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"조직"</item>
<item msgid="7196592230748086755">"메모"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"주소록이 없습니다."</string>
<string name="noGroups" msgid="8614664663561385253">"그룹 없음"</string>
<string name="noAccounts" msgid="7768267764545265909">"그룹을 만들려면 계정이 필요합니다."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"일치하는 연락처가 없습니다."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"전화번호가 포함된 주소록이 없습니다."</string>
<string name="emptyGroup" msgid="7502116218697177370">"이 그룹에 사람이 없습니다."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"사람을 추가하려면 그룹을 수정하세요."</string>
<string name="savingContact" msgid="4075751076741924939">"연락처 저장 중..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"표시 옵션 저장 중...."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"연락처를 저장했습니다."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"연락처 변경사항을 저장할 수 없습니다."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"그룹이 저장되었습니다."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"연락처 1개"</item>
<item quantity="other" msgid="3578469907265375314">"연락처 <xliff:g id="COUNT">%d</xliff:g>개"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"연락처가 없습니다."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"표시할 수 있는 연락처가 없습니다."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"즐겨찾기가 없습니다."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"<xliff:g id="NAME">%s</xliff:g>에 주소록이 없습니다."</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g>의 주소록"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"단일 연락처"</string>
- <string name="listCustomView" msgid="6950713892532194050">"주소록 맞춤 보기"</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="foundTooManyContacts" msgid="5163335650920020220">"<xliff:g id="COUNT">%d</xliff:g>개 이상 찾았습니다."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"주소록 없음"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1개를 찾았습니다."</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"모든 연락처"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"그룹"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"즐겨찾기"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"즐겨찾기 및 모든 연락처"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"휴대전화"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"통화기록"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"문자 메시지 보내기"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"전화걸기: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"통화하기 전에 번호 수정"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"주소록에 추가"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"통화기록에서 삭제"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"통화기록 지우기"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"음성사서함 삭제"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"음성사서함 공유"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"통화기록이 없습니다."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"통화기록을 지우시겠습니까?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"모든 통화 기록을 삭제합니다."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"통화기록을 지우는 중..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"자주 연락하는 사람들 목록을 삭제하시겠습니까?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"주소록 및 휴대전화 앱에서 자주 연락하는 사람들 목록을 삭제하고 이메일 앱이 주소록 환경설정을 처음부터 다시 반영하도록 합니다."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"자주 연락하는 사람들 목록을 삭제하는 중…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"음성사서함"</string>
- <string name="unknown" msgid="740067747858270469">"알 수 없음"</string>
- <string name="private_num" msgid="6374339738119166953">"비공개 번호"</string>
- <string name="payphone" msgid="4864313342828942922">"공중전화"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"키보드를 사용하여 전화걸기"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"전화번호를 눌러 통화 추가"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM 카드에서 로딩 중..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM 카드 주소록"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"표시할 연락처가 없습니다. 방금 계정을 추가한 경우 연락처를 동기화하는 데 몇 분 정도 걸릴 수 있습니다."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"표시할 연락처가 없습니다."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"표시할 연락처가 없습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다. "\n" "\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 태블릿에 동기화할 수 있는 연락처가 있는 계정을 추가하거나 설정하려는 경우 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SIM 또는 SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"표시할 연락처가 없습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다. "\n" "\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 휴대전화에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려는 경우 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SIM 또는 SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"표시할 연락처가 없습니다. 방금 계정을 추가한 경우 주소록을 동기화하는 데 몇 분 정도 걸릴 수 있습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다."\n\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 태블릿에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"표시 옵션"</b></font>": 표시되는 연락처를 변경하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SIM 또는 SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"표시할 연락처가 없습니다. 방금 계정을 추가한 경우 주소록을 동기화하는 데 몇 분 정도 걸릴 수 있습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다."\n\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 휴대전화에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"표시 옵션"</b></font>": 표시되는 연락처를 변경하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SIM 또는 SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"표시할 연락처가 없습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다. "\n" "\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 태블릿에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려는 경우 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"표시할 연락처가 없습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다. "\n" "\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 휴대전화에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려는 경우 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"표시할 연락처가 없습니다. 방금 계정을 추가한 경우 주소록을 동기화하는 데 몇 분 정도 걸릴 수 있습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다."\n\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 태블릿에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"표시 옵션"</b></font>": 표시되는 연락처를 변경하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"표시할 연락처가 없습니다. 방금 계정을 추가한 경우 주소록을 동기화하는 데 몇 분 정도 걸릴 수 있습니다."\n\n"연락처를 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 터치하고 다음을 터치합니다."\n\n<li><font fgcolor="#ffffffff"><b>"계정"</b></font>": 휴대전화에 동기화할 수 있는 주소록이 있는 계정을 추가하거나 설정하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"표시 옵션"</b></font>": 표시되는 연락처를 변경하려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"새 연락처"</b></font>": 연락처를 새로 만들려면 터치합니다."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"가져오기/내보내기"</b></font>": SD 카드에서 주소록을 가져오려면 터치합니다."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"즐겨찾기가 없습니다. "\n\n"즐겨찾기 목록에 연락처를 추가하려면 "\n\n<li><b>"주소록"</b>" 탭을 터치하고"\n</li>" "\n<li>"즐겨찾기에 추가할 연락처를 터치하고"\n</li>" "\n<li>"연락처 이름 옆의 별표를 터치합니다."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"터치톤 키패드 사용"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"진행 중인 통화로 돌아가기"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"통화 추가"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"통화 세부정보"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"요청한 통화의 세부정보를 읽지 못했습니다."</string>
- <string name="type_incoming" msgid="6502076603836088532">"수신전화"</string>
- <string name="type_outgoing" msgid="343108709599392641">"발신전화"</string>
- <string name="type_missed" msgid="2720502601640509542">"부재중 전화"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"음성사서함"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"수신전화"</string>
<string name="callBack" msgid="5498224409038809224">"전화 걸기"</string>
<string name="callAgain" msgid="3197312117049874778">"다시 걸기"</string>
<string name="returnCall" msgid="8171961914203617813">"전화 걸기"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"자주 연락하는 사람들의 연락처"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"자주 통화한 목록"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\'<xliff:g id="EMAIL">%s</xliff:g>\'을(를) 주소록에 추가하겠습니까?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"3"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"4"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"5"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"6"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"7"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"8"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"9"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"별"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"0"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"#"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"음성사서함"</string>
- <string name="description_search_button" msgid="3660807558587384889">"검색"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"전화걸기"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"백스페이스"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"전화를 걸 번호"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"주소록 사진"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"삭제"</string>
<string name="description_plus_button" msgid="515164827856229880">"더하기"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"연락처 보기"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"저장공간을 찾을 수 없습니다."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD 카드가 없습니다."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"SIM 카드에서 가져오기"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"저장소에서 가져오기"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"저장소로 내보내기"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"표시되는 연락처 모두 공유"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"vCard 파일 한 개 가져오기"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"vCard 파일 여러 개 가져오기"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"모든 vCard 파일 가져오기"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"저장장치에서 vCard 데이터 검색 중..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD 카드의 vCard 데이터 검색 중..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"저장소를 검색할 수 없습니다(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')."</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD 카드를 검색할 수 없습니다(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')."</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 오류"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"메모리가 부족합니다. 파일이 너무 크기 때문일 수 있습니다."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"예기치 못한 이유로 인해 vCard를 구문분석하지 못했습니다."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"지원되지 않는 형식입니다."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard를 가져오지 못했습니다."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"저장공간에 vCard 파일이 없습니다."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD 카드에 VCard 파일이 없습니다."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"지정한 vCard 파일에 대한 메타 정보를 수집하지 못했습니다."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"하나 이상의 파일을 가져오지 못했습니다(%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"알 수 없는 오류입니다."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard 파일 선택"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"캐시"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard를 로컬 임시 저장공간에 캐시하는 중입니다. 곧 가져오기가 시작됩니다."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g> 가져오는 중: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> 가져오는 중"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCard 데이터를 읽지 못했습니다."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCard 데이터 읽기 취소"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"<xliff:g id="FILENAME">%s</xliff:g> vCard 가져오기 완료"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"<xliff:g id="FILENAME">%s</xliff:g> 가져오기 취소"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 곧 가져옵니다."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"파일을 곧 가져옵니다."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard 가져오기 요청이 거부되었습니다. 나중에 다시 시도해 주세요."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 곧 내보냅니다."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard 내보내기 요청이 거부되었습니다. 나중에 다시 시도해 주세요."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"연락처"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"주소록을 내보내시겠습니까?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"연락처 목록을 <xliff:g id="VCARD_FILENAME">%s</xliff:g> 파일로 내보냅니다."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"내보내기 실패"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"주소록 데이터를 내보내지 못했습니다."\n"(이유: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"내보낼 수 있는 연락처가 없습니다."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"저장공간에 vCard 파일이 너무 많습니다."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD 카드에 vCard 파일이 너무 많습니다."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"필수 파일 이름이 너무 깁니다(\'<xliff:g id="FILENAME">%s</xliff:g>\')."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기 완료됨"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기 취소"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"연락처 데이터 내보내기"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"연락처 데이터를 <xliff:g id="FILE_NAME">%s</xliff:g>(으)로 내보내고 있습니다."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"내보내기를 시작하지 못했습니다(이유: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\')."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"내보내는 중에 오류가 발생했습니다(이유: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\')."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"데이터베이스 정보를 가져오지 못했습니다."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"내보낼 수 있는 연락처가 없습니다. 태블릿에 연락처가 있다면 일부 데이터 제공업체에서 연락처를 태블릿에서 내보내지 못하도록 했기 때문일 수 있습니다."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"내보낼 수 있는 연락처가 없습니다. 휴대전화에 연락처가 있다면 일부 데이터 제공업체에서 연락처를 휴대전화에서 내보내지 못하도록 했기 때문일 수 있습니다."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 작성기가 제대로 시작되지 않았습니다."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\'<xliff:g id="FILE_NAME">%s</xliff:g>\'을(를) 열 수 없습니다(이유: <xliff:g id="EXACT_REASON">%s</xliff:g>)."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> 가져오기를 취소하시겠습니까?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> 내보내기를 취소하시겠습니까?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"vCard 가져오기/내보내기를 취소하지 못했습니다."</string>
<string name="search_settings_description" msgid="2675223022992445813">"연락처 명단"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2초 간 일시 정지 추가"</string>
- <string name="add_wait" msgid="3360818652790319634">"대기 시간 추가"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"번호 선택"</string>
- <string name="call_settings" msgid="7666474782093693667">"설정"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"번호 선택"</string>
- <string name="make_primary" msgid="5829291915305113983">"이 선택사항 저장"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"이 작업을 처리하는 앱을 찾을 수 없습니다."</string>
- <string name="missing_name" msgid="8745511583852904385">"(이름 없음)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"계정"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"자주 연락하는 사람들 목록 삭제"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"표시할 연락처"</string>
- <string name="menu_import_export" msgid="26217871113229507">"가져오기/내보내기"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"주소록 가져오기/내보내기"</string>
- <string name="dialog_import" msgid="2431698729761448759">"주소록 가져오기"</string>
<string name="menu_share" msgid="943789700636542260">"공유"</string>
<string name="share_via" msgid="563121028023030093">"연락처 공유에 사용할 애플리케이션:"</string>
- <string name="share_error" msgid="948429331673358107">"연락처를 공유할 수 없습니다."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"이름"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"닉네임"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"조직"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"웹사이트"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"일정"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"관계"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"그룹"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"연락처 추가할 계정 선택하기"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"계정에서 그룹 만들기"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"동기화 그룹 삭제"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"동기화 그룹 추가"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"그룹 더보기..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"다른 모든 주소록"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"모든 주소록"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"\'<xliff:g id="GROUP">%s</xliff:g>\'을(를) 동기화에서 제거하면 그룹화되지 않은 연락처도 동기화에서 제거됩니다."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"태블릿 전용, 동기화되지 않음"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"휴대전화 전용(동기화되지 않음)"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g>(으)로 전화걸기"</string>
- <string name="call_home" msgid="1990519474420545392">"집으로 전화걸기"</string>
- <string name="call_mobile" msgid="7502236805487609178">"휴대전화로 전화걸기"</string>
- <string name="call_work" msgid="5328785911463744028">"직장으로 전화걸기"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"직장 팩스로 전화걸기"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"집 팩스로 전화걸기"</string>
- <string name="call_pager" msgid="9003902812293983281">"호출기로 전화걸기"</string>
- <string name="call_other" msgid="8563753966926932052">"전화걸기"</string>
- <string name="call_callback" msgid="1910165691349426858">"콜백 번호로 전화 걸기"</string>
- <string name="call_car" msgid="3280537320306436445">"카폰으로 전화걸기"</string>
- <string name="call_company_main" msgid="6105120947138711257">"회사로 전화걸기"</string>
- <string name="call_isdn" msgid="1541590690193403411">"ISDN으로 전화걸기"</string>
- <string name="call_main" msgid="6082900571803441339">"기본 번호로 전화 걸기"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"팩스로 전화하기"</string>
- <string name="call_radio" msgid="8296755876398357063">"무선통신으로 전화걸기"</string>
- <string name="call_telex" msgid="2223170774548648114">"텔렉스 통화"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"TTY/TDD 통화"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"직장 휴대전화로 전화걸기"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"직장 호출기로 전화 걸기"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g>에게 전화"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMS로 전화걸기"</string>
- <string name="sms_custom" msgid="5932736853732191825">"문자(<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="sms_home" msgid="7524332261493162995">"집으로 문자 보내기"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"휴대전화로 문자 보내기"</string>
- <string name="sms_work" msgid="2269624156655267740">"직장으로 문자 보내기"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"직장 팩스로 문자 보내기"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"집 팩스로 문자 보내기"</string>
- <string name="sms_pager" msgid="7730404569637015192">"호출기로 문자 보내기"</string>
- <string name="sms_other" msgid="806127844607642331">"문자 보내기"</string>
- <string name="sms_callback" msgid="5004824430094288752">"콜백 번호로 문자 보내기"</string>
- <string name="sms_car" msgid="7444227058437359641">"카폰으로 문자 보내기"</string>
- <string name="sms_company_main" msgid="118970873419678087">"회사 기본전화로 문자 보내기"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ISDN에 문자 보내기"</string>
- <string name="sms_main" msgid="8621625784504541679">"기본 번호로 문자 보내기"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"팩스로 문자 보내기"</string>
- <string name="sms_radio" msgid="3329166673433967820">"무선통신으로 문자 보내기"</string>
- <string name="sms_telex" msgid="9034802430065267848">"텔렉스로 문자 보내기"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"TTY/TDD에 문자 보내기"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"직장 휴대전화로 문자 보내기"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"직장 호출기로 문자 보내기"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"<xliff:g id="ASSISTANT">%s</xliff:g>(으)로 문자 보내기"</string>
- <string name="sms_mms" msgid="4069352461380762677">"MMS로 문자 보내기"</string>
- <string name="sms" msgid="1756857139634224222">"문자 메시지"</string>
- <string name="email_home" msgid="8573740658148184279">"집으로 이메일 보내기"</string>
- <string name="email_mobile" msgid="2042889209787989814">"모바일로 이메일 보내기"</string>
- <string name="email_work" msgid="2807430017302722689">"직장으로 이메일 보내기"</string>
- <string name="email_other" msgid="3454004077967657109">"이메일"</string>
- <string name="email_custom" msgid="7548003991586214105">"이메일(<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="email" msgid="5668400997660065897">"이메일"</string>
- <string name="map_home" msgid="1243547733423343982">"집 주소 보기"</string>
- <string name="map_work" msgid="1360474076921878088">"직장 주소 보기"</string>
- <string name="map_other" msgid="3817820803587012641">"주소 보기"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> 주소 보기"</string>
- <string name="chat_aim" msgid="2588492205291249142">"AIM으로 채팅"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Windows Live로 채팅"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Yahoo로 채팅"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Skype로 채팅"</string>
- <string name="chat_qq" msgid="4294637812847719693">"QQ로 채팅"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Google 토크로 채팅"</string>
- <string name="chat_icq" msgid="8438405386153745775">"ICQ로 채팅"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Jabber로 채팅"</string>
- <string name="chat" msgid="9025361898797412245">"채팅"</string>
<string name="audio_chat" msgid="2535716629358298691">"음성채팅"</string>
<string name="video_chat" msgid="1872255818640336072">"영상 채팅"</string>
- <string name="postal_address" msgid="8765560217149624536">"주소"</string>
- <string name="postal_street" msgid="8133143961580058972">"번지"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"사서함"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"인근 지역"</string>
- <string name="postal_city" msgid="6597491300084895548">"시/군/구"</string>
- <string name="postal_region" msgid="6045263193478437672">"시/도"</string>
- <string name="postal_postcode" msgid="572136414136673751">"우편번호"</string>
- <string name="postal_country" msgid="7638264508416368690">"국가"</string>
- <string name="full_name" msgid="6602579550613988977">"이름"</string>
- <string name="name_given" msgid="1687286314106019813">"이름"</string>
- <string name="name_family" msgid="3416695586119999058">"성"</string>
- <string name="name_prefix" msgid="59756378548779822">"경칭"</string>
- <string name="name_middle" msgid="8467433655992690326">"중간 이름"</string>
- <string name="name_suffix" msgid="3855278445375651441">"이름 접미어"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"이름(소리나는 대로)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"중간 이름(소리나는 대로)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"성(소리나는 대로)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"이름(소리나는 대로)"</string>
<string name="connections" msgid="8098440723172028350">"연결"</string>
<string name="add_connection_button" msgid="4861308615789601727">"연결 추가"</string>
<string name="recent" msgid="2659189233141493004">"날짜순"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"연락처 이름 표시 방법:"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"선택한 연락처가 없습니다."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"병합되지 않았습니다."</item>
<item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g>개 출처에서 병합했습니다."</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"기타"</string>
<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="directory_search_label" msgid="1887759056597975053">"디렉토리"</string>
- <string name="local_search_label" msgid="2551177578246113614">"모든 연락처"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"개인 사본 작성 중..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"모든 연락처"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"별표"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"사용자 설정"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"맞춤설정"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"전화번호가 포함된 모든 연락처"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"연락처"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"사용자 설정"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"로드 중…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"설정"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"표시할 연락처"</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="hint_findContacts" msgid="1808681193458772072">"연락처 찾기"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"업데이트 보기"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"음성사서함"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>개의 음성사서함"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"재생"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>님이 보낸 새 음성사서함"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"음성메시지를 재생할 수 없습니다."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"버퍼링 중..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"음성메시지를 가져오는 중..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"음성메시지 가져오지 못했습니다."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"신규"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"이전"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"음성사서함 메시지만"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"수신 전화만"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"발신 전화만"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"부재중 전화만"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"음성사서함 서버에 연결할 수 없습니다."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"음성사서함 서버에 연결할 수 없습니다. 대기 중인 새 음성사서함이 있습니다."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"음성사서함을 설정합니다."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"오디오를 사용할 수 없습니다."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"설정"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"음성사서함 연결"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"가장 느린 속도"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"느린 속도"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"보통 속도"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"빠른 속도"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"가장 빠른 속도"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"<xliff:g id="DATE">%2$s</xliff:g>에 통화 <xliff:g id="COUNT">%1$d</xliff:g>통"</string>
<string name="group_name_hint" msgid="238359485263401293">"그룹 이름"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"NFC를 통해 받은 연락처"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"발신 전화만 표시"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"수신 전화만 표시"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"부재중 전화만 표시"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"음성사서함만 표시"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"모든 통화 표시"</string>
- <string name="status_available" msgid="5586870015822828392">"대화 가능"</string>
- <string name="status_away" msgid="1838861100379804730">"자리 비움"</string>
- <string name="status_busy" msgid="9147992455450257136">"다른 용무 중"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"음성사서함 재생"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"수신 전화"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"발신 전화"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"부재중 전화"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"음성사서함"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"연락처 추가"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g>님의 연락처 보기"</string>
- <string name="description_call" msgid="3443678121983852666">"전화하기:<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g>님에게 문자 메시지 보내기"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"듣지 않은 음성사서함"</string>
- <string name="description_send_message" msgid="6046623392322890962">"<xliff:g id="NAME">%1$s</xliff:g>님에게 메시지 보내기"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"전화하기:<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g>님의 빠른 주소록"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"나"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"오프라인 보관"</string>
<string name="add_account" msgid="8201790677994503186">"계정 추가"</string>
<string name="add_new_account" msgid="5748627740680940264">"새 계정 추가"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"전화를 걸 수 없음"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"음성사서함을 설정하려면 메뉴 > 설정으로 이동하세요."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"음성사서함에 메시지를 남기려면 먼저 비행기 모드를 해제하세요."</string>
<string name="menu_export_database" msgid="2659719297530170820">"데이터베이스 파일 내보내기"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"옵션 더보기"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"이름 입력란 펼치기/접기"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"사진을 변경하려면 선택"</string>
</resources>
diff --git a/res/values-land/integers.xml b/res/values-land/integers.xml
index bc9b2b7..d247e46 100644
--- a/res/values-land/integers.xml
+++ b/res/values-land/integers.xml
@@ -15,5 +15,4 @@
-->
<resources>
<integer name="contact_tile_column_count">4</integer>
- <integer name="contact_tile_column_count_in_favorites">4</integer>
</resources>
diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml
index e1d8a49..341bc1f 100644
--- a/res/values-land/styles.xml
+++ b/res/values-land/styles.xml
@@ -25,7 +25,4 @@
<item name="android:layout_weight">1</item>
</style>
- <style name="FragmentActionBarPadding">
- <item name="android:paddingBottom">0dp</item>
- </style>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 20f8924..f22a401 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefonas"</string>
<string name="people" msgid="1048457247435785074">"Žmonės"</string>
<string name="contactsList" msgid="8661624236494819731">"Adresinė"</string>
<string name="shortcutContact" msgid="749243779392912958">"Adresatas"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Apie"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Naujiniai"</string>
<string name="searchHint" msgid="8482945356247760701">"Ieškoti adresatų"</string>
- <string name="menu_search" msgid="9147752853603483719">"Ieškoti"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Naujas adresatas"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Žiūrėti adresatą"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Skambinti <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Pridėti prie adresyno"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Pašalinti iš adresyno"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Redaguoti"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Ištrinti"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopijuoti"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Padėti pagrindiniame ekrane"</string>
<string name="menu_call" msgid="3992595586042260618">"Skambinti adresatui"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Siųsti pranešimą adresatui"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Atlikta"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Atšaukti"</string>
<string name="menu_discard" msgid="6456087569315685632">"Atmesti"</string>
- <string name="label_notes" msgid="8337354953278341042">"Pastabos"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Skambutis internetu"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Įmonė"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Pareigos"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Kurti naują kontaktą"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefonas"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"El. paštas"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"TP"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresas"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizacija"</item>
<item msgid="7196592230748086755">"Pastaba"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Adresatų nėra."</string>
<string name="noGroups" msgid="8614664663561385253">"Nėra grupių."</string>
<string name="noAccounts" msgid="7768267764545265909">"Jums reikia paskyros, kad galėtumėte kurti grupes."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nerasta atitinkančių adresatų."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nėra adresatų su telefono numeriais."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Šioje grupėje nėra žmonių."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Jei norite jų pridėti, redaguokite grupę."</string>
<string name="savingContact" msgid="4075751076741924939">"Išsaugomas adresatas..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Išsaugomos pateikties parinktys..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Adresatas išsaugotas."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nepavyko išsaugoti kontakto pakeitimų."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupė išsaugota."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontaktas"</item>
<item quantity="other" msgid="3578469907265375314">"Kontaktai: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Kontaktų nėra."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nėra matomų kontaktų."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Į adresyną nieko neįtraukta."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"„<xliff:g id="NAME">%s</xliff:g>“ kontaktų nėra"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g> kontaktai"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Vienas kontaktas"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontaktai priskirtame rodinyje"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Rasta daugiau nei <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Kontaktų nėra"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"rastas 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Visi kontaktai"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupės"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Adresynas"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Adresynas ir visi kontaktai"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefonas"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Skambučių žurnalas"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Siųsti teksto pranešimą"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Skambinti <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redaguoti numerį prieš skambutį"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridėti prie adresatų"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Pašalinti iš skambučių žurnalo"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Išvalyti skambučių žurnalą"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Ištrinti balso pašto pran."</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Bendrinti balso paštą"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Skambučių žurnalas tuščias."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Išv. skamb. žurnalą?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Visi jūsų skambučių įrašai bus ištrinti."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Valomas skambučių žurnalas…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Išvalyti dažniaus. naud. kontaktus?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Išvalysite dažniausiai naudojamų kontaktų sąrašą Žmonių ir Telefono programose, o el. pašto programoms reikės iš naujo gauti adresavimo nuostatas."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Valomi dažniaus. naud. kontaktai…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Balso paštas"</string>
- <string name="unknown" msgid="740067747858270469">"Nežinomas"</string>
- <string name="private_num" msgid="6374339738119166953">"Privatus numeris"</string>
- <string name="payphone" msgid="4864313342828942922">"Mokamas telefonas"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Naudokite klaviatūrą ir rinkite numerius"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Rinkti numerį ir pridėti skambutį"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Įkeliama iš SIM kortelės..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM kortelės adresatai"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Neturite adresatų, kuriuos būtų galima pateikti. (Jei ką tik pridėjote paskyrą, adresatų sinchronizavimas gali užtrukti kelias minutes.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Neturite adresatų, kuriuos būtų galima pateikti."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Neturite pateiktinų kontaktų."\n\n"Jei norite įtraukti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad įtrauktumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su planšetiniu kompiuteriu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SIM ar SD kortelės"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Neturite pateiktinų kontaktų."\n\n"Jei norite įtraukti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su telefonu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SIM ar SD kortelės"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Neturite pateiktinų kontaktų. (Jei ką tik pridėjote paskyrą, kontaktų sinchronizavimas gali užtrukti kelias minutes.)"\n\n"Jei norite pridėti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su planšetiniu kompiuteriu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Pateikties parinktys"</b></font>", kad pakeistumėte matomus kontaktus"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SIM ar SD kortelės"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Neturite pateiktinų kontaktų. (Jei ką tik pridėjote paskyrą, kontaktų sinchronizavimas gali užtrukti kelias minutes.)"\n\n"Jei norite pridėti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su telefonu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Pateikties parinktys"</b></font>", kad pakeistumėte matomus kontaktus"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SIM ar SD kortelės"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Neturite pateiktinų kontaktų."\n\n"Jei norite pridėti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su planšetiniu kompiuteriu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", jei norite sukurti visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SD kortelės"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Neturite pateiktinų kontaktų."\n\n"Jei norite įtraukti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad įtrauktumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su telefonu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SD kortelės"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Neturite pateiktinų kontaktų. (Jei ką tik pridėjote paskyrą, kontaktų sinchronizavimas gali užtrukti kelias minutes.)"\n\n"Jei norite pridėti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>" ir tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su planšetiniu kompiuteriu;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Pateikties parinktys"</b></font>", kad pakeistumėte matomus kontaktus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad sukurtumėte visiškai naują kontaktą;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SD kortelės"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Neturite pateiktinų kontaktų. (Jei ką tik pridėjote paskyrą, kontaktų sinchronizavimas gali užtrukti.) "\n\n"Jei norite pridėti kontaktų, palieskite "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", tada palieskite:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Paskyros"</b></font>", kad pridėtumėte ar nustatytumėte paskyrą su kontaktais, kuriuos galite sinchronizuoti su telefonu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Pateikties parinktys"</b></font>", kad pakeistumėte matomus kontaktus"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Naujas kontaktas"</b></font>", kad pridėtumėte visiškai naują kontaktą"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuoti / eksportuoti"</b></font>", kad importuotumėte kontaktus iš SD kortelės"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nėra adresyno įrašų."\n\n"Jei norite pridėti adresatą prie adresyno sąrašo:"\n\n" "<li>"Palieskite skirtuką "<b>"Adresinė"</b>\n</li>" "\n<li>"Palieskite adresatą, kurį norite pridėti prie adresyno"\n</li>" "\n<li>"Palieskite šalia adresato vardo esančią žvaigždutę"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Naudoti jutiklinę klaviatūrą"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Grįžti prie vykdomo skambučio"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pridėti skambutį"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Išsami skambučio informacija"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nepavyko nuskaityti išsamios skambučio, dėl kurio buvo pateikta užklausa, informacijos."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Gaunamas skambutis"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Išeinantis skambutis"</string>
- <string name="type_missed" msgid="2720502601640509542">"Praleistas skambutis"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Balso paštas"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Gaunami skambučiai"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Dažnai susisiekiama"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Dažniausiai skambinta"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Pridėti „<xliff:g id="EMAIL">%s</xliff:g>“ prie adresatų?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"vienas"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"du"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trys"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"keturi"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"penki"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"šeši"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"septyni"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"aštuoni"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"devyni"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"žvaigždutė"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nulis"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"svaras"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"balso paštas"</string>
- <string name="description_search_button" msgid="3660807558587384889">"ieškoti"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"rinkti numerį"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"naikinimo klavišas"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"renkamas numeris"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"adresato nuotrauka"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"ištrinti"</string>
<string name="description_plus_button" msgid="515164827856229880">"plius"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Peržiūrėti kontaktą"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nerasta jokių atmintinių."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nerasta jokių SD kortelių."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importuoti iš SIM kortelės"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importuoti iš saugyklos"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportuoti į saugyklą"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Bendrinti matomus adresatus"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importuoti vieną „vCard“ failą"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importuoti kelis „vCard“ failus"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importuoti visus „VCard“ kortelės failus"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Ieškoma el. vizitinės kortelės duomenų saugykloje..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD kortelėje ieškoma el. vizitinės kortelės duomenų..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Atmintinės negalima žvalgyti. (Priežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kortelės negalima žvalgyti. (Priežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Įvesties / išvesties klaida"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nepakanka atminties. Gali būti, kad failas per didelis."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Dėl netikėtos priežasties nepavyko išanalizuoti el. vizitinės kortelės."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formatas nepalaikomas."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Nepavyko importuoti el. vizit. kortelės."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Atmintinėje nerasta jokių el. vizitinių kortelių failų."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD kortelėje nerasta jokių el. vizitinių kortelių failų."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Nepavyko surinkti pateikto (-ų) „vCard“ failo (-ų) metainformacijos."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Nepavyko importuoti vieno ar daugiau failų (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Nežinoma klaida."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Rink. el. v. k. failą"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Dedama į talpyklą…"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"El. vizitinė (-ės) kortelė (-ės) padedama (-os) į vietinę laikinąją atmintinę. Netrukus bus pradėtas tikrasis importavimas."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importuojama <xliff:g id="CURRENT_NUMBER">%s</xliff:g> / <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importuojama <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nepavyko nuskaityti „vCard“ duomenų"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"El. vizit. kort. duomenų skaitymas atš."</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Baigtas „<xliff:g id="FILENAME">%s</xliff:g>“ el. vizitinės kortelės importavimas"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Atšauktas <xliff:g id="FILENAME">%s</xliff:g> importavimas"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> bus netrukus importuotas."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Failas bus netrukus importuotas."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"El. vizitinės kortelės importavimo užklausa atmesta. Bandykite vėliau."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> bus netrukus eksportuotas."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"El. vizitinės kortelės eksportavimo užklausa buvo atmesta. Bandykite vėliau."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontaktas"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksp. kontaktus?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Jūsų kontaktų sąrašas bus eksportuotas į failą „<xliff:g id="VCARD_FILENAME">%s</xliff:g>“."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Nepavyko eksportuoti"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontakto duomenys nebuvo eksportuoti."\n"Priežastis: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nėra eksportuojamo kontakto."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Per daug el. vizitinių kortelių failų saugykloje."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Per daug el. vizitinių kortelių failų SD kortelėje."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Reikalingo failo pavadinimas per ilgas („<xliff:g id="FILENAME">%s</xliff:g>“)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Baigta eksportuoti „<xliff:g id="FILENAME">%s</xliff:g>“."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"<xliff:g id="FILENAME">%s</xliff:g> eksportavimas atšauktas."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Eksportuojami adresatų duomenys"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Jūsų kontaktų duomenys eksportuojami į: „<xliff:g id="FILE_NAME">%s</xliff:g>“."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nepavyko inicijuoti eksportavimo priemonės: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Eksportuojant įvyko klaida: „<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nepavyko gauti duomenų bazės informacijos."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nėra eksportuojamų kontaktų. Jei planšetiniame kompiuteryje yra kontaktų, kai kurie duomenų paslaugų teikėjai gali neleisti eksportuoti kontaktų iš planšetinio kompiuterio."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nėra eksportuojamų kontaktų. Jei telefone yra kontaktų, kai kurie duomenų paslaugų teikėjai gali neleisti eksportuoti kontaktų iš telefono."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"El. vizitinių kortelių rengyklė nebuvo tinkamai paleista."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nepavyko atidaryti „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Atšaukti <xliff:g id="FILENAME">%s</xliff:g> importavimą?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Atšaukti <xliff:g id="FILENAME">%s</xliff:g> eksportavimą?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nepavyko atš. „vCard“ imp. / eksp."</string>
- <string name="search_settings_description" msgid="2675223022992445813">"Adresatų vardai"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pridėti 2 sek. pauzę"</string>
- <string name="add_wait" msgid="3360818652790319634">"Pridėti laukimą"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Pasirinkite numerį"</string>
- <string name="call_settings" msgid="7666474782093693667">"Nustatymai"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Pasirinkite numerį"</string>
- <string name="make_primary" msgid="5829291915305113983">"Atsiminti šį pasirinkimą"</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_name" msgid="8745511583852904385">"(Nėra pavadinimo)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Paskyros"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Valyti dažniausiai naudojamus"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Pateiktini kontaktai"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importuoti / eksportuoti"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import. / eksport. kont."</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importuoti kontaktus"</string>
<string name="menu_share" msgid="943789700636542260">"Bendrinti"</string>
<string name="share_via" msgid="563121028023030093">"Bendrinti adresatą naudojant"</string>
- <string name="share_error" msgid="948429331673358107">"Šio kontakto negalima bendrinti."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Pavadinimas"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Slapyvardis"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizacija"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Svetainė"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Įvykiai"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Ryšys"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupės"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Kurti adresatą paskyroje"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Kurti grupę paskyroje"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Pašalinti sinchronizuojamą grupę"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Pridėti sinchronizuotą grupę"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Daugiau grupių..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Visi kiti kontaktai"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Visi kontaktai"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Iš sinchronizavimo pašalinus „<xliff:g id="GROUP">%s</xliff:g>“, bus pašalinti ir nesugrupuoti kontaktai."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tik planšetinis kompiuteris, nesinchronizuojama"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Tik telefonas, nesinchronizuojama"</string>
- <string name="call_custom" msgid="7756571794763171802">"Skambinti <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Skambinti į namų telefoną"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Skambinti į mobilųjį telefoną"</string>
- <string name="call_work" msgid="5328785911463744028">"Skambinti į darbo telefoną"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Skambinti į darbo faksą"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Skambinti į namų faksą"</string>
- <string name="call_pager" msgid="9003902812293983281">"Skambinti į pranešimų gaviklį"</string>
- <string name="call_other" msgid="8563753966926932052">"Skambinti"</string>
- <string name="call_callback" msgid="1910165691349426858">"Skambinti atgalinio skambinimo būdu"</string>
- <string name="call_car" msgid="3280537320306436445">"Skambinti automobilio telefono numeriu"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Skambinti į pagrindinį įmonės telefoną"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Skambinti ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Skambinti į pagrindinį telefoną"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Skambinti fakso numeriu"</string>
- <string name="call_radio" msgid="8296755876398357063">"Skambinti radijo telefono numeriu"</string>
- <string name="call_telex" msgid="2223170774548648114">"Skambinti telekso numeriu"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Skambinti TTY / TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Skambinti darbo mobiliuoju telefonu"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Skambinti į darbo pranešimų gaviklį"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Skambinti <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Skambinti MMS telefono numeriu"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Siųsti teksto pranešimą <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Siųsti teksto pranešimą į namų telefoną"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Siųsti teksto pranešimą į mobilųjį telefoną"</string>
- <string name="sms_work" msgid="2269624156655267740">"Siųsti pranešimą į darbo telefoną"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Siųsti pranešimą į darbo faksą"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Siųsti pranešimą į namų faksą"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Siųsti pranešimą į pranešimų gaviklį"</string>
- <string name="sms_other" msgid="806127844607642331">"Tekstas"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Siųsti pranešimą atgalinio skambinimo numeriu"</string>
- <string name="sms_car" msgid="7444227058437359641">"Siųsti teksto pranešimą į automobilio telefoną"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Siųsti pranešimą pagrindiniu įmonės telefono numeriu"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Siųsti pranešimą ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Siųsti SMS į pagrindinį telefoną"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Siųsti teksto pranešimą į faksą"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Siųsti teksto pranešimą radijo telefono numeriu"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Siųsti pranešimą telekso numeriu"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Siųsti pranešimą TTY / TDD numeriu"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Siųsti pranešimą į darbo mobilųjį telefoną"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Siųsti pranešimą į darbo teksto pranešimų gaviklį"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Siųsti teksto pranešimą <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Siųsti MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Teksto pranešimas"</string>
- <string name="email_home" msgid="8573740658148184279">"Namų el. paštas"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Siųsti el. laišką mobiliuoju el. pašto adresu"</string>
- <string name="email_work" msgid="2807430017302722689">"Siųsti el. laišką į darbo el. paštą"</string>
- <string name="email_other" msgid="3454004077967657109">"El. paštas"</string>
- <string name="email_custom" msgid="7548003991586214105">"El. paštas <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Siųsti el. paštu"</string>
- <string name="map_home" msgid="1243547733423343982">"Žiūrėti namų adresą"</string>
- <string name="map_work" msgid="1360474076921878088">"Žiūrėti darbo adresą"</string>
- <string name="map_other" msgid="3817820803587012641">"Žiūrėti adresą"</string>
- <string name="map_custom" msgid="6184363799976265281">"Peržiūrėti <xliff:g id="CUSTOM">%s</xliff:g> adresą"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Kalbėti naudojant AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Kalbėti naudojant „Windows Live“"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Kalbėti naudojant „Yahoo“"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Kalbėti naudojant „Skype“"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Kalbėti naudojant QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Kalbėti naudojant „Google“ pokalbius"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Kalbėti naudojant ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Kalbėti naudojant „Jabber“"</string>
- <string name="chat" msgid="9025361898797412245">"Kalbėti"</string>
<string name="audio_chat" msgid="2535716629358298691">"Balso pokalbis"</string>
<string name="video_chat" msgid="1872255818640336072">"Vaizdo pokalbis"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresas"</string>
- <string name="postal_street" msgid="8133143961580058972">"Gatvė"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Pašto dėžutė"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Kaimynystė"</string>
- <string name="postal_city" msgid="6597491300084895548">"Miestas"</string>
- <string name="postal_region" msgid="6045263193478437672">"Būsena"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Pašto kodas"</string>
- <string name="postal_country" msgid="7638264508416368690">"Šalis"</string>
- <string name="full_name" msgid="6602579550613988977">"Vardas"</string>
- <string name="name_given" msgid="1687286314106019813">"Suteiktas pavadinimas"</string>
- <string name="name_family" msgid="3416695586119999058">"Pavardė"</string>
- <string name="name_prefix" msgid="59756378548779822">"Priešvardis"</string>
- <string name="name_middle" msgid="8467433655992690326">"Antras vardas"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Povardis"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Suteiktas fonetinis vardas"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetinis antrasis vardas"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetinė pavardė"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetinis vardas"</string>
<string name="connections" msgid="8098440723172028350">"Ryšiai"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Pridėti ryšį"</string>
<string name="recent" msgid="2659189233141493004">"Naujausi"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Rūšiuoti sąrašą pagal"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Suteiktas pavadinimas"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Pavardė"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Žiūrėti adresatų vardus kaip"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Žiūrėti kontaktų vardus"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Pirmiausia suteiktas pavadinimas"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Pirmiausia pavardė"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotografuoti"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Rodyti visus"</string>
<string name="menu_select_all" msgid="621719255150713545">"Pasirinkti visus"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Atšaukti visų pasirinkimą"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nepasirinkote kontaktų."</string>
<string name="add_field" msgid="2384260056674995230">"Pridėti kitą lauką"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Pridėti naują"</string>
<string name="add_organization" msgid="7311893231158291197">"Pridėti organizaciją"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nesujungta"</item>
<item quantity="other" msgid="425683718017380845">"sujungta iš <xliff:g id="COUNT">%0$d</xliff:g> šaltinių (-io)"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Kita"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Sujungti dabartinį kontaktą su pasirinktu?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Perjungti į pasirinkto kontakto redagavimą? Iki šiol įvesta informacija bus nukopijuota."</string>
<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="directory_search_label" msgid="1887759056597975053">"Katalogas"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Visi kontaktai"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Kuriama asmeninė kopija..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Visi kontaktai"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Pažymėta žvaigždute"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Priskirtas"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Tinkinti"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Visi kontaktai su telefonų numeriais"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontaktas"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Nustatyti priskirtą rodinį"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Įkeliama..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nustatymai"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Pateiktini kontaktai"</string>
<string name="menu_settings" msgid="377929915873428211">"Nustatymai"</string>
<string name="menu_help" msgid="5123887102216637725">"Pagalba"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Pateikties parinktys"</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="hint_findContacts" msgid="1808681193458772072">"Ieškoti kontaktų"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefono numeris"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Pridėti prie kontaktų"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Pridėti prie kontakto"</string>
@@ -497,61 +215,7 @@
<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">"Nustatyti mano profilį"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Įveskite asmens vardą ir (arba) pavardę"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Žiūrėti naujinius"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Balso paštas"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešim."</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Paleisti"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nauji b. pašto pran. iš <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nepavyko paleisti balso pašto praneš."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Rašoma į buferį…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Gaunamas balso paštas…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nepavyko gauti balso pašto pranešimo."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nauji"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Senesni"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tik skambučiai su balso paštu"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Tik gaunami skambučiai"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Tik siunčiami skambučiai"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Tik praleisti skambučiai"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Neįmanoma prisijungti prie balso pašto serverio."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Neįm. prisij. prie bal. pšt. serv. Laukia nauji b. pšt. praneš."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Nustatyti balso paštą."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Garsas negalimas."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nustatyti"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Skamb. į balso pšt."</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Mažiausias greitis"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Mažas greitis"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normalus greitis"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Didelis greitis"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Didžiausias greitis"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Grupės pavadinimas"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Gauta per ALR"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Rodyti tik išsiunčiamus"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Rodyti tik gaunamus"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Rodyti tik praleistus"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rodyti tik balso pšt. praneš."</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Rodyti visus skambučius"</string>
- <string name="status_available" msgid="5586870015822828392">"Pasiekiamas"</string>
- <string name="status_away" msgid="1838861100379804730">"Pasišalinęs"</string>
- <string name="status_busy" msgid="9147992455450257136">"Užsiėmęs"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Paleisti balso pašto pranešimus"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Gaunamasis skambutis"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Išsiunčiamasis skambutis"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Praleistas skambutis"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Balso paštas"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Pridėti kontaktą"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Žiūrėti kontaktą <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Skambinti <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Siųsti teksto pranešimą <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neklausytas balso pašto pranešimas"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Siųsti pranešimą <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Skambinti <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Spartusis <xliff:g id="NAME">%1$s</xliff:g> kontaktas"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Aš"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Išsaug. kaip vietinį"</string>
<string name="add_account" msgid="8201790677994503186">"Pridėkite paskyrą"</string>
<string name="add_new_account" msgid="5748627740680940264">"Pridėkite naują paskyrą"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Skambutis neišsiųstas"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Jei norite nustatyti balso paštą, eikite į „Meniu“ > „Nustatymai“."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Jei norite skambinti į balso paštą, išjunkite lėktuvo režimą."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportuoti duomenų failus"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Daugiau parinkčių"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Išskleisti arba sutraukti pavadinimų laukus"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Nuotrauka. Pasirinkite, kad pakeistumėte"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 5009bf1..9dde574 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Tālrunis"</string>
<string name="people" msgid="1048457247435785074">"Kontakti"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontaktpersonas"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontaktpersona"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Par"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Atjaunināj."</string>
<string name="searchHint" msgid="8482945356247760701">"Meklēt kontaktpersonas"</string>
- <string name="menu_search" msgid="9147752853603483719">"Meklēt"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Jauna kontaktpersona"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Skatīt kontaktpersonu"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Pievienot izlasei"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Noņemt no izlases"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Rediģēt"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Dzēst"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopēt"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Novietot sākuma ekrānā"</string>
<string name="menu_call" msgid="3992595586042260618">"Zvanīt kontaktpersonai"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Sūtīt īsziņu kontaktpersonai"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Gatavs"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Atcelt"</string>
<string name="menu_discard" msgid="6456087569315685632">"Atmest"</string>
- <string name="label_notes" msgid="8337354953278341042">"Piezīmes"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Interneta zvans"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Uzņēmums"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Nosaukums"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Izveidot jaunu kontaktpersonu"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Tālrunis"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-pasts"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Tūlītējā ziņojumapmaiņa"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adrese"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizācija"</item>
<item msgid="7196592230748086755">"Piezīme"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nav kontaktpersonu."</string>
<string name="noGroups" msgid="8614664663561385253">"Nav grupu."</string>
<string name="noAccounts" msgid="7768267764545265909">"Lai izveidotu grupas, ir nepieciešams konts."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nav atrasta neviena atbilstoša kontaktpersona."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nav nevienas kontaktpersonas ar tālruņa numuru."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Šajā grupā nav personu."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Lai pievienotu personas, rediģējiet grupu."</string>
<string name="savingContact" msgid="4075751076741924939">"Notiek kontaktpersonas saglabāšana…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Notiek attēlojuma opciju saglabāšana..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontaktpersona ir saglabāta."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nevarēja saglabāt kontaktpersonas datu izmaiņas."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupa ir saglabāta."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontaktpersona"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontaktpersonas"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nav kontaktpersonu."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nav redzamu kontaktpersonu."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Izlasē nav nevienas kontaktpersonas."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nav kontaktpersonu šādā sarakstā: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontaktpersonas sarakstā <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Viena kontaktpersona"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontaktpersonas pielāgotā skatījumā"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Ir atrastas vairāk nekā <xliff:g id="COUNT">%d</xliff:g> kontaktpersonas."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nav kontaktpersonu"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Atrasta 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Visas kontaktpersonas"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupas"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Izlase"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Izlase un visas kontaktpersonas"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Zvanīt"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Zvanu žurnāls"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Sūtīt īsziņu"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zvanīt: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediģēt numuru pirms zvanīšanas"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pievienot kontaktpersonām"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Noņemt no zvanu žurnāla"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Notīrīt zvanu žurnālu"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Dzēst balss pasta ziņojumu"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Kopīgot balss pastu"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Zvanu žurnāls ir tukšs."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vai not. zv. žurn.?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Visi zvanu ieraksti tiks dzēsti."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Notiek zvanu žurnāla tīrīšana..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vai dzēst bieži lietotos kontaktus?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Tiks dzēsts bieži lietoto kontaktpersonu saraksts lietotnēs Personas un Tālrunis, un e-pasta lietotnēs adrešu preferenču saglabāšana tiks sākta no sākuma."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Bieži lietoto kontaktu dzēšana..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Balss pasts"</string>
- <string name="unknown" msgid="740067747858270469">"Nezināms"</string>
- <string name="private_num" msgid="6374339738119166953">"Privāts numurs"</string>
- <string name="payphone" msgid="4864313342828942922">"Taksofons"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Izmantojiet tastatūru, lai sastādītu numuru."</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Sastādiet numuru, lai pievienotu zvanu"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Notiek ielāde no SIM kartes..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontaktpersonas SIM kartē"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nav nevienas kontaktpersonas, ko attēlot. (Ja tikko pievienojāt kontu, kontaktpersonu sinhronizācija var ilgt dažas minūtes.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nav nevienas kontaktpersonas, ko attēlot."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nav nevienas parādāmas kontaktpersonas."\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar planšetdatoru sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SIM kartes vai SD kartes."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nav nevienas parādāmas kontaktpersonas."\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar tālruni sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SIM kartes vai SD kartes."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nav nevienas parādāmas kontaktpersonas. (Ja tikko pievienojāt kontu, kontaktpersonu sinhronizācija var ilgt dažas minūtes.)"\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar planšetdatoru sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Attēlojuma opcijas"</b></font>", lai mainītu redzamo kontaktpersonu iestatījumus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SIM kartes vai SD kartes."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nav nevienas parādāmas kontaktpersonas. (Ja tikko pievienojāt kontu, kontaktpersonu sinhronizācija var ilgt dažas minūtes.)"\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar tālruni sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Attēlojuma opcijas"</b></font>", lai mainītu redzamo kontaktpersonu iestatījumus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SIM kartes vai SD kartes."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nav nevienas parādāmas kontaktpersonas."\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar planšetdatoru sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SD kartes."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nav nevienas parādāmas kontaktpersonas."\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar tālruni sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SD kartes."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nav nevienas parādāmas kontaktpersonas. (Ja tikko pievienojāt kontu, kontaktpersonu sinhronizācija var ilgt dažas minūtes.)"\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar planšetdatoru sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Attēlojuma opcijas"</b></font>", lai mainītu redzamo kontaktpersonu iestatījumus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SD kartes."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nav nevienas parādāmas kontaktpersonas. (Ja tikko pievienojāt kontu, kontaktpersonu sinhronizācija var ilgt dažas minūtes.)"\n\n"Lai pievienotu kontaktpersonas, pieskarieties vienumam "<font fgcolor="#ffffffff"><b>"Izvēlne"</b></font>", pēc tam pieskarieties vienumam:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konti"</b></font>", lai pievienotu vai iestatītu ar tālruni sinhronizējamu kontu, kurā ir kontaktpersonas;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Attēlojuma opcijas"</b></font>", lai mainītu redzamo kontaktpersonu iestatījumus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Jauna kontaktpersona"</b></font>", lai izveidotu jaunu kontaktpersonu, neizmantojot esošus datus;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importēt/eksportēt"</b></font>", lai importētu kontaktpersonas no SD kartes."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Jūs neesat izveidojis izlasi."\n\n"Lai pievienotu kontaktpersonu izlasei, rīkojieties šādi:"\n\n" "<li>"Pieskarieties cilnei "<b>"Kontaktpersonas"</b>"."\n</li>" "\n<li>"Pieskarieties kontaktpersonai, kuru vēlaties pievienot izlasei."\n</li>" "\n<li>"Pieskarieties zvaigznītei blakus kontaktpersonas vārdam."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Izmantot skārientoņu tastatūru"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Atgriezties pie pašreizējā zvana"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pievienot zvanu"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Informācija par zvanu"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nevarēja nolasīt informāciju par pieprasīto zvanu."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Ienākošais zvans"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Izejošais zvans"</string>
- <string name="type_missed" msgid="2720502601640509542">"Neatbildēts zvans"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Balss pasts"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Ienākošie zvani"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Bieža saziņa"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Bieži zvanīti"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Vai pievienot “<xliff:g id="EMAIL">%s</xliff:g>” kontaktpersonām?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"viens"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"divi"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trīs"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"četri"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"pieci"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seši"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"septiņi"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"astoņi"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"deviņi"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"zvaigznīte"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nulle"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"numura zīme"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"balss pasts"</string>
- <string name="description_search_button" msgid="3660807558587384889">"meklēt"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"sastādīt numuru"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"atpakaļatkāpe"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"sastādītais numurs"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontaktpersonas fotoattēls"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"dzēst"</string>
<string name="description_plus_button" msgid="515164827856229880">"pluss"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Skatīt kontaktpersonu"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Netika atrasta atmiņa."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Netika atrasta SD karte."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importēt no SIM kartes"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importēt no USB atmiņas"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportēt uz USB atmiņu"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Kopīgot redzamās kontaktpersonas"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importēt vienu vCard failu"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importēt vairākus vCard failus"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importēt visus vCard failus"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Notiek vCard datu meklēšana atmiņā..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Notiek vCard datu meklēšana SD kartē..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Atmiņu nevarēja skenēt. (Iemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD karti nevarēja skenēt. (Iemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Ievades/izvades kļūda."</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Atmiņā nepietiek vietas. Iespējams, fails ir pārāk liels."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Neparedzēta iemesla dēļ nevarēja parsēt vCard failu."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Šāds formāts netiek atbalstīts."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Nevarēja importēt vCard datus."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Atmiņā netika atrasts neviens vCard fails."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD kartē netika atrasts neviens vCard fails."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Nevarēja iegūt metainformāciju par konkrēto(-ajiem) vCard failu(-iem)."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Nevarēja importēt vienu vai vairākus failus (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Nezināma kļūda."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard faila izvēle"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Notiek saglabāšana kešatmiņā"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Notiek vCard failu saglabāšana vietējā pagaidu atmiņā. Importēšana tiks sākta pēc neilga brīža."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importē <xliff:g id="CURRENT_NUMBER">%s</xliff:g> no <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Notiek imp.: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nevarēja nolasīt vCard datus."</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Atcelta vCard datu lasīšana"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCard faila <xliff:g id="FILENAME">%s</xliff:g> importēšana ir pabeigta"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Faila <xliff:g id="FILENAME">%s</xliff:g> importēšana atcelta"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Fails <xliff:g id="FILENAME">%s</xliff:g> tiks drīzumā importēts."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Fails drīzumā tiks importēts."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Tika noraidīts vCard faila importēšanas pieprasījums. Vēlāk mēģiniet vēlreiz."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Fails <xliff:g id="FILENAME">%s</xliff:g> tiks drīzumā eksportēts."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Tika noraidīts vCard faila eksportēšanas pieprasījums. Vēlāk mēģiniet vēlreiz."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontaktpersona"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Vai eksp. kontaktp.?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Kontaktpersonu saraksts tiks eksportēts uz failu <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Nevarēja eksportēt"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontaktpersonas dati netika eksportēti."\n"Iemesls: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nav nevienas eksportējamas kontaktpersonas."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Atmiņā ir pārāk daudz vCard failu."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD kartē ir pārāk daudz vCard failu."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Faila nosaukums ir pārāk garš (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšana pabeigta"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšana atcelta"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Kontaktpersonu datu eksportēšana"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Kontaktpersonas dati tiek eksportēti uz failu <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nevarēja startēt eksportētāju: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Eksportēšanas laikā radās kļūda: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nevarēja iegūt informāciju no datu bāzes."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nav nevienas eksportējamas kontaktpersonas. Ja jūsu planšetdatorā ir saglabātas kontaktpersonas, iespējams, jūsu datu pakalpojumu sniedzējs neļauj eksportēt kontaktpersonas no planšetdatora."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nav nevienas eksportējamas kontaktpersonas. Ja jūsu tālrunī ir saglabātas kontaktpersonas, iespējams, jūsu datu pakalpojumu sniedzējs neļauj eksportēt kontaktpersonas no tālruņa."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Netika pareizi startēts vCard veidotājs."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nevarēja atvērt failu <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> importēšanu?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vai atcelt faila <xliff:g id="FILENAME">%s</xliff:g> eksportēšanu?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nevarēja atcelt vCard f. import./eksp."</string>
<string name="search_settings_description" msgid="2675223022992445813">"Kontaktpersonu vārdi"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pievienot 2 sekundes ilgu pauzi"</string>
- <string name="add_wait" msgid="3360818652790319634">"Pievienot gaidīšanu"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Numura izvēlēšanās"</string>
- <string name="call_settings" msgid="7666474782093693667">"Iestatījumi"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Numura izvēlēšanās"</string>
- <string name="make_primary" msgid="5829291915305113983">"Atcerēties šo izvēli"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Netika atrasta neviena lietotne šīs darbības veikšanai."</string>
- <string name="missing_name" msgid="8745511583852904385">"(nav vārda)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Konti"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Dzēst bieži lietotos kontaktus"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Attēlojamās kontaktpersonas"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importēt/eksportēt"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"K. pers. imports/eksports"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Kontaktpersonu importēšana"</string>
<string name="menu_share" msgid="943789700636542260">"Kopīgot"</string>
<string name="share_via" msgid="563121028023030093">"Kopīgot kontaktpersonu, izmantojot"</string>
- <string name="share_error" msgid="948429331673358107">"Šo kontaktpersonu nevar kopīgot."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Vārds"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Segvārds"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizācija"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Vietne"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Notikumi"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Saistība"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupas"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Izveidot jaunu kontaktpersonu kontā"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Izveidot grupu šajā kontā:"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Noņemt sinhronizējamo grupu"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Pievienot sinhronizējamu grupu"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Vairāk grupu..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Citas kontaktpersonas"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Visas kontaktpersonas"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Pārtraucot grupas <xliff:g id="GROUP">%s</xliff:g> sinhronizāciju, tiks pārtraukta arī visu negrupēto kontaktpersonu sinhronizācija."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tikai planšetdatorā, bez sinhronizācijas"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Tikai tālrunī, bez sinhronizācijas"</string>
- <string name="call_custom" msgid="7756571794763171802">"Zvanīt: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Zvanīt uz mājas numuru"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Zvanīt uz mobilo tālruni"</string>
- <string name="call_work" msgid="5328785911463744028">"Zvanīt uz darba numuru"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Zvanīt uz darba faksa numuru"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Zvanīt uz mājas faksa numuru"</string>
- <string name="call_pager" msgid="9003902812293983281">"Zvanīt uz peidžeru"</string>
- <string name="call_other" msgid="8563753966926932052">"Zvanīt"</string>
- <string name="call_callback" msgid="1910165691349426858">"Zvanīt uz atzvana numuru"</string>
- <string name="call_car" msgid="3280537320306436445">"Zvanīt uz automobili"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Zvanīt uz uzņēmuma galveno tālruņa numuru"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Zvanīt uz ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Zvanīt uz galveno tālruņa numuru"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Zvanīt uz faksu"</string>
- <string name="call_radio" msgid="8296755876398357063">"Zvanīt uz radioierīci"</string>
- <string name="call_telex" msgid="2223170774548648114">"Zvanīt uz teleksu"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Zvanīt uz teletaipu/surdotālruni"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Zvanīt uz darba mobilo tālruni"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Zvanīt uz darba peidžeru"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Zvanīt: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Zvanīt uz multiziņas numuru"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Sūtīt īsziņu uz <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Sūtīt īsziņu uz mājas tālruņa numuru"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Sūtīt īsziņu uz mobilo tālruni"</string>
- <string name="sms_work" msgid="2269624156655267740">"Sūtīt īsziņu uz darba numuru"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Sūtīt īsziņu uz darba faksa numuru"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Sūtīt īsziņu uz mājas faksa numuru"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Sūtīt īsziņu uz peidžeru"</string>
- <string name="sms_other" msgid="806127844607642331">"Sūtīt īsziņu"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Sūtīt īsziņu uz atzvana numuru"</string>
- <string name="sms_car" msgid="7444227058437359641">"Sūtīt īsziņu uz automobiļa numuru"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Sūtīt īsziņu uz uzņēmuma galveno tālruņa numuru"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Sūtīt īsziņu uz ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Sūtīt īsziņu uz galveno tālruņa numuru"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Sūtīt īsziņu uz faksu"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Sūtīt īsziņu uz radioierīci"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Sūtīt īsziņu uz teleksa numuru"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Sūtīt īsziņu uz teletaipu/surdotālruni"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Sūtīt īsziņu uz darba mobilo tālruni"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Sūtīt īsziņu uz darba peidžeru"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Sūtīt īsziņu: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Sūtīt multiziņu"</string>
- <string name="sms" msgid="1756857139634224222">"Īsziņa"</string>
- <string name="email_home" msgid="8573740658148184279">"Sūtīt e-pasta ziņojumu uz privāto adresi"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Sūtīt e-pasta ziņojumu uz mobilo tālruni"</string>
- <string name="email_work" msgid="2807430017302722689">"Sūtīt e-pasta ziņojumu uz darba adresi"</string>
- <string name="email_other" msgid="3454004077967657109">"Sūtīt e-pasta ziņojumu"</string>
- <string name="email_custom" msgid="7548003991586214105">"Sūtīt e-pasta ziņojumu uz <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Sūtīt e-pasta ziņojumu"</string>
- <string name="map_home" msgid="1243547733423343982">"Skatīt mājas adresi"</string>
- <string name="map_work" msgid="1360474076921878088">"Skatīt darba adresi"</string>
- <string name="map_other" msgid="3817820803587012641">"Skatīt adresi"</string>
- <string name="map_custom" msgid="6184363799976265281">"Skatīt adresi: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Tērzēt, izmantojot AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Tērzēt, izmantojot Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Tērzēt, izmantojot Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Tērzēt, izmantojot Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Tērzēt, izmantojot QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Tērzēt, izmantojot Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Tērzēt, izmantojot ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Tērzēt, izmantojot Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Tērzēt"</string>
<string name="audio_chat" msgid="2535716629358298691">"Balss tērzēšana"</string>
<string name="video_chat" msgid="1872255818640336072">"Video tērzēšana"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adrese"</string>
- <string name="postal_street" msgid="8133143961580058972">"Iela"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Abonenta kastīte"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Apkaime"</string>
- <string name="postal_city" msgid="6597491300084895548">"Pilsēta"</string>
- <string name="postal_region" msgid="6045263193478437672">"Štats"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Pasta indekss"</string>
- <string name="postal_country" msgid="7638264508416368690">"Valsts"</string>
- <string name="full_name" msgid="6602579550613988977">"Vārds"</string>
- <string name="name_given" msgid="1687286314106019813">"Vārds"</string>
- <string name="name_family" msgid="3416695586119999058">"Uzvārds"</string>
- <string name="name_prefix" msgid="59756378548779822">"Uzruna"</string>
- <string name="name_middle" msgid="8467433655992690326">"Otrais vārds"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Tituls"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Vārda izruna"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Otrā vārda izruna"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Uzvārda izruna"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Vārda izruna"</string>
<string name="connections" msgid="8098440723172028350">"Savienojumi"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Pievienot savienojumu"</string>
<string name="recent" msgid="2659189233141493004">"Jaunākās"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Kārtot sarakstu pēc"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Vārds"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Uzvārds"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Kontaktpersonu vārdu attēlošana:"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Skatīt kontaktpersonu vārdus"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Vispirms rādīt vārdu"</string>
<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>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Rādīt visus"</string>
<string name="menu_select_all" msgid="621719255150713545">"Atlasīt visas"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Noņemt atlasi visam"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nav atlasīta neviena kontaktpersona."</string>
<string name="add_field" msgid="2384260056674995230">"Pievienot vēl vienu lauku"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Pievienot jaunu"</string>
<string name="add_organization" msgid="7311893231158291197">"Pievienot organiz."</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nav sapludinātas"</item>
<item quantity="other" msgid="425683718017380845">"sapludināts no <xliff:g id="COUNT">%0$d</xliff:g> avotiem"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Cits"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vai savienot pašreizējo saturu ar atlasīto kontaktpersonu?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vai pāriet uz atlasītās kontaktpersonas rediģēšanu? Līdz šim ievadītā informācija tiks kopēta."</string>
<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="directory_search_label" msgid="1887759056597975053">"Katalogs"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Visas kontaktpersonas"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Notiek personīgā eksemplāra izveide..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Visas kontaktpersonas"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Atzīmēts ar zvaigznīti"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Pielāgotas"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Pielāgot"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Visas kontaktpersonas ar tālruņa numuriem"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontaktpersona"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definēt pielāgoto skatījumu"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Notiek ielāde..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Iestatījumi"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Attēlojamās kontaktpers."</string>
<string name="menu_settings" msgid="377929915873428211">"Iestatījumi"</string>
<string name="menu_help" msgid="5123887102216637725">"Palīdzība"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Attēlošanas opcijas"</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="hint_findContacts" msgid="1808681193458772072">"Meklēt kontaktpersonas"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Tālruņa numurs"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Piev. kontaktpersonām"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Pievienot kontaktpersonai"</string>
@@ -497,61 +215,7 @@
<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">"Iestatīt savu profilu"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Rakstiet personas vārdu."</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Skatīt atjaunināj."</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Balss pasts"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums(-i)"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Atskaņot"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Jauns b. pasta ziņ. no: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nevarēja atskaņot balss pasta ziņojumu."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Notiek buferizācija..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Notiek balss pasta iegūšana..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nevarēja iegūt balss pasta ziņojumu."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Jauns"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Vecāki"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tikai balss pasta zvani"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Tikai ienākošie zvani"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Tikai izejošie zvani"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Tikai neatbildētie zvani"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nevar izveidot savienojumu ar balss pasta serveri."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Nevar izv. sav. ar b. pasta serv. Ienākuši jauni b. pasta ziņ."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Iestatiet balss pastu."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio nav pieejams."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Iestatīt"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Zvanīt balss pastam"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Mazākais ātrums"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Mazs ātrums"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Parasts ātrums"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Liels ātrums"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Lielākais ātrums"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Grupas nosaukums"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"No NFC saņ. kontaktinf."</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Rādīt tikai izejošos zvanus"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Rādīt tikai ienākošos zvanus"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Rādīt tikai neatbildētos zvanus"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rādīt tikai balss pasta ziņ."</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Rādīt visus zvanus"</string>
- <string name="status_available" msgid="5586870015822828392">"Pieejama"</string>
- <string name="status_away" msgid="1838861100379804730">"Prombūtnē"</string>
- <string name="status_busy" msgid="9147992455450257136">"Aizņemts"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Atskaņot balss pasta ziņojumu"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Ienākošs zvans"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Izejošs zvans"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Neatbildēts zvans"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Balss pasts"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Pievienot kontaktpersonu"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Skatīt kontaktpersonu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Zvanīt šim: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Sūtīt īsziņu šim: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nenoklausīti balss pasta ziņojumi"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Sūtīt īsziņu kontaktpersonai <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Kontaktpersonas <xliff:g id="NAME">%1$s</xliff:g> tālruņa numurs"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Ātrā saziņa ar kontaktpersonu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Es"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Saglabāt vietēji"</string>
<string name="add_account" msgid="8201790677994503186">"Pievienot kontu"</string>
<string name="add_new_account" msgid="5748627740680940264">"Pievienot jaunu kontu"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Nenosūtīts zvans"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Lai iestatītu balss pastu, atveriet sadaļu Izvēlne > Iestatījumi."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Lai piezvanītu balss pastam, vispirms izslēdziet lidojuma režīmu."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportēt datu bāzes failus"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Vairāk opciju"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Izvērst vai sakļaut nosaukumu laukus"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Attēls. Lai mainītu, atlasiet."</string>
</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 61d6222..90a7943 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Orang"</string>
<string name="contactsList" msgid="8661624236494819731">"Kenalan"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kenalan"</string>
@@ -38,15 +37,11 @@
<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_search" msgid="9147752853603483719">"Cari"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Kenalan baru"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Papar kenalan"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Salin"</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>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Selesai"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Batal"</string>
<string name="menu_discard" msgid="6456087569315685632">"Buang"</string>
- <string name="label_notes" msgid="8337354953278341042">"Nota"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Panggilan internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Syarikat"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Tajuk"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mel"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Alamat"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisasi"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<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="noMatchingContacts" msgid="4266283206853990471">"Tiada kenalan yang sepadan ditemui."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Tiada kenalan dengan nombor telefon."</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="savingDisplayGroups" msgid="2133152192716475939">"Menyimpan pilihan paparan..."</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>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kenalan"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kenalan"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Tiada kenalan."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Tiada kenalan dapat dilihat."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Tiada kegemaran."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Tiada kenalan dalam <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kenalan dalam <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Kenalan tunggal"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kenalan dalam pandangan tersuai"</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="foundTooManyContacts" msgid="5163335650920020220">"lebih daripada <xliff:g id="COUNT">%d</xliff:g> ditemui."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Tiada kenalan"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 ditemui"</item>
@@ -136,265 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Semua kenalan"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Kumpulan"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Kegemaran"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Kegemaran dan semua kenalan"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Log panggilan"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Hantar mesej teks"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nombor sebelum panggilan"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambah ke kenalan"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Alih keluar daripada log panggilan"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Padam bersih log panggilan"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Padamkan mel suara"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Kongsi mel suara"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Log panggilan kosong."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Padam bersih log panggilan?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Semua rekod panggilan anda akan dipadamkan."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Memadam bersih log panggilan..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Padam bersih senarai kerap dihubungi?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Anda akan mengosongkan senarai orang yang kerap dihubungi dalam apl Orang dan Telefon serta memaksa apl e-mel untuk mempelajari pilihan alamat anda dari awal."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Memadam bersih senarai kerap dihubungi..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Mel suara"</string>
- <string name="unknown" msgid="740067747858270469">"Tidak diketahui"</string>
- <string name="private_num" msgid="6374339738119166953">"Nombor peribadi"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefon awam"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Gunakan papan kekunci untuk mendail"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Dail untuk menambah panggilan"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Memuatkan dari kad SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kenalan kad SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Anda tiada sebarang kenalan untuk dipaparkan. (Sekiranya anda baru sahaja menambah akaun, beberapa minit diperlukan untuk menyegerak kenalan.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Anda tiada sebarang kenalan untuk dipaparkan."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Anda tidak mempunyai mana-mana kenalan untuk dipaparkan."\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau membuka akaun dengan kenalan yang anda boleh segerakkan ke tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>"untuk membuat kenalan baharu dari awal"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Import/eksport"</b></font>" untuk mengimport kenalan daripada kad SIM atau kad SD anda"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Anda tidak mempunyai mana-mana kenalan untuk dipaparkan."\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau membuka akaun dengan kenalan anda boleh disegerakkan ke telefon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari awal"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan dari SIM anda atau kad SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Anda tiada sebarang kenalan untuk dipaparkan. (Jika anda baru sahaja menambah akaun, ia boleh mengambil masa beberapa minit untuk menyegerak kenalan.)"\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau menyediakan akaun dengan kenalan yang boleh anda segerakkan ke tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Paparkan pilihan"</b></font>" untuk menukar kenalan mana yang kelihatan"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SIM atau kad SD anda"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Anda tiada sebarang kenalan untuk dipaparkan. (Jika anda baru sahaja menambah akaun, ia boleh mengambil masa beberapa minit untuk menyegerak kenalan.)"\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah dan menyediakan akaun dengan kenalan yang boleh anda segerakkan ke telefon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Paparkan pilihan"</b></font>" untuk menukar kenalan mana yang kelihatan"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SIM atau SD anda"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Anda tidak mempunyai mana-mana kenalan untuk dipaparkan."\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau membuka akaun dengan kenalan yang boleh anda segerakkan ke tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SD anda"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Anda tidak mempunyai mana-mana kenalan untuk dipaparkan."\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau membuka akaun dengan kenalan yang anda boleh segerakkan ke telefon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SD anda"\n" "</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Anda tiada sebarang kenalan untuk dipaparkan. (Jika anda baru sahaja menambah akaun, ia boleh mengambil masa beberapa minit untuk menyegerakkan kenalan.)"\n\n"Untuk menambah kenalan, tekan "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau menyediakan akaun dengan kenalan yang boleh anda segerakkan ke tablet"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Paparkan pilihan"</b></font>" untuk menukar kenalan mana yang boleh dilihat"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SD anda"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Anda tiada sebarang kenalan untuk dipaparkan. (Jika anda baru sahaja menambah akaun, ia boleh mengambil masa beberapa minit untuk menyegerak kenalan.)"\n\n"Untuk menambah kenalan, sentuh "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", kemudian sentuh:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaun"</b></font>" untuk menambah atau menyediakan akaun dengan kenalan yang boleh anda segerakkan ke telefon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Paparkan pilihan"</b></font>" untuk menukar kenalan mana yang kelihatan"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Kenalan baharu"</b></font>" untuk membuat kenalan baharu dari mula"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import/Eksport"</b></font>" untuk mengimport kenalan daripada kad SD anda"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Anda tiada sebarang kegemaran."\n\n"Untuk menambah kenalan ke senarai kegemaran anda:"\n\n" "<li>"Sentuh tab "<b>"Kenalan"</b>\n</li>" "\n<li>"Sentuh kenalan yang anda mahu tambahkan ke kegemaran anda"\n</li>" "\n<li>"Sentuh bintang bersebelahan dengan nama kenalan itu"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gunakan pad kekunci nada sentuh"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kembali ke panggilan yang sedang berlangsung"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Tambah panggilan"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Butiran panggilan"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Tidak boleh membaca butiran untuk panggilan yang diminta."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Panggilan masuk"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Panggilan keluar"</string>
- <string name="type_missed" msgid="2720502601640509542">"Panggilan tidak dijawab"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Mel suara"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Panggilan masuk"</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="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> saat"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Kerap dihubungi"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Kerap dipanggil"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Tambah \"<xliff:g id="EMAIL">%s</xliff:g>\" kepada kenalan?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"satu"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dua"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tiga"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"empat"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"lima"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"enam"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"tujuh"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"lapan"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"sembilan"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"bintang"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"sifar"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"paun"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"mel suara"</string>
- <string name="description_search_button" msgid="3660807558587384889">"cari"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"dail"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"undur ruang"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nombor untuk didail"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto kenalan"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"padam"</string>
<string name="description_plus_button" msgid="515164827856229880">"tambah"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Lihat kenalan"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Tiada storan ditemui."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Tiada kad SD ditemui."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Import daripada kad SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import dari storan"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksport ke storan"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Kongsi kenalan yang kelihatan"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Import satu fail vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Import berbilang fail vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Import semua fail vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Mencari data vCard pada storan..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Mencari data vCard pada kad SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Storan tidak boleh diimbas. (Alasan: \" <xliff:g id="FAIL_REASON">%s</xliff:g> \")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kad SD tidak boleh diimbas. (Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Ralat I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Tidak cukup memori. Fail itu mungkin terlalu besar."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Tidak dapat menghurai vCard atas sebab-sebab yang tidak dijangka."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Format tidak disokong."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Tidak dapat mengimport vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Tiada fail vCard ditemui dalam storan"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Tiada fail vCard ditemui pada kad SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Tidak boleh mengumpul maklumat meta fail Vcard yang tertentu."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for fail_reason_failed_to_read_files (5823434810622484922) -->
- <skip />
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Ralat tidak diketahui."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Pilih fail vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Mengcache..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Membuat cache vCard ke storan sementara tempatan. Pengimportan sebenar akan bermula tidak lama lagi."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Mengimport <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Mengimport <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Tidak dapat membaca data vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Membaca data vCard dibatalkan"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Selesai mengimport vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Pengimportan <xliff:g id="FILENAME">%s</xliff:g> dibatalkan"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> akan diimport sebentar lagi."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Fail akan diimport sebentar lagi."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Permintaan import vCard telah ditolak. Cuba lagi nanti."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> akan dieksport sebentar lagi."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Permintaan eksport vCard telah ditolak. Cuba lagi nanti."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kenalan"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksport kenalan?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Senarai kenalan anda akan dieksport ke: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Tidak boleh mengeksport"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Data kenalan tidak dieksport."\n"Alasan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Tiada kenalan yang boleh dieksport."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Terlalu banyak fail vCard dalam simpanan."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Terlalu banyak fail vCard pada kad SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Nama fail yang diperlukan terlalu panjang (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Selesai mengeksport <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Pengeksportan <xliff:g id="FILENAME">%s</xliff:g> dibatalkan."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Mengeksport data kenalan"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Data kenalan anda sedang dieksport ke: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Tidak boleh memulakan pengeksport: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Ralat berlaku semasa pengeksportan: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Tidak boleh mendapatkan maklumat pangkalan data."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Tiada kenalan dieksport. Jika anda mempunyai kenalan pada tablet anda, sesetengah pembekal data mungkin tidak membenarkan kenalan dieksport daripada tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Tiada kenalan boleh dieksport. Jika anda mempunyai kenalan pada telefon anda, sesetengah pembekal data tidak boleh membenarkan kenalan dieksport dari telefon."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Komposer vCard tidak bermula dengan betul."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Tidak dapat membuka \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Batalkan pengimportan <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Batalkan pengeksportan <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Tidak dapat membatalkan import/eksport vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nama kenalan anda"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Tambah jeda 2 saat"</string>
- <string name="add_wait" msgid="3360818652790319634">"Tambah penungguan"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Pilih nombor"</string>
- <string name="call_settings" msgid="7666474782093693667">"Tetapan"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Pilih nombor"</string>
- <string name="make_primary" msgid="5829291915305113983">"Ingat pilihan ini"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Tiada aplikasi ditemui untuk mengendalikan tindakan ini."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Tiada nama)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Akaun"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Padam bersih kerap dihubungi"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kenalan untuk dipaparkan"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Import/eksport"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/Eksport kenalan"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Import kenalan"</string>
<string name="menu_share" msgid="943789700636542260">"Kongsi"</string>
<string name="share_via" msgid="563121028023030093">"Kongsi gambar melalui"</string>
- <string name="share_error" msgid="948429331673358107">"Kenalan ini tidak boleh dikongsi."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nama"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Nama panggilan"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisasi"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Tapak web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Acara"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Hubungan"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Kumpulan"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Wujudkan kenalan di bawah akaun"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Buat kumpulan di bawah akaun"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Alih keluar kumpulan penyegerakan"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Tambah kumpulan segerak"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Lagi kumpulan..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Semua kenalan lain"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Semua kenalan"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Mengalih keluar \"<xliff:g id="GROUP">%s</xliff:g>\" daripada penyegerakan juga akan turut mengalih keluar sebarang kenalan tanpa kumpulan dari penyegerakan."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tablet sahaja, tidak disegerakkan"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Telefon sahaja, tidak disegerakkan"</string>
- <string name="call_custom" msgid="7756571794763171802">"Panggil <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Panggil nombor rumah"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Panggil nombor mudah alih"</string>
- <string name="call_work" msgid="5328785911463744028">"Panggil tempat kerja"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Panggil faks tempat kerja"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Panggil faks rumah"</string>
- <string name="call_pager" msgid="9003902812293983281">"Panggil alat kelui"</string>
- <string name="call_other" msgid="8563753966926932052">"Panggil"</string>
- <string name="call_callback" msgid="1910165691349426858">"Panggil nombor panggil balik"</string>
- <string name="call_car" msgid="3280537320306436445">"Panggil kereta"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Panggil nombor utama syarikat"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Panggil ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Panggil nombor utama"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Panggil faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Panggil radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Panggil telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Panggil TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Panggil telefon mudah alih tempat kerja"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Panggil alat kelui tempat kerja"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Panggil <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Panggil MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS ke <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS ke rumah"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS ke telefon mudah alih"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS tempat kerja"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS faks tempat kerja"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS ke faks rumah"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS alat kelui"</string>
- <string name="sms_other" msgid="806127844607642331">"Teks"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS ke nombor panggil balik"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS ke kereta"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS nombor utama syarikat"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS ke ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS ke nombor utama"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Faks teks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS ke radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS ke teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS ke TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS ke telefon mudah alih tempat kerja"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS alat kelui tempat kerja"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS ke <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS kepada MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mesej teks"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mel rumah"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mel telefon mudah alih"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mel tempat kerja"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mel"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mel <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mel"</string>
- <string name="map_home" msgid="1243547733423343982">"Lihat alamat rumah"</string>
- <string name="map_work" msgid="1360474076921878088">"Lihat alamat tempat kerja"</string>
- <string name="map_other" msgid="3817820803587012641">"Lihat alamat"</string>
- <string name="map_custom" msgid="6184363799976265281">"Lihat alamat <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Sembang menggunakan AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Sembang menggunakan Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Sembang menggunakan Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Sembang menggunakan Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Sembang menggunakan QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Sembang menggunakan Bual Google"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Sembang menggunakan ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Sembang menggunakan Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Sembang"</string>
<string name="audio_chat" msgid="2535716629358298691">"Sembang suara"</string>
<string name="video_chat" msgid="1872255818640336072">"Sembang video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Alamat"</string>
- <string name="postal_street" msgid="8133143961580058972">"Jalan"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Peti Surat"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Kawasan kejiranan"</string>
- <string name="postal_city" msgid="6597491300084895548">"Bandar"</string>
- <string name="postal_region" msgid="6045263193478437672">"Negeri"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Poskod"</string>
- <string name="postal_country" msgid="7638264508416368690">"Negara"</string>
- <string name="full_name" msgid="6602579550613988977">"Nama"</string>
- <string name="name_given" msgid="1687286314106019813">"Nama berian"</string>
- <string name="name_family" msgid="3416695586119999058">"Nama keluarga"</string>
- <string name="name_prefix" msgid="59756378548779822">"Awalan nama"</string>
- <string name="name_middle" msgid="8467433655992690326">"Nama tengah"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Akhiran nama"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nama berian fonetik"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Nama tengah fonetik"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Nama keluarga fonetik"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nama fonetik"</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>
@@ -409,7 +138,7 @@
<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="18022868169627979">"Lihat nama kenalan sebagai"</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>
@@ -426,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Tiada kenalan dipilih."</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>
@@ -440,30 +168,18 @@
<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="local_invisible_directory" msgid="6046691709127661065">"Lain-lain"</string>
<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="directory_search_label" msgid="1887759056597975053">"Direktori"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Semua kenalan"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Membuat salinan peribadi..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Semua kenalan"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Dibintangkan"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Peribadi"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Peribadikan"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Semua kenalan dengan nombor telefon"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kenalan"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Tentukan paparan peribadi"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Memuatkan…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Tetapan"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kenalan untuk dipaparkan"</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="hint_findContacts" msgid="1808681193458772072">"Cari kenalan"</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>
@@ -499,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Lihat kemas kini"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mel suara"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mel suara"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Main"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mel suara baru daripada <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Tidak dapat memainkan mel suara."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Menimbal…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Sedang mendapatkan mel suara…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Tidak dapat mengambil mel suara."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Baru"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Lebih lama"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Panggilan dengan mel suara sahaja"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Panggilan masuk sahaja"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Panggilan keluar sahaja"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Panggilan terlepas sahaja"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Tidak boleh bersambung kepada pelayan mel suara."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Tak boleh brsmbg kpd pelayan mel suara. Mel suara baru menunggu."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Sediakan mel suara anda."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio tidak tersedia."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Menyediakan"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Panggil mel suara"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"kelajuan paling perlahan"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Kelajuan perlahan"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Kelajuan biasa"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Kelajuan pantas"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Kelajuan paling pantas"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nama kumpulan"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Knln melalui NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Tunjuk panggilan keluar shj"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Tunjuk panggilan masuk shj"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Tunjuk panggilan terlepas shj"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tunjukkan mel suara sahaja"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Tunjukkan semua panggilan"</string>
- <string name="status_available" msgid="5586870015822828392">"Ada"</string>
- <string name="status_away" msgid="1838861100379804730">"Tiada"</string>
- <string name="status_busy" msgid="9147992455450257136">"Sibuk"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Mainkan mel suara"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Panggilan masuk"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Panggilan keluar"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Panggilan tidak dijawab"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Mel suara"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Tambah kenalan"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Lihat kenalan <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Panggil <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Hantar mesej teks kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mel suara belum didengar"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Hantar mesej kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Dail telefon <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Kenalan cepat untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Saya"</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>
@@ -566,10 +228,6 @@
<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="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Panggilan tidak dihantar"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Untuuk menyediakan mel suara, pergi ke Menu > Tetapan."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Untuk membuat panggilan ke mel suara, mula-mula matikan mod Pesawat."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksport fail pangkalan data"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Lagi pilihan"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Kembangkan atau runtuhkan medan nama"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Gambar. Pilih untuk menukar"</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index c6e214c..417e8da 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Personer"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Info"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Oppdat."</string>
<string name="searchHint" msgid="8482945356247760701">"Søk i kontakter"</string>
- <string name="menu_search" msgid="9147752853603483719">"Søk"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Se på kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Legg til som favoritt"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Fjern fra favoritter"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Rediger"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Slett"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiér"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plassér på startsiden"</string>
<string name="menu_call" msgid="3992595586042260618">"Ring kontakt"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Send SMS til kontakt"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Lagre"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Avbryt"</string>
<string name="menu_discard" msgid="6456087569315685632">"Forkast"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notater"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internett-anrop"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Firma"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Tittel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Opprett ny kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-post"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Lynmeldinger"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresse"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisasjon"</item>
<item msgid="7196592230748086755">"Notat"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Ingen kontakter."</string>
<string name="noGroups" msgid="8614664663561385253">"Ingen grupper."</string>
<string name="noAccounts" msgid="7768267764545265909">"Du må ha en konto for å opprette grupper."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Fant ingen kontakter."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Ingen kontakter med telefonnummer."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Det er ingen personer i denne gruppen."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Rediger gruppen for å legge til noen."</string>
<string name="savingContact" msgid="4075751076741924939">"Lagrer kontakt…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Lagrer viste grupper…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt lagret."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Kunne ikke lagre kontaktendringene."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Gruppe er lagret."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakter"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Ingen kontakter."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Ingen synlige kontakter."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Ingen favoritter."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Ingen kontakter i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakter i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Enkeltkontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakter i tilpasset visning"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Fant over <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Ingen kontakter"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 funnet"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alle kontakter"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritter"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoritter og alle kontakter"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Logg"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Send SMS-melding"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer før anrop"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Legg til kontakter"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Fjern fra anropslogg"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Tøm anropslogg"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Slett talepost"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Del talepost"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Anropsloggen er tom."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Tømme samtaleloggen?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Alle samtalelogger kommer til å slettes."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Tømmer anropsloggen …"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Fjerne ofte kontaktede personer?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Du fjerner listen over ofte kontaktede personer i Personer-appen og Telefon-appen, og tvinger e-postappene til å bli kjent med adresseinnstillingene fra grunnen av."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Fjerner ofte kontaktede personer"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Telefonsvarer"</string>
- <string name="unknown" msgid="740067747858270469">"Ukjent"</string>
- <string name="private_num" msgid="6374339738119166953">"Skjult nummer"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefonkiosk"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Bruk tastaturet for å ringe"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Ring for å legge til en samtale"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Henter fra SIM-kort…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakter på SIM-kort"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Du har ingen kontakter å vise. (Hvis du nettopp har lagt til en konto, kan det ta noen minutter å synkronisere kontaktene.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Du har ingen kontakter å vise."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Du har ingen kontakter å vise."\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto som du kan synkronisere til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Du har ingen kontakter å vise."\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller opprette en konto med kontakter du kan synkronisere til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Du har ingen kontakter å vise. (Hvis du akkurat har lagt til en konto, kan det ta noen minutter før kontaktene blir synkronisert.)"\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som du kan synkronisere til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Vis alternativer"</b></font>" for å endre hvilke kontakter som er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Du har ingen kontakter å vise. (Hvis du akkurat har lagt til en konto, kan det ta noen minutter før kontaktene blir synkronisert.)"\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som du kan synkronisere til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Vis alternativer"</b></font>" for å endre hvilke kontakter som er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å legge til en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Du har ingen kontakter å vise."\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som du kan synkronisere til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Du har ingen kontakter å vise."\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto du kan synkronisere til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Du har ingen kontakter å vise. (Hvis du akkurat har lagt til en konto, kan det ta noen minutter før kontaktene blir synkronisert.)"\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" og deretter på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som du kan synkronisere til nettbrettet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Vis alternativer"</b></font>" for å endre hvilke kontakter som er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Du har ingen kontakter å vise. (Hvis du akkurat har lagt til en konto, kan det ta noen minutter før kontaktene blir synkronisert.)"\n\n"Du legger til kontakter ved å trykke på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>", og deretter trykke på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Kontoer"</b></font>" for å legge til eller konfigurere en konto med kontakter som du kan synkronisere til telefonen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Vis alternativer"</b></font>" for å endre hvilke kontakter som er synlige"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å opprette en ny kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importér/eksportér"</b></font>" for å importere kontakter fra SD-kortet"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Du har ingen favoritter."\n\n"Slik legger du til en kontakt i favorittlisten:"\n\n" "<li>"Trykk på fanen "<b>"Kontakter"</b>" "\n</li>" "\n<li>"Trykk på kontakten du vil legge til i favoritter"\n</li>" "\n<li>"Trykk på stjernen ved siden av kontaktnavnet"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Bruk tonetastatur"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Gå tilbake til pågående samtale"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Legg til en samtale"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Samtaleinformasjon"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Kunne ikke lese informasjon for forespurt samtale."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Innkommende samtale"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Utgående samtale"</string>
- <string name="type_missed" msgid="2720502601640509542">"Tapt anrop"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Talepostkasse"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Innkommende samtaler"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Ofte kontaktet"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ofte oppringt"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Legg til «<xliff:g id="EMAIL">%s</xliff:g>» som kontakt?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"en"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"to"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tre"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"fire"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"fem"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seks"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sju"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"åtte"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"ni"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"stjerne"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"null"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"firkant"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"talepostkasse"</string>
- <string name="description_search_button" msgid="3660807558587384889">"søk"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"ring"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"tilbaketast"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"ring til"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontaktbilde"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"slett"</string>
<string name="description_plus_button" msgid="515164827856229880">"plussknapp"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Se kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Finner ikke lagringsplass."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Finner ikke SD-kort."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importér fra SIM-kort"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importér fra lagring"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportér til lagring"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Del synlige kontakter"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importer én VCard-fil"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importer flere vCard-filer"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importer alle vCard-filer"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Søker etter vCard-data i lagringsenheten …"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Søker etter vCard-data på SD-kortet …"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Lagringsenheten kunne ikke skannes. (Grunn: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD-kortet kan ikke skannes. (Grunn: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Inn-/ut-feil"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Ikke nok minne. Det er mulig at filen er for stor."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Kan ikke analysere vCard av uventet årsak."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formatet støttes ikke."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Kunne ikke importere vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Finner ingen vCard-fil på lagringsenheten."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Fant ingen vCard-fil på SD-kortet."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Kunne ikke hente metainformasjon for aktuell(e) vCard-fil(er)."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"En eller flere filer kan ikke importeres (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Ukjent feil."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Velg vCard-fil"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Bufrer"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Bufrer vCard for import til lokal, midlertidig lagring. Selve importen starter snart."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importerer <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importerer <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Kunne ikke lese vCard-data"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lesing av vCard-data avbrutt"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Import av vCard-filen <xliff:g id="FILENAME">%s</xliff:g> er fullført"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importeringen av <xliff:g id="FILENAME">%s</xliff:g> ble avbrutt"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> vil importeres snart."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Filen importeres snart."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Forespørselen om vCard-import ble avvist. Prøv på nytt senere."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> vil eksporteres snart."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Forespørselen om eksport av vCard ble avvist. Prøv på nytt senere."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksp. kontaktene?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Kontaktlisten din blir eksportert til: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Eksport mislyktes"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontaktdataene ble ikke eksportert."\n"Grunn: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Du har ikke noen kontakt som kan eksporteres."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"For mange vCard-filer på lagringsenheten"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD-kortet inneholder for mange vCard-filer."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Det obligatoriske filnavnet er for langt (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Eksportering av <xliff:g id="FILENAME">%s</xliff:g> er fullført."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Eksportering av <xliff:g id="FILENAME">%s</xliff:g> ble avbrutt."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Eksporterer kontaktdata"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Kontaktdataene dine eksporteres til: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Kunne ikke starte eksporteringen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Det oppsto en feil under eksporteringen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Kunne ikke hente databaseinformasjon."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Du har ingen kontakter som kan eksporteres. Hvis du har kontakter på nettbrettet, kan det hende at dataleverandøren din ikke tillater at kontaktene eksporteres fra nettbrettet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Du har ingen kontakter som kan eksporteres. Hvis du har kontakter på telefonen, kan det hende at dataleverandøren din ikke tillater at kontaktene eksporteres fra telefonen."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-oppretteren startet ikke som den skulle."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Kan ikke åpne «<xliff:g id="FILE_NAME">%s</xliff:g>»: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Vil du avbryte importen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vil du avbryte eksporten av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kunne ikke kansellere imp./eksp. av vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Navn på kontakter"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Legg til pause på 2 sek."</string>
- <string name="add_wait" msgid="3360818652790319634">"Legg til Vent"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Velg nummer"</string>
- <string name="call_settings" msgid="7666474782093693667">"Innstillinger"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Velg nummer"</string>
- <string name="make_primary" msgid="5829291915305113983">"Husk dette valget"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Det ble ikke funnet noen app som kan håndtere denne handlingen."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Uten navn)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Kontoer"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Fjern ofte kontaktede personer"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter i visning"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importér/eksportér"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Imp./eksp. kontakter"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importer kontakter"</string>
<string name="menu_share" msgid="943789700636542260">"Del"</string>
<string name="share_via" msgid="563121028023030093">"Del kontakt via"</string>
- <string name="share_error" msgid="948429331673358107">"Denne kontakten kan ikke deles."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Navn"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Kallenavn"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisering"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Nettsted"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Arrangementer"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relasjon"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupper"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Opprett kontakt under konto"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Opprett gruppe under konto"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Fjern synkronisert gruppe"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Legg til synkronisert gruppe"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Flere grupper…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alle andre kontakter"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alle kontaktene"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Hvis du fjerner «<xliff:g id="GROUP">%s</xliff:g>» fra synkroniseringen, fjernes også alle ugrupperte kontakter fra synkroniseringen."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Kun nettbrett (usynkronisert)"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Kun telefon (usynkronisert)"</string>
- <string name="call_custom" msgid="7756571794763171802">"Ring <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Ring (privat)"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Ring mobil"</string>
- <string name="call_work" msgid="5328785911463744028">"Ring (arbeid)"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Anrop faks (arbeid)"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Anrop faks (privat)"</string>
- <string name="call_pager" msgid="9003902812293983281">"Ring personsøker"</string>
- <string name="call_other" msgid="8563753966926932052">"Ring"</string>
- <string name="call_callback" msgid="1910165691349426858">"Ring tilbakering"</string>
- <string name="call_car" msgid="3280537320306436445">"Ring (bil)"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Ring firma (sentralbord)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Ring ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Ring hovednummer"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Ring til faksnummer"</string>
- <string name="call_radio" msgid="8296755876398357063">"Ring (radio)"</string>
- <string name="call_telex" msgid="2223170774548648114">"Ring teleks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Ring teksttelefon"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Ring arbeidsmobil"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Ring arbeidspersonsøker"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Ring <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Ring MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Send SMS (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="sms_home" msgid="7524332261493162995">"Send SMS (privat)"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Send SMS (mobil)"</string>
- <string name="sms_work" msgid="2269624156655267740">"Send SMS (arbeid)"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Send SMS til faks (arbeid)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Send SMS til faks (privat)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Send SMS (personsøker)"</string>
- <string name="sms_other" msgid="806127844607642331">"Send tekstmelding"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Send SMS til tilbakeringer"</string>
- <string name="sms_car" msgid="7444227058437359641">"Send SMS (bil)"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Send SMS til firma (sentralbord)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Send SMS til ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Send SMS til hovednummer"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Send tekstmelding til faksnummer"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Send SMS (radio)"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Send SMS til teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Send SMS til teksttelefon"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Send SMS til arbeidsmobil"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Send SMS til arbeidspersonsøker"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Send SMS til <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Send MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Tekstmelding"</string>
- <string name="email_home" msgid="8573740658148184279">"Send e-post (privat)"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Skriv e-post (mobil)"</string>
- <string name="email_work" msgid="2807430017302722689">"Send e-post (arbeid)"</string>
- <string name="email_other" msgid="3454004077967657109">"E-post"</string>
- <string name="email_custom" msgid="7548003991586214105">"Send e-post (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="email" msgid="5668400997660065897">"E-post"</string>
- <string name="map_home" msgid="1243547733423343982">"Vis privat adresse"</string>
- <string name="map_work" msgid="1360474076921878088">"Vis jobbadresse"</string>
- <string name="map_other" msgid="3817820803587012641">"Vis adresse"</string>
- <string name="map_custom" msgid="6184363799976265281">"Vis <xliff:g id="CUSTOM">%s</xliff:g> adresse"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Nettprat med AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Nettprat med Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Nettprat med Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Nettprat med Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Nettprat med QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Nettprat med Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Nettprat med ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Nettprat med Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Nettprat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Taleprat"</string>
<string name="video_chat" msgid="1872255818640336072">"Videonettprat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresse"</string>
- <string name="postal_street" msgid="8133143961580058972">"Gate"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postboks"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Nabolag"</string>
- <string name="postal_city" msgid="6597491300084895548">"Poststed"</string>
- <string name="postal_region" msgid="6045263193478437672">"Poststed"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postnummer"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Navn"</string>
- <string name="name_given" msgid="1687286314106019813">"Fornavn"</string>
- <string name="name_family" msgid="3416695586119999058">"Etternavn"</string>
- <string name="name_prefix" msgid="59756378548779822">"Første del av navn"</string>
- <string name="name_middle" msgid="8467433655992690326">"Mellomnavn"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Navnesuffiks"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetisk fornavn"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetisk mellomnavn"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetisk etternavn"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetisk navn"</string>
<string name="connections" msgid="8098440723172028350">"Tilknytninger"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Legg til tilknytning"</string>
<string name="recent" msgid="2659189233141493004">"Nylige"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sorter listen etter"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Fornavn"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Etternavn"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Vis kontaktnavn som"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Se kontaktnavn"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Fornavn først"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Etternavn først"</string>
<string name="take_photo" msgid="7496128293167402354">"Ta bilde"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Vis alle"</string>
<string name="menu_select_all" msgid="621719255150713545">"Marker alle"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Fjern alle markeringer"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Ingen kontakter valgt."</string>
<string name="add_field" msgid="2384260056674995230">"Legg til et annet felt"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Legg til ny"</string>
<string name="add_organization" msgid="7311893231158291197">"Legg til organisasjon"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"ikke slått sammen"</item>
<item quantity="other" msgid="425683718017380845">"sammenslått fra <xliff:g id="COUNT">%0$d</xliff:g> kilder"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Andre"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Slå sammen gjeldende kontakt med valgt kontakt?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Bytt til redigering av gjeldende kontakt? Informasjonen du har lagt til så langt blir kopiert."</string>
<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="directory_search_label" msgid="1887759056597975053">"Katalog"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alle kontakter"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Oppretter personlig kopi …"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alle kontakter"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Stjernemerket"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Egendefinert"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Tilpass"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alle kontakter med telefonnumre"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definer tilpasset visning"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Laster inn …"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Innstillinger"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakter i visning"</string>
<string name="menu_settings" msgid="377929915873428211">"Innstillinger"</string>
<string name="menu_help" msgid="5123887102216637725">"Hjelp"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Vis grupper"</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="hint_findContacts" msgid="1808681193458772072">"Finn kontakter"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonnummer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Legg til i kontakter"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Legg til kontakt"</string>
@@ -497,61 +215,7 @@
<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">"Konfigurer profilen min"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Tast inn personens navn"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Se oppdateringer"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Talepostkasse"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> talemeldinger"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spill av"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nye talemeldinger fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Kunne ikke spille av talemelding."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Bufrer …"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Henter talepost …"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Kunne ikke hente talepost."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nytt"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Eldre"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Bare anrop som gikk til talepostkasse"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Bare innkommende anrop"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Bare utgående anrop"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Bare ubesvarte anrop"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Kan ikke koble til taleposttjener."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Kan ikke koble til taleposttjener. Nye talemeldinger venter."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Konfigurer talepost."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Lyd er ikke tilgjengelig."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurer"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring talepostkasse"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Laveste hastighet"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lav hastighet"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal hastighet"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Høy hastighet"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Høyeste hastighet"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Gruppens navn"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt mottatt per NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Vis bare utgående"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Vis bare innkommende"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Vis bare tapte"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis bare talemeldinger"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle samtaler"</string>
- <string name="status_available" msgid="5586870015822828392">"Tilgjengelig"</string>
- <string name="status_away" msgid="1838861100379804730">"Borte"</string>
- <string name="status_busy" msgid="9147992455450257136">"Opptatt"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Spill av talemelding"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Innkommende samtale"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Utgående samtale"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Tapt anrop"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Talepostkasse"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Legg til kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Se kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Ring til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Send tekstmelding til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ikke avspilt talepost"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Send melding til <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Hurtigkontakt for <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Meg"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Behold lokalt"</string>
<string name="add_account" msgid="8201790677994503186">"Legg til konto"</string>
<string name="add_new_account" msgid="5748627740680940264">"Legg til ny konto"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Anrop ikke utført"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Du konfigurerer talepost ved å gå til Meny &gt Innstillinger"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Du må slå av flymodus før du kan sjekke talepostkassen."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksporter databasefilene"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Flere alternativer"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Vis eller skjul navnefelt"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Bilde. Velg for å endre"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 4cf4e9b..3be3f76 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefoon"</string>
<string name="people" msgid="1048457247435785074">"Personen"</string>
<string name="contactsList" msgid="8661624236494819731">"Contacten"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacten"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Over"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Updates"</string>
<string name="searchHint" msgid="8482945356247760701">"Contacten zoeken"</string>
- <string name="menu_search" msgid="9147752853603483719">"Zoeken"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nieuw contact"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Contact weergeven"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Toevoegen aan favorieten"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Uit favorieten verwijderen"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Bewerken"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Verwijderen"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiëren"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Op startscherm plaatsen"</string>
<string name="menu_call" msgid="3992595586042260618">"Contact bellen"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Sms\'en naar contact"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Gereed"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Annuleren"</string>
<string name="menu_discard" msgid="6456087569315685632">"Annuleren"</string>
- <string name="label_notes" msgid="8337354953278341042">"Opmerkingen"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetoproep"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Bedrijf"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Nieuw contact maken"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefoon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mailadres"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adres"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisatie"</item>
<item msgid="7196592230748086755">"Opmerking"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Geen contacten."</string>
<string name="noGroups" msgid="8614664663561385253">"Geen groepen."</string>
<string name="noAccounts" msgid="7768267764545265909">"U heeft een account nodig om groepen te maken."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Kan geen overeenkomende contacten vinden."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Geen contacten met telefoonnummers."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Geen personen in deze groep."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Bewerk de groep om leden toe te voegen."</string>
<string name="savingContact" msgid="4075751076741924939">"Contact opslaan..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Weergaveopties opslaan..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contact opgeslagen."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Kan wijzigingen in contact niet opslaan."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Groep opgeslagen."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contact"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contacten"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Geen contacten."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Geen zichtbare contacten."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Geen favorieten."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Geen contacten in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contacten in <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Eén contact"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contacten in aangepaste weergave"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Meer dan <xliff:g id="COUNT">%d</xliff:g> gevonden."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Geen contacten"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 gevonden"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alle contacten"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Groepen"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoriet"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favorieten en alle contacten"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefoon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Gesprek"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Sms verzenden"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nummer bewerken voor bellen"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Toevoegen aan contacten"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Verwijderen uit Gesprekken"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Gesprekken wissen"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Voicemail verwijderen"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Voicemail delen"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Gesprekken is leeg"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Oproeplog wissen?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Al uw oproepgegevens worden verwijderd."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Oproeplogboek wissen..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Lijst met regelmatige contacten wissen?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"U wist de lijst met contacten waarmee u regelmatig contact opneemt in de apps Personen en Telefoon, en e-mailapps moeten uw voorkeursadressen weer opnieuw leren."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Regelmatige contacten wissen..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
- <string name="unknown" msgid="740067747858270469">"Onbekend"</string>
- <string name="private_num" msgid="6374339738119166953">"Privénummer"</string>
- <string name="payphone" msgid="4864313342828942922">"Betaaltelefoon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Toetsen gebruiken om te bellen"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Oproep toevoegen"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Laden vanaf SIM-kaart..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contacten op SIM-kaart"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"U heeft geen contacten om weer te geven. Als u zojuist een account heeft toegevoegd, kan het enkele minuten duren voordat de contacten zijn gesynchroniseerd."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"U heeft geen contacten om weer te geven."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"U heeft geen contacten om weer te geven."\n\n"Voor het toevoegen van contacten raakt u "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" aan en vervolgens een van deze opties:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of in te stellen met contacten die u kunt synchroniseren met de tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om het contact van uw sim-kaart of SD-kaart te importeren"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"U heeft geen contacten om weer te geven."\n\n"Voor het toevoegen van contacten raakt u "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" aan en vervolgens een van deze opties:"\n\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of in te stellen met contacten die u kunt synchroniseren met de telefoon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om het contact van uw sim-kaart of SD-kaart te importeren"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"U heeft geen contacten om weer te geven. (Als u net een account heeft toegevoegd, kan het enkele minuten duren voordat de contacten zijn gesynchroniseerd.)"\n\n"Als u contacten wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en raakt u de volgende opties aan:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of te configureren met contacten die u kunt synchroniseren met de tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Weergaveopties"</b></font>" om de zichtbaarheid van contacten te wijzigen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact toe te voegen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om contacten van uw sim- of SD-kaart te importeren"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"U heeft geen contacten om weer te geven. (Als u net een account heeft toegevoegd, kan het enkele minuten duren voordat de contacten zijn gesynchroniseerd.)"\n\n"Als u contacten wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en raakt u de volgende opties aan:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of te configureren met contacten die u kunt synchroniseren met de telefoon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Weergaveopties"</b></font>" om de zichtbaarheid van contacten te wijzigen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact toe te voegen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om contacten van uw sim- of SD-kaart te importeren"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"U heeft geen contacten om weer te geven."\n\n"Voor het toevoegen van contacten raakt u "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" aan en vervolgens een van deze opties:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of in te stellen met contacten die u kunt synchroniseren met de tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om contacten te importeren van uw SD-kaart"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"U heeft geen contacten om weer te geven."\n\n"Voor het toevoegen van contacten raakt u "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" aan en vervolgens een van deze opties:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of in te stellen met contacten die u kunt synchroniseren met de telefoon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om het contact te importeren van uw SD-kaart"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"U heeft geen contacten om weer te geven. (Als u net een account heeft toegevoegd, kan het enkele minuten duren voordat de contacten zijn gesynchroniseerd.)"\n\n"Als u contacten wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en raakt u de volgende opties aan:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of te configureren met contacten die u kunt synchroniseren met de tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Weergaveopties"</b></font>" om de zichtbaarheid van contacten te wijzigen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om contacten van uw SD-kaart te importeren"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"U heeft geen contacten om weer te geven. (Als u net een account heeft toegevoegd, kan het enkele minuten duren voordat de contacten zijn gesynchroniseerd.)"\n\n"Als u contacten wilt toevoegen, drukt u op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en raakt u de volgende opties aan:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Accounts"</b></font>" om een account toe te voegen of te configureren met contacten die u kunt synchroniseren met de telefoon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Weergaveopties"</b></font>" om de zichtbaarheid van contacten te wijzigen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importeren/exporteren"</b></font>" om contacten van uw SD-kaart te importeren"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"U heeft geen favorieten."\n\n"U kunt als volgt een contact toevoegen aan uw lijst met favorieten:"\n\n" "<li>"Raak het tabblad \'"<b>"Contacten"</b>"\' aan."\n</li>" "\n<li>"Raak het contact aan dat u wilt toevoegen aan uw favorieten."\n</li>" "\n<li>"Raak de ster aan die wordt weergegeven naast de naam van het contact."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Toetsen voor toonkiezen gebruiken"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Terug naar actief gesprek"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Oproep toevoegen"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Gespreksgegevens"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Kan geen gegevens over het gevraagde gesprek vinden."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Inkomende oproep"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Uitgaand gesprek"</string>
- <string name="type_missed" msgid="2720502601640509542">"Oproep gemist"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Inkomende oproepen"</string>
<string name="callBack" msgid="5498224409038809224">"Terugbellen"</string>
<string name="callAgain" msgid="3197312117049874778">"Opnieuw bellen"</string>
<string name="returnCall" msgid="8171961914203617813">"Terugbellen"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Regelmatig contact"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Vaak gebeld"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Voeg \"<xliff:g id="EMAIL">%s</xliff:g>\" toe aan contactpersonen?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"één"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"twee"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"drie"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"vier"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"vijf"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"zes"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"zeven"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"acht"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"negen"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ster"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nul"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"hekje"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"voicemail"</string>
- <string name="description_search_button" msgid="3660807558587384889">"zoeken"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"bellen"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nummer om te bellen"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"contactfoto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"verwijderen"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Contact weergeven"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Er is geen opslag gevonden."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Geen SD-kaart gevonden."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importeren van SIM-kaart"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importeren uit opslag"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exporteren naar opslag"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Zichtbare contacten delen"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Eén vCard-bestand importeren"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Meerdere vCard-bestanden importeren"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Alle vCard-bestanden importeren"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Zoeken naar vCard-gegevens in opslag..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Zoeken naar vCard-gegevens op SD-kaart..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"De opslag kan niet worden gescand. (Reden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"De SD-kaart kan niet worden gescand. (Reden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\')"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fout"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Onvoldoende geheugen. Het bestand is mogelijk te groot."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Kan vCard om onverwachte reden niet parseren."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"De indeling wordt niet ondersteund."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Kan vCard niet importeren."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Geen vCard-bestand gevonden in opslag."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Geen vCard-bestand gevonden op SD-kaart."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Kan metagegevens niet verzamelen uit vCard-bestand(en)."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Kan een of meer bestanden niet importeren (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Onbekende fout."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard-bestand kiezen"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"In cachegeheugen opslaan"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Bezig met opslaan van vCard(s) in de lokale tijdelijke opslag. Het daadwerkelijke importeren begint binnenkort."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importeren <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> importeren"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Kan vCard-gegevens niet lezen"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Lezen van vCard-gegevens geannuleerd"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Importeren van vCard <xliff:g id="FILENAME">%s</xliff:g> voltooid"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importeren van <xliff:g id="FILENAME">%s</xliff:g> geannuleerd"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> wordt binnenkort geïmporteerd."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Het bestand wordt binnenkort geïmporteerd."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Verzoek voor vCard-import is geweigerd. Probeer het later opnieuw."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> wordt binnenkort geëxporteerd."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Verzoek voor vCard-export is geweigerd. Probeer het later opnieuw."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contact"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Contacten export.?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Uw lijst met contacten wordt geëxporteerd naar het bestand: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Kan niet exporteren"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"De contactgegevens zijn niet geëxporteerd."\n"Reden: \'<xliff:g id="FAIL_REASON">%s</xliff:g>\'"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Er is geen contact dat kan worden geëxporteerd."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Er staan te veel vCard-bestanden in de opslag."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Er staan te veel vCard-bestanden op de SD-kaart."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Vereiste bestandsnaam is te lang (\'<xliff:g id="FILENAME">%s</xliff:g>\')."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exporteren van <xliff:g id="FILENAME">%s</xliff:g> voltooid."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exporteren van <xliff:g id="FILENAME">%s</xliff:g> geannuleerd."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Contactgegevens exporteren"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Uw contactgegevens worden geëxporteerd naar: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Kan het exportprogramma niet starten: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Er is een fout opgetreden tijdens het exporteren: \'<xliff:g id="EXACT_REASON">%s</xliff:g>\'."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Kan databasegegevens niet ophalen."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Er zijn geen exporteerbare contacten. Als u wel contacten op uw tablet heeft opgeslagen, staat uw gegevensprovider het exporteren van contacten van de tablet mogelijk niet toe."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Er zijn geen exporteerbare contacten. Als u wel contacten op uw telefoon heeft opgeslagen, staat uw gegevensprovider het exporteren van contacten van de telefoon mogelijk niet toe."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"De vCard-editor is niet correct gestart."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Kan \'<xliff:g id="FILE_NAME">%s</xliff:g>\' niet openen: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Import van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Export van <xliff:g id="FILENAME">%s</xliff:g> annuleren?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Kan vCard-import/export niet annuleren"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Namen van uw contacten"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pauze van 2 seconden toevoegen"</string>
- <string name="add_wait" msgid="3360818652790319634">"Wachten toevoegen"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Nummer kiezen"</string>
- <string name="call_settings" msgid="7666474782093693667">"Instellingen"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Nummer kiezen"</string>
- <string name="make_primary" msgid="5829291915305113983">"Deze keuze onthouden"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Er is geen app gevonden om deze actie uit te voeren."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Geen naam)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Accounts"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Regelmatige contacten wissen"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Zichtbare contacten"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importeren/exporteren"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Contacten importeren/exporteren"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Contacten importeren"</string>
<string name="menu_share" msgid="943789700636542260">"Delen"</string>
<string name="share_via" msgid="563121028023030093">"Contact delen via"</string>
- <string name="share_error" msgid="948429331673358107">"Dit contact kan niet worden gedeeld."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Naam"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Bijnaam"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisatie"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Afspraken"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relatie"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Groepen"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Contact in account maken"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Groep in account maken"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Synchronisatiegroep verwijderen"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Synchronisatiegroep toevoegen"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Meer groepen…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alle andere contacten"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alle contacten"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Als u \'<xliff:g id="GROUP">%s</xliff:g>\' verwijdert uit de synchronisatie, worden ook contacten die niet bij een groep horen uit de synchronisatie verwijderd."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Alleen tablet, niet gesynchroniseerd"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Alleen voor telefoon, niet gesynchroniseerd"</string>
- <string name="call_custom" msgid="7756571794763171802">"<xliff:g id="CUSTOM">%s</xliff:g> bellen"</string>
- <string name="call_home" msgid="1990519474420545392">"Bellen naar huis"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Bellen naar mobiel"</string>
- <string name="call_work" msgid="5328785911463744028">"Bellen naar werk"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Bellen naar fax werk"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Bellen naar huisfax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Bellen naar pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Bellen"</string>
- <string name="call_callback" msgid="1910165691349426858">"Bellen naar terugbelnummer"</string>
- <string name="call_car" msgid="3280537320306436445">"Bellen naar autotelefoon"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Bellen naar hoofdkantoor"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Bellen naar ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Bellen naar algemeen nummer"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Fax bellen"</string>
- <string name="call_radio" msgid="8296755876398357063">"Bellen naar radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Telex bellen"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Tekststelefoon bellen"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Bellen naar mobiel werk"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Bellen naar pager werk"</string>
- <string name="call_assistant" msgid="2141641383068514308">"<xliff:g id="ASSISTANT">%s</xliff:g> bellen"</string>
- <string name="call_mms" msgid="6274041545876221437">"Bellen via MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Sms\'en naar <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Sms\'en naar huis"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Sms\'en naar mobiel"</string>
- <string name="sms_work" msgid="2269624156655267740">"Sms\'en naar werk"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Sms\'en naar fax werk"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Sms\'en naar huisfax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Sms\'en naar pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Sms\'en"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Sms\'en naar terugbelnummer"</string>
- <string name="sms_car" msgid="7444227058437359641">"Sms\'en naar autotelefoon"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Sms\'en naar hoofdkantoor"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Sms\'en naar ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Sms\'en naar algemeen nummer"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Fax sms\'en"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Sms\'en naar radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Sms\'en naar telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Sms\'en naar teksttelefoon"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Sms\'en naar mobiel werk"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Sms\'en naar werkpager"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Sms\'en naar <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Sms\'en via MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Sms"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mailen naar huis"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mailen naar mobiel"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mailen naar werk"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mailadres <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Thuisadres weergeven"</string>
- <string name="map_work" msgid="1360474076921878088">"Werkadres weergeven"</string>
- <string name="map_other" msgid="3817820803587012641">"Adres weergeven"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> adres weergeven"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatten via AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatten via Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatten via Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatten via Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatten via QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatten via Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatten via ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatten via Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Voicechat"</string>
<string name="video_chat" msgid="1872255818640336072">"Videochat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adres"</string>
- <string name="postal_street" msgid="8133143961580058972">"Straat"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postbus"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Wijk"</string>
- <string name="postal_city" msgid="6597491300084895548">"Plaats"</string>
- <string name="postal_region" msgid="6045263193478437672">"Staat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postcode"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Naam"</string>
- <string name="name_given" msgid="1687286314106019813">"Roepnaam"</string>
- <string name="name_family" msgid="3416695586119999058">"Achternaam"</string>
- <string name="name_prefix" msgid="59756378548779822">"Voorvoegsel"</string>
- <string name="name_middle" msgid="8467433655992690326">"Tweede voornaam"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Achtervoegsel van naam"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetische roepnaam"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetische tweede voornaam"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetische achternaam"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetisch gespelde naam"</string>
<string name="connections" msgid="8098440723172028350">"Connecties"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Connectie toevoegen"</string>
<string name="recent" msgid="2659189233141493004">"Recent"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Lijst sorteren op"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Roepnaam"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Achternaam"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Contactnamen weergeven als"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Contactnamen weergeven"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Roepnaam eerst"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Achternaam eerst"</string>
<string name="take_photo" msgid="7496128293167402354">"Foto maken"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Alles weergeven"</string>
<string name="menu_select_all" msgid="621719255150713545">"Alles selecteren"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Selectie ongedaan maken"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Geen contacten geselecteerd."</string>
<string name="add_field" msgid="2384260056674995230">"Nog een veld toevoegen"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Nieuw toevoegen"</string>
<string name="add_organization" msgid="7311893231158291197">"Organisatie toevoegen"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"niet samengevoegd"</item>
<item quantity="other" msgid="425683718017380845">"samengevoegd uit <xliff:g id="COUNT">%0$d</xliff:g> bronnen"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Overig"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Wilt u het huidige contact samenvoegen met het geselecteerde contact?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Wilt u overschakelen naar het bewerken van het geselecteerde contact? Gegevens die u tot nu toe heeft ingevoerd, worden gekopieerd."</string>
<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="directory_search_label" msgid="1887759056597975053">"Directory"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alle contacten"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Een persoonlijke kopie maken..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alle contacten"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Met ster"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Aangepast"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Aanpassen"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alle contacten met telefoonnummers"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contacten"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Aangepaste weergave definiëren"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Laden..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Instellingen"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Zichtbare contacten"</string>
<string name="menu_settings" msgid="377929915873428211">"Instellingen"</string>
<string name="menu_help" msgid="5123887102216637725">"Help"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Weergaveopties"</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="hint_findContacts" msgid="1808681193458772072">"Contacten vinden"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefoonnummer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Toevoegen aan contacten"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Aan contact toevoegen"</string>
@@ -471,7 +189,7 @@
<string name="social_widget_label" msgid="6378905543028924592">"Contacten"</string>
<string name="social_widget_loading" msgid="5327336597364074608">"Laden..."</string>
<string name="contacts_unavailable_create_contact" msgid="7014525713871959208">"Een nieuw contact maken"</string>
- <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Aanmelden bij een account"</string>
+ <string name="contacts_unavailable_add_account" msgid="7911101713860139754">"Inloggen bij een account"</string>
<string name="contacts_unavailable_import_contacts" msgid="4957393255392437529">"Contacten importeren"</string>
<string name="create_group_dialog_title" msgid="6874527142828424475">"Nieuwe groep maken"</string>
<string name="create_group_item_label" msgid="4411981763169654825">"Nieuwe groep maken"</string>
@@ -497,61 +215,7 @@
<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">"Mijn profiel instellen"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Typ de naam van de persoon"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Updates bekijken"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> voicemails"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Afspelen"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nieuwe voicemail van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Kan voicemail niet afspelen."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"In buffer opslaan…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Voicemail ophalen…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Kan voicemail niet ophalen."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nieuw"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Ouder"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Alleen oproepen met voicemail"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Alleen inkomende oproepen"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Alleen uitgaande oproepen"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Alleen gemiste oproepen"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Kan geen verbinding maken met de voicemailserver."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Kan niet verbinden met voicemailservers. Er is nieuwe voicemail."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Stel uw voicemail in."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Audio niet beschikbaar."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Instellen"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Bellen met voicemail"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Laagste snelheid"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Lage snelheid"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normale snelheid"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Hoge snelheid"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Hoogste snelheid"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Naam van de groep"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contact via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Alleen uitgaand weergeven"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Alleen inkomend weergeven"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Alleen gemist weergeven"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Alleen voicemails weergeven"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle oproepen weergeven"</string>
- <string name="status_available" msgid="5586870015822828392">"Beschikbaar"</string>
- <string name="status_away" msgid="1838861100379804730">"Afwezig"</string>
- <string name="status_busy" msgid="9147992455450257136">"Bezet"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Voicemail afspelen"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Inkomende oproep"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Uitgaande oproep"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Gemiste oproep"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Voicemail"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Contact toevoegen"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Contact <xliff:g id="NAME">%1$s</xliff:g> bekijken"</string>
- <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> bellen"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Sms verzenden naar <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Niet-beluisterde voicemail"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Bericht verzenden naar <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Telefoon van <xliff:g id="NAME">%1$s</xliff:g> bellen"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Snelcontact voor <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ik"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Lokaal opslaan"</string>
<string name="add_account" msgid="8201790677994503186">"Account toevoegen"</string>
<string name="add_new_account" msgid="5748627740680940264">"Nieuw account toevoegen"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Oproep niet uitgevoerd"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Voor het instellen van voicemail, gaat u naar \'Menu\' > \'Instellingen\'."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Databasebestanden exporteren"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Meer opties"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Naamvelden uitvouwen of samenvouwen"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Foto. Selecteer om te wijzigen"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e76e9a2..4f46496 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Osoby"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Informacje"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Aktualizacje"</string>
<string name="searchHint" msgid="8482945356247760701">"Przeszukuj kontakty"</string>
- <string name="menu_search" msgid="9147752853603483719">"Szukaj"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nowy kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Wyświetl kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Dodaj do ulubionych"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Usuń z ulubionych"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Edytuj"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Usuń"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiuj"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umieść na ekranie głównym"</string>
<string name="menu_call" msgid="3992595586042260618">"Zadzwoń do kontaktu"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Wyślij tekst do kontaktu"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Gotowe"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Anuluj"</string>
<string name="menu_discard" msgid="6456087569315685632">"Odrzuć"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notatki"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Rozmowa internetowa"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Firma"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Stanowisko"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Utwórz nowy kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Komunikatory"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adres"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizacja"</item>
<item msgid="7196592230748086755">"Notatka"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Brak kontaktów"</string>
<string name="noGroups" msgid="8614664663561385253">"Brak grup."</string>
<string name="noAccounts" msgid="7768267764545265909">"Do tworzenia grup niezbędne jest konto."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nie znaleziono pasujących kontaktów."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Brak kontaktów z numerami telefonów"</string>
<string name="emptyGroup" msgid="7502116218697177370">"Brak osób w grupie"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Aby dodać członków, zmodyfikuj grupę."</string>
<string name="savingContact" msgid="4075751076741924939">"Trwa zapisywanie kontaktu..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Trwa zapisywanie opcji wyświetlania..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt został zapisany."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nie można zapisać zmian kontaktu."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupa została zapisana."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Brak kontaktów"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Brak widocznych kontaktów"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Brak ulubionych"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Brak kontaktów w grupie <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakty na koncie <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Jeden kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakty w widoku niestandardowym"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Znaleziono więcej niż <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Brak kontaktów"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Znaleziono: 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Wszystkie kontakty"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupy"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Ulubione"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Ulubione i wszystkie kontakty"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Rejestr"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Wyślij wiadomość tekstową"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edytuj numer przed nawiązaniem połączenia"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj do kontaktów"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Usuń z rejestru połączeń"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Wyczyść rejestr połączeń"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Usuń pocztę głosową"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Udostępnij pocztę głosową"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Rejestr połączeń jest pusty."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Usunąć rejestr połączeń?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Wszystkie dane połączeń zostaną usunięte."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Czyszczenie rejestru połączeń…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Wyczyścić częste kontakty?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Wyczyścisz listę częstych kontaktów w aplikacjach Osoby i Telefon. Aplikacje pocztowe będą musiały od nowa poznawać Twoje preferencje adresowe."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Czyszczę częste kontakty…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"Numer MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Poczta głosowa"</string>
- <string name="unknown" msgid="740067747858270469">"Nieznane"</string>
- <string name="private_num" msgid="6374339738119166953">"Numer prywatny"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefon płatny"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Wybierz numer za pomocą klawiatury"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Dodaj połączenie"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Wczytywanie z karty SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakty z karty SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nie masz żadnych kontaktów do wyświetlenia (jeśli konto zostało dopiero dodane, synchronizacja kontaktów może potrwać kilka minut)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nie masz żadnych kontaktów do wyświetlenia."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nie masz żadnych kontaktów do wyświetlenia."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można zsynchronizować z tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby importować kontakty z karty SIM lub SD."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nie masz żadnych kontaktów do wyświetlenia."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można zsynchronizować z telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby importować kontakty z karty SIM lub SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nie masz żadnych kontaktów do wyświetlenia. (Jeśli konto zostało dodane przed chwilą, ich synchronizacja może potrwać kilka minut)."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można synchronizować z tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcje wyświetlania"</b></font>", aby zmienić widoczne typy kontaktów;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby zaimportować kontakty z karty SIM lub SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nie masz żadnych kontaktów do wyświetlenia. (Jeśli konto zostało dodane przed chwilą, ich synchronizacja może potrwać kilka minut)."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można synchronizować z telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcje wyświetlania"</b></font>", aby zmienić widoczne typy kontaktów;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby zaimportować kontakty z karty SIM lub SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nie masz żadnych kontaktów do wyświetlenia."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można zsynchronizować z tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby importować kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nie masz żadnych kontaktów do wyświetlenia."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można zsynchronizować z telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby importować kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nie masz żadnych kontaktów do wyświetlenia. (Jeśli konto zostało dodane przed chwilą, ich synchronizacja może potrwać kilka minut)."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można synchronizować z tabletem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcje wyświetlania"</b></font>", aby zmienić widoczne typy kontaktów;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby zaimportować kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nie masz żadnych kontaktów do wyświetlenia. (Jeśli konto zostało dodane przed chwilą, ich synchronizacja może potrwać kilka minut)."\n\n"Aby dodać kontakty, dotknij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", a następnie dotknij:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konta"</b></font>", aby dodać lub skonfigurować konto zawierające kontakty, które można synchronizować z telefonem;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opcje wyświetlania"</b></font>", aby zmienić widoczne typy kontaktów;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>", aby utworzyć nowy kontakt od początku;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj/eksportuj"</b></font>", aby zaimportować kontakty z karty SD."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nie masz żadnych ulubionych kontaktów."\n\n"Aby dodać kontakt do listy ulubionych:"\n\n" "<li>"Dotknij karty "<b>"Kontakty"</b>"."\n</li>" "\n<li>"Dotknij kontaktu, który chcesz dodać do ulubionych."\n</li>" "\n<li>"Dotknij ikony gwiazdki obok nazwy kontaktu."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Użyj klawiatury tonowej"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Powrót do aktywnego połączenia"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj połączenie"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Szczegóły połączenia"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nie można odczytać szczegółów żądanego połączenia."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Połączenie"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Połączenie wychodzące"</string>
- <string name="type_missed" msgid="2720502601640509542">"Nieodebrane połączenia"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Poczta głosowa"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Połączenia przychodzące"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Częste kontakty"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Częste połączenia"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Czy dodać adres „<xliff:g id="EMAIL">%s</xliff:g>” do kontaktów?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"jeden"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dwa"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trzy"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"cztery"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"pięć"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sześć"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"siedem"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"osiem"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"dziewięć"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"gwiazdka"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"funt"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"poczta głosowa"</string>
- <string name="description_search_button" msgid="3660807558587384889">"szukaj"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"wybierz numer"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numer do wybrania"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"zdjęcie kontaktu"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"usuń"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Wyświetl kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nie znaleziono nośnika."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nie znaleziono karty SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importuj z karty SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importuj z nośnika"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Eksportuj na nośnik"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Udostępnij widoczne kontakty"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importuj jeden plik vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importuj wiele plików vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importuj wszystkie pliki vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Wyszukiwanie danych vCard na nośniku…"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Wyszukiwanie danych vCard na karcie SD…"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Nie można przejrzeć nośnika. (Przyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Nie można przejrzeć karty SD. (Przyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Błąd wejścia/wyjścia"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Za mało pamięci. Plik może być zbyt duży."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Nie można przeanalizować pliku vCard z nieoczekiwanego powodu."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Format nie jest obsługiwany."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Nie można zaimportować pliku vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Na nośniku nie znaleziono żadnego pliku vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Na karcie SD nie znaleziono żadnego pliku vCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Nie można zebrać metainformacji z podanych plików vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Nie można zaimportować co najmniej jednego pliku (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Nieznany błąd."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Wybierz plik vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Buforowanie"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Trwa buforowanie plików vCard w lokalnym obszarze tymczasowym. Właściwy import rozpocznie się za chwilę."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importowanie <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importowanie <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nie można odczytać danych vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Anulowano odczyt danych kart vCard"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Zakończono importowanie pliku vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Anulowano importowanie pliku <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Plik <xliff:g id="FILENAME">%s</xliff:g> zostanie za chwilę zaimportowany."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Plik zostanie za chwilę zaimportowany."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Żądanie importu danych vCard zostało odrzucone. Spróbuj ponownie później."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Plik <xliff:g id="FILENAME">%s</xliff:g> zostanie za chwilę wyeksportowany."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Żądanie eksportu danych vCard zostało odrzucone. Spróbuj ponownie później."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Eksport kontaktów?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Lista kontaktów zostanie wyeksportowana do pliku: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Eksport nieudany"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Dane kontaktów nie zostały wyeksportowane."\n"Przyczyna: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Brak kontaktów, które można wyeksportować."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Na nośniku znajduje się zbyt wiele plików vCard."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Na karcie SD znajduje się zbyt wiele plików vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Wymagana nazwa pliku jest zbyt długa („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Zakończono eksportowanie pliku <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Anulowano eksportowanie pliku <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Eksportowanie danych kontaktowych"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Dane Twoich kontaktów są eksportowane do: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nie można uruchomić programu eksportującego: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Wystąpił błąd podczas eksportowania: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nie można pobrać informacji z bazy danych."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Brak kontaktów do eksportu. Jeśli masz w tablecie kontakty, być może niektórzy dostawcy danych nie zezwalają na ich eksport z tabletu."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Brak kontaktów do eksportu. Jeśli masz w telefonie kontakty, być może dostawcy danych nie zezwalają na ich eksport z telefonu."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Obiekt tworzenia danych vCard nie został uruchomiony poprawnie."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nie można otworzyć pliku „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Anulować import: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Anulować eksport: <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Nie można anulować importu/eksportu vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Imiona i nazwiska oraz nazwy w Twoich kontaktach"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2-sekundową pauzę"</string>
- <string name="add_wait" msgid="3360818652790319634">"Dodaj oczekiwanie"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Wybierz numer"</string>
- <string name="call_settings" msgid="7666474782093693667">"Ustawienia"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Wybierz numer"</string>
- <string name="make_primary" msgid="5829291915305113983">"Zapamiętaj ten wybór"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nie znaleziono aplikacji do obsługi tego działania."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Bez nazwy)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Konta"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Wyczyść częste kontakty"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty do wyświetlenia"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importuj/eksportuj"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importuj/eksportuj kontakty"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importuj kontakty"</string>
<string name="menu_share" msgid="943789700636542260">"Udostępnij"</string>
<string name="share_via" msgid="563121028023030093">"Udostępnij kontakt przez"</string>
- <string name="share_error" msgid="948429331673358107">"Tego kontaktu nie można udostępniać."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nazwa"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Pseudonim"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizacja"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Adres witryny"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Wydarzenia"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relacja"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupy"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Utwórz kontakt na koncie"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Utwórz grupę na koncie"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Usuń grupę synchronizacji"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Dodaj grupę synchronizacji"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Więcej grup..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Wszystkie inne kontakty"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Wszystkie kontakty"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Usunięcie grupy „<xliff:g id="GROUP">%s</xliff:g>” z ustawień synchronizacji spowoduje również usunięcie wszelkich rozgrupowanych kontaktów z tych ustawień."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tylko tablet, brak synchronizacji"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Tylko telefon, brak synchronizacji"</string>
- <string name="call_custom" msgid="7756571794763171802">"Połącz – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Połącz – domowy"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Połącz – komórka"</string>
- <string name="call_work" msgid="5328785911463744028">"Połącz – służbowy"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Połącz – faks służbowy"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Połącz – faks domowy"</string>
- <string name="call_pager" msgid="9003902812293983281">"Połącz – pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Zadzwoń"</string>
- <string name="call_callback" msgid="1910165691349426858">"Zadzwoń – połączenie zwrotne"</string>
- <string name="call_car" msgid="3280537320306436445">"Połącz – samochód"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Połącz – firmowy główny"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Zadzwoń – ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Zadzwoń pod nr główny"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Zadzwoń – faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Połącz – radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Połącz – teleks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Zadzwoń – TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Połącz – służbowa komórka"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Połącz – pager służbowy"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Zadzwoń – <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Połącz – MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Tekst – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Tekst – domowy"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS – komórka"</string>
- <string name="sms_work" msgid="2269624156655267740">"Tekst – służbowy"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Tekst – faks służbowy"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Tekst – faks domowy"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Tekst – pager"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS – numer zwrotny"</string>
- <string name="sms_car" msgid="7444227058437359641">"Tekst – samochód"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Tekst – firmowy główny"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS – ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS – nr główny"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS – faks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Tekst – radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS – teleks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS – TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS – służbowa komórka"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS – pager służbowy"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS – <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Tekst – wiadomość MMS"</string>
- <string name="sms" msgid="1756857139634224222">"SMS"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail – domowy"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail – komórka"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail – służbowy"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mail – <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Wyświetl adres domowy"</string>
- <string name="map_work" msgid="1360474076921878088">"Wyświetl adres służbowy"</string>
- <string name="map_other" msgid="3817820803587012641">"Wyświetl adres"</string>
- <string name="map_custom" msgid="6184363799976265281">"Wyświetl adres: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Czat w AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Czat w Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Czat w Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Czat w Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Czat w QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Czat w Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Czat w ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Czat w Jabberze"</string>
- <string name="chat" msgid="9025361898797412245">"Czat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Czat głosowy"</string>
<string name="video_chat" msgid="1872255818640336072">"Czat wideo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adres"</string>
- <string name="postal_street" msgid="8133143961580058972">"Ulica"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Skrytka pocztowa"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Dzielnica"</string>
- <string name="postal_city" msgid="6597491300084895548">"Miasto"</string>
- <string name="postal_region" msgid="6045263193478437672">"Województwo"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Kod pocztowy"</string>
- <string name="postal_country" msgid="7638264508416368690">"Kraj"</string>
- <string name="full_name" msgid="6602579550613988977">"Imię i nazwisko"</string>
- <string name="name_given" msgid="1687286314106019813">"Imię"</string>
- <string name="name_family" msgid="3416695586119999058">"Nazwisko"</string>
- <string name="name_prefix" msgid="59756378548779822">"Przedrostek nazwiska"</string>
- <string name="name_middle" msgid="8467433655992690326">"Drugie imię"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Przyrostek nazwiska"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Imię (fonetycznie)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Drugie imię (fonetycznie)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Nazwisko (fonetycznie)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nazwisko (fonetycznie)"</string>
<string name="connections" msgid="8098440723172028350">"Połączenia"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Dodaj połączenie"</string>
<string name="recent" msgid="2659189233141493004">"Najnowsze"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sortuj listę według"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Imię"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Nazwisko"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Wyświetl nazwy kontaktów jako"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Wyświetl nazwy kontaktów"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Najpierw imię"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najpierw nazwisko"</string>
<string name="take_photo" msgid="7496128293167402354">"Zrób zdjęcie"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Pokaż wszystkie"</string>
<string name="menu_select_all" msgid="621719255150713545">"Wybierz wszystko"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Anuluj wybór wszystkich"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nie wybrano kontaktów."</string>
<string name="add_field" msgid="2384260056674995230">"Dodaj inne pole"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Dodaj nowy"</string>
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizację"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nie scalono"</item>
<item quantity="other" msgid="425683718017380845">"scalono z <xliff:g id="COUNT">%0$d</xliff:g> źródeł"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Inne"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Czy połączyć bieżący kontakt z wybranym?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Czy chcesz edytować wybrany kontakt? Wprowadzone dotąd informacje zostaną skopiowane."</string>
<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="directory_search_label" msgid="1887759056597975053">"Katalog"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Wszystkie kontakty"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Tworzenie kopii osobistej…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Wszystkie kontakty"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Oznaczone gwiazdką"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Niestandardowy"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Dostosuj"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Wszystkie kontakty z numerami telefonów"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Zdefiniuj widok niestandardowy"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Wczytywanie…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ustawienia"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty do wyświetlenia"</string>
<string name="menu_settings" msgid="377929915873428211">"Ustawienia"</string>
<string name="menu_help" msgid="5123887102216637725">"Pomoc"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opcje wyświetlania"</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="hint_findContacts" msgid="1808681193458772072">"Znajdź kontakty"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Numer telefonu"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Dodaj do kontaktów"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Dodaj do kontaktu"</string>
@@ -497,61 +215,7 @@
<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">"Konfiguruj profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Wpisz imię osoby"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Pokaż aktualizacje"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Poczta głosowa"</item>
- <item quantity="other" msgid="5513481419205061254">"Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Odtwórz"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nowa poczta głosowa od: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nie można odtworzyć poczty głosowej."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Buforowanie..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Pobieranie poczty głosowej..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nie można pobrać poczty głosowej."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nowe"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Starsze"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Tylko połączenia z pocztą głosową"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Tylko połączenia przychodzące"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Tylko połączenia wychodzące"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Tylko połączenia nieodebrane"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nie można połączyć z serwerem poczty głosowej."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Nie można połączyć z pocztą głosową. Masz nowe wiadomości."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Skonfiguruj pocztę głosową."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Dźwięk jest niedostępny."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfiguracja"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Połącz z pocztą"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Najwolniej"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Wolno"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normalnie"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Szybko"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Najszybciej"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nazwa grupy"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Odebrane przez NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Pokaż tylko wychodzące"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Pokaż tylko przychodzące"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaż tylko nieodebrane"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaż tylko pocztę głosową"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaż wszystkie połączenia"</string>
- <string name="status_available" msgid="5586870015822828392">"Dostępny"</string>
- <string name="status_away" msgid="1838861100379804730">"Nieobecny"</string>
- <string name="status_busy" msgid="9147992455450257136">"Zajęty"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Odtwórz pocztę głosową"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Połączenie przychodzące"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Połączenie wychodzące"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Nieodebrane połączenie"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Poczta głosowa"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Dodaj kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Wyświetl kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Połącz z: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Wyślij SMS do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nieodsłuchana poczta głosowa"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Wyślij wiadomość do: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Zadzwoń: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Szybki kontakt: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ja"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Przechowuj lokalnie"</string>
<string name="add_account" msgid="8201790677994503186">"Dodaj konto"</string>
<string name="add_new_account" msgid="5748627740680940264">"Dodaj nowe konto"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Połączenie nie zostało zrealizowane"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Aby skonfigurować pocztę głosową, przejdź do Menu > Ustawienia."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Aby połączyć się z pocztą głosową, najpierw wyłącz tryb samolotowy."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Eksportuj pliki bazy danych"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Więcej opcji"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Rozwiń lub zwiń pola imion i nazwisk"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Zdjęcie. Wybierz, aby je zmienić"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 43b1c6f..9c7cd99 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefone"</string>
<string name="people" msgid="1048457247435785074">"Pessoas"</string>
<string name="contactsList" msgid="8661624236494819731">"Contactos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contacto"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Acerca de"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Atualiz."</string>
<string name="searchHint" msgid="8482945356247760701">"Pesquisar contactos"</string>
- <string name="menu_search" msgid="9147752853603483719">"Pesquisar"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Novo contacto"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Visualizar contacto"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Adicionar aos favoritos"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Eliminar"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar no Ecrã principal"</string>
<string name="menu_call" msgid="3992595586042260618">"Ligar para contacto"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS/MMS para contacto"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Concluído"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancelar"</string>
<string name="menu_discard" msgid="6456087569315685632">"Rejeitar"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notas"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Chamada por internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Título"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Criar novo contacto"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefone"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"MI"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Endereço"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organização"</item>
<item msgid="7196592230748086755">"Nota"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Sem contactos."</string>
<string name="noGroups" msgid="8614664663561385253">"Nenhum grupo."</string>
<string name="noAccounts" msgid="7768267764545265909">"Para criar grupos precisa de uma conta"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Não foram encontrados contactos correspondentes."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Sem contactos com números de telefone."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Sem pessoas neste grupo."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Para adicionar algumas, edite o grupo."</string>
<string name="savingContact" msgid="4075751076741924939">"A guardar contacto..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"A guardar opções de visualização..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contacto guardado."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Não foi possível guardar as alterações do contacto."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupo guardado."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contacto"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contactos"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Sem contactos."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Sem contactos visíveis"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Sem favoritos."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Sem contactos em <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contactos em <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Contacto único"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contactos na vista personalizada"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Foram encontrados mais de <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Sem contactos"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 encontrado"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Todos os contactos"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritos"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoritos e todos os contactos"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Chamadas"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Enviar mensagem de texto"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de efectuar a chamada"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contactos"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Remover do registo de chamadas"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Limpar registo de chamadas"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Eliminar correio de voz"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Partilhar correio de voz"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"O registo de chamadas está vazio."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Limpar reg. de cham.?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Todos os registos de chamadas serão eliminados."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"A limpar registo de chamadas..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Limpar contactos frequentes?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Irá limpar a lista de contactos frequentes nas aplicações Pessoas e Telemóvel e forçar as aplicações de email a aprenderem as suas preferências de endereço de raiz."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"A limpar contactos frequentes..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
- <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
- <string name="private_num" msgid="6374339738119166953">"Número particular"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefone público"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilizar o teclado para marcar"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Marcar para adicionar uma chamada"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"A carregar a partir do cartão SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contactos no cartão SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Não existem contactos a apresentar. (Se acabou de adicionar uma conta, pode demorar alguns minutos a sincronizar os contactos.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Não existem contactos a apresentar."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Não existem contactos a apresentar."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/exportar"</b></font>" para importar contactos do cartão SIM ou SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Não existem contactos a apresentar."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o telemóvel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SIM ou SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Não tem contactos para apresentar (se acabou de adicionar uma conta, a sincronização dos contactos pode demorar alguns minutos)."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e,em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de visualização"</b></font>" para alterar os contactos visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SIM ou SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Não tem contactos para apresentar (se acabou de adicionar uma conta, a sincronização dos contactos pode demorar alguns minutos)."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o telemóvel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de visualização"</b></font>" para alterar os contactos visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SIM ou SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Não existem contactos a apresentar."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Não existem contactos a apresentar."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o telemóvel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Não tem contactos para apresentar (se acabou de adicionar uma conta, a sincronização dos contactos pode demorar alguns minutos)."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de visualização"</b></font>" para alterar os contactos visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Não tem contactos para apresentar (se acabou de adicionar uma conta, a sincronização dos contactos pode demorar alguns minutos)."\n\n"Para adicionar contactos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, em seguida, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contactos que pode sincronizar com o telemóvel"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de visualização"</b></font>" para alterar os contactos visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contacto"</b></font>" para criar um novo contacto de raiz"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contactos do cartão SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Não tem favoritos."\n\n"Para adicionar um contacto à sua lista de favoritos:"\n\n" "<li>"Toque no separador "<b>"Contactos"</b>" "\n</li>" "\n<li>"Toque no contacto que pretende adicionar aos favoritos"\n</li>" "\n<li>"Toque na estrela junto ao nome do contacto"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilizar teclado numérico com tons de toque"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Voltar à chamada em curso"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Adicionar chamada"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detalhes da chamada"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Não foi possível ler os detalhes da chamada solicitada."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Chamada recebida"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Chamada efetuada"</string>
- <string name="type_missed" msgid="2720502601640509542">"Chamada não atendida"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Correio de voz"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas recebidas"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> seg"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Contactos frequentes"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Números de marcação frequente"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contactos?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"um"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dois"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"três"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quatro"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinco"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sete"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"oito"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nove"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"estrela"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"correio de voz"</string>
- <string name="description_search_button" msgid="3660807558587384889">"pesquisar"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"marcar"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"retrocesso"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"número a marcar"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografia do contacto"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"eliminar"</string>
<string name="description_plus_button" msgid="515164827856229880">"mais"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Ver contacto"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nenhum armazen. encontrado."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Não foi encontrado nenhum cartão SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importar do cartão SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar do armazenamento"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar para o armazen."</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Partilhar contactos visíveis"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importar um ficheiro VCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importar vários ficheiros vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos os ficheiros VCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"A pesquisar dados de vCard no armazenamento..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"A pesquisar dados de vCard no cartão SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Não foi possível analisar o armazenamento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Não foi possível analisar o cartão SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Erro de E/S"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Memória insuficiente. O ficheiro pode ser demasiado grande."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Não foi possível analisar o vCard por um motivo inesperado."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"O formato não é suportado."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Não foi possível importar o vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Não foi encontrado nenhum ficheiro vCard no armazenamento."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Não foi encontrado nenhum ficheiro vCard no cartão SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Não foi possível recolher meta informações de determinado(s) ficheiro(s) vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Não foi possível importar um ou mais ficheiros (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Erro desconhecido."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Escolher fich. vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"A colocar em cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"A colocar vCard(s) em cache no armazenamento temporário local. A importação efetiva começará brevemente."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"A importar <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"A importar <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Não foi possível ler dados do vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"A leitura de dados vCard foi cancelada"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"A importação do vCard terminou <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"A importação de <xliff:g id="FILENAME">%s</xliff:g> foi cancelada"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> será importado em breve."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"O ficheiro será importado em breve."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"O pedido de importação do vCard foi rejeitado. Tente novamente mais tarde."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> será exportado em breve."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"O pedido de exportação do vCard foi rejeitado. Tente novamente mais tarde."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contacto"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportar contactos?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"A sua lista de contactos será exportada para o ficheiro: <xliff:g id="VCARD_FILENAME">%s</xliff:g> ."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Impossível exportar"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Os dados do contacto não foram exportados."\n"Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Não existe um contacto exportável."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Existem demasiados ficheiros vCard no armazenamento."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Existem demasiados ficheiros vCard no cartão SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Nome de ficheiro demasiado longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"A exportação de <xliff:g id="FILENAME">%s</xliff:g> terminou."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"A exportação de <xliff:g id="FILENAME">%s</xliff:g> foi cancelada."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exportar dados do contacto"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Os dados de contactos estão a ser exportados para: <xliff:g id="FILE_NAME">%s</xliff:g> ."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Não foi possível iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Ocorreu um erro durante a exportação: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Não foi possível obter informações da base de dados"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Não existem contactos exportáveis. Se tiver contactos no seu tablet, alguns fornecedores de dados podem não permitir a exportação dos contactos a partir do tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Não existem contactos exportáveis. Se tiver contactos no seu telemóvel, alguns fornecedores de dados podem não permitir a exportação dos contactos a partir do telemóvel."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"O compositor vCard não iniciou corretamente."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancelar a importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancelar a exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Imposs. cancel. import./export. do vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nomes dos contactos"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 seg."</string>
- <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Selecionar número"</string>
- <string name="call_settings" msgid="7666474782093693667">"Definições"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Selecionar número"</string>
- <string name="make_primary" msgid="5829291915305113983">"Memorizar esta escolha"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Não foram encontradas aplicações para executar esta ação"</string>
- <string name="missing_name" msgid="8745511583852904385">"(Sem nome)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Limpar frequentes"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contactos a apresentar"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importar/export. contactos"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importar contactos"</string>
<string name="menu_share" msgid="943789700636542260">"Partilhar"</string>
<string name="share_via" msgid="563121028023030093">"Partilhar contacto através de"</string>
- <string name="share_error" msgid="948429331673358107">"Não é possível partilhar este contacto."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Pseudónimo"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organização"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Web site"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Eventos"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relacionamento"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupos"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Criar contacto subordinado à conta"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Criar grupo na conta"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Remover grupo de sincronização"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Adicionar grupo de sincronização"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Mais grupos..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Todos os outros contactos"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Todos os contactos"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Ao remover \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronização, removerá também quaisquer contactos não agrupados."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Apenas tablet, não sincronizado"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Apenas telemóvel, não sincronizado"</string>
- <string name="call_custom" msgid="7756571794763171802">"Ligar para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Ligar para residência"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Ligar para telemóvel"</string>
- <string name="call_work" msgid="5328785911463744028">"Ligar para emprego"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Ligar para fax do emprego"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Ligar para o fax da residência"</string>
- <string name="call_pager" msgid="9003902812293983281">"Ligar para pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Ligar"</string>
- <string name="call_callback" msgid="1910165691349426858">"Ligar para rechamada"</string>
- <string name="call_car" msgid="3280537320306436445">"Ligar para automóvel"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Ligar para telefone principal da empresa"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Ligar para RDIS"</string>
- <string name="call_main" msgid="6082900571803441339">"Ligar para telefone principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Ligar para número de fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Ligar para rádio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Ligar para telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Ligar para telefone TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Ligar para telemóvel do emprego"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Ligar para pager do emprego"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Ligar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Ligar MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Enviar SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Enviar SMS para residência"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Enviar SMS para telemóvel"</string>
- <string name="sms_work" msgid="2269624156655267740">"Enviar SMS para emprego"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Enviar SMS para fax do emprego"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Enviar SMS para fax da residência"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Enviar SMS para pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Enviar SMS para"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Enviar SMS de resposta"</string>
- <string name="sms_car" msgid="7444227058437359641">"Enviar SMS para automóvel"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Enviar SMS para telefone principal da empresa"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS para RDIS"</string>
- <string name="sms_main" msgid="8621625784504541679">"Enviar SMS para telefone principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Enviar SMS para número de fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Enviar SMS para rádio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Enviar SMS para telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Enviar SMS para telefone TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Enviar SMS para telemóvel do emprego"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Enviar SMS para pager do emprego"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Enviar SMS para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Enviar MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mensagem de texto"</string>
- <string name="email_home" msgid="8573740658148184279">"Enviar e-mail para residência"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Enviar e-mail para telemóvel"</string>
- <string name="email_work" msgid="2807430017302722689">"Enviar e-mail para emprego"</string>
- <string name="email_other" msgid="3454004077967657109">"Email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Enviar e-mail a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Email"</string>
- <string name="map_home" msgid="1243547733423343982">"Ver endereço da residência"</string>
- <string name="map_work" msgid="1360474076921878088">"Ver endereço do emprego"</string>
- <string name="map_other" msgid="3817820803587012641">"Ver endereço"</string>
- <string name="map_custom" msgid="6184363799976265281">"Ver endereço de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chat utilizando AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chat utilizando Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chat utilizando Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chat utilizando Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chat utilizando QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chat através do Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chat utilizando ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chat utilizando Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat de voz"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat de vídeo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Endereço"</string>
- <string name="postal_street" msgid="8133143961580058972">"Rua"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Apartado"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vizinhança"</string>
- <string name="postal_city" msgid="6597491300084895548">"Cidade"</string>
- <string name="postal_region" msgid="6045263193478437672">"Região"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Código postal"</string>
- <string name="postal_country" msgid="7638264508416368690">"País"</string>
- <string name="full_name" msgid="6602579550613988977">"Nome"</string>
- <string name="name_given" msgid="1687286314106019813">"Segundo nome"</string>
- <string name="name_family" msgid="3416695586119999058">"Segundo apelido"</string>
- <string name="name_prefix" msgid="59756378548779822">"Título académico ou profissional"</string>
- <string name="name_middle" msgid="8467433655992690326">"Primeiro apelido"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Título honorífico ou eclesiástico"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonética do segundo nome"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonética do primeiro apelido"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonética do segundo apelido"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nome fonético"</string>
<string name="connections" msgid="8098440723172028350">"Ligações"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Adicionar ligação"</string>
<string name="recent" msgid="2659189233141493004">"Recentes"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Ordenar lista por"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nome próprio"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Apelido"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Visualizar nomes de contactos como"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Ver nomes de contactos"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nome próprio em primeiro lugar"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apelido em primeiro lugar"</string>
<string name="take_photo" msgid="7496128293167402354">"Tirar fotografia"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostrar tudo"</string>
<string name="menu_select_all" msgid="621719255150713545">"Seleccionar tudo"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Desmarcar tudo"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nenhum contacto selecionado."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"não intercalado(s)"</item>
<item quantity="other" msgid="425683718017380845">"intercalado a partir de <xliff:g id="COUNT">%0$d</xliff:g> origens"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Outro"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Associar o contacto actual ao contacto selecionado?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Alternar para edição do contacto selecionado? A informação introduzida até agora vai ser copiada."</string>
<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="directory_search_label" msgid="1887759056597975053">"Directório"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Todos os contactos"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"A criar uma cópia pessoal"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Todos os contactos"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Marcado com estrela"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizar"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Todos os contactos com números de telefone"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contacto"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definir vista personalizada"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"A carregar…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Definições"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contactos a apresentar"</string>
<string name="menu_settings" msgid="377929915873428211">"Definições"</string>
<string name="menu_help" msgid="5123887102216637725">"Ajuda"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opções de visualização"</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="hint_findContacts" msgid="1808681193458772072">"Localizar contactos"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Número de telefone"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Adicionar aos contactos"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Adicionar ao contacto"</string>
@@ -497,61 +215,7 @@
<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">"Configurar o meu perfil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Introduza o nome da pessoa"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Ver atualizações"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Correio de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mensagens de correio de voz"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova msg de correio de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Não foi possível reprod. correio de voz."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"A colocar na memória intermédia..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"A obter correio de voz..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Não foi possível obter correio de voz."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Novo"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"+ antigo"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Apenas chamadas com correio de voz"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Apenas chamadas recebidas"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Apenas chamadas efetuadas"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Apenas chamadas não atendidas"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Não é possível ligar ao servidor de correio de voz."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Não é possível ligar ao serv. corr. voz. Novas msgs à espera."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configure o seu correio de voz."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"O áudio não está disponível."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chamar correio de voz"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Velocidade mais lenta"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Velocidade reduzida"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Velocidade normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Velocidade rápida"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Velocidade mais rápida"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nome do Grupo"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contacto recebido através de NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar apenas cham. efetuadas"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar apenas cham. recebidas"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas cham. n. atend."</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar apenas msgs corr. voz"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
- <string name="status_available" msgid="5586870015822828392">"Available"</string>
- <string name="status_away" msgid="1838861100379804730">"Ausente"</string>
- <string name="status_busy" msgid="9147992455450257136">"ocupado"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reproduzir mensagem de correio de voz"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Chamada recebida"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Chamada efetuada"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Chamada não atendida"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Correio de voz"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Adicionar contacto"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Ver o contacto <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Ligar a <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mensagem de correio de voz ainda não ouvida"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Enviar mensagem para <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Marcar número de telefone de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contacto rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Eu"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Manter localmente"</string>
<string name="add_account" msgid="8201790677994503186">"Adicionar conta"</string>
<string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chamada não efetuada"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, aceda a Menu > Definições."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para efetuar uma chamada para o correio de voz, desative primeiro o Modo de avião."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar ficheiros da base de dados"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mais opções"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Expandir ou reduzir campos de nomes"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagem. Selecione para alterar"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 8b14fc1..b6169d1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefone"</string>
<string name="people" msgid="1048457247435785074">"Pessoas"</string>
<string name="contactsList" msgid="8661624236494819731">"Contatos"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contato"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Sobre"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Atualização"</string>
<string name="searchHint" msgid="8482945356247760701">"Pesquisar contatos"</string>
- <string name="menu_search" msgid="9147752853603483719">"Pesquisa"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Novo contato"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Ver contato"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Adicionar aos favoritos"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Remover dos favoritos"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Editar"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Excluir"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copiar"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Colocar na tela inicial"</string>
<string name="menu_call" msgid="3992595586042260618">"Chamar contato"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Enviar SMS/MMS para o contato"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Concluído"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Cancelar"</string>
<string name="menu_discard" msgid="6456087569315685632">"Descartar"</string>
- <string name="label_notes" msgid="8337354953278341042">"Observações"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Chamada da internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Empresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Título"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Criar novo contato"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefone"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Mensagem instantânea"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Endereço"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organização"</item>
<item msgid="7196592230748086755">"Observação"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nenhum contato."</string>
<string name="noGroups" msgid="8614664663561385253">"Nenhum grupo."</string>
<string name="noAccounts" msgid="7768267764545265909">"Você precisa de uma conta para criar grupos."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nenhum contato correspondente foi encontrado."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nenhum contato com números de telefone."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Nenhuma pessoa neste grupo."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Para adicionar pessoas, edite o grupo."</string>
<string name="savingContact" msgid="4075751076741924939">"Salvando contato…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Salvando opções de exibição…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contato salvo."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Não foi possível salvar as alterações do contato."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupo salvo."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contato"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> contatos"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nenhum contato."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Não há contatos visíveis."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Nenhum favorito."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nenhum contato em <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Contatos em <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Único contato"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Contatos no modo de exibição personalizado"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Mais de <xliff:g id="COUNT">%d</xliff:g> encontrados."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nenhum contato"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Um encontrado"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Todos os contatos"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupos"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritos"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoritos e todos os contatos"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Chamadas"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Enviar SMS/MMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Chamar <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes da chamada"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contatos"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Remover do registro de chamadas"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Limpar registro de chamadas"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Excluir correio de voz"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Compartilhar correio de voz"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"O registro de chamadas está vazio."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Limpar registro de chamadas?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Todos os registros de chamada serão eliminados."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Limpando o registro de chamadas..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Apagar contatos frequentes?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Você apagará a lista de contatos frequentes nos aplicativos Pessoas e Telefone, fazendo com que os aplicativos de e-mail tenham que descobrir suas preferências de endereço."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Apagando contatos frequentes…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Correio de voz"</string>
- <string name="unknown" msgid="740067747858270469">"Desconhecido"</string>
- <string name="private_num" msgid="6374339738119166953">"Número privado"</string>
- <string name="payphone" msgid="4864313342828942922">"Orelhão"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Use o teclado para discar"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Discar para adicionar uma chamada"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Carregando do cartão SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contatos do cartão SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Você não tem contatos para exibir. Se você acabou de adicionar uma conta, pode levar alguns minutos para sincronizar os contatos."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Você não tem contatos para exibir."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Você não tem nenhum contato para mostrar. "\n" "\n" Para adicionar contatos, toque "<font fgcolor="#ffffffff">" "<b>" menu "</b>" "</font>", em seguida, toque: "\n" "\n" "<li>" "<font fgcolor="#ffffffff">" "<b>" Contas "</b>" "</font>" para adicionar ou configurar uma conta com contatos que você pode sincronizar com o tablet "\n" "</li>" "\n" "<li>" "<font fgcolor="#ffffffff">" "<b>" Novo contato "</b>" "</font>" para criar um novo contato a partir do zero "\n" "</li>" "\n" "<li>" "<font fgcolor="#ffffffff">" "<b>" Importação/exportação "</b>" "</font>" para importar contatos do SIM ou do cartão SD "\n" "</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Você não tem nenhum contato para exibir."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, a seguir, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o telefone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do seu cartão SIM ou SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Você não tem contatos para exibir. Se acabou de adicionar uma conta, pode levar alguns minutos para sincronizar os contatos."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de exibição"</b></font>" para alterar quais contatos serão visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD ou SIM"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Você não tem contatos para exibir. Se acabou de adicionar uma conta, pode levar alguns minutos para sincronizar os contatos."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de exibição"</b></font>" para alterar quais contatos serão visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD ou SIM"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Você não tem nenhum contato para exibir."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, a seguir, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Você não tem nenhum contato para exibir."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e, a seguir, toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o telefone"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Você não tem contatos para exibir. Se acabou de adicionar uma conta, pode levar alguns minutos para sincronizar os contatos."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de exibição"</b></font>" para alterar quais contatos serão visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Você não tem contatos para exibir. Se acabou de adicionar uma conta, pode levar alguns minutos para sincronizar os contatos."\n\n"Para adicionar contatos, toque em "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e toque em:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contas"</b></font>" para adicionar ou configurar uma conta com contatos que possam ser sincronizados com o tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opções de exibição"</b></font>" para alterar quais contatos serão visíveis"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Novo contato"</b></font>" para criar um novo contato do início"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar/Exportar"</b></font>" para importar contatos do cartão SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Você não tem nenhum favorito."\n\n"Para adicionar um contato à sua lista de favoritos:"\n\n" "<li>"Toque na guia "<b>"Contatos"</b>\n</li>" "\n<li>"Toque no contato que deseja adicionar aos seus favoritos"\n</li>" "\n<li>"Toque na estrela ao lado do nome do contato"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Usar teclado multifrequencial"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Retornar para a chamada em espera"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ad. cham."</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detalhes da chamada"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Não foi possível ler os detalhes para a chamada solicitada."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Recebendo chamada"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Chamada enviada"</string>
- <string name="type_missed" msgid="2720502601640509542">"Chamada perdida"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Correio de voz"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Chamadas recebidas"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Chamados frequentemente"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frequentemente chamado"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adicionar \"<xliff:g id="EMAIL">%s</xliff:g>\" aos contatos?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"um"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dois"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"três"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quatro"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinco"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"seis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sete"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"oito"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nove"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"estrela"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"correio de voz"</string>
- <string name="description_search_button" msgid="3660807558587384889">"pesquisar"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"discar"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"número para discagem"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto do contato"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"excluir"</string>
<string name="description_plus_button" msgid="515164827856229880">"mais"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Visualizar contato"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nenhum armazenamento foi encontrado."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nenhum cartão SD foi encontrado."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importar do cartão SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importar do armazenamento"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportar para o armazenamento"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Compartilhar contatos visíveis"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importar um arquivo do vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importar vários arquivos do vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos os arquivos do vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Procurando dados do vCard no armazenamento..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Procurando dados do vCard no cartão SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Não foi possível verificar o armazenamento. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Não foi possível ler o cartão SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Erro E/S"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Não há memória suficiente. O arquivo pode ser muito grande."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Não foi possível analisar o vCard por um motivo inesperado."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"O formato não é suportado."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Não foi possível importar o vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Nenhum arquivo de vCard encontrado no armazenamento."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Nenhum arquivo de vCard encontrado no cartão SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Não foi possível coletar informações meta de determinados arquivos vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Um ou mais arquivos não puderam ser importados (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Erro desconhecido."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Escolha o arquivo vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Armazenando em cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Armazenando VCard(s) em cache no armazenamento temporário local. A importação real começará em breve."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importando <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importando <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Não foi possível ler os dados do vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Leitura de dados vCard cancelada"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Importação de vCard concluída <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importação de <xliff:g id="FILENAME">%s</xliff:g> cancelada"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> será importado em breve."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"O arquivo será importado em breve."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"O pedido de importação vCard foi rejeitado. Tente novamente mais tarde."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> será exportado em breve."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Pedido de exportação vCard foi rejeitado. Tente novamente mais tarde."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contato"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportar contatos?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Sua lista de contatos será exportada para o arquivo: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Não foi possível exportar"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Os dados de contato não foram exportados."\n"Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Não há contato exportáveis."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Excesso de arquivos vCard no armazenamento."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Excesso de arquivos vCard no cartão SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"O nome de arquivo exigido é muito longo (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exportação concluída de <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exportação de <xliff:g id="FILENAME">%s</xliff:g> cancelada."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exportando dados do contato"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Seus dados de contato estão sendo exportados para: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Não foi possível iniciar o exportador: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Ocorreu um erro durante a exportação: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Não foi possível obter as informações do banco de dados."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Não há contatos exportáveis. Se você tiver contatos em seu tablet, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do tablet."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Não há contatos exportáveis. Se você tiver contatos em seu telefone, alguns provedores de dados podem não permitir que os contatos sejam exportados a partir do telefone."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"O criador do vCard não iniciou corretamente."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Não foi possível abrir \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Cancelar importação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Cancelar exportação de <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Não foi poss. canc. imp./export. vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Nomes dos seus contatos"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 segundos"</string>
- <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Escolher número"</string>
- <string name="call_settings" msgid="7666474782093693667">"Configurações"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Escolher número"</string>
- <string name="make_primary" msgid="5829291915305113983">"Lembrar desta escolha"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
- <string name="missing_name" msgid="8745511583852904385">"Sem nome"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Apagar frequentes"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Contatos para exibição"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importar/exportar"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importar/Exportar contatos"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importar contatos"</string>
<string name="menu_share" msgid="943789700636542260">"Compartilhar"</string>
<string name="share_via" msgid="563121028023030093">"Compartilhar contato via"</string>
- <string name="share_error" msgid="948429331673358107">"Este contato não pode ser compartilhado."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nome"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Apelido"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organização"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Site"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Eventos"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relacionamento"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupos"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Criar contato na conta"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Criar grupo na conta"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Remover sincronização do grupo"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Adicionar grupo sincronizado"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Mais grupos…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Todos os outros contatos"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Todos os contatos"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"A remoção de \"<xliff:g id="GROUP">%s</xliff:g>\" da sincronização também removerá os contatos não agrupados da sincronização."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Somente tablet, não sincronizado"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Somente telefone, não sincronizado"</string>
- <string name="call_custom" msgid="7756571794763171802">"Chamar <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Chamar residência"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Chamar celular"</string>
- <string name="call_work" msgid="5328785911463744028">"Chamar o trabalho"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Chamar fax comercial"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Chamar fax residencial"</string>
- <string name="call_pager" msgid="9003902812293983281">"Chamar pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Chamar"</string>
- <string name="call_callback" msgid="1910165691349426858">"Retornar chamada"</string>
- <string name="call_car" msgid="3280537320306436445">"Chamar carro"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Chamar empresa (principal)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Chamar ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Chamar o principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Chamar fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Chamar rádio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Chamar telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Chamar TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Chamar celular comercial"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Chamar pager comercial"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Chamar <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Chamar MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Enviar SMS para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Enviar SMS para resid."</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Enviar SMS para celular"</string>
- <string name="sms_work" msgid="2269624156655267740">"Enviar SMS para tel. comercial"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Enviar SMS para fax com."</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Enviar SMS para fax resid."</string>
- <string name="sms_pager" msgid="7730404569637015192">"Enviar SMS para o pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Enviar SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Enviar SMS para retorno de chamada"</string>
- <string name="sms_car" msgid="7444227058437359641">"Enviar SMS para o carro"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Enviar SMS para empresa (principal)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Mandar mensagem de texto para ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Enviar SMS para núm. principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Enviar SMS para fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Enviar SMS para o rádio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Enviar SMS para telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Enviar SMS para TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Enviar SMS para cel. comercial"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Enviar SMS para pager com."</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Enviar SMS para <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Enviar texto MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mensagem de texto"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail (residencial)"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Enviar e-mail para celular"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail (comercial)"</string>
- <string name="email_other" msgid="3454004077967657109">"E-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"Enviar e-mail para <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Ver endereço residencial"</string>
- <string name="map_work" msgid="1360474076921878088">"Ver endereço comercial"</string>
- <string name="map_other" msgid="3817820803587012641">"Visualizar endereço"</string>
- <string name="map_custom" msgid="6184363799976265281">"Visualizar endereço de <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Bater papo usando o AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Bater papo usando o Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Bater papo usando o Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Bater papo usando o Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Bater papo usando o QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Bater papo usando o Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Bater papo usando o ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Bater papo usando o Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Bate-papo"</string>
<string name="audio_chat" msgid="2535716629358298691">"Bate-papo por voz"</string>
<string name="video_chat" msgid="1872255818640336072">"Bate-papo por vídeo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Endereço"</string>
- <string name="postal_street" msgid="8133143961580058972">"Rua"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Caixa postal"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vizinhança"</string>
- <string name="postal_city" msgid="6597491300084895548">"Cidade"</string>
- <string name="postal_region" msgid="6045263193478437672">"Estado"</string>
- <string name="postal_postcode" msgid="572136414136673751">"CEP"</string>
- <string name="postal_country" msgid="7638264508416368690">"País"</string>
- <string name="full_name" msgid="6602579550613988977">"Nome"</string>
- <string name="name_given" msgid="1687286314106019813">"Nome"</string>
- <string name="name_family" msgid="3416695586119999058">"Sobrenome"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefixo do nome"</string>
- <string name="name_middle" msgid="8467433655992690326">"Nome do meio"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufixo do nome"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Nome fonético"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Nome do meio fonético"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Sobrenome fonético"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nome fonético"</string>
<string name="connections" msgid="8098440723172028350">"Conexões"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Adicionar conexão"</string>
<string name="recent" msgid="2659189233141493004">"Recentes"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Classificar lista por"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Nome"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Sobrenome"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Visualizar nomes de contato como"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Visualizar nomes de contatos"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Nome primeiro"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Sobrenome primeiro"</string>
<string name="take_photo" msgid="7496128293167402354">"Tirar foto"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mostrar todos"</string>
<string name="menu_select_all" msgid="621719255150713545">"Selecionar todos"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Desmarcar todos"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nenhum contato selecionado."</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 organização"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"não mesclado"</item>
<item quantity="other" msgid="425683718017380845">"mesclado a partir de <xliff:g id="COUNT">%0$d</xliff:g> origens"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Outros"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Unir o contato atual ao contato selecionado?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Alternar para a edição do contato selecionado? As informações inseridas até agora serão copiadas."</string>
<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="directory_search_label" msgid="1887759056597975053">"Diretório"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Todos os contatos"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Criando uma cópia pessoal..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Todos os contatos"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Com estrela"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizado"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizar"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Todos os contatos com números de telefone"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contato"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definir exibição personalizada"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Carregando…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Configurações"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Contatos a exibir"</string>
<string name="menu_settings" msgid="377929915873428211">"Configurações"</string>
<string name="menu_help" msgid="5123887102216637725">"Ajudar"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opções de exibição"</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="hint_findContacts" msgid="1808681193458772072">"Localizar contatos"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Número de telefone"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Adicionar aos contatos"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Adicionar a contato"</string>
@@ -497,61 +215,7 @@
<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">"Configurar meu perfil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Digite o nome da pessoa"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Ver atualizações"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mensagem de voz"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensagens de voz"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova mensagem de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Não foi possível reprod. mens. de voz."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Armazenar em buffer…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Buscando o correio de voz…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Não foi possível obter o correio de voz."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Novas"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Antigas"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Somente chamadas com correio de voz"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Somente chamadas recebidas"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Somente chamadas de saída"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Somente chamadas perdidas"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Não é possível se conectar ao servidor de correio de voz."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Impossível conect. ao serv. correio voz. Novas mensagens de voz."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configure seu correio de voz."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Áudio não disponível."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configurar"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Chamar correio voz"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Velocidade mais lenta"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Baixa velocidade"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Velocidade normal"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Velocidade rápida"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Velocidade mais rápida"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Nome do grupo"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Contato via NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Mostrar apenas enviadas"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Mostrar apenas recebidas"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas perdidas"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Exibir apenas mensagens de voz"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponível"</string>
- <string name="status_away" msgid="1838861100379804730">"Ausente"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ocupado"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Reproduzir mensagem de voz"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Chamada recebida"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Chamada realizada"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Chamada perdida"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Mensagem de voz"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Adicionar contato"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Visualizar contato <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Ligar para <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Enviar mensagem de texto para <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nova mensagem de voz"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Enviar mensagem para <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Discar número de telefone <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contato rápido de <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Eu"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Manter localmente"</string>
<string name="add_account" msgid="8201790677994503186">"Adicionar conta"</string>
<string name="add_new_account" msgid="5748627740680940264">"Adicionar nova conta"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Chamada não realizada"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Para configurar o correio de voz, vá para Menu > Configurações."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Para chamar o correio de voz, primeiro desative o modo avião."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportar arquivos do banco de dados"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mais opções"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Expandir ou recolher campos de nome"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Imagem. Selecione para alterar"</string>
</resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 513e527..5ab30f4 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<!-- no translation found for people (1048457247435785074) -->
<skip />
<string name="contactsList" msgid="8661624236494819731">"Contacts"</string>
@@ -44,19 +43,13 @@
<!-- no translation found for contactDetailUpdates (3780588624763446941) -->
<skip />
<string name="searchHint" msgid="8482945356247760701">"Retschertgar ils contacts"</string>
- <string name="menu_search" msgid="9147752853603483719">"Tschertgar"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nov contact"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Mussar il contact"</string>
- <!-- no translation found for menu_callNumber (997146291983360266) -->
- <skip />
<string name="menu_addStar" msgid="2908478235715404876">"Agiuntar als favurits"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Allontanar dals favurits"</string>
<!-- no translation found for menu_editContact (9042415603857662633) -->
<skip />
<!-- no translation found for menu_deleteContact (6788644058868189393) -->
<skip />
- <!-- no translation found for menu_copy (6108677035381940698) -->
- <skip />
<!-- no translation found for menu_create_contact_shortcut (1217971915748509640) -->
<skip />
<string name="menu_call" msgid="3992595586042260618">"Telefonar al contact"</string>
@@ -91,16 +84,8 @@
<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>
- <string name="menu_done" msgid="796017761764190697">"Finì"</string>
- <!-- no translation found for menu_doNotSave (58593876893538465) -->
- <skip />
<!-- no translation found for menu_discard (6456087569315685632) -->
<skip />
- <string name="label_notes" msgid="8337354953278341042">"Notizias"</string>
- <!-- no translation found for label_sip_address (124073911714324974) -->
- <skip />
- <string name="ghostData_company" msgid="5414421120553765775">"Interpresa"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</string>
<!-- no translation found for invalidContactMessage (8215051456181842274) -->
<skip />
<!-- no translation found for createContactShortcutSuccessful (7874133287558150877) -->
@@ -108,11 +93,6 @@
<string name="pickerNewContactHeader" msgid="7750705279843568147">"Crear in nov contact"</string>
<!-- no translation found for pickerNewContactText (6166997164401048211) -->
<skip />
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chat"</string>
- <!-- no translation found for postalLabelsGroup (3487738141112589324) -->
- <skip />
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Firma/Organisaziun"</item>
<item msgid="7196592230748086755">"Notizia"</item>
@@ -131,14 +111,11 @@
<skip />
<!-- no translation found for noAccounts (7768267764545265909) -->
<skip />
- <string name="noMatchingContacts" msgid="4266283206853990471">"Betg chattà in contact correspundent."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nagin contact dispona d\'in numer da telefon."</string>
<!-- no translation found for emptyGroup (7502116218697177370) -->
<skip />
<!-- no translation found for addPeopleToGroup (7879585947222263516) -->
<skip />
<string name="savingContact" msgid="4075751076741924939">"Il contact vegn memorisà…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Las opziuns da vista vegnan memorisadas…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Contact memorisà."</string>
<!-- no translation found for contactSavedErrorToast (3207250533172944892) -->
<skip />
@@ -152,26 +129,10 @@
<skip />
<!-- no translation found for listTotalAllContacts:one (3405747744700823280) -->
<!-- no translation found for listTotalAllContacts:other (3578469907265375314) -->
- <!-- no translation found for listTotalAllContactsZero (5513001821794568211) -->
- <skip />
- <!-- no translation found for listTotalAllContactsZeroCustom (5004974705699445044) -->
- <skip />
- <!-- no translation found for listTotalAllContactsZeroStarred (3173820905501592808) -->
- <skip />
- <!-- no translation found for listTotalAllContactsZeroGroup (5448979458248027615) -->
- <skip />
- <!-- no translation found for listAllContactsInAccount (7496143179265311758) -->
- <skip />
- <!-- no translation found for listSingleContact (6067813698903535563) -->
- <skip />
- <!-- no translation found for listCustomView (6950713892532194050) -->
- <skip />
<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>
</plurals>
- <!-- no translation found for foundTooManyContacts (5163335650920020220) -->
- <skip />
<!-- no translation found for listFoundAllContactsZero (922980883593159444) -->
<skip />
<plurals name="searchFoundContacts">
@@ -182,362 +143,24 @@
<skip />
<!-- no translation found for contactsGroupsLabel (2841971472518003524) -->
<skip />
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favurits"</string>
- <!-- no translation found for dialerAllContactsLabel (1025920923112988336) -->
- <skip />
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Cloms"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Trametter in SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Telefonar a(d) <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifitgar il numer avant che telefonar"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Agiuntar als contacts"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Allontanar da la glista da cloms"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Stizzar la glista da cloms"</string>
- <!-- no translation found for recentCalls_trashVoicemail (7604696960787435655) -->
- <skip />
- <!-- no translation found for recentCalls_shareVoicemail (1416112847592942840) -->
- <skip />
- <string name="recentCalls_empty" msgid="247053222448663107">"La glista da cloms e vida"</string>
- <!-- no translation found for clearCallLogConfirmation_title (6427524640461816332) -->
- <skip />
- <!-- no translation found for clearCallLogConfirmation (5043563133171583152) -->
- <skip />
- <!-- no translation found for clearCallLogProgress_title (8365943000154295771) -->
- <skip />
- <!-- no translation found for clearFrequentsConfirmation_title (766292372438450432) -->
- <skip />
- <!-- no translation found for clearFrequentsConfirmation (3254215748990281318) -->
- <skip />
- <!-- no translation found for clearFrequentsProgress_title (5157001637482794212) -->
- <skip />
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Mailbox"</string>
- <string name="unknown" msgid="740067747858270469">"Nunenconuschent"</string>
- <string name="private_num" msgid="6374339738119166953">"Numer privat"</string>
- <string name="payphone" msgid="4864313342828942922">"Cabina da telefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilisai la tastatura per cumponer il numer"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Cumponer il numer"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Chargiar da la carta SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Contacts sin la carta SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Vus n\'avais nagins contacts per mussar. (I po cuzzar in pèr minutas per sincronisar ils contacts en cas che Vus avais gist agiuntà in conto.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Vus n\'avais nagins contacts per mussar."</string>
- <!-- no translation found for noContactsHelpText (6226271923423236696) -->
- <skip />
- <!-- no translation found for noContactsHelpText (4405064135698982080) -->
- <skip />
- <!-- no translation found for noContactsHelpTextWithSync (6773195806404659174) -->
- <skip />
- <!-- no translation found for noContactsHelpTextWithSync (7016825676090327312) -->
- <skip />
- <!-- no translation found for noContactsNoSimHelpText (7823757505923033456) -->
- <skip />
- <!-- no translation found for noContactsNoSimHelpText (6224952277619986841) -->
- <skip />
- <!-- no translation found for noContactsNoSimHelpTextWithSync (5415762667445638265) -->
- <skip />
- <!-- no translation found for noContactsNoSimHelpTextWithSync (7443705129830284440) -->
- <skip />
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Vus n\'avais nagins favurits."\n\n"Per agiuntar in contact a la glista da favurits:"\n\n" "<li>"Smatgai sin il register "<b>"Contacts"</b>"."\n</li>" "\n<li>"Smatgai sin il contact che duai vegnir agiuntà a Voss favurits."\n</li>" "\n<li>"Smatgai sin la staila dal contact correspundent."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilisar la tastatura dal telefon"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Enavos al clom actual"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Agiuntar in clom"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detagls dal clom"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Impussibel da leger ils detagls dal clom dumandà."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Clom entrant"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Clom sortint"</string>
- <string name="type_missed" msgid="2720502601640509542">"Clom manchentà"</string>
- <!-- no translation found for type_voicemail (5153139450668549908) -->
- <skip />
- <string name="actionIncomingCall" msgid="6028930669817038600">"Cloms entrants"</string>
<string name="callBack" msgid="5498224409038809224">"Telefonar enavos"</string>
<string name="callAgain" msgid="3197312117049874778">"Telefonar anc ina giada"</string>
<string name="returnCall" msgid="8171961914203617813">"Telefonar enavos"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
- <!-- no translation found for favoritesFrequentContacted (6184232487472425690) -->
- <skip />
- <!-- no translation found for favoritesFrequentCalled (6128306889600696124) -->
- <skip />
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Agiuntar «<xliff:g id="EMAIL">%s</xliff:g>» als contacts?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"in"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dus"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trais"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"quatter"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"tschintg"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sis"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"set"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"otg"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nov"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"staila"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nulla"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"glivra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Mailbox"</string>
- <!-- no translation found for description_search_button (3660807558587384889) -->
- <skip />
- <string name="description_dial_button" msgid="1274091017188142646">"cumponer"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"tasta da return"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numer da cumponer"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"foto dal contact"</string>
- <!-- no translation found for description_minus_button (6908099247930477551) -->
- <skip />
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Mussar il contact"</string>
- <!-- no translation found for no_sdcard_message (5242558018442357189) -->
- <skip />
- <!-- no translation found for no_sdcard_message (3357810406684913482) -->
- <skip />
- <string name="import_from_sim" msgid="3859272228033941659">"Importar da la carta SIM"</string>
- <!-- no translation found for import_from_sdcard (8668347930577565175) -->
- <skip />
- <!-- no translation found for export_to_sdcard (6092815580965201089) -->
- <skip />
- <string name="share_visible_contacts" msgid="890150378880783797">"Cundivider ils contacts visibels"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importar ina datoteca vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importar pliras datotecas vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar tut las datotecas vCard"</string>
- <!-- no translation found for searching_vcard_message (557077639409584945) -->
- <skip />
- <!-- no translation found for searching_vcard_message (3962269894118092049) -->
- <skip />
- <!-- no translation found for scanning_sdcard_failed_message (7221682312959229201) -->
- <skip />
- <!-- no translation found for scanning_sdcard_failed_message (189023067829510792) -->
- <skip />
- <!-- no translation found for fail_reason_io_error (6748358842976073255) -->
- <skip />
- <!-- no translation found for fail_reason_low_memory_during_import (875222757734882898) -->
- <skip />
- <!-- no translation found for fail_reason_vcard_parse_error (888263542360355784) -->
- <skip />
- <!-- no translation found for fail_reason_not_supported (8219562769267148825) -->
- <skip />
- <!-- no translation found for vcard_import_failed (5223531255894842406) -->
- <skip />
- <!-- no translation found for import_failure_no_vcard_file (2071820850017305867) -->
- <skip />
- <!-- no translation found for import_failure_no_vcard_file (1754014167874286173) -->
- <skip />
- <!-- no translation found for fail_reason_failed_to_collect_vcard_meta_info (6427931733267328564) -->
- <skip />
- <!-- no translation found for fail_reason_failed_to_read_files (5823434810622484922) -->
- <skip />
- <!-- no translation found for fail_reason_unknown (1714092345030570863) -->
- <skip />
- <!-- no translation found for select_vcard_title (7791371083694672861) -->
- <skip />
- <!-- no translation found for caching_vcard_title (1226272312940516605) -->
- <skip />
- <!-- no translation found for caching_vcard_message (4926308675041506756) -->
- <skip />
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importar <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importar <xliff:g id="NAME">%s</xliff:g>"</string>
- <!-- no translation found for reading_vcard_failed_title (4251647443358422855) -->
- <skip />
- <!-- no translation found for reading_vcard_canceled_title (1925216585981542019) -->
- <skip />
- <!-- no translation found for importing_vcard_finished_title (3341541727268747967) -->
- <skip />
- <!-- no translation found for importing_vcard_canceled_title (2147475978165599336) -->
- <skip />
- <!-- no translation found for vcard_import_will_start_message (2804911199145873396) -->
- <skip />
- <!-- no translation found for vcard_import_will_start_message_with_default_name (1022969530654129470) -->
- <skip />
- <!-- no translation found for vcard_import_request_rejected_message (2890471184508516011) -->
- <skip />
- <!-- no translation found for vcard_export_will_start_message (2210241345252081463) -->
- <skip />
- <!-- no translation found for vcard_export_request_rejected_message (2844874826431327531) -->
- <skip />
- <!-- no translation found for vcard_unknown_filename (7171709890959915954) -->
- <skip />
- <!-- no translation found for percentage (1044592438199055502) -->
- <skip />
- <!-- no translation found for confirm_export_title (6834385377255286349) -->
- <skip />
- <!-- no translation found for confirm_export_message (2423421354816428708) -->
- <skip />
- <!-- no translation found for exporting_contact_failed_title (4892358112409576342) -->
- <skip />
- <!-- no translation found for exporting_contact_failed_message (4938527850142003141) -->
- <skip />
- <!-- no translation found for fail_reason_no_exportable_contact (8728506011371262065) -->
- <skip />
- <!-- no translation found for fail_reason_too_many_vcard (590645599157376285) -->
- <skip />
- <!-- no translation found for fail_reason_too_many_vcard (4887177369627277474) -->
- <skip />
- <!-- no translation found for fail_reason_too_long_filename (3393764245254738333) -->
- <skip />
- <!-- no translation found for exporting_vcard_finished_title (4767045779458185251) -->
- <skip />
- <!-- no translation found for exporting_vcard_canceled_title (2652222370493306887) -->
- <skip />
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Datas da contact vegnan exportadas."</string>
- <!-- no translation found for exporting_contact_list_message (7181663157672374569) -->
- <skip />
- <!-- no translation found for fail_reason_could_not_initialize_exporter (707260459259688510) -->
- <skip />
- <!-- no translation found for fail_reason_error_occurred_during_export (3018855323913649063) -->
- <skip />
- <!-- no translation found for composer_failed_to_get_database_infomation (1765944280846236723) -->
- <skip />
- <!-- no translation found for composer_has_no_exportable_contact (6991449891825077743) -->
- <skip />
- <!-- no translation found for composer_has_no_exportable_contact (3296493229040294335) -->
- <skip />
- <!-- no translation found for composer_not_initialized (2321648986367005254) -->
- <skip />
- <!-- no translation found for fail_reason_could_not_open_file (2067725459821997463) -->
- <skip />
<string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> da <xliff:g id="TOTAL_NUMBER">%s</xliff:g> contacts"</string>
- <!-- no translation found for cancel_import_confirmation_message (3929951040347726757) -->
- <skip />
- <!-- no translation found for cancel_export_confirmation_message (1995462401949262638) -->
- <skip />
- <!-- no translation found for cancel_vcard_import_or_export_failed (6139900383366166706) -->
- <skip />
<string name="search_settings_description" msgid="2675223022992445813">"Num da Voss contacts"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Agiuntar ina pausa da 2 secundas"</string>
- <string name="add_wait" msgid="3360818652790319634">"Agiuntar Spetgar"</string>
- <!-- no translation found for call_disambig_title (4392886850104795739) -->
- <skip />
- <!-- no translation found for call_settings (7666474782093693667) -->
- <skip />
- <!-- no translation found for sms_disambig_title (5846266399240630846) -->
- <skip />
- <string name="make_primary" msgid="5829291915305113983">"Memorisar questa tscherna"</string>
<!-- no translation found for quickcontact_missing_app (358168575340921552) -->
<skip />
- <!-- no translation found for missing_name (8745511583852904385) -->
- <skip />
- <string name="menu_accounts" msgid="8499114602017077970">"Contos"</string>
- <!-- no translation found for menu_clear_frequents (7688250191932838833) -->
- <skip />
- <!-- no translation found for menu_contacts_filter (2165153460860262501) -->
- <skip />
- <!-- no translation found for menu_import_export (26217871113229507) -->
- <skip />
- <!-- no translation found for dialog_import_export (4360648034889921624) -->
- <skip />
- <!-- no translation found for dialog_import (2431698729761448759) -->
- <skip />
<string name="menu_share" msgid="943789700636542260">"Cundivider"</string>
<string name="share_via" msgid="563121028023030093">"Cundivider in contact sur"</string>
- <!-- no translation found for share_error (948429331673358107) -->
- <skip />
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Num"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Alias"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Firma/Organisaziun"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <!-- no translation found for eventLabelsGroup (3695433812142818803) -->
- <skip />
- <!-- no translation found for relationLabelsGroup (1854373894284572781) -->
- <skip />
- <!-- no translation found for groupsLabel (8573535366319059326) -->
- <skip />
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crear in contact sut il conto"</string>
<!-- no translation found for dialog_new_group_account (2318032089273496830) -->
<skip />
- <string name="menu_sync_remove" msgid="3266725887008450161">"Allontanar la gruppa da sincronisaziun"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Agiuntar ina gruppa da sincronisaziun"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Ulteriuras gruppas…"</string>
- <!-- no translation found for display_ungrouped (6885954210243119591) -->
- <skip />
- <!-- no translation found for display_all_contacts (2031647544742889505) -->
- <skip />
- <!-- no translation found for display_warn_remove_ungrouped (8872290721676651414) -->
- <skip />
- <!-- no translation found for account_phone (7946049152658522054) -->
- <skip />
- <!-- no translation found for account_phone (3682950835276226870) -->
- <skip />
- <string name="call_custom" msgid="7756571794763171802">"Telefonar a(d) <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Telefonar (privat)"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Clom (telefonin)"</string>
- <string name="call_work" msgid="5328785911463744028">"Clom (fatschenta)"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"\"Telefonar (fax, fatschenta)\""</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Cumponer in fax (privat)"</string>
- <string name="call_pager" msgid="9003902812293983281">"Telefonar (pager)"</string>
- <string name="call_other" msgid="8563753966926932052">"Telefonar"</string>
- <string name="call_callback" msgid="1910165691349426858">"Telefonar al numer da reclom"</string>
- <string name="call_car" msgid="3280537320306436445">"Telefonar a l\'auto"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Telefonar ad ina firma (principal)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Telefonar ad in numer ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Telefonar sin il numer principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Telefonar a quest numer da fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Telefon (mobil)"</string>
- <string name="call_telex" msgid="2223170774548648114">"Telefonar ad in numer telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Telefonar TTY/TTD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Telefonar al numer da telefonin (fatschenta)"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Telefonar ad in pager (fatschenta)"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Telefonar a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Clom (MMS)"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Text (privat)"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Trametter in SMS al telefonin"</string>
- <string name="sms_work" msgid="2269624156655267740">"Trametter in SMS (fatschenta)"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Trametter in SMS al fax (fatschenta)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS al fax (privat)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Trametter in SMS ad in pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Trametter in SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Trametter in SMS ad in numer da reclom"</string>
- <string name="sms_car" msgid="7444227058437359641">"Text (auto)"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Text (numer principal da la firma)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS ad in numer ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS al numer principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Trametter in SMS ad in fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS a mobil"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS a telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Trametter in SMS ad in numer TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS al numer da telefonin (fatschenta)"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS ad in pager (fatschenta)"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Trametter in messadi da text a <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Trametter in MMS"</string>
- <!-- no translation found for sms (1756857139634224222) -->
- <skip />
- <string name="email_home" msgid="8573740658148184279">"E-mail (privat)"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail (telefonin)"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail (fatschenta)"</string>
- <string name="email_other" msgid="3454004077967657109">"Trametter in e-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-mail a <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Mussar l\'adressa da chasa"</string>
- <string name="map_work" msgid="1360474076921878088">"Mussar l\'adressa da fatschenta"</string>
- <string name="map_other" msgid="3817820803587012641">"Mussar l\'adressa"</string>
- <string name="map_custom" msgid="6184363799976265281">"Mussar adressa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chat sur AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chat sur Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chat sur Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chat sur Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chat sur QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chat sur Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chat sur ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chat sur Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chat"</string>
<!-- no translation found for audio_chat (2535716629358298691) -->
<skip />
<!-- no translation found for video_chat (1872255818640336072) -->
<skip />
- <string name="postal_address" msgid="8765560217149624536">"Adressa"</string>
- <string name="postal_street" msgid="8133143961580058972">"Via"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Chascha postala"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vischinanza"</string>
- <string name="postal_city" msgid="6597491300084895548">"Citad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Chantun"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Numer postal"</string>
- <string name="postal_country" msgid="7638264508416368690">"Pajais"</string>
- <string name="full_name" msgid="6602579550613988977">"Num"</string>
- <string name="name_given" msgid="1687286314106019813">"Prenum"</string>
- <string name="name_family" msgid="3416695586119999058">"Num da famiglia"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefix dal num"</string>
- <string name="name_middle" msgid="8467433655992690326">"Segund prenum"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Suffix dal num"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Prenum fonetic"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Segund prenum fonetic"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Num da famiglia fonetic"</string>
- <!-- no translation found for name_phonetic (4259595234312430484) -->
- <skip />
<!-- no translation found for connections (8098440723172028350) -->
<skip />
<!-- no translation found for add_connection_button (4861308615789601727) -->
@@ -561,7 +184,8 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Zavrar la glista tenor"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Prenum"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Num da famiglia"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Mussar ils nums da contacts sco"</string>
+ <!-- no translation found for display_options_view_names_as (4386932036180428374) -->
+ <skip />
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"L\'emprim il prenum"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"L\'emprim il num da famiglia"</string>
<string name="take_photo" msgid="7496128293167402354">"Far ina foto"</string>
@@ -585,7 +209,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Mussar tuts"</string>
<string name="menu_select_all" msgid="621719255150713545">"Tscherner tut"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Deselecziunar tut"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Betg tschernì in contact"</string>
<!-- no translation found for add_field (2384260056674995230) -->
<skip />
<!-- no translation found for add_new_entry_for_section (5223080690667565044) -->
@@ -604,7 +227,6 @@
<item quantity="one" msgid="148365587896371969">"betg fusiunà"</item>
<item quantity="other" msgid="425683718017380845">"1 contact fusiunà ord <xliff:g id="COUNT">%0$d</xliff:g> funtaunas"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Auter"</string>
<!-- no translation found for aggregation_suggestion_join_dialog_message (3842757977671434836) -->
<skip />
<!-- no translation found for aggregation_suggestion_edit_dialog_message (6549585283910518095) -->
@@ -615,32 +237,12 @@
<skip />
<!-- no translation found for contact_directory_description (683398073603909119) -->
<skip />
- <!-- no translation found for directory_search_label (1887759056597975053) -->
- <skip />
- <!-- no translation found for local_search_label (2551177578246113614) -->
- <skip />
<!-- no translation found for toast_making_personal_copy (288549957278065542) -->
<skip />
- <!-- no translation found for list_filter_all_accounts (8908683398914322369) -->
- <skip />
- <!-- no translation found for list_filter_all_starred (5031734941601931356) -->
- <skip />
<!-- no translation found for list_filter_custom (8910173055702057002) -->
<skip />
- <!-- no translation found for list_filter_customize (4789963356004169321) -->
- <skip />
- <!-- no translation found for list_filter_phones (735313795643493365) -->
- <skip />
- <!-- no translation found for list_filter_single (5871400283515893087) -->
- <skip />
- <!-- no translation found for custom_list_filter (7836035257402013957) -->
- <skip />
- <!-- no translation found for contact_list_loading (5488620820563977329) -->
- <skip />
<!-- no translation found for activity_title_settings (5464130076132770781) -->
<skip />
- <!-- no translation found for activity_title_contacts_filter (8275542497615516969) -->
- <skip />
<!-- no translation found for menu_settings (377929915873428211) -->
<!-- no translation found for menu_settings (377929915873428211) -->
<skip />
@@ -650,8 +252,6 @@
<skip />
<!-- no translation found for organization_company_and_title (6718207751363732025) -->
<skip />
- <!-- no translation found for hint_findContacts (1808681193458772072) -->
- <skip />
<!-- no translation found for non_phone_caption (1541655052330027380) -->
<skip />
<!-- no translation found for non_phone_add_to_contacts (6590985286250471169) -->
@@ -704,111 +304,8 @@
<skip />
<!-- no translation found for enter_contact_name (1738391320566349924) -->
<skip />
- <!-- no translation found for view_updates_from_group (1782685984905600034) -->
- <skip />
- <!-- no translation found for notification_voicemail_title:one (1746619685488504230) -->
- <!-- no translation found for notification_voicemail_title:other (5513481419205061254) -->
- <!-- no translation found for notification_action_voicemail_play (6113133136977996863) -->
- <skip />
- <!-- no translation found for notification_voicemail_callers_list (1153954809339404149) -->
- <skip />
- <!-- no translation found for notification_new_voicemail_ticker (895342132049452081) -->
- <skip />
- <!-- no translation found for voicemail_playback_error (1811242131549854624) -->
- <skip />
- <!-- no translation found for voicemail_buffering (738287747618697097) -->
- <skip />
- <!-- no translation found for voicemail_fetching_content (877911315738258780) -->
- <skip />
- <!-- no translation found for voicemail_fetching_timout (6691792377574905201) -->
- <skip />
- <!-- no translation found for call_log_new_header (846546437517724715) -->
- <skip />
- <!-- no translation found for call_log_old_header (6262205894314263629) -->
- <skip />
- <!-- no translation found for call_log_voicemail_header (3945407886667089173) -->
- <skip />
- <!-- no translation found for call_log_incoming_header (2787722299753674684) -->
- <skip />
- <!-- no translation found for call_log_outgoing_header (761009180766735769) -->
- <skip />
- <!-- no translation found for call_log_missed_header (8017148056610855956) -->
- <skip />
- <!-- no translation found for voicemail_status_voicemail_not_available (3021980206152528883) -->
- <skip />
- <!-- no translation found for voicemail_status_messages_waiting (7113421459602803605) -->
- <skip />
- <!-- no translation found for voicemail_status_configure_voicemail (3738537770636895689) -->
- <skip />
- <!-- no translation found for voicemail_status_audio_not_available (3369618334553341626) -->
- <skip />
- <!-- no translation found for voicemail_status_action_configure (8671796489912239589) -->
- <skip />
- <!-- no translation found for voicemail_status_action_call_server (1824816252288551794) -->
- <skip />
- <!-- no translation found for voicemail_speed_slowest (1733460666177707312) -->
- <skip />
- <!-- no translation found for voicemail_speed_slower (1508601287347216244) -->
- <skip />
- <!-- no translation found for voicemail_speed_normal (9033988544627228892) -->
- <skip />
- <!-- no translation found for voicemail_speed_faster (2019965121475935488) -->
- <skip />
- <!-- no translation found for voicemail_speed_fastest (5758712343491183292) -->
- <skip />
- <!-- no translation found for call_log_item_count_and_date (7641933305703520787) -->
- <skip />
<!-- no translation found for group_name_hint (238359485263401293) -->
<skip />
- <!-- no translation found for nfc_vcard_file_name (2823095213265993609) -->
- <skip />
- <!-- no translation found for menu_show_outgoing_only (1965570298133301970) -->
- <skip />
- <!-- no translation found for menu_show_incoming_only (7534206815238877417) -->
- <skip />
- <!-- no translation found for menu_show_missed_only (154473166059743996) -->
- <skip />
- <!-- no translation found for menu_show_voicemails_only (1898421289561435703) -->
- <skip />
- <!-- no translation found for menu_show_all_calls (7560347482073345885) -->
- <skip />
- <!-- no translation found for status_available (5586870015822828392) -->
- <skip />
- <!-- no translation found for status_away (1838861100379804730) -->
- <skip />
- <!-- no translation found for status_busy (9147992455450257136) -->
- <skip />
- <!-- no translation found for description_call_log_play_button (651182125650429846) -->
- <skip />
- <!-- no translation found for description_call_log_incoming_call (4485427487637250143) -->
- <skip />
- <!-- no translation found for description_call_log_outgoing_call (604831756853471658) -->
- <skip />
- <!-- no translation found for description_call_log_missed_call (2242805209983708825) -->
- <skip />
- <!-- no translation found for description_call_log_voicemail (4600798771975158948) -->
- <skip />
- <!-- no translation found for description_add_contact (3103414772502485851) -->
- <skip />
- <!-- no translation found for description_view_contact (5205669345700598415) -->
- <skip />
- <!-- no translation found for description_call (3443678121983852666) -->
- <skip />
- <!-- no translation found for description_send_text_message (7803126439934046891) -->
- <skip />
- <!-- no translation found for description_call_log_unheard_voicemail (118101684236996786) -->
- <skip />
- <!-- no translation found for description_send_message (6046623392322890962) -->
- <skip />
- <!-- no translation found for description_dial_phone_number (8831647331642648637) -->
- <skip />
- <!-- no translation found for description_quick_contact_for (6737516415168327789) -->
- <skip />
- <!-- no translation found for call_log_empty_gecode (5588904744812100846) -->
- <skip />
- <!-- no translation found for user_profile_contacts_list_header (5582421742835006940) -->
- <!-- no translation found for user_profile_contacts_list_header (9154761216179882405) -->
- <skip />
<!-- no translation found for local_profile_title (2021416826991393684) -->
<skip />
<!-- no translation found for external_profile_title (8034998767621359438) -->
@@ -833,18 +330,8 @@
<skip />
<!-- no translation found for add_new_account (5748627740680940264) -->
<skip />
- <!-- no translation found for dialog_phone_call_prohibited_message (6554711866586660441) -->
- <!-- no translation found for dialog_phone_call_prohibited_message (4313552620858880999) -->
- <skip />
- <!-- no translation found for dialog_voicemail_not_ready_message (4384716252789515378) -->
- <skip />
- <!-- no translation found for dialog_voicemail_airplane_mode_message (530922773669546093) -->
- <skip />
<!-- no translation found for menu_export_database (2659719297530170820) -->
<skip />
- <!-- no translation found for action_menu_overflow_description (2303272250613084574) -->
- <!-- no translation found for action_menu_overflow_description (2295659037509008453) -->
- <skip />
- <!-- no translation found for expand_collapse_name_fields_description (8682630859539604311) -->
+ <!-- no translation found for contact_detail_picture_description (6083230522651287030) -->
<skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index dd928ca..85cac20 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Persoane"</string>
<string name="contactsList" msgid="8661624236494819731">"Agendă"</string>
<string name="shortcutContact" msgid="749243779392912958">"Persoană din Agendă"</string>
@@ -38,21 +37,17 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Despre"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Actualizări"</string>
<string name="searchHint" msgid="8482945356247760701">"Căutaţi în Agendă"</string>
- <string name="menu_search" msgid="9147752853603483719">"Căutaţi"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Persoană nouă în agendă"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Vizualizaţi persoana din agendă"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Apelaţi <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Adăugaţi la lista de favorite"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Eliminaţi din lista de favorite"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Editaţi"</string>
- <string name="menu_deleteContact" msgid="6788644058868189393">"Ştergeţi"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Copiaţi"</string>
+ <string name="menu_deleteContact" msgid="6788644058868189393">"Ștergeţi"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Plasaţi în ecranul de pornire"</string>
<string name="menu_call" msgid="3992595586042260618">"Apelaţi persoana din agendă"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Trimiteţi mesaj text către o persoană din agendă"</string>
<string name="menu_splitAggregate" msgid="8368636463748691868">"Separaţi"</string>
<string name="menu_editGroup" msgid="5062005185370983720">"Editaţi"</string>
- <string name="menu_deleteGroup" msgid="3486380004411482874">"Ştergeţi"</string>
+ <string name="menu_deleteGroup" msgid="3486380004411482874">"Ștergeţi"</string>
<string name="menu_new_contact_action_bar" msgid="7263362129442119188">"Adăugaţi o persoană de contact"</string>
<string name="menu_new_group_action_bar" msgid="3520232877587377175">"Adăugaţi un grup"</string>
<string name="splitConfirmation_title" msgid="633640935430370530">"Intrare separată?"</string>
@@ -68,23 +63,13 @@
<string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Toate apel. către mesag. voc."</string>
<string name="readOnlyContactWarning" msgid="7808825687289848259">"Nu puteţi şterge persoane din agendă, din conturi cu permisiuni doar de citire, însă puteţi să le ascundeţi în lista dvs. de persoane din agendă."</string>
<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="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_done" msgid="796017761764190697">"Terminat"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Anulaţi"</string>
<string name="menu_discard" msgid="6456087569315685632">"Renunţaţi"</string>
- <string name="label_notes" msgid="8337354953278341042">"Note"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Apel prin internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Companie"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titlu"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Creaţi o intrare nouă în Agendă"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresă"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizaţie"</item>
<item msgid="7196592230748086755">"Notă"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Nicio persoană în agendă."</string>
<string name="noGroups" msgid="8614664663561385253">"Nu există grupuri."</string>
<string name="noAccounts" msgid="7768267764545265909">"Pentru a crea grupuri aveţi nevoie de un cont."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nu a fost găsită nicio persoană potrivită în agendă."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Nicio persoană din agendă cu numere de telefon."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Nu există persoane în acest grup."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Pentru a adăuga persoane, editaţi grupul."</string>
<string name="savingContact" msgid="4075751076741924939">"Se salvează persoana din agendă..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Se salvează opţiunile de afişare..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Persoana din agendă a fost salvată."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nu s-au putut salva modificările aduse persoanei de contact."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grupul a fost salvat."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Nicio persoană din agendă."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Nicio persoană din agendă nu este vizibilă."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Nu există preferate."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Nicio persoană din agendă în <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Agenda din <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"O singură persoană din agendă"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Agenda în afişarea personalizată"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"S-au găsit peste <xliff:g id="COUNT">%d</xliff:g> (de) persoane din agendă."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Nu există persoane în agendă"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"A fost găsită 1 persoană din agendă"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Toată Agenda"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupuri"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favorite"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Preferate și toată agenda"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Jurnal de apeluri"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Trimiteţi un mesaj text"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Apelaţi <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modificaţi numărul înainte de apelare"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adăugaţi la persoane din agendă"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Eliminaţi din jurnalul de apeluri"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Ştergeţi jurnalul de apeluri"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Ştergeţi mesajul vocal"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Distribuiţi mesajul vocal"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Jurnalul de apeluri este gol."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Ştergeţi apelurile?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Toate înregistrările apelurilor dvs. vor fi şterse."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Se goleşte jurnalul de apeluri..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Ştergeţi persoane frecvent contactate?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Veţi şterge lista cu persoanele contactate cel mai frecvent din aplicaţiile Persoane şi Telefon şi veţi forţa aplicaţiile de e-mail să reţină preferinţele dvs. pentru adrese de la zero."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Ştergeți persoane frecv. contactate…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Mesagerie vocală"</string>
- <string name="unknown" msgid="740067747858270469">"Necunoscut"</string>
- <string name="private_num" msgid="6374339738119166953">"Număr privat"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefon public"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Utilizaţi tastatura pentru a forma"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Formaţi pentru a adăuga un apel"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Se încarcă de pe cardul SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Persoanele din agendă de pe cardul SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nicio persoană în agendă pentru afişare. (Dacă tocmai aţi adăugat un cont, poate dura câteva minute sincronizarea persoanelor din agendă.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nicio persoană din agendă pentru afişare."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nu aveţi persoane din agendă de afişat."\n\n"Pentru a adăuga persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu tableta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SIM sau cardul SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nu există persoane din agendă de afişat."\n\n"Dacă doriţi să adăugaţi persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu cele de pe telefon"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SIM sau cardul SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nu există persoane din agendă de afişat. (Dacă aţi adăugat recent un cont, poate dura câteva minute până la finalizarea sincronizării persoanelor din agendă.){"\n\n"Dacă doriţi să adăugaţi persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu cele de pe tabletă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opţiuni de afişare"</b></font>" pentru a modifica persoanele din agendă care sunt vizibile"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SIM sau SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nu există persoane din agendă de afişat. (Dacă aţi adăugat recent un cont, poate dura câteva minute până la finalizarea sincronizării persoanelor din agendă.){"\n\n"Dacă doriţi să adăugaţi persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu cele de pe telefon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opţiuni de afişare"</b></font>" pentru a modifica persoanele din agendă care sunt vizibile"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SIM sau SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nu aveţi persoane din agendă de afişat."\n\n"Pentru a adăuga persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu tableta"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nu aveţi persoane din agendă de afişat."\n\n"Pentru a adăuga persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu telefonul"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nu există persoane din agendă de afişat. (Dacă aţi adăugat recent un cont, poate dura câteva minute până la finalizarea sincronizării persoanelor din agendă.){"\n\n"Dacă doriţi să adăugaţi persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu cele de pe tabletă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opţiuni de afişare"</b></font>" pentru a modifica persoanele din agendă care sunt vizibile"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nu există persoane din agendă de afişat. (Dacă aţi adăugat recent un cont, poate dura câteva minute până la finalizarea sincronizării persoanelor din agendă.){"\n\n"Dacă doriţi să adăugaţi persoane în agendă, atingeţi "<font fgcolor="#ffffffff"><b>"Meniu"</b></font>", apoi atingeţi:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Conturi"</b></font>" pentru a adăuga sau a configura un cont cu persoane din agendă, pe care le puteţi sincroniza cu cele de pe telefon"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Opţiuni de afişare"</b></font>" pentru a modifica persoanele din agendă care sunt vizibile"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Persoană nouă în agendă"</b></font>" pentru a crea de la zero o intrare nouă în agendă"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importaţi/exportaţi"</b></font>" pentru a importa persoane din agendă de pe cardul SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nu aveţi favorite."\n\n" Pentru a adăuga o persoană în lista de favorite:"\n\n" "<li>"Apăsaţi pe fila "<b>"Agendă"</b>" "\n</li>" "\n<li>"Apăsaţi persoana pe care doriţi să o adăugaţi în lista de favorite"\n</li>" "\n<li>"Apăsaţi pe steaua de lângă numele persoanei"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Utilizaţi tastatura DTMF"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Reveniţi la apelul în curs"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Adăugaţi un apel"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Detaliile apelului"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Nu se pot citi detaliile pentru apelul solicitat."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Apel de intrare"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Apel de ieşire"</string>
- <string name="type_missed" msgid="2720502601640509542">"Apel nepreluat"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Mesaj vocal"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Apeluri de intrare"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> m <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Frecvent contactate"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Frecvent apelate"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Adăugaţi „<xliff:g id="EMAIL">%s</xliff:g>” la persoanele din agendă?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"unu"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"doi"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"trei"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"patru"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"cinci"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"şase"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"şapte"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"opt"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nouă"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"stea"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"clar"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Mesaj vocal"</string>
- <string name="description_search_button" msgid="3660807558587384889">"căutare"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"apelaţi"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"tasta backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numărul de apelat"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografia persoanei din agendă"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"ştergeţi"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Afişaţi persoana din agendă"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Nu s-a găsit o stocare."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nu s-a găsit un card SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importaţi de pe cardul SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importaţi din stocare"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportaţi în stocare"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Distribuiţi persoanele vizibile din agendă"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importaţi un fişier vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importaţi fişiere multiple vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importaţi toate fişierele vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Se caută date vCard în spaţiul de stocare..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Se caută date vCard pe cardul SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Stocarea nu s-a putut scana. (Motivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Cardul SD nu a putut fi scanat. (Motivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Eroare I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Memoria este insuficientă (probabil fişierul este prea mare)."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Nu s-au putut analiza datele de pe vCard dintr-un motiv neaşteptat."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formatul nu este acceptat."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Nu s-a putut importa fişierul vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Nu s-a găsit niciun fişier vCard în spaţiul de stocare."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Nu s-a găsit niciun fişier vCard pe cardul SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Nu s-au putut colecta metainformaţiile pentru fişierele vCard indicate."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Unul sau mai multe fişiere nu s-au putut importa (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Eroare necunoscută."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Alegeţi fişier vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Se stochează în cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Fişierele vCard se stochează în memoria cache într-un spaţiu de stocare local temporar. Importul propriu-zis va începe în curând."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Se importă <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Se importă <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nu s-au putut citi datele de pe vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Citirea datelor vCard a fost anulată"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"S-a finalizat importul vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importul fişierului <xliff:g id="FILENAME">%s</xliff:g> a fost anulat"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> va fi importat în curând."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Fişierul va fi importat în scurt timp."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Solicitarea de importare a fişierului vCard a fost respinsă. Încercaţi din nou mai târziu."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> va fi exportat în curând."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Solicitarea de exportare a fişierului vCard a fost respinsă. Încercaţi din nou mai târziu."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contact"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportaţi Agenda?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Lista dvs. cu persoane de contact va fi exportată în fişierul: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Nu s-a putut exporta"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Datele de contact nu au fost exportate."\n"Motivul: „<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nicio persoană de contact exportabilă."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Prea multe fişiere vCard în spaţiul de stocare."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Există prea multe fişiere vCard pe cardul SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Numele de fişier solicitat este prea lung („<xliff:g id="FILENAME">%s</xliff:g>”)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"S-a finalizat exportul fişierului <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exportul fişierului <xliff:g id="FILENAME">%s</xliff:g> a fost anulat."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Se exportă datele persoanelor din agendă"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Datele dvs. de contact se exportă la: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nu s-a putut iniţializa instrumentul de export: „<xliff:g id="EXACT_REASON">%s</xliff:g>”"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"A apărut o eroare în timpul exportului: „<xliff:g id="EXACT_REASON">%s</xliff:g>”."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nu s-au putut obţine informaţii din baza de date."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nu există persoane din agendă care să poată fi exportate. Dacă aveţi persoane în agenda tabletei, este posibil ca exportul acestora de pe tabletă să fie interzis de unii furnizori de date."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nu există persoane din agendă care să poată fi exportate. Dacă aveţi persoane în agenda telefonului, este posibil ca exportul acestora de pe telefon să fie interzis de unii furnizori de date."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Compozitorul vCard nu a pornit în mod corespunzător."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Nu s-a putut deschide fişierul „<xliff:g id="FILE_NAME">%s</xliff:g>”: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Anulaţi importul fişierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Anulaţi exportul fişierului <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Anulare import/export vCard nereuşită"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Numele persoanelor din agenda dvs."</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pauză 2 secunde"</string>
- <string name="add_wait" msgid="3360818652790319634">"Adăugaţi interval de aşteptare"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Selectaţi numărul"</string>
- <string name="call_settings" msgid="7666474782093693667">"Setări"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Selectaţi numărul"</string>
- <string name="make_primary" msgid="5829291915305113983">"Reţineţi această alegere"</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_name" msgid="8745511583852904385">"(Fără nume)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Conturi"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Şterg. pers. frecv. contact."</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Persoane de contact de afişat"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importaţi/exportaţi"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Import/export contacte"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importaţi Agenda"</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="share_error" msgid="948429331673358107">"Această persoană de contact nu poate fi distribuită."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Nume"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Pseudonim"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizaţie"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Site web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Evenimente"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relaţie"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupuri"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Creaţi o persoană în agendă, într-un cont"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Creaţi un grup în contul"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Eliminaţi grup de sincronizare"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Adăugaţi grup de sincronizare"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Mai multe grupuri..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Toate celelalte contacte"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Toată Agenda"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Eliminarea grupului „<xliff:g id="GROUP">%s</xliff:g>” din sincronizare va elimina, de asemenea, orice persoană din agendă care nu face parte dintr-un grup."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Numai pe tabletă, nesincronizată"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Numai pe telefon, nesincronizată"</string>
- <string name="call_custom" msgid="7756571794763171802">"Apelaţi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Apelaţi numărul de domiciliu"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Apelaţi numărul de mobil"</string>
- <string name="call_work" msgid="5328785911463744028">"Apelaţi numărul de serviciu"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Apelaţi un număr de fax de serviciu"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Apelaţi un număr de fax de la domiciliu"</string>
- <string name="call_pager" msgid="9003902812293983281">"Apelaţi un număr de pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Apelaţi"</string>
- <string name="call_callback" msgid="1910165691349426858">"Apelaţi un număr cu apelare inversă"</string>
- <string name="call_car" msgid="3280537320306436445">"Apelaţi numărul de maşină"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Apelaţi numărul principal al companiei"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Apelaţi ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Apelaţi numărul principal"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Apelaţi numărul de fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Apelaţi un număr radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Apelaţi un număr de telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Apelaţi TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Apelaţi numărul de mobil de la serviciu"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Apelaţi pagerul de serviciu"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Apelaţi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Apelaţi MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Trimiteţi mesaj text către <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Trimiteţi mesaj text către telefonul de domiciliu"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Trimiteţi mesaj text către telefonul mobil"</string>
- <string name="sms_work" msgid="2269624156655267740">"Trimiteţi mesaj text către numărul de serviciu"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Trimiteţi mesaj text către un fax de serviciu"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Trimiteţi mesaj text către un număr de fax de domiciliu"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Trimiteţi mesaj text către un număr de pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Mesaj"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Trimiteţi un mesaj text către un număr cu apelare inversă"</string>
- <string name="sms_car" msgid="7444227058437359641">"Trimiteţi mesaj text către un număr de telefon de maşină"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Trimiteţi mesaj text către numărul principal al companiei"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Mesaj text către un număr ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Trimiteţi mesaj text către numărul principal"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Trimiteţi mesaj text către un număr de fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Trimiteţi mesaj text către un număr radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Trimiteţi mesaj text către un număr de telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Trimiteţi mesaj text către TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Trimiteţi mesaj text către numărul de mobil de serviciu"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Trimiteţi mesaj text către un număr de pager de la serviciu"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Trimiteţi mesaj text către <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Trimiteţi mesaj text către un număr MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Mesaj text"</string>
- <string name="email_home" msgid="8573740658148184279">"Trimiteţi un e-mai la o adresă de e-mail de domiciliu"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Trimiteţi un e-mail către un telefon mobil"</string>
- <string name="email_work" msgid="2807430017302722689">"Trimiteţi e-mail către adresa de serviciu"</string>
- <string name="email_other" msgid="3454004077967657109">"Trimiteţi un e-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"Trimiteţi e-mail către <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Trimiteţi un e-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Vizualizaţi adresa de domiciliu"</string>
- <string name="map_work" msgid="1360474076921878088">"Vizualizaţi adresa de serviciu"</string>
- <string name="map_other" msgid="3817820803587012641">"Vizualizaţi adresa poştală"</string>
- <string name="map_custom" msgid="6184363799976265281">"Vizualizaţi adresa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Conversaţi prin AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Conversaţi prin Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Conversaţi prin Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Conversaţi prin Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Conversaţi prin QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Conversaţi prin Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Conversaţi prin ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Conversaţi prin Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Conversaţi prin chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Chat vocal"</string>
<string name="video_chat" msgid="1872255818640336072">"Chat video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresă"</string>
- <string name="postal_street" msgid="8133143961580058972">"Stradă"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Căsuţa poştală"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vecinătate"</string>
- <string name="postal_city" msgid="6597491300084895548">"Oraş"</string>
- <string name="postal_region" msgid="6045263193478437672">"Stat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Codul ZIP"</string>
- <string name="postal_country" msgid="7638264508416368690">"Ţara"</string>
- <string name="full_name" msgid="6602579550613988977">"Nume"</string>
- <string name="name_given" msgid="1687286314106019813">"Prenume"</string>
- <string name="name_family" msgid="3416695586119999058">"Numele de familie"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefixul numelui"</string>
- <string name="name_middle" msgid="8467433655992690326">"Al doilea prenume"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Sufixul numelui"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Prenume fonetic"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Numele mijlociu fonetic"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Numele de familie fonetic"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Nume fonetic"</string>
<string name="connections" msgid="8098440723172028350">"Conexiuni"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Adăugaţi o conexiune"</string>
<string name="recent" msgid="2659189233141493004">"Recente"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sortaţi lista după"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Prenume"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Numele de familie"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Vizualizaţi numele persoanei din agendă ca"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Afișați numele persoanei de contact"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Întâi prenumele"</string>
<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>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Afişaţi-i pe toţi"</string>
<string name="menu_select_all" msgid="621719255150713545">"Selectaţi-le pe toate"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Deselectaţi-le pe toate"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nu aţi selectat nicio persoană din Agendă."</string>
<string name="add_field" msgid="2384260056674995230">"Adăugaţi alt câmp"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Adăugaţi intrare nouă"</string>
<string name="add_organization" msgid="7311893231158291197">"Adăugaţi o organizaţie"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"nu au fost îmbinate"</item>
<item quantity="other" msgid="425683718017380845">"au fost îmbinate din <xliff:g id="COUNT">%0$d</xliff:g> surse"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Altul"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Asociaţi intrarea curentă din agendă cu intrarea selectată?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Comutaţi la funcţia de editare a persoanei din agendă selectate? Informaţiile introduse până acum vor fi copiate."</string>
<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="directory_search_label" msgid="1887759056597975053">"Director"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Toată Agenda"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Se creează o copie personală..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Toată agenda"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Cu stea"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Personalizată"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Personalizaţi"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Toate persoanele din agendă cu numere de telefon"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Persoană din agendă"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definiţi afişarea personalizată"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Se încarcă..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Setări"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Pers. din agendă de afiş."</string>
<string name="menu_settings" msgid="377929915873428211">"Setări"</string>
<string name="menu_help" msgid="5123887102216637725">"Ajutor"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Opţiuni de afişare"</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="hint_findContacts" msgid="1808681193458772072">"Găsiţi contacte"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Număr de telefon"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Adăugaţi în Agendă"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Adăug. la pers. din ag."</string>
@@ -479,7 +197,7 @@
<item quantity="one" msgid="2944819210288517794">"1 grup"</item>
<item quantity="other" msgid="1276758425904917367">"<xliff:g id="COUNT">%0$d</xliff:g> (de) grupuri"</item>
</plurals>
- <string name="delete_group_dialog_message" msgid="7586856514337560529">"Ştergeţi grupul „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Agenda nu va fi ştearsă.)"</string>
+ <string name="delete_group_dialog_message" msgid="7586856514337560529">"Ștergeţi grupul „<xliff:g id="GROUP_LABEL">%1$s</xliff:g>”? (Agenda nu va fi ştearsă.)"</string>
<plurals name="num_contacts_in_group">
<item quantity="one" msgid="1352418549951013448">"<xliff:g id="COUNT_0">%1$d</xliff:g> persoană din <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
<item quantity="other" msgid="8146027769011086349">"<xliff:g id="COUNT_0">%1$d</xliff:g> (de) persoane din <xliff:g id="ACCOUNT_TYPE">%2$s</xliff:g>"</item>
@@ -491,67 +209,13 @@
<string name="toast_join_with_empty_contact" msgid="2238581529864542985">"Introduceţi un nume pentru intrarea din agendă înainte de îmbinarea cu altă intrare."</string>
<string name="copy_text" msgid="3257145021583508761">"Copiaţi în clipboard"</string>
<string name="set_default" msgid="4417505153468300351">"Setaţi ca prestabilit"</string>
- <string name="clear_default" msgid="7193185801596678067">"Ştergeţi datele prestabilite"</string>
+ <string name="clear_default" msgid="7193185801596678067">"Ștergeţi datele prestabilite"</string>
<string name="toast_text_copied" msgid="5143776250008541719">"Text copiat"</string>
<string name="cancel_confirmation_dialog_message" msgid="5885724679874403115">"Renunţaţi la modificări?"</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">"Configuraţi profilul"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Introduceţi numele persoanei"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Afişaţi actualizări"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Mesaj vocal"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> (de) mesaje vocale"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Redaţi"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mesaj vocal nou de la <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nu s-a putut reda mesajul vocal."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Se utilizează memoria tampon..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Se preia mesajul vocal..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nu s-a putut prelua mesajul vocal."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Noi"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Mai vechi"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Numai apelurile cu mesaje vocale"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Numai apelurile primite"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Numai apelurile efectuate"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Numai apelurile nepreluate"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nu se poate realiza conectarea la serverul de mesagerie vocală."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Nu se conectează server mesagerie vocală. Aşteaptă mesaje noi."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Configuraţi mesageria vocală."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Componenta audio nu este disponibilă."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Configuraţi"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Apel. mesag. vocală"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Viteză minimă"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Viteză redusă"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Viteză normală"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Viteză crescută"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Viteză maximă"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Numele grupului"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Cont.prim.pr.NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Numai apelurile efectuate"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Numai apelurile primite"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Numai apelurile nepreluate"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Afişaţi numai mesajele vocale"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Afişaţi toate apelurile"</string>
- <string name="status_available" msgid="5586870015822828392">"Disponibil(ă)"</string>
- <string name="status_away" msgid="1838861100379804730">"Plecat(ă)"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ocupat(ă)"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Redaţi mesajul vocal"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Apel de intrare"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Apel de ieşire"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Apel nepreluat"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Mesaj vocal"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Adăugaţi o persoană în agendă"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Afişaţi persoana din agendă <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Apelaţi pe <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Trimiteţi un mesaj text către <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Mesaje vocale neascultate"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Trimiteţi un mesaj la <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Apelaţi telefon <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Contact rapid pentru <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Eu"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Păstraţi local"</string>
<string name="add_account" msgid="8201790677994503186">"Adăugaţi un cont"</string>
<string name="add_new_account" msgid="5748627740680940264">"Adăugaţi un cont nou"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Apelul nu a fost trimis"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Pentru a configura mesageria vocală, accesaţi Meniu > Setări."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Pentru a apela mesageria vocală, mai întâi dezactivaţi modul Avion."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportaţi fişierele bazei de date"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Mai multe opţiuni"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Extindeţi sau restrângeţi câmpurile pentru nume"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Fotografie. Selectați pentru a schimba."</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7dfbcb9..a76c186 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Телефон"</string>
<string name="people" msgid="1048457247435785074">"Контакты"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакты"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Контактные данные"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Лента активности"</string>
<string name="searchHint" msgid="8482945356247760701">"Поиск в контактах"</string>
- <string name="menu_search" msgid="9147752853603483719">"Поиск"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Новый контакт"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Просмотреть контакт"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Копировать"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Поместить на главный экран"</string>
<string name="menu_call" msgid="3992595586042260618">"Позвонить"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Отправить SMS/MMS"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Этот контакт содержит информацию из различных аккаунтов. Информация из аккаунтов, доступных только для чтения, будет скрыта в ваших списках контактов, но не удалена."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Удаление этого контакта приведет к потере данных из нескольких аккаунтов."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Этот контакт будет удален."</string>
- <string name="menu_done" msgid="796017761764190697">"Готово"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Отмена"</string>
<string name="menu_discard" msgid="6456087569315685632">"Отменить"</string>
- <string name="label_notes" msgid="8337354953278341042">"Примечания"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Интернет-вызов"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Название"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Должность"</string>
- <string name="invalidContactMessage" msgid="8215051456181842274">"Контакт удален."</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Адрес электронной почты"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Чат"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Адрес"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Организация"</item>
<item msgid="7196592230748086755">"Примечание"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Нет контактов."</string>
<string name="noGroups" msgid="8614664663561385253">"Нет групп."</string>
<string name="noAccounts" msgid="7768267764545265909">"Для создания групп нужен аккаунт."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Подходящие контакты не найдены."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Нет контактов с номерами телефонов."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Здесь пока никого нет."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Чтобы добавить участников, откройте меню и нажмите \"Изменить\"."</string>
<string name="savingContact" msgid="4075751076741924939">"Контакт сохраняется..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Сохранение настроек..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Контакт сохранен."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Не удалось сохранить изменения."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Группа сохранена."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"Контактов: 1"</item>
<item quantity="other" msgid="3578469907265375314">"Контактов: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Нет контактов"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Нет видимых контактов."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Нет контактов"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Нет контактов в: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Контакты в <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"1 контакт"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Пользовательский фильтр"</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="foundTooManyContacts" msgid="5163335650920020220">"Найдено более <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Нет контактов"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Найдено: 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Все контакты"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Группы"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Избранное"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Контакты: избранные, все"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Кнопки"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Вызовы"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Отправить SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Вызов: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Изменить номер и вызвать"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Добавить в контакты"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Удалить из списка вызовов"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Очистить список"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Удалить голосовое сообщение"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Поделиться"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Список вызовов пуст."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Удаление данных"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Журнал звонков будет очищен."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Очистка списка вызовов..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Очистить список популярных контактов?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Список популярных контактов в приложениях \"Контакты\" и \"Телефон\" будет очищен, и почтовые приложения начнут создавать этот список заново."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Подождите…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Голосовая почта"</string>
- <string name="unknown" msgid="740067747858270469">"Неизвестно"</string>
- <string name="private_num" msgid="6374339738119166953">"Скрытый номер"</string>
- <string name="payphone" msgid="4864313342828942922">"Телефон-автомат"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Наберите номер с клавиатуры"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Наберите номер"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Загрузка с SIM-карты…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Контакты на SIM-карте"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Отсутствуют контакты для отображения. (Если аккаунт был только что добавлен, потребуется несколько минут для синхронизации контактов.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Отсутствуют контакты для отображения."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Нет контактов для показа."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n" "\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с планшетным ПК."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SIM- или SD-карты."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Нет контактов для показа."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n" "\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с телефоном."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SIM- или SD-карты."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Нет контактов для показа. Если вы только что добавили аккаунт, синхронизация контактов может занять несколько минут."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с планшетным ПК."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Фильтр контактов"</b></font>": настройка параметров показа контактов."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SIM- или SD-карты."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Нет контактов для показа. Если вы только что добавили аккаунт, синхронизация контактов может занять несколько минут."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с телефоном."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Фильтр контактов"</b></font>": настройка параметров показа контактов."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SIM- или SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Нет контактов для показа."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n" "\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с планшетным ПК."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Нет контактов для показа."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n" "\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с телефоном."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Нет контактов для показа. Если вы только что добавили аккаунт, синхронизация контактов может занять несколько минут."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с планшетным ПК."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Фильтр контактов"</b></font>": настройка параметров показа контактов."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SD-карты."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Нет контактов для показа. Если вы только что добавили аккаунт, синхронизация контактов может занять несколько минут."\n\n"Чтобы добавить контакты, нажмите "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите один из вариантов."\n\n<li><font fgcolor="#ffffffff"><b>"Аккаунты"</b></font>": добавление или настройка аккаунта с контактами, которые можно синхронизировать с телефоном."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Фильтр контактов"</b></font>": настройка параметров показа контактов."\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новый контакт"</b></font>": добавление контакта."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт/экспорт"</b></font>": импорт контактов с SD-карты."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"У вас нет избранных контактов."\n\n"Чтобы сделать контакт избранным,"\n\n" "<li>"нажмите вкладку "<b>"Контакты"</b>";"\n</li>" "\n<li>"нажмите контакт, который нужно сделать избранным;"\n</li>" "\n<li>"нажмите звездочку возле имени контакта."\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Использовать тональный набор"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Вернуться к ожидающему вызову"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"+ вызов"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Сведения о вызове"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Не удается получить сведения о вызове."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Входящий вызов"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Исходящий вызов"</string>
- <string name="type_missed" msgid="2720502601640509542">"Пропущенный вызов"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Голосовая почта"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Входящие вызовы"</string>
<string name="callBack" msgid="5498224409038809224">"Перезвонить"</string>
<string name="callAgain" msgid="3197312117049874778">"Позвонить снова"</string>
<string name="returnCall" msgid="8171961914203617813">"Перезвонить"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g>:<xliff:g id="SECONDS">%s</xliff:g>"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Часто набираемые"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Часто вызываемые"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Добавить в контакты <xliff:g id="EMAIL">%s</xliff:g>?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"один"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"три"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"четыре"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"пять"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"шесть"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"семь"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"восемь"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"девять"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"пометить"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"нуль"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"решетка"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"голосовая почта"</string>
- <string name="description_search_button" msgid="3660807558587384889">"поиск"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"набор номера"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"удаление последнего символа"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"набираемый номер"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"фотография контакта"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"удалить"</string>
<string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Данные контакта"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Хранилище не найдено."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD-карта не обнаружена."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Импортировать с SIM-карты"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Импорт из накопителя"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Экспорт на накопитель"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Передать видимые контакты"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Импорт одного файла VCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Импорт нескольких файлов vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Импорт всех файлов VCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Поиск данных vCard на накопителе..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Поиск данных vCard на SD-карте..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не удалось просканировать накопитель. Причина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не удалось просканировать SD-карту. Причина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Ошибка ввода-вывода"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Недостаточно памяти. Возможно, файл слишком большой."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Не удалось проанализировать файл vCard."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Формат не поддерживается."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Не удалось импортировать данные vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"На накопителе нет файлов vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"На SD-карте нет файлов VCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Не удалось собрать метаданные файлов VCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Не удалось импортировать один или несколько файлов (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Неизвестная ошибка"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Выбор файла vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Кэширование"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Выполняется кэширование файлов vCard в локальное временное хранилище. Импорт скоро начнется."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Импорт <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Импорт: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Ошибка чтения vCard-файла"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Чтение данных vCard отменено"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Импорт файла vCard <xliff:g id="FILENAME">%s</xliff:g> завершен"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" отменен"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Импорт <xliff:g id="FILENAME">%s</xliff:g> начнется в ближайшее время."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Файл будет импортирован в ближайшее время."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Запрос на импорт данных vCard отклонен. Повторите попытку позже."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Экспорт <xliff:g id="FILENAME">%s</xliff:g> начнется в ближайшее время."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Запрос на экспорт данных vCard отклонен. Повторите попытку позже."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"контакт"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Экспорт контактов"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Список контактов будет экспортирован в файл \"<xliff:g id="VCARD_FILENAME">%s</xliff:g>\"."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Сбой экспорта"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Не удалось экспортировать данные."\n"Причина: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Нет контактов для экспорта."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Слишком много файлов vCard в хранилище."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Слишком много файлов VCard на SD-карте."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Слишком длинное название: <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" завершен."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\" отменен."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Экспорт данных контакта"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Контактные данные экспортируются в файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\"."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Не удалось запустить функцию экспорта. Причина: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Ошибка при экспорте. Причина: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"База данных недоступна."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Не найдены контакты для экспорта. Возможно, экспорт контактов с планшетного ПК не поддерживается поставщиком услуг передачи данных."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Не найдены контакты для экспорта. Возможно, экспорт контактов с телефона не поддерживается поставщиком услуг передачи данных."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Сбой при запуске редактора vCard."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Не удалось открыть файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\". Причина: <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Отменить импорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Отменить экспорт файла \"<xliff:g id="FILENAME">%s</xliff:g>\"?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Не удалось отменить импорт/экспорт vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена контактов"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Добавить двухсекундную паузу"</string>
- <string name="add_wait" msgid="3360818652790319634">"Добавить паузу"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Выбор номера"</string>
- <string name="call_settings" msgid="7666474782093693667">"Настройки"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Выбор номера"</string>
- <string name="make_primary" msgid="5829291915305113983">"Запомнить выбранное"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Действие не поддерживается ни в одном приложении."</string>
- <string name="missing_name" msgid="8745511583852904385">"Имя не указано"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Аккаунты"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Очистить популярные контакты"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Фильтр контактов"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Импорт/экспорт"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Импорт/экспорт контактов"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Импорт контактов"</string>
<string name="menu_share" msgid="943789700636542260">"Отправить"</string>
<string name="share_via" msgid="563121028023030093">"Способ отправки"</string>
- <string name="share_error" msgid="948429331673358107">"Не удалось передать данные."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Имя"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Псевдоним"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Организация"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Веб-сайт"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Мероприятия"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Отношения"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Группы"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Создать контакт в аккаунте"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Создание группы в аккаунте"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Удалить группу синхронизации"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Добавить группу синхронизации"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Другие группы..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Все контакты"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Все контакты"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Вместе с группой \"<xliff:g id="GROUP">%s</xliff:g>\" перестанут синхронизироваться контакты, не добавленные в группы."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Только для планшетных ПК, без синхронизации"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Только телефон, без синхронизации"</string>
- <string name="call_custom" msgid="7756571794763171802">"Позвонить (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="call_home" msgid="1990519474420545392">"Домашний тел."</string>
- <string name="call_mobile" msgid="7502236805487609178">"Мобильный тел."</string>
- <string name="call_work" msgid="5328785911463744028">"Рабочий тел."</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Рабочий факс"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Домашний факс"</string>
- <string name="call_pager" msgid="9003902812293983281">"Пейджер"</string>
- <string name="call_other" msgid="8563753966926932052">"Позвонить"</string>
- <string name="call_callback" msgid="1910165691349426858">"Обратный вызов"</string>
- <string name="call_car" msgid="3280537320306436445">"Тел. в машине"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Офис"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Номер ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Основной телефон"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Позвонить на номер факса"</string>
- <string name="call_radio" msgid="8296755876398357063">"Радиотелефон"</string>
- <string name="call_telex" msgid="2223170774548648114">"Телекс"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Телетайп"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Рабочий мобильный"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Рабочий пейджер"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Вызов: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"MMS-центр"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS:домашний тел."</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS: мобильный"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS:рабочий тел."</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS:рабочий факс"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS: дом. факс"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS: пейджер"</string>
- <string name="sms_other" msgid="806127844607642331">"Отправить SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS: номер обратного вызова"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS:тел. в машине"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS: тел. офиса"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS: номер ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS:основ. тел."</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Отправить SMS на номер факса"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS:радиотелефон"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS: телекс"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS: телетайп"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS:рабочий моб."</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS:рабоч. пейдж."</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Отправить текстовое сообщение на номер <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Текстовое сообщение"</string>
- <string name="email_home" msgid="8573740658148184279">"Личная эл. почта"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Моб. эл. почта"</string>
- <string name="email_work" msgid="2807430017302722689">"Рабочая эл.почта"</string>
- <string name="email_other" msgid="3454004077967657109">"Написать письмо"</string>
- <string name="email_custom" msgid="7548003991586214105">"Эл. почта (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="email" msgid="5668400997660065897">"Эл. почта"</string>
- <string name="map_home" msgid="1243547733423343982">"Просмотреть домашний адрес"</string>
- <string name="map_work" msgid="1360474076921878088">"Просмотреть рабочий адрес"</string>
- <string name="map_other" msgid="3817820803587012641">"Просмотр адреса"</string>
- <string name="map_custom" msgid="6184363799976265281">"Просмотр адреса: <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Чат через AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Чат через Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Чат через Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Чат через Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Чат через QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Чат через Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Чат через ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Чат через Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Чат"</string>
<string name="audio_chat" msgid="2535716629358298691">"Голосовой чат"</string>
<string name="video_chat" msgid="1872255818640336072">"Видеочат"</string>
- <string name="postal_address" msgid="8765560217149624536">"Адрес"</string>
- <string name="postal_street" msgid="8133143961580058972">"Улица"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Почтовый ящик"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Окружение"</string>
- <string name="postal_city" msgid="6597491300084895548">"Город"</string>
- <string name="postal_region" msgid="6045263193478437672">"Регион"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Почтовый индекс"</string>
- <string name="postal_country" msgid="7638264508416368690">"Страна"</string>
- <string name="full_name" msgid="6602579550613988977">"Имя"</string>
- <string name="name_given" msgid="1687286314106019813">"Имя"</string>
- <string name="name_family" msgid="3416695586119999058">"Фамилия"</string>
- <string name="name_prefix" msgid="59756378548779822">"Форма обращения"</string>
- <string name="name_middle" msgid="8467433655992690326">"Отчество"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Звание/титул"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Имя (транскрипция)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Отчество (транскрипция)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Фамилия (транскрипция)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Транскрипция имени"</string>
<string name="connections" msgid="8098440723172028350">"Соцсети"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Добавить соцсеть"</string>
<string name="recent" msgid="2659189233141493004">"Недавние"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Показывать в контактах"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Контакты не выбраны."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"не объединен"</item>
<item quantity="other" msgid="425683718017380845">"объединено из нескольких источников (<xliff:g id="COUNT">%0$d</xliff:g>)"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Другое"</string>
<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="directory_search_label" msgid="1887759056597975053">"Каталог"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Все контакты"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Копирование..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Все контакты"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Помеченные"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Пользовательские"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Настроить"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Все контакты с номерами телефонов"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Контакт"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Выберите группы контактов"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Загрузка..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Настройки"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Фильтр контактов"</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="hint_findContacts" msgid="1808681193458772072">"Найти контакты"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Обновления"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Голосовая почта"</item>
- <item quantity="other" msgid="5513481419205061254">"Голосовые сообщения: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Прослушать"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Новое гол. сообщение: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Не удалось воспроизвести сообщение."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Буферизация..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Получение голосовой почты..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Не удалось получить голосовую почту."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Новые"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Раньше"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Только звонки с голосовой почтой"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Только входящие звонки"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Только исходящие звонки"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Только пропущенные звонки"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Не удалось подключиться к серверу голосовой почты."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Не удалось подключиться к серверу. Есть новые сообщения."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Настройте голосовую почту."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Аудио недоступно."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Настройка"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Получить почту"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Минимальная скорость"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Низкая скорость"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Средняя скорость"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Высокая скорость"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Максимальная скорость"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Название группы"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Получено по NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Исходящие"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Входящие"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Пропущенные"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показать голосовые сообщения"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Все вызовы"</string>
- <string name="status_available" msgid="5586870015822828392">"На месте"</string>
- <string name="status_away" msgid="1838861100379804730">"Отсутствует"</string>
- <string name="status_busy" msgid="9147992455450257136">"Не беспокоить"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Прослушать голосовую почту"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Входящий вызов"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Исходящий вызов"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Пропущенный вызов"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Голосовая почта"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Добавить контакт"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Просмотреть данные: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Позвонить: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Отправить текстовое сообщение: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослушанные сообщения голосовой почты"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Отправить сообщение, контакт: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Позвонить, контакт: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Быстрый вызов, контакт: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Я"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Сохранить локально"</string>
<string name="add_account" msgid="8201790677994503186">"Добавить аккаунт"</string>
<string name="add_new_account" msgid="5748627740680940264">"Добавить аккаунт"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Вызов невозможен"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Чтобы настроить голосовую почту, выберите \"Меню > Настройки\"."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Сначала отключите режим полета."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Экспорт файлов базы данных"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Ещё"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Показать/скрыть дополнительные поля"</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 dcf6494..8ec34ea 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefón"</string>
<string name="people" msgid="1048457247435785074">"Ľudia"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakty"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Informácie"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Aktualizácie"</string>
<string name="searchHint" msgid="8482945356247760701">"Hľadať v kontaktoch"</string>
- <string name="menu_search" msgid="9147752853603483719">"Hľadať"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nový kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Zobraziť kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Volať <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Pridať medzi obľúbené položky"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Odstrániť z obľúbených"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Upraviť"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Odstrániť"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopírovať"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Umiestniť na plochu"</string>
<string name="menu_call" msgid="3992595586042260618">"Zavolať kontaktu"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Odoslať správu kontaktu"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Hotovo"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Zrušiť"</string>
<string name="menu_discard" msgid="6456087569315685632">"Zahodiť"</string>
- <string name="label_notes" msgid="8337354953278341042">"Poznámky"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetový hovor"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Spoločnosť"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titul"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Vytvoriť nový kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefón"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Poslať e-mail"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Okamžité správy"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adresa"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizácia"</item>
<item msgid="7196592230748086755">"Poznámka"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Žiadne kontakty."</string>
<string name="noGroups" msgid="8614664663561385253">"Žiadne skupiny."</string>
<string name="noAccounts" msgid="7768267764545265909">"Na vytvorenie skupín je potrebný účet."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Nenašli sa žiadne zodpovedajúce kontakty."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Ku kontaktom nie sú priradené žiadne telefónne čísla."</string>
<string name="emptyGroup" msgid="7502116218697177370">"V tejto skupine nie sú žiadni ľudia."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Ak chcete pridať členov, upravte skupinu."</string>
<string name="savingContact" msgid="4075751076741924939">"Prebieha ukladanie kontaktu..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Prebieha ukladanie možností zobrazenia..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt bol uložený."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Nepodarilo sa uložiť zmeny kontaktu."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Skupina bola uložená."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Žiadne kontakty."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Žiadne kontakty nie sú viditeľné."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Žiadne obľúbené položky."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Žiadne kontakty v položke <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakty v účte <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Jednotlivý kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakty vo vlastnom zobrazení"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Našlo sa viac ako <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Žiadne kontakty"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Počet nájdených položiek: 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Všetky kontakty"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupiny"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Obľúbené"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Obľúbené a všetky kontakty"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefón"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Denník hovorov"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Poslať textovú správu"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zavolať kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred volaním upraviť číslo"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridať medzi kontakty"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Odstrániť zo záznamu hovorov"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Vymazať záznam hovorov"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Odstrániť hlasovú správu"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Zdieľať hlasovú správu"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Záznam hovorov je prázdny."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Vymazať záznam hov.?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Všetky záznamy o hovoroch budú odstránené."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Vymazávanie denníka hovorov..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Vymazať často kontaktované osoby?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Vymažete zoznam často kontaktovaných osôb v aplikáciách Ľudia a Telefón a použijete odznova predvoľby adresátov v e-mailových aplikáciách."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Mazanie často kontaktovaných osôb."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Hlasová schránka"</string>
- <string name="unknown" msgid="740067747858270469">"Neznáme"</string>
- <string name="private_num" msgid="6374339738119166953">"Súkromné číslo"</string>
- <string name="payphone" msgid="4864313342828942922">"Verejný telefón"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Číslo vytočíte pomocou klávesnice."</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Pridávate hovor"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Prebieha načítavanie z karty SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakty na karte SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Nemáte uložené žiadne kontakty, ktoré by bolo možné zobraziť. (Ak ste účet pridali práve teraz, môže synchronizácia kontaktov trvať niekoľko minút.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Nemáte uložené žiadne kontakty, ktoré by sa dali zobraziť."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť."\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a následne sa dotknite jednej z nasledujúcich možností:"\n" "\n<li>"ak chcete nastaviť účet s kontaktmi, ktoré môžete synchronizovať s tabletom, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Účty"</b></font>";"\n</li>" "\n<li>"ak chcete vytvoriť úplne nový kontakt, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>";"\n</li>" "\n<li>"ak chcete importovať kontakty z karty SIM alebo karty SD, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Import a export"</b></font>"."\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nemáte žiadne kontakty, ktoré by sa dali zobraziť."\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a následne sa dotknite jednej z nasledujúcich možností:"\n" "\n<li>"ak chcete nastaviť účet s kontaktmi, ktoré môžete synchronizovať s telefónom, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Účty"</b></font>";"\n</li>" "\n<li>"ak chcete vytvoriť úplne nový kontakt, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>";"\n</li>" "\n<li>"ak chcete importovať kontakty z karty SIM alebo karty SD, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Import a export"</b></font>"."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť. (Ak ste práve pridali účet, môže synchronizácia kontaktov trvať niekoľko minút.)"\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a dotknite sa jednej z nasledujúcich položiek:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", ak chcete pridať alebo nakonfigurovať účet a kontakty v ňom synchronizovať s tabletom;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazenia"</b></font>", ak chcete zmeniť možnosti zobrazenia kontaktov;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", ak chcete vytvoriť úplne nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import a export"</b></font>", ak chcete importovať kontakty zo svojej karty SD."\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť. (Ak ste práve pridali účet, môže synchronizácia kontaktov trvať niekoľko minút.)"\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a dotknite sa jednej z nasledujúcich položiek:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", ak chcete pridať alebo nakonfigurovať účet a kontakty v ňom synchronizovať s telefónom;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazenia"</b></font>", ak chcete zmeniť možnosti zobrazenia kontaktov;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", ak chcete vytvoriť úplne nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import a export"</b></font>", ak chcete importovať kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť."\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a následne sa dotknite jednej z nasledujúcich možností:"\n" "\n<li>"ak chcete nastaviť účet s kontaktmi, ktoré môžete synchronizovať s tabletom, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Účty"</b></font>";"\n</li>" "\n<li>"ak chcete vytvoriť úplne nový kontakt, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>";"\n</li>" "\n<li>"ak chcete importovať kontakty z karty SIM alebo karty SD, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Import a export"</b></font>"."\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť."\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a následne sa dotknite jednej z nasledujúcich možností:"\n" "\n<li>"ak chcete nastaviť účet s kontaktmi, ktoré môžete synchronizovať s telefónom, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Účty"</b></font>";"\n</li>" "\n<li>"ak chcete vytvoriť úplne nový kontakt, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>";"\n</li>" "\n<li>"ak chcete importovať kontakty z karty SIM alebo karty SD, dotknite sa možnosti "<font fgcolor="#ffffffff"><b>"Import a export"</b></font>"."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť. (Ak ste práve pridali účet, môže synchronizácia kontaktov trvať niekoľko minút.)"\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a dotknite sa jednej z nasledujúcich položiek:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", ak chcete pridať alebo nakonfigurovať účet a kontakty v ňom synchronizovať s tabletom;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazenia"</b></font>", ak chcete zmeniť možnosti zobrazenia kontaktov;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", ak chcete vytvoriť úplne nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import a export"</b></font>", ak chcete importovať kontakty z karty SD."\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nemáte žiadne kontakty, ktoré by bolo možné zobraziť. (Ak ste práve pridali účet, môže synchronizácia kontaktov trvať niekoľko minút.)"\n\n"Ak chcete pridať kontakty, dotknite sa tlačidla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a následne sa dotknite jednej z nasledujúcich položiek:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Účty"</b></font>", ak chcete pridať alebo nakonfigurovať účet a kontakty v ňom synchronizovať s telefónom;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti zobrazenia"</b></font>", ak chcete zmeniť možnosti viditeľnosti kontaktov;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", ak chcete vytvoriť úplne nový kontakt;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Import a export"</b></font>", ak chcete importovať kontakty zo svojej karty SD."\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nemáte žiadne obľúbené kontakty."\n\n"Pridanie kontaktu do zoznamu obľúbených:"\n\n" "<li>"Dotknite sa karty "<b>"Kontakty"</b>\n</li>" "\n<li>"Dotknite sa kontaktu, ktorý má byť pridaný do obľúbených"\n</li>" "\n<li>"Dotknite sa hviezdičky vedľa názvu kontaktu"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Použiť dotykovú tónovú klávesnicu"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Návrat k prebiehajúcemu hovoru"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Pridať hovor"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti hovoru"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Podrobnosti požadovaného hovoru nie je možné načítať."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Prichádzajúci hovor"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Odchádzajúce volania"</string>
- <string name="type_missed" msgid="2720502601640509542">"Zmeškaný hovor"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Hlasová schránka"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Prichádzajúce hovory"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Najčastejšie používané kontakty"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Najčastejšie volané kontakty"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Chcete pridať „<xliff:g id="EMAIL">%s</xliff:g>“ medzi kontakty?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"jedna"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tri"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"štyri"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"päť"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"šesť"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sedem"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"osem"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"deväť"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"označiť hviezdičkou"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nula"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"libra"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"hlasová schránka"</string>
- <string name="description_search_button" msgid="3660807558587384889">"hľadať"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"vytáčanie"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"číslo, ktoré chcete vytočiť"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografia kontaktu"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"odstrániť"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Zobraziť kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ukladací priestor sa nenašiel."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Nenašla sa žiadna karta SD."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importovať z karty SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Import z ukl. priestoru"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Export do uklad. priest."</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Zdieľať viditeľné kontakty"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importovať jeden súbor vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importovať niekoľko súborov vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importovať všetky súbory vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Prebieha hľadanie údajov vizitky vCard v ukladacom priestore..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Prebieha hľadanie údajov vizitky vCard na karte SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Ukladací priestor sa nepodarilo prehľadať. (Dôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartu SD sa nepodarilo prehľadať. (Dôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Chyba I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Nedostatok pamäte. Súbor je možno príliš veľký."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Analýza karty vCard zlyhala z neznámeho dôvodu."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formát nie je podporovaný."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Vizitku vCard sa nepodarilo importovať."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"V ukladacom priestore sa nenašla žiadna vizitka vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Na karte SD sa nenašla žiadna vizitka vCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Metaúdaje daných súborov vizitiek vCard sa nepodarilo zhromaždiť."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Nepodaril sa import jedného alebo viacerých súborov (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Neznáma chyba."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Vyberte súbor vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Ukladanie do vyrovnávacej pamäte..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Prebieha načítavanie vizitiek vCard do vyrovnávacej pamäte miestneho dočasného úložiska. Samotné importovanie začne o chvíľu."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Import: <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importuje sa <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Nepodarilo sa prečítať údaje vizitky vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Čítanie údajov vizitky vCard bolo zrušené"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Import vizitky vCard bol dokončený <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo zrušené"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Vizitka <xliff:g id="FILENAME">%s</xliff:g> bude čoskoro importovaná."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Súbor bude čoskoro importovaný."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Žiadosť o import vizitky vCard bola odmietnutá. Skúste to znova neskôr."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Vizitka <xliff:g id="FILENAME">%s</xliff:g> bude čoskoro exportovaná."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Žiadosť o exportovanie vizitky vCard bola odmietnutá. Skúste to znova neskôr."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportovať kontakty?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Váš zoznam kontaktov bude exportovaný do súboru: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Export sa nepodaril"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Údaje o kontaktoch neboli exportované."\n"Dôvod: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Nedá sa exportovať žiadny kontakt."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"V ukladacom priestore je príliš veľa súborov vCard."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Na karte SD sa nachádza príliš veľa súborov vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Požadovaný názov súboru (<xliff:g id="FILENAME">%s</xliff:g>) je príliš dlhý."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo dokončené."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g> bolo zrušené."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Export údajov kontaktov"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Vaše údaje o kontaktoch sa exportujú do súboru: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Nástroj na exportovanie sa nepodarilo spustiť: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Počas exportovania sa vyskytla chyba: „<xliff:g id="EXACT_REASON">%s</xliff:g>“."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Nepodarilo sa získať informácie z databázy."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Nenašli sa žiadne kontakty, ktoré by bolo možné exportovať. Ak v tablete skutočne máte kontakty, problém môže byť spôsobený tým, že niektorí poskytovatelia údajov nemusia umožňovať export kontaktov z tabletu."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Nenašli sa žiadne kontakty, ktoré by bolo možné exportovať. Ak v telefóne skutočne máte kontakty, problém môže byť spôsobený tým, že niektorí poskytovatelia údajov nemusia umožňovať export kontaktov z telefónu."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Nástroj na tvorbu vizitiek vCard sa nespustil správne."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Súbor „<xliff:g id="FILE_NAME">%s</xliff:g>“ sa nepodarilo otvoriť: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Zrušiť importovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Zrušiť exportovanie súboru <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Importovanie/exportovanie karty vizitky vCard zlyhalo"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Mená vašich kontaktov"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Pridať dvojsekundovú pauzu"</string>
- <string name="add_wait" msgid="3360818652790319634">"Pridať čakanie"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Zvoľte číslo"</string>
- <string name="call_settings" msgid="7666474782093693667">"Nastavenia"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Zvoľte číslo"</string>
- <string name="make_primary" msgid="5829291915305113983">"Zapamätať si túto voľbu"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Aplikácia potrebná na spracovanie tejto akcie sa nenašla."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Bez mena)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Vymazať často kontakt. osoby"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakty na zobrazenie"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Import a export"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importovať alebo exportovať kontakty"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Import kontaktov"</string>
<string name="menu_share" msgid="943789700636542260">"Zdieľať"</string>
<string name="share_via" msgid="563121028023030093">"Zdieľať kontakt pomocou"</string>
- <string name="share_error" msgid="948429331673358107">"Tento kontakt nie je možné zdieľať."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Meno"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Prezývka"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizácia"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Webové stránky"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Udalosti"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Vzťah"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Skupiny"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Vytvoriť kontakt na základe účtu"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Vytvoriť skupinu v účte"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Odstrániť synchronizovanú skupinu"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Pridať synchronizovanú skupinu"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Ďalšie skupiny..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Všetky ostatné kontakty"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Všetky kontakty"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Ak zo synchronizácie odstránite skupinu „<xliff:g id="GROUP">%s</xliff:g>“, odstránite zo synchronizácie aj všetky kontakty, ktoré nie sú zaradené do žiadnej skupiny."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Iba v tablete, nesynchronizované"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Iba v telefóne, nesynchronizované"</string>
- <string name="call_custom" msgid="7756571794763171802">"Zavolať kontakt <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Zavolať domov"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Zavolať na mobil"</string>
- <string name="call_work" msgid="5328785911463744028">"Zavolať do práce"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Zavolať na pracovný fax"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Zavolať na domáci fax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Zavolať na pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Zavolať"</string>
- <string name="call_callback" msgid="1910165691349426858">"Zavolať na číslo spätného volania"</string>
- <string name="call_car" msgid="3280537320306436445">"Zavolať do auta"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Zavolať firme (hlavné číslo)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Zavolať na číslo ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Zavolať na hlavné číslo"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Zavolať na fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Zavolať rádiostanicu"</string>
- <string name="call_telex" msgid="2223170774548648114">"Zavolať na číslo Telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Zavolať na číslo TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Zavolať na pracovný mobil"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Zavolať na pracovný pager"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Zavolať kontaktu <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Zavolať na číslo MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Poslať správu kontaktu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS domov"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS na mobil"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS do práce"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS na pracovný fax"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS na domáci fax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS na pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Text"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Poslať správu na číslo spätného volania"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS do auta"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Odoslať správu do firmy (hlavné)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Poslať správu na číslo ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Odoslať správu na hlavné číslo"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS na fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS na rádiotelefón"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Poslať správu na číslo Telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Odoslať správu na číslo TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Odoslať správu na pracovný mobil"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Odoslať správu na pracovný pager"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Poslať správu kontaktu <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS na číslo MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Textová správa"</string>
- <string name="email_home" msgid="8573740658148184279">"E-mail domov"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-mail na mobil"</string>
- <string name="email_work" msgid="2807430017302722689">"E-mail do práce"</string>
- <string name="email_other" msgid="3454004077967657109">"Poslať e-mail"</string>
- <string name="email_custom" msgid="7548003991586214105">"Poslať e-mail osobe <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Poslať e-mail"</string>
- <string name="map_home" msgid="1243547733423343982">"Zobraziť adresu domov"</string>
- <string name="map_work" msgid="1360474076921878088">"Zobraziť pracovnú adresu"</string>
- <string name="map_other" msgid="3817820803587012641">"Zobraziť adresu"</string>
- <string name="map_custom" msgid="6184363799976265281">"Zobraziť adresu <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Zhovárať sa pomocou služby AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Zhovárať sa pomocou služby Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Zhovárať sa pomocou služby Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Zhovárať sa pomocou služby Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Zhovárať sa pomocou služby QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Zhovárať sa pomocou aplikácie Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Zhovárať sa pomocou služby ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Zhovárať sa pomocou služby Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Rozhovor"</string>
<string name="audio_chat" msgid="2535716629358298691">"Hlasový rozhovor"</string>
<string name="video_chat" msgid="1872255818640336072">"Videorozhovor"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adresa"</string>
- <string name="postal_street" msgid="8133143961580058972">"Ulica"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Číslo poštovej schránky"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Štvrť"</string>
- <string name="postal_city" msgid="6597491300084895548">"Mesto"</string>
- <string name="postal_region" msgid="6045263193478437672">"Štát"</string>
- <string name="postal_postcode" msgid="572136414136673751">"PSČ"</string>
- <string name="postal_country" msgid="7638264508416368690">"Krajina"</string>
- <string name="full_name" msgid="6602579550613988977">"Meno"</string>
- <string name="name_given" msgid="1687286314106019813">"Krstné meno"</string>
- <string name="name_family" msgid="3416695586119999058">"Priezvisko"</string>
- <string name="name_prefix" msgid="59756378548779822">"Titul pred menom"</string>
- <string name="name_middle" msgid="8467433655992690326">"Druhé meno"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Titul za menom"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Krstné meno (foneticky)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Druhé meno (foneticky)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Priezvisko (foneticky)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Meno (foneticky)"</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>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Zoradiť zoznam podľa"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Krstné meno"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Priezvisko"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Zobrazenie mien kontaktov"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Zobraziť mená kontaktov"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Najskôr krstné meno"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najskôr priezvisko"</string>
<string name="take_photo" msgid="7496128293167402354">"Zaznamenať fotografiu"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Zobraziť všetky"</string>
<string name="menu_select_all" msgid="621719255150713545">"Vybrať všetko"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Zrušiť výber všetkých"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Nie sú vybraté žiadne kontakty."</string>
<string name="add_field" msgid="2384260056674995230">"Pridať ďalšie pole"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Pridať nové"</string>
<string name="add_organization" msgid="7311893231158291197">"Pridať organizáciu"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"zlúčenie sa nepodarilo"</item>
<item quantity="other" msgid="425683718017380845">"zlúčené z <xliff:g id="COUNT">%0$d</xliff:g> zdrojov"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Iné"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Spojiť aktuálny kontakt s vybraným kontaktom?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Prepnúť do režimu úpravy vybraného kontaktu? Doposiaľ zadané informácie budú skopírované."</string>
<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="directory_search_label" msgid="1887759056597975053">"Adresár"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Všetky kontakty"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Prebieha vytváranie osobnej kópie..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Všetky kontakty"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Označené hviezdičkou"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Vlastné"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Prispôsobiť"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Všetky kontakty s telefónnymi číslami"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definícia vlastného zobrazenia"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Načítava sa…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavenia"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakty na zobrazenie"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavenia"</string>
<string name="menu_help" msgid="5123887102216637725">"Pomocník"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti zobrazenia"</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="hint_findContacts" msgid="1808681193458772072">"Nájsť kontakty"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefónne číslo"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Pridať medzi kontakty"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Pridať ku kontaktu"</string>
@@ -497,61 +215,7 @@
<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">"Nastaviť môj profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Zadajte meno osoby"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Zobraziť aktualizácie"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Hlasová správa"</item>
- <item quantity="other" msgid="5513481419205061254">"Počet hlasových správ: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Prehrať"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová správa – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Nepodarilo sa prehrať hlasovú správu."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Ukladanie do vyrovnávacej pamäte…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Načítavanie hlasovej správy…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Nepodarilo sa načítať hlasovú správu."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nové"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Staršie"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Iba volania do hlasovej schránky"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Iba prichádzajúce hovory"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Iba odchádzajúce hovory"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Iba zmeškané hovory"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Nepodarilo sa pripojiť k serveru hlasovej schránky."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Nepodarilo sa prip. k serveru hl. schránky. Nové hlas. správy."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Nastavenie hlasovej schránky."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Zvuk nie je k dispozícii."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavenie"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Volať hlas. schránku"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Najnižšia rýchlosť"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Nízka rýchlosť"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normálna rýchlosť"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Vysoká rýchlosť"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Najvyššia rýchlosť"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Názov skupiny"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kontakt cez NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Zobraziť len odchádzajúce"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Zobraziť len prichádzajúce"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Zobraziť len zmeškané"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobraziť len hlasové správy"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobraziť všetky hovory"</string>
- <string name="status_available" msgid="5586870015822828392">"K dispozícii"</string>
- <string name="status_away" msgid="1838861100379804730">"Preč"</string>
- <string name="status_busy" msgid="9147992455450257136">"Zaneprázdnený"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Prehrať hlasovú správu"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Prichádzajúci hovor"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Odchádzajúci hovor"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Zmeškaný hovor"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Hlasová schránka"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Pridať kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Zobraziť kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Volať kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Poslať textovú správu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Nevypočutá hlasová správa"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Odoslať správu kontaktu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Volať na telefón <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Rýchly kontakt <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ja"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Zachovať miestne"</string>
<string name="add_account" msgid="8201790677994503186">"Pridať účet"</string>
<string name="add_new_account" msgid="5748627740680940264">"Pridať nový účet"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hovor nebol spojený"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ak chcete nastaviť hlasovú schránku, prejdite na položku Menu > Nastavenia."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ak chcete volať hlasovú schránku, najprv vypnite režim V lietadle."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportovať súbory databázy"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Ďalšie možnosti"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Rozbaliť alebo zbaliť polia mien"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Obrázok. Ak ho chcete zmeniť, vyberte ho"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 972b5d1..2b66522 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Ljudje"</string>
<string name="contactsList" msgid="8661624236494819731">"Stiki"</string>
<string name="shortcutContact" msgid="749243779392912958">"Vizitka"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Vizitka"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Posodobitve"</string>
<string name="searchHint" msgid="8482945356247760701">"Iskanje stikov"</string>
- <string name="menu_search" msgid="9147752853603483719">"Iskanje"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Nov stik"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Ogled stika"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Dodaj k priljubljenim"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Odstrani iz priljubljenih"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Uredi"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Izbriši"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiraj"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Postavi na začetni zaslon"</string>
<string name="menu_call" msgid="3992595586042260618">"Pokliči stik"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Pošlji SMS stiku"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Dokončano"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Prekliči"</string>
<string name="menu_discard" msgid="6456087569315685632">"Zavrzi"</string>
- <string name="label_notes" msgid="8337354953278341042">"Opombe"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetni klic"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Podjetje"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Naslov"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Ustvari nov stik"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-pošta"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Neposredno sporočanje"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Naslov"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organizacija"</item>
<item msgid="7196592230748086755">"Opomba"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Ni stikov."</string>
<string name="noGroups" msgid="8614664663561385253">"Ni skupin."</string>
<string name="noAccounts" msgid="7768267764545265909">"Če želite ustvariti skupine, potrebujete račun."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Najti ni bilo mogoče nobenega ustreznega stika."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Ni stikov s telefonskimi številkami."</string>
<string name="emptyGroup" msgid="7502116218697177370">"V tej skupini ni ljudi."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Če jih želite dodati, uredite skupino."</string>
<string name="savingContact" msgid="4075751076741924939">"Shranjevanje stika..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Shranjevanje možnosti prikaza..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Stik shranjen."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Sprememb v stikih ni bilo mogoče shraniti."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Skupina je shranjena."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 stik"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> stikov"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Ni stikov."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Ni vidnih stikov."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Ni priljubljenih."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Ni stikov v: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Stiki v <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Posamezen stik"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Stiki v pogledu po meri"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Najdenih je bilo več kot <xliff:g id="COUNT">%d</xliff:g> stikov."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Ni stikov"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 najden"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Vsi stiki"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Skupine"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Priljubljeno"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Priljubljeno in vsi stiki"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Dnevnik klicev"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Pošlji besedilno sporočilo"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Pokliči <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred klicanjem uredi številko"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj med stike"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Odstrani iz dnevnika klicev"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Počisti dnevnik klicev"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Brisanje sporočil odzivnika"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Skupna raba odzivnika"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Dnevnik klicev je prazen."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Izbr. dnev. klicev?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Vsi vaši zapisi bodo izbrisani."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Brisanje dnevnika klicev ..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Želite izbrisati seznam pog. stikov?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Izbrisali boste seznam pogostih stikov v aplikacijah Ljudje in Telefon, zato bodo e-poštne aplikacije začele shranjevati vaše pogoste naslovnike od začetka."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Brisanje seznama pogostih stikov …"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Glasovna pošta"</string>
- <string name="unknown" msgid="740067747858270469">"Neznano"</string>
- <string name="private_num" msgid="6374339738119166953">"Zasebna številka"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefonska govorilnica"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Za klicanje uporabite tipkovnico"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Pokliči za dodajanje klica"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Nalaganje s kartice SIM ..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Stiki na kartici SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Ni stikov za prikaz. (Če ste račun pravkar dodali, utegne trajati nekaj minut, da se stiki sinhronizirajo.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Ni stikov za prikaz."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Nimate stikov za prikaz."\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali nastaviti račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SIM ali SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Nimate stikov za prikaz."\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali nastaviti račun s stiki, ki ga lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SIM ali SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Nimate stikov za prikaz. (Če ste pravkar dodali račun, lahko sinhronizacija stikov traja nekaj minut.)"\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali nastaviti račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti prikaza"</b></font>", če želite določiti, kateri stiki so vidni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SIM ali SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Nimate stikov za prikaz. (Če ste pravkar dodali račun, lahko sinhronizacija stikov traja nekaj minut.)"\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali nastaviti račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti prikaza"</b></font>", če želite določiti, kateri stiki so vidni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SIM ali SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Nimate nobenega stika za prikaz."\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali konfigurirati račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Nimate stikov za prikaz."\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali nastaviti nov račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Nimate stikov za prikaz. (Če ste pravkar dodali račun, lahko sinhronizacija stikov traja nekaj minut.)"\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n\n<li><font fgcolor="#ffffffff"><b>"Račun"</b></font>", če želite dodati ali nastaviti račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti prikaza"</b></font>", če želite določiti, kateri stiki so vidni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Nimate stikov za prikaz. (Če ste pravkar dodali račun, lahko sinhronizacija stikov traja nekaj minut.)"\n\n"Če želite dodati stike, pritisnite "<font fgcolor="#ffffffff"><b>"Meni"</b></font>", nato se dotaknite možnosti:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Računi"</b></font>", če želite dodati ali konfigurirati račun s stiki, ki jih lahko sinhronizirate s telefonom"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Možnosti prikaza"</b></font>", če želite določiti, kateri stiki so vidni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nov stik"</b></font>", če želite ustvariti nov stik"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Uvoz/izvoz"</b></font>", če želite uvoziti stike s kartice SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Nimate priljubljenih."\n\n"Če želite dodati stik na seznam priljubljenih:"\n\n" "<li>"Dotaknite se zavihka "<b>"Stiki"</b>" "\n</li>" "\n<li>"Dotaknite se stika, ki ga želite dodati priljubljenim"\n</li>" "\n<li>"Dotaknite se zvezdice poleg imena stika"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Uporabi številčnico za tonsko klicanje"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Nazaj na klic, ki poteka"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Dodaj klic"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Podrobnosti klica"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Podrobnosti zahtevanega klica ni bilo mogoče prebrati."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Dohodni klic"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Odhodni klic"</string>
- <string name="type_missed" msgid="2720502601640509542">"Neodgovorjeni klic"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Odzivnik"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Dohodni klici"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> min, <xliff:g id="SECONDS">%s</xliff:g> s"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Pogosti stiki"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Pogosto klicani"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Želite »<xliff:g id="EMAIL">%s</xliff:g>« dodati stikom?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"ena"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dva"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tri"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"štiri"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"pet"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"šest"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sedem"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"osem"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"devet"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"zvezdica"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"nič"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"funt"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"glasovna pošta"</string>
- <string name="description_search_button" msgid="3660807558587384889">"iskanje"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"pokliči"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"vračalka"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"številka, ki bo poklicana"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"fotografija stika"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"brisanje"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Ogled stika"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Shrambe ni bilo mogoče najti."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Kartice SD ni mogoče najti"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Uvozi s kartice SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Uvoz iz pomnilnika"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Izvoz v pomnilnik"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Vidne stike deli z drugimi"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Uvozi eno datoteko z vizitko vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Uvozi več datotek z vizitko vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Uvozi vse datoteke vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Iskanje podatkov vCard v pomnilniku ..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Iskanje podatkov vCard na kartici SD ..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Shrambe ni bilo mogoče pregledati. (Razlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kartice SD ni bilo mogoče pregledati. (Razlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Napaka I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Ni dovolj pomnilnika. Datoteka je morda prevelika."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Datoteke vCard iz neznanega razloga ni bilo mogoče razčleniti."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Ta oblika ni podprta."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Datoteke vCard ni bilo mogoče uvoziti."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Datotek vCard ni bilo mogoče najti v pomnilniku."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Na kartici SD ni mogoče najti datotek vCard."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Meta informacij za določene datoteke vCard ni bilo mogoče zbrati."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Ene ali več datotek ni bilo mogoče uvoziti (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Neznana napaka."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Izb. vel. dat. vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Predpomnjenje"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Predpomnjenje datotek(e) vCARD v lokalno začasno shrambo. Dejanski uvoz se bo začel kmalu."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Uvažanje <xliff:g id="CURRENT_NUMBER">%s</xliff:g>(<xliff:g id="TOTAL_NUMBER">%s</xliff:g>:<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Uvažanje <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Podatkov vCard ni bilo mogoče prebrati"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Branje kartice vCard je preklicano"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Končan uvoz dat. vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Uvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je preklican"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Dat. <xliff:g id="FILENAME">%s</xliff:g> bo kmalu uvožena."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Datoteka bo kmalu uvožena."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Zahteva za uvoz datoteke vCard je bila zavrnjena. Poskusite znova pozneje."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Dat. <xliff:g id="FILENAME">%s</xliff:g> bo kmalu izvožena."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Zahteva za izvoz datoteke vCard je bila zavrnjena. Poskusite znova pozneje."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"stik"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Želite izvoz. stike?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Seznam stikov bo izvožen v datoteko: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Izvoz ni mogoč"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Podatki stika niso bili izvoženi."\n"Razlog: »<xliff:g id="FAIL_REASON">%s</xliff:g>«"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Ni stikov za izvoz."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"V shrambi je preveč datotek vCard."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Na kartici SD je preveč datotek vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Zahtevano ime datoteke je predolgo (»<xliff:g id="FILENAME">%s</xliff:g>«)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je končan."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g> je preklican."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Izvažanje podatkov o stiku"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Podatki stikov se izvažajo v datoteko to: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Funkcije za izvoz ni bilo mogoče zagnati: »<xliff:g id="EXACT_REASON">%s</xliff:g>«"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Pri izvozu je prišlo do napake: »<xliff:g id="EXACT_REASON">%s</xliff:g>«"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Informacij o zbirki podatkov ni bilo mogoče dobiti."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Na voljo ni noben stik za izvoz. Če imate v telefonu stike, nekateri ponudniki podatkov morda ne omogočajo izvoza stikov iz telefona."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Ni na voljo stikov za izvoz. Če imate v telefonu stike, nekateri ponudniki podatkov morda ne omogočajo izvoza stikov iz telefona."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Urejevalnik za vCard se ni pravilno zagnal."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Datoteke »<xliff:g id="FILE_NAME">%s</xliff:g>« ni bilo mogoče odpreti: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Želite preklicati izvoz datoteke <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Uvoza/izvoza vCard ni mogoče preklicati"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Imena stikov"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2 sekundi premora"</string>
- <string name="add_wait" msgid="3360818652790319634">"Dodaj premor"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Izberite številko"</string>
- <string name="call_settings" msgid="7666474782093693667">"Nastavitve"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Izberite številko"</string>
- <string name="make_primary" msgid="5829291915305113983">"Zapomni si to izbiro"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Programa za obravnavo tega dejanja ni mogoče najti."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Ni imena)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Računi"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Izbriši seznam pogostih stikov"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Stiki, ki naj bodo prikazani"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Uvoz/izvoz"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Uvoz/izvoz stikov"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Uvoz stikov"</string>
<string name="menu_share" msgid="943789700636542260">"Skupna raba"</string>
<string name="share_via" msgid="563121028023030093">"Deli stik z drugimi prek"</string>
- <string name="share_error" msgid="948429331673358107">"Tega stika ni mogoče dati v skupno rabo."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Ime"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Vzdevek"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organizacija"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Spletno mesto"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Dogodki"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Odnos"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Skupine"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Ustvari stik v računu"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Ustvari skupino v računu"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Odstrani skupino za sinhroniziranje"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Dodaj skupino za sinhroniziranje"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Več skupin ..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Vsi drugi stiki"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Vsi stiki"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Če skupino »<xliff:g id="GROUP">%s</xliff:g>« odstranite iz sinhronizacije, boste iz sinhronizacije odstranili tudi vse nerazvrščene stike."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Samo v telefonu, nesinhroniziran"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Samo v telefonu, nesinhroniziran"</string>
- <string name="call_custom" msgid="7756571794763171802">"Pokliči <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Pokliči domov"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Pokliči mobilni telefon"</string>
- <string name="call_work" msgid="5328785911463744028">"Pokliči v službo"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Pokliči službeni faks"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Pokliči domači faks"</string>
- <string name="call_pager" msgid="9003902812293983281">"Pokliči pozivnik"</string>
- <string name="call_other" msgid="8563753966926932052">"Pokliči"</string>
- <string name="call_callback" msgid="1910165691349426858">"Pokliči številko za povratni klic"</string>
- <string name="call_car" msgid="3280537320306436445">"Pokliči telefon v avtu"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Pokliči glavno telefonsko številko podjetja"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Pokliči številko ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Pokliči glavno telefonsko številko"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Pokliči faks"</string>
- <string name="call_radio" msgid="8296755876398357063">"Pokliči radijski telefon"</string>
- <string name="call_telex" msgid="2223170774548648114">"Pokliči telefaks"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Pokliči številko TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Pokliči službeni mobilni telefon"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Pokliči službeni pozivnik"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Pokliči <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Pokliči telefon MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Pošlji SMS na številko <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Pošlji SMS domov"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Pošlji SMS na mobilni telefon"</string>
- <string name="sms_work" msgid="2269624156655267740">"Pošlji SMS na službeni telefon"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Pošlji SMS na službeni faks"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Pošlji SMS na domači faks"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Pošlji SMS na pozivnik"</string>
- <string name="sms_other" msgid="806127844607642331">"Pošlji SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Pošlji SMS na številko za povratni klic"</string>
- <string name="sms_car" msgid="7444227058437359641">"Pošlji SMS na telefon v avtu"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Pošlji SMS na glavno telefonsko številko podjetja"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Pošlji SMS na številko ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Pošlji SMS na glavno telefonsko številko"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Pošlji SMS na faks"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Pošlji SMS na radijski telefon"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Pošlji SMS na telefaks"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Pošlji SMS na telefonsko številko TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Pošlji SMS na službeni mobilni telefon"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Pošlji SMS na službeni pozivnik"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Pošlji SMS <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Pošlji SMS na telefon MMS"</string>
- <string name="sms" msgid="1756857139634224222">"SMS"</string>
- <string name="email_home" msgid="8573740658148184279">"Pošlji e-pošto domov"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Pošlji e-pošto na mobilni telefon"</string>
- <string name="email_work" msgid="2807430017302722689">"Pošlji e-pošto na službeni naslov"</string>
- <string name="email_other" msgid="3454004077967657109">"E-pošta"</string>
- <string name="email_custom" msgid="7548003991586214105">"Pošlji e-pošto na <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-pošta"</string>
- <string name="map_home" msgid="1243547733423343982">"Prikaži domači naslov"</string>
- <string name="map_work" msgid="1360474076921878088">"Prikaži službeni naslov"</string>
- <string name="map_other" msgid="3817820803587012641">"Prikaži naslov"</string>
- <string name="map_custom" msgid="6184363799976265281">"Prikaži naslov <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Klepet s storitvijo AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Klepet s storitvijo Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Klepet s storitvijo Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Klepet s storitvijo Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Klepet s storitvijo QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Klepet s storitvijo Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Klepet s storitvijo ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Klepet s storitvijo Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Klepet"</string>
<string name="audio_chat" msgid="2535716629358298691">"Glasovni klepet"</string>
<string name="video_chat" msgid="1872255818640336072">"Videoklepet"</string>
- <string name="postal_address" msgid="8765560217149624536">"Naslov"</string>
- <string name="postal_street" msgid="8133143961580058972">"Ulica"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Poštni predal"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Naselje"</string>
- <string name="postal_city" msgid="6597491300084895548">"Mesto"</string>
- <string name="postal_region" msgid="6045263193478437672">"Država/regija"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Poštna številka"</string>
- <string name="postal_country" msgid="7638264508416368690">"Država"</string>
- <string name="full_name" msgid="6602579550613988977">"Ime"</string>
- <string name="name_given" msgid="1687286314106019813">"Ime"</string>
- <string name="name_family" msgid="3416695586119999058">"Priimek"</string>
- <string name="name_prefix" msgid="59756378548779822">"Naziv"</string>
- <string name="name_middle" msgid="8467433655992690326">"Drugo ime"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Naziv (za imenom)"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Ime – fonetično"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Drugo ime – fonetično"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Priimek – fonetično"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Ime – fonetično"</string>
<string name="connections" msgid="8098440723172028350">"Povezave"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Dodaj povezavo"</string>
<string name="recent" msgid="2659189233141493004">"Nedavni"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Razvrsti seznam po"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Ime"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Priimek"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Prikaži imena stikov kot"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Prikaži imena stikov"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Najprej ime"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Najprej priimek"</string>
<string name="take_photo" msgid="7496128293167402354">"Posnemi fotografijo"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Pokaži vse"</string>
<string name="menu_select_all" msgid="621719255150713545">"Izberi vse"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Prekliči izbor vseh"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Izbran ni noben stik."</string>
<string name="add_field" msgid="2384260056674995230">"Dodaj drugo polje"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Dodaj novo"</string>
<string name="add_organization" msgid="7311893231158291197">"Dodaj organizacijo"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"ni spojeno"</item>
<item quantity="other" msgid="425683718017380845">"spojeno iz <xliff:g id="COUNT">%0$d</xliff:g> virov"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Drugo"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Želite združiti stik z izbranim stikom?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Želite urejati izbrani stik? Podatki, ki ste jih doslej vnesli, bodo kopirani."</string>
<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="directory_search_label" msgid="1887759056597975053">"Imenik"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Vsi stiki"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Ustvarjanje osebne kopije ..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Vsi stiki"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Z zvezdico"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Po meri"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Prilagodi"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Vsi stiki s telefonskimi številkami"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Stik"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Določite pogled po meri"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Nalaganje …"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Nastavitve"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Stiki za prikaz"</string>
<string name="menu_settings" msgid="377929915873428211">"Nastavitve"</string>
<string name="menu_help" msgid="5123887102216637725">"Pomoč"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Možnosti prikaza"</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="hint_findContacts" msgid="1808681193458772072">"Najdi stike"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonska številka"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Dodaj v stike"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Dodaj v stik"</string>
@@ -497,61 +215,7 @@
<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">"Nastavi moj profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Vnesite ime osebe"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Prikaz posodobitev"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Sporočila glasovne pošte"</item>
- <item quantity="other" msgid="5513481419205061254">"Št. sporočil glasovne pošte: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Predvajaj"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova glasovna pošta od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Sporočil odzivn. ni mogoče predvajati."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Medpomnjenje…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Prejemanje sporočil odzivnika…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Sporočil odzi. ni bilo mogoče prejeti."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Novo"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Starejši"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Samo klici z odzivnikom"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Samo dohodni klici"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Samo odhodni klici"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Samo neodgovorjeni klici"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"S strežnikom za odzivnik se ni mogoče povezati."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"S strež. odzivnika se ni mogoče povezati. Nova sporočila čakajo."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Nastavite odzivnik."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Zvok ni na voljo."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Nastavite odzivnik"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Klicanje glasovne pošte"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Najpočasnejše predvajanje"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Počasno predvajanje"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Običajna hitrost"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Hitro predvajanje"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Najhitrejše predvajanje"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Ime skupine"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Stik prejet prek NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Pokaži samo odhodne"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Pokaži samo dohodne"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaži samo neodgovorjene"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaži samo spor. glasovne pošte"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaži vse klice"</string>
- <string name="status_available" msgid="5586870015822828392">"Dosegljiv"</string>
- <string name="status_away" msgid="1838861100379804730">"Odsoten"</string>
- <string name="status_busy" msgid="9147992455450257136">"Zaseden"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Predvajanje sporočil glasovne pošte"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Dohodni klic"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Odhodni klic"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Neodgovorjeni klic"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Sporočila glasovne pošte"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Dodajanje stika"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Ogled stika <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Klicanje osebe <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Pošlji SMS osebi <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Neodprta glasovna pošta"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Pošlji sporočilo stiku <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Kliči: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Hitri stik za <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Jaz"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Ohrani lokalno"</string>
<string name="add_account" msgid="8201790677994503186">"Dodaj račun"</string>
<string name="add_new_account" msgid="5748627740680940264">"Dodaj nov račun"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Klic ni uspel"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Če želite nastaviti odzivnik, odprite Meni > Nastavitve."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Če želite poklicati odzivnik, najprej izklopite način za letalo."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Izvoz datotek zbirke"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Več možnosti"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Razširi ali strni imenska polja"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Slika. Izberite, da spremenite"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 97685ee..f47f52f 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Телефон"</string>
<string name="people" msgid="1048457247435785074">"Особе"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Основни подаци"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Ажурирања"</string>
<string name="searchHint" msgid="8482945356247760701">"Претражи контакте"</string>
- <string name="menu_search" msgid="9147752853603483719">"Претрага"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Нови контакт"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Прикажи контакт"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Копирај"</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>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Овај контакт садржи информације из више налога. Информације из налога који су само за читање неће бити избрисане са листе контаката, него скривене."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Ако избришете овај контакт, биће избрисане информације са више налога."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Овај контакт ће бити избрисан."</string>
- <string name="menu_done" msgid="796017761764190697">"Готово"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Откажи"</string>
<string name="menu_discard" msgid="6456087569315685632">"Одбаци"</string>
- <string name="label_notes" msgid="8337354953278341042">"Белешке"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Интернет позив"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Предузеће"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Наслов"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Телефон"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Пошаљи е-поштом"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Размена тренутних порука"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Адреса"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Организација"</item>
<item msgid="7196592230748086755">"Напомена"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Нема контаката."</string>
<string name="noGroups" msgid="8614664663561385253">"Нема група."</string>
<string name="noAccounts" msgid="7768267764545265909">"Морате да имате налог да бисте могли да правите групе."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Није пронађен ниједан одговарајући контакт."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Нема контаката за које су унети бројеви телефона."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Нема људи у овој групи."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Да бисте додали неке, измените групу."</string>
<string name="savingContact" msgid="4075751076741924939">"Чување контакта је у току..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Чување опција приказа је у току..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Контакт је сачуван."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Није било могуће сачувати измене контаката."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Група је сачувана."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
<item quantity="other" msgid="3578469907265375314">"Kонтаката: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Нема контаката."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Нема видљивих контаката."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Нема омиљених."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Нема контаката у групи <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Контакти за <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Појединачни контакт"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Контакти у прилагођеном приказу"</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="foundTooManyContacts" msgid="5163335650920020220">"Пронађено је више од <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Нема контаката"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 пронађен"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Сви контакти"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Групе"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Омиљено"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Омиљено и сви контакти"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Евиденција позива"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Пошаљи SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Позови <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Измените број пре позива"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Додај у контакте"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Уклони из евиденције позива"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Обриши евиденцију позива"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Избриши говорну поруку"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Дели говорну поруку"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Евиденција позива је празна."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Обрисати евиденцију позива?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Све евиденције позива ће бити избрисане."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Брисање евиденције позива..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Брисање често контактираних?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Обрисаћете листу често контактираних у апликацијама Људи и Телефон, па ће апликације е-поште морати из почетка да сакупе информације о адресирању."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Брисање често контактираних..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Говорна пошта"</string>
- <string name="unknown" msgid="740067747858270469">"Непознато"</string>
- <string name="private_num" msgid="6374339738119166953">"Приватан број"</string>
- <string name="payphone" msgid="4864313342828942922">"Јавна говорница"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Користите тастатуру за позивање"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Бирај и додај позив"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Учитавање са SIM картице је у току…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Контакти на SIM картици"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Није могуће приказати контакте зато што их немате. (Ако сте управо додали налог, поступак синхронизације контаката може да потраје неколико минута.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Није могуће приказати контакте зато што их немате."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Немате контаката за приказ."\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или подесили налог са контактима које можете да синхронизујете са таблетом"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SIM или SD картице"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Немате контаката за приказ."\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или подесили налог са контактима које можете да синхронизујете са телефоном"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SIM или SD картице"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Немате контаката за приказ. (Ако сте управо додали налог, синхронизација контаката може да потраје неколико минута.)"\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или конфигурисали налог са контактима које желите да синхронизујете са таблетом"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опције приказа"</b></font>" да бисте променили видљиве контакте"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SIM или SD картице"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Немате контаката за приказ. (Ако сте управо додали налог, синхронизација контаката може да потраје неколико минута.)"\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или конфигурисали налог са контактима које желите да синхронизујете са телефоном"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опције приказа"</b></font>" да бисте променили видљиве контакте"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SIM или SD картице"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Немате контаката за приказ."\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или подесили налог са контактима које можете да синхронизујете са таблетом"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SD картице"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Немате контаката за приказ."\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или подесили налог са контактима које можете да синхронизујете са телефоном"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SD картице"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Немате контаката за приказ. (Ако сте управо додали налог, синхронизација контаката може да потраје неколико минута.)"\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или конфигурисали налог са контактима које желите да синхронизујете са таблетом"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опције приказа"</b></font>" да бисте променили видљиве контакте"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SD картице"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Немате контаката за приказ. (Ако сте управо додали налог, синхронизација контаката може да потраје неколико минута.)"\n\n"Да бисте додали контакте, додирните "<font fgcolor="#ffffffff"><b>"Мени"</b></font>", затим додирните:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Налози"</b></font>" да бисте додали или конфигурисали налог са контактима које желите да синхронизујете са телефоном"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Опције приказа"</b></font>" да бисте променили видљиве контакте"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Нови контакт"</b></font>" да бисте направили потпуно нов контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Увоз/извоз"</b></font>" да бисте увезли контакте са SD картице"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Немате ниједан омиљени контакт."\n\n"Да бисте додали контакт на листу омиљених контаката:"\n\n" "<li>"Додирните картицу "<b>"Контакти"</b>\n</li>" "\n<li>"Додирните контакт који желите да додате у омиљене контакте"\n</li>" "\n<li>"Додирните звездицу поред имена контакта"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Употребите бројчаник за тонско бирање"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Врати се на позив који је у току"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Додај позив"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Детаљи позива"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Није било могуће прочитати детаље о захтеваном позиву."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Долазни позив"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Одлазни позив"</string>
- <string name="type_missed" msgid="2720502601640509542">"Пропуштен позив"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Говорна пошта"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Долазни позиви"</string>
<string name="callBack" msgid="5498224409038809224">"Узврати позив"</string>
<string name="callAgain" msgid="3197312117049874778">"Позови поново"</string>
<string name="returnCall" msgid="8171961914203617813">"Узврати позив"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> мин <xliff:g id="SECONDS">%s</xliff:g> сек"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Често контактирани"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Често позивани"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Желите ли да додате адресу е-поште „<xliff:g id="EMAIL">%s</xliff:g>“ у контакте?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"један"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"три"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"четири"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"пет"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"шест"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"седам"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"осам"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"девет"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"звездица"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"нула"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"фунта"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"говорна пошта"</string>
- <string name="description_search_button" msgid="3660807558587384889">"претражи"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"бирање"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"број за бирање"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"фотографија контакта"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"избриши"</string>
<string name="description_plus_button" msgid="515164827856229880">"плус"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Прикажи контакт"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Није пронађена меморија."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Није пронађена ниједна SD картица."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Увези са SIM картице"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Увези из меморије"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Извези у меморију"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Дели видљиве контакте"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Увези једну датотеку дигиталне визиткарте"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Увези више датотека дигиталних визиткарата"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Увези све датотеке дигиталних визиткарата"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Тражење података о vCard датотеци у меморији..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"У току је претрага података о vCard датотекама на SD картици..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Није било могуће скенирати меморију. (Разлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Није било могуће скенирати SD картицу. (Разлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O грешка"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Нема довољно меморије. Датотека је можда превелика."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Из неочекиваног разлога није било могуће рашчланити vCard датотеку."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Формат није подржан."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Није било могуће увести vCard датотеку."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"У меморији није пронађена ниједна vCard датотека"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"На SD картици није пронађена ниједна vCard датотека"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Није било могуће прикупити метаподатке датих vCard датотека."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Није било могуће увести једну или више датотека (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Непозната грешка."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Изаберите vCard датотеку"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Кеширање..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Кеширање vCard датотеке у локалну привремену меморију. Увоз ће ускоро започети."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Увоз <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Увоз <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Није било могуће читати vCard податке"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Отказано је читање података са vCard датотеке"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Увоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је завршен"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Увоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је отказан"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Датотека <xliff:g id="FILENAME">%s</xliff:g> ће ускоро бити увезена."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Датотека ће ускоро бити увезена."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Захтев за извоз vCard датотеке је одбијен. Покушајте касније."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Датотека <xliff:g id="FILENAME">%s</xliff:g> ће ускоро бити извезена."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Захтев за извоз vCard датотеке је одбијен. Покушајте касније."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"контакт"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Желите ли да извезете контакте?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Листа контаката ће бити извезена у датотеку: <xliff:g id="VCARD_FILENAME">%s</xliff:g> ."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Није могуће извести"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Подаци о контактима низу извезени."\n"Разлог: „<xliff:g id="FAIL_REASON">%s</xliff:g>“"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Нема контаката за извоз."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Превише је vCard датотека у меморији."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD картица садржи превише vCard датотека."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Захтевани назив датотеке је предугачак („<xliff:g id="FILENAME">%s</xliff:g>“)"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Извоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је завршен."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Извоз датотеке <xliff:g id="FILENAME">%s</xliff:g> је отказан"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Извоз података о контактима је у току"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Подаци о контактима се извозе у: <xliff:g id="FILE_NAME">%s</xliff:g> ."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Није било могуће покренути програм за извоз: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Дошло је до грешке при извозу: „<xliff:g id="EXACT_REASON">%s</xliff:g>“"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Није било могуће преузети информације из базе података"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Нема контаката за извоз. Уколико немате контаката на таблету, неки добављачи података можда неће дозволити извоз контаката са таблета."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Нема контаката за извоз. Ако имате контаката на телефону, неки добављачи података можда неће дозволити да се контакти извозе са телефона."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Програм за израду vCard датотека се није исправно покренуо."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Није било могуће отворити датотеку „<xliff:g id="FILE_NAME">%s</xliff:g>“: <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Желите ли да откажете увоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Желите ли да откажете извоз датотеке <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Није могуће отказати vCard увоз/извоз"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Имена контаката"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Додај паузу од 2 секунде"</string>
- <string name="add_wait" msgid="3360818652790319634">"Додај чекање"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Избор броја"</string>
- <string name="call_settings" msgid="7666474782093693667">"Подешавања"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Избор броја"</string>
- <string name="make_primary" msgid="5829291915305113983">"Запамти овај избор"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Није пронађена ниједна апликација која би могла да изврши ову радњу."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Без имена)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Налози"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Обриши често контактиране"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти за приказ"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Увоз/извоз"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Увоз/извоз контаката"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Увоз контаката"</string>
<string name="menu_share" msgid="943789700636542260">"Дели"</string>
<string name="share_via" msgid="563121028023030093">"Дели контакт преко"</string>
- <string name="share_error" msgid="948429331673358107">"Овај контакт не може да се дели."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Име"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Надимак"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Организација"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Веб сајт"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Догађаји"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Однос"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Групе"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Направи контакт у оквиру налога"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Прављење групе на налогу"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Уклони групу за синхронизацију"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Додај групу за синхронизацију"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Још група…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Сви други контакти"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Сви контакти"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Уклањањем групе „<xliff:g id="GROUP">%s</xliff:g>“ са листе за синхронизацију уклонићете и све негруписане контакте са те листе."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Само таблет, није синхронизовано"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Само телефон, није синхронизовано"</string>
- <string name="call_custom" msgid="7756571794763171802">"Позови <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Позови кућни телефон"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Позови мобилни телефон"</string>
- <string name="call_work" msgid="5328785911463744028">"Позови пословни телефон"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Позови факс"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Позови кућни факс"</string>
- <string name="call_pager" msgid="9003902812293983281">"Позови пејџер"</string>
- <string name="call_other" msgid="8563753966926932052">"Позови"</string>
- <string name="call_callback" msgid="1910165691349426858">"Позови за повратни позив"</string>
- <string name="call_car" msgid="3280537320306436445">"Позови телефон у аутомобилу"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Позови главни телефон предузећа"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Позови ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Позови главни телефон"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Позови факс"</string>
- <string name="call_radio" msgid="8296755876398357063">"Позови мобилни телефон"</string>
- <string name="call_telex" msgid="2223170774548648114">"Позови телекс"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Позови TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Позови пословни мобилни телефон"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Позови пословни пејџер"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Позови <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Позови MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Пошаљи SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Пошаљи SMS на кућни телефон"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Пошаљи SMS на мобилни телефон"</string>
- <string name="sms_work" msgid="2269624156655267740">"Пошаљи SMS на пословни телефон"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Пошаљи SMS на пословни факс"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Пошаљи SMS на кућни факс"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Пошаљи SMS на пејџер"</string>
- <string name="sms_other" msgid="806127844607642331">"Teкст"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Пошаљи SMS за повратни позив"</string>
- <string name="sms_car" msgid="7444227058437359641">"Пошаљи SMS на телефон у аутомобилу"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Пошаљи SMS на главни број телефона предузећа"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Пошаљи SMS на ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Пошаљи SMS на главни телефон"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Пошаљи SMS на факс"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Пошаљи SMS на мобилни телефон"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Пошаљи SMS на телекс"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Пошаљи SMS на TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Пошаљи SMS на пословни мобилни телефон"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Пошаљи SMS на пејџер"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Пошаљи SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Пошаљи SMS на MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Текстуална порука"</string>
- <string name="email_home" msgid="8573740658148184279">"Пошаљи поруку е-поште на кућну адресу е-поште"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Пошаљи поруку е-поште на број мобилног телефона"</string>
- <string name="email_work" msgid="2807430017302722689">"Пошаљи поруку е-поште на пословни број телефона"</string>
- <string name="email_other" msgid="3454004077967657109">"Пошаљи е-поштом"</string>
- <string name="email_custom" msgid="7548003991586214105">"Пошаљи поруку е-поште на адресу <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Пошаљи е-поштом"</string>
- <string name="map_home" msgid="1243547733423343982">"Прикажи кућну адресу"</string>
- <string name="map_work" msgid="1360474076921878088">"Прикажи пословну адресу"</string>
- <string name="map_other" msgid="3817820803587012641">"Прикажи адресу"</string>
- <string name="map_custom" msgid="6184363799976265281">"Прикажи адресу <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Започни ћаскање преко AIM-а"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Започни ћаскање преко Windows Live-а"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Започни ћаскање преко Yahoo-а"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Започни ћаскање преко Skype-а"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Започни ћаскање преко QQ-а"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Ћаскај преко Google Talk-а"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Започни ћаскање преко ICQ-а"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Започни ћаскање преко Jabber-а"</string>
- <string name="chat" msgid="9025361898797412245">"Ћаскање"</string>
<string name="audio_chat" msgid="2535716629358298691">"Аудио ћаскање"</string>
<string name="video_chat" msgid="1872255818640336072">"Видео ћаскање"</string>
- <string name="postal_address" msgid="8765560217149624536">"Адреса"</string>
- <string name="postal_street" msgid="8133143961580058972">"Улица"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Поштанско сандуче"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Комшилук"</string>
- <string name="postal_city" msgid="6597491300084895548">"Град"</string>
- <string name="postal_region" msgid="6045263193478437672">"Држава"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Поштански број"</string>
- <string name="postal_country" msgid="7638264508416368690">"Земља"</string>
- <string name="full_name" msgid="6602579550613988977">"Назив"</string>
- <string name="name_given" msgid="1687286314106019813">"Име"</string>
- <string name="name_family" msgid="3416695586119999058">"Презиме"</string>
- <string name="name_prefix" msgid="59756378548779822">"Префикс за име"</string>
- <string name="name_middle" msgid="8467433655992690326">"Средње слово"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Суфикс имена"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Име – фонетски"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Средње име – фонетски"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Презиме – фонетски"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Име – фонетски"</string>
<string name="connections" msgid="8098440723172028350">"Везе"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Додај везу"</string>
<string name="recent" msgid="2659189233141493004">"Недавно"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Прикажи имена контаката као"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Није изабран ниједан контакт."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"није обједињено"</item>
<item quantity="other" msgid="425683718017380845">"обједињено од <xliff:g id="COUNT">%0$d</xliff:g> извора"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Други"</string>
<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="directory_search_label" msgid="1887759056597975053">"Каталог"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Сви контакти"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Прављење личне копије..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Сви контакти"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Са звездицом"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Прилагођено"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Прилагоди"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Сви контакти са бројевима телефона"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Контакт"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Дефинисање прилагођеног приказа"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Учитавање…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Подешавања"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти за приказ"</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="hint_findContacts" msgid="1808681193458772072">"Пронађи контакте"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Прикажи ажурирања"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Говорна пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"Говорних порука: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пусти"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна порука од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Није било могуће пустити говорну пошту."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Баферовање..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Преузимање говорне поште..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Није било могуће преузети говорну пошту."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Ново"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Старије"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Само позиви са говорном поштом"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Само долазни позиви"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Само одлазни позиви"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Само пропуштени позиви"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Није могуће повезати се са сервером говорне поште."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Није могућа веза са сервером. Нове говорне поруке су на чекању."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Подесите говорну пошту."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Звук није доступан."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Подеси"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Зови говорну пошту"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Најмања брзина"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Мала брзина"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Нормална брзина"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Велика брзина"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Највећа брзина"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Назив групе"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Контакт преко NFC-а"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Прикажи само одлазне"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Прикажи само долазне"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Прикажи само пропуштене"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Прикажи само говорне поруке"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Прикажи све позиве"</string>
- <string name="status_available" msgid="5586870015822828392">"Доступан/на"</string>
- <string name="status_away" msgid="1838861100379804730">"Одсутан/на"</string>
- <string name="status_busy" msgid="9147992455450257136">"Заузет/а"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Пуштање говорне поште"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Долазни позив"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Одлазни позив"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Пропуштен позив"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Говорна пошта"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Додавање контакта"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Прикажи контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Позови корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Слање текстуалне поруке контакту <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непреслушана говорна пошта"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Пошаљи поруку кориснику <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Позови број телефона корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Брзи контакт за корисника <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ја"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Задржи локално"</string>
<string name="add_account" msgid="8201790677994503186">"Додај налог"</string>
<string name="add_new_account" msgid="5748627740680940264">"Додај нови налог"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Позив није послат"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Да бисте подесили говорну пошту, идите у Мени > Подешавања."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Да бисте позвали говорну пошту, прво искључите режим авионa."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Извези датотеке базе података"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Још опција"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Проширивање или скупљање поља за име"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Слика. Додирните да бисте променили"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 3fb8dc6..8370581 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Personer"</string>
<string name="contactsList" msgid="8661624236494819731">"Kontakter"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kontakt"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Om"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Uppdat."</string>
<string name="searchHint" msgid="8482945356247760701">"Sök efter kontakter"</string>
- <string name="menu_search" msgid="9147752853603483719">"Sök"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Ny kontakt"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Visa kontakt"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Lägg till i Favoriter"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Ta bort från Favoriter"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Redigera"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Ta bort"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopiera"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Placera på startskärmen"</string>
<string name="menu_call" msgid="3992595586042260618">"Ring upp kontakt"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Skicka SMS till kontakt"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Färdig"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Avbryt"</string>
<string name="menu_discard" msgid="6456087569315685632">"Ignorera"</string>
- <string name="label_notes" msgid="8337354953278341042">"Anteckningar"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Internetsamtal"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Företag"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Titel"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Skapa ny kontakt"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-post"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Chatt"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adress"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Organisation"</item>
<item msgid="7196592230748086755">"Anteckning"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Inga kontakter."</string>
<string name="noGroups" msgid="8614664663561385253">"Inga grupper."</string>
<string name="noAccounts" msgid="7768267764545265909">"Om du vill skapa grupper måste du ha ett konto."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Inga matchande kontakter hittades."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Inga kontakter med telefonnummer."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Inga personer i denna grupp."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Redigera gruppen om du vill lägga till personer."</string>
<string name="savingContact" msgid="4075751076741924939">"Sparar kontakt..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Sparar visningsalternativ ..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kontakt sparad."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Det gick inte att spara ändringarna i kontakten."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Gruppen sparades."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 kontakt"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> kontakter"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Inga kontakter."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Det finns inga synliga kontakter."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Inga favoriter."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Inga kontakter i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Kontakter i <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"En kontakt"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Kontakter i anpassad vy"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Mer än <xliff:g id="COUNT">%d</xliff:g> hittades."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Inga kontakter"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 hittades"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Alla kontakter"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Grupper"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoriter"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoriter och alla kontakter"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Samtalshistorik"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Skicka SMS"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigera nummer före samtal"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lägg till i Kontakter"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Ta bort från samtalshistorik"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Rensa samtalshistorik"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Ta bort röstmeddelande"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Dela röstmeddelande"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Samtalshistoriken är tom."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Rensa samtalslista?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Alla samtalslistor kommer att tas bort."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Samtalshistoriken rensas …"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Rensa listan?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Du rensar listan över personer som du kontaktar ofta i apparna Personer och Telefon, och e-postappar tvingas lära sig dina mottagarinställningar från början."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Listan rensas …"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI-kod"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Röstbrevlåda"</string>
- <string name="unknown" msgid="740067747858270469">"Okänd"</string>
- <string name="private_num" msgid="6374339738119166953">"Privat nummer"</string>
- <string name="payphone" msgid="4864313342828942922">"Telefonautomat"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Använd tangentbordet när du ringer"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Ring/lägga till"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Läser in från SIM-kort…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Kontakter från SIM-kort"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Du har inga kontakter att visa. (Om du nyss lade till ett konto kan det ta några minuter innan kontakterna synkroniserats.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Du har inga kontakter att visa."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Det finns inga kontakter att visa."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som du kan synkronisera med surfplattan"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Det finns inga kontakter att visa."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som du kan synkronisera med mobilen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Det finns inga kontakter att visa (Om du nyss har lagt till ett konto kan det ta några minuter att synkronisera kontakterna.)"\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som kan synkroniseras med surfplattan"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativ"</b></font>" om du vill ändra vilka kontakter som är synliga"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Det finns inga kontakter att visa (Om du nyss har lagt till ett konto kan det ta några minuter att synkronisera kontakterna.)"\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som kan synkroniseras med mobilen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativ"</b></font>" om du vill ändra vilka kontakter som är synliga"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SIM- eller SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Det finns inga kontakter att visa."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som du kan synkronisera med surfplattan"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Det finns inga kontakter att visa."\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som du kan synkronisera med mobilen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Det finns inga kontakter att visa. (Om du nyss har lagt till ett konto kan det ta några minuter att synkronisera kontakterna.)"\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som kan synkroniseras med surfplattan"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativ"</b></font>" om du vill ändra vilka kontakter som är synliga"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>"om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SD-kortet"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Det finns inga kontakter att visa. (Om du nyss har lagt till ett konto kan det ta några minuter att synkronisera kontakterna.)"\n\n"Om du vill lägga till kontakter trycker du på "<font fgcolor="#ffffffff"><b>"Meny"</b></font>" och sedan på:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Konton"</b></font>" om du vill lägga till eller konfigurera ett konto med kontakter som kan synkroniseras med mobilen"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Visningsalternativ"</b></font>" om du vill ändra vilka kontakter som är synliga"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" om du vill skapa en ny kontakt från grunden"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importera/exportera"</b></font>" om du vill importera kontakter från SD-kortet"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Du har inte några favoriter."\n\n"Så här lägger du till kontakter i favoritlistan:"\n\n" "<li>"Tryck på fliken "<b>"Kontakter"</b>\n</li>" "\n<li>"Tryck på den kontakt du vill lägga till i favoriterna"\n</li>" "\n<li>"Tryck på stjärnan bredvid kontaktens namn"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Använda tonvalstelefon"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Återvänd till pågående samtal"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Lägg t. samt."</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Samtalsinfo"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Det gick inte att läsa information om samtalet."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Inkommande samtal"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Utgående samtal"</string>
- <string name="type_missed" msgid="2720502601640509542">"Missat samtal"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Röstmeddelande"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Inkommande samtal"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> minuter <xliff:g id="SECONDS">%s</xliff:g> sekunder"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Ofta kontaktade"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Ringer ofta"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Vill du lägga till <xliff:g id="EMAIL">%s</xliff:g> i Kontakter?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"ett"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"två"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tre"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"fyra"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"fem"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sex"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"sju"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"åtta"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"nio"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"Stjärna"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"noll"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pund"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"röstbrevlåda"</string>
- <string name="description_search_button" msgid="3660807558587384889">"sök"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"ring"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backsteg"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nummer att ringa"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kontaktbild"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"ta bort"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Visa kontakt"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ingen lagringsenhet hittades."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Inget SD-kort hittades."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Importera från SIM-kort"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Importera från lagring"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Exportera till lagring"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Dela synliga kontakter"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Importera en vCard-fil"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Importera flera vCard-filer"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Importera alla vCard-filer"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Sökning efter vCard-data på lagringsenheten pågår ..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Söker efter vCard-data på SD-kort ..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Det gick inte att skanna lagringsenheten. (Orsak: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Det gick inte att skanna SD-kortet. (Orsak: <xliff:g id="FAIL_REASON">%s</xliff:g>)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O-fel"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Det finns inte tillräckligt med minne. Filen kan vara för stor."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Det gick inte att analysera vCard av okänd anledning."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Formatet stöds inte."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Det gick inte att importera vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Det finns ingen vCard-fil på lagringsenheten."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Det finns ingen vCard-fil på SD-kortet."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Det gick inte att samla in metainformation för de angivna vCard-filerna."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"En eller flera filer kunde inte importeras (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Okänt fel."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Välj vCard-fil"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Cachelagrar ..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard-fil(er) cachelagras till en lokal tillfällig lagringsenhet. Den faktiska importen börjar snart."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Importerar <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Importerar <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Det gick inte att läsa vCard-data"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Inläsningen av vCard-data avbröts"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCard-filen <xliff:g id="FILENAME">%s</xliff:g> har importerats"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Importen av <xliff:g id="FILENAME">%s</xliff:g> avbröts"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> importeras snart."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Filen kommer snart att importeras."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Begäran om vCard-import avvisades. Försök igen vid ett senare tillfälle."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> exporteras snart."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Begäran om vCard-export avvisades. Försök igen vid ett senare tillfälle."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kontakt"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g> <xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Exportera kontakter?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Kontaktlistan exporteras till filen: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Kunde inte exportera"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kontaktuppgifterna exporterades inte."\n"Orsak: <xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Det finns ingen kontakt att exportera."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"För många vCard-filer på lagringsenheten."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Det finns för många vCard-filer på SD-kortet."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Det obligatoriska filnamnet är för långt (<xliff:g id="FILENAME">%s</xliff:g>)."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> har exporterats."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Exporten av <xliff:g id="FILENAME">%s</xliff:g> avbröts."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Exporterar kontaktuppgifter"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Kontaktuppgifterna exporteras till: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Det gick inte att starta exportverktyget: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Ett fel inträffade under exporten: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Det gick inte att hämta databasinformation."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Det finns inga kontakter att exportera. Om du har kontakter på surfplattan kanske vissa dataleverantörer inte tillåter att kontakterna exporteras från surfplattan."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Det finns inga kontakter att exportera. Om du har kontakter på mobilen kanske vissa dataleverantörer inte tillåter att kontakterna exporteras från mobilen."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard-kompositören initierades inte korrekt."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Det gick inte att öppna <xliff:g id="FILE_NAME">%s</xliff:g>: <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Vill du avbryta importen av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Vill du avbryta exporten av <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Det gick inte att avbryta importen/exporten av vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Dina kontakters namn"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Lägg till en paus på 2 sek."</string>
- <string name="add_wait" msgid="3360818652790319634">"Lägg till väntetid"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Välj nummer"</string>
- <string name="call_settings" msgid="7666474782093693667">"Inställningar"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Välj nummer"</string>
- <string name="make_primary" msgid="5829291915305113983">"Kom ihåg det här valet"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Ingen app som kan hantera åtgärden hittades."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Inget namn)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Konton"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Rensa listan över kontakter"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Kontakter som ska visas"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Importera/exportera"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Importera/exportera kontakter"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Importera kontakter"</string>
<string name="menu_share" msgid="943789700636542260">"Dela"</string>
<string name="share_via" msgid="563121028023030093">"Dela kontakt via"</string>
- <string name="share_error" msgid="948429331673358107">"Den här kontakten kan inte delas."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Namn"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Smeknamn"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organisation"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Webbplats"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Händelser"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Relation"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Grupper"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Skapa kontakt under konto"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Skapa grupp under konto"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Ta bort synkgrupp"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Lägg till synkgrupp"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Fler grupper …"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Alla andra kontakter"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Alla kontakter"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Om du tar bort <xliff:g id="GROUP">%s</xliff:g> från synkroniseringen tas även kontakter som inte tillhör grupper bort från synkroniseringen."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Bara surfplatta (osynkad)"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Bara telefon (osynkad)"</string>
- <string name="call_custom" msgid="7756571794763171802">"Ring <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Ring hem"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Ring mobilen"</string>
- <string name="call_work" msgid="5328785911463744028">"Ring – arbete"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Ring – arbetsfax"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Ring upp hemfax"</string>
- <string name="call_pager" msgid="9003902812293983281">"Ring personsökare"</string>
- <string name="call_other" msgid="8563753966926932052">"Ring"</string>
- <string name="call_callback" msgid="1910165691349426858">"Ring upp återuppringningsnummer"</string>
- <string name="call_car" msgid="3280537320306436445">"Ring bilen"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Ring företagets växel"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Ring upp ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Ring upp primärt nummer"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Samtal till fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Ring radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Ring upp telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Ring upp TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Ring upp jobbmobil"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Ring upp jobbpersonsökare"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Ring <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Samtal – MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Skicka SMS till <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS – hem"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS – mobil"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS – arbete"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS – arbetsfax"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS – hemfax"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS – personsökare"</string>
- <string name="sms_other" msgid="806127844607642331">"Text"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Skicka SMS till återuppringningsnummer"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS – bil"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS – jobbväxel"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Skicka SMS till ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Skicka SMS till primärt nummer"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Text till fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS – radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Skicka SMS till telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Skicka SMS till TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Skicka SMS till jobbmobil"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Skicka SMS till jobbpersonsökare"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Skicka SMS till <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Skicka MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Textmeddelande"</string>
- <string name="email_home" msgid="8573740658148184279">"E-postadress – hem"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Skicka e-post till mobil"</string>
- <string name="email_work" msgid="2807430017302722689">"E-postadress – arbete"</string>
- <string name="email_other" msgid="3454004077967657109">"E-post"</string>
- <string name="email_custom" msgid="7548003991586214105">"Skicka e-post till <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-post"</string>
- <string name="map_home" msgid="1243547733423343982">"Visa hemadress"</string>
- <string name="map_work" msgid="1360474076921878088">"Visa jobbadress"</string>
- <string name="map_other" msgid="3817820803587012641">"Visa adress"</string>
- <string name="map_custom" msgid="6184363799976265281">"Visa adress, <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Chatta med AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Chatta med Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Chatta med Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Chatta med Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Chatta med QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Chatta med Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Chatta med ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Chatta med Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Chatt"</string>
<string name="audio_chat" msgid="2535716629358298691">"Röstchatt"</string>
<string name="video_chat" msgid="1872255818640336072">"Videochatt"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adress"</string>
- <string name="postal_street" msgid="8133143961580058972">"Gata"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Postbox"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Område"</string>
- <string name="postal_city" msgid="6597491300084895548">"Stad"</string>
- <string name="postal_region" msgid="6045263193478437672">"Delstat"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Postnummer"</string>
- <string name="postal_country" msgid="7638264508416368690">"Land"</string>
- <string name="full_name" msgid="6602579550613988977">"Namn"</string>
- <string name="name_given" msgid="1687286314106019813">"Förnamn"</string>
- <string name="name_family" msgid="3416695586119999058">"Efternamn"</string>
- <string name="name_prefix" msgid="59756378548779822">"Namnprefix"</string>
- <string name="name_middle" msgid="8467433655992690326">"Mellannamn"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Namnsuffix"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetiskt förnamn"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetiskt mellannamn"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetiskt efternamn"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetiskt namn"</string>
<string name="connections" msgid="8098440723172028350">"Anslutningar"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Lägg till anslutning"</string>
<string name="recent" msgid="2659189233141493004">"Senaste"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sortera lista efter"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Förnamn"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Efternamn"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Visa kontaktnamn som"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Visa kontaktnamn"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Förnamn först"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Efternamn först"</string>
<string name="take_photo" msgid="7496128293167402354">"Ta en bild"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Visa alla"</string>
<string name="menu_select_all" msgid="621719255150713545">"Markera alla"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Avmarkera alla"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Inga kontakter har markerats."</string>
<string name="add_field" msgid="2384260056674995230">"Lägg till ett fält"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Lägg till ny"</string>
<string name="add_organization" msgid="7311893231158291197">"Lägg till organisation"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"inte kombinerade"</item>
<item quantity="other" msgid="425683718017380845">"kombinerade från <xliff:g id="COUNT">%0$d</xliff:g> källor"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Övrigt"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Vill du kombinera kontakten med den markerade kontakten?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Vill du fortsätta att redigera den markerade kontakten? Information som du har angett hittills kommer att kopieras."</string>
<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="directory_search_label" msgid="1887759056597975053">"Katalog"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Alla kontakter"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"En personlig kopia skapas ..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Alla kontakter"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Stjärnmärkt"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Anpassad"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Anpassa"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Alla kontakter med telefonnummer"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kontakt"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Definiera anpassad visning"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Läser in …"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Inställningar"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Kontakter som ska visas"</string>
<string name="menu_settings" msgid="377929915873428211">"Inställningar"</string>
<string name="menu_help" msgid="5123887102216637725">"Hjälp"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Visa alternativ"</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="hint_findContacts" msgid="1808681193458772072">"Sök efter kontakter"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefonnummer"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Lägg till i Kontakter"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Lägg till kontakt"</string>
@@ -497,61 +215,7 @@
<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">"Skapa min profil"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Ange personens namn"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Visa uppdateringar"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Röstmeddelanden"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spela upp"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nytt röstmeddelande från <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Det gick inte att spela upp röstmeddelandet."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Buffrar…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Hämtar röstmedelande…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Det gick inte att hämta röstmeddelandet."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Nya"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Äldre"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Endast samtal med röstmeddelande"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Endast inkommande samtal"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Endast utgående samtal"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Endast missade samtal"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Det går inte att ansluta till röstbrevlådan."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Kan inte ansluta till röstbrevlådan. Nya meddelanden väntar."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Konfigurera röstbrevlådan."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Ljud saknas."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfigurera"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Ring röstbrevlådan"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Lägsta hastighet"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Låg hastighet"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal hastighet"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Hög hastighet"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Högsta hastigheten"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Gruppens namn"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Mott. v. NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Visa endast utgående samtal"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Visa endast inkommande samtal"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Visa endast missade samtal"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Visa bara röstmeddelanden"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Visa alla samtal"</string>
- <string name="status_available" msgid="5586870015822828392">"Tillgänglig"</string>
- <string name="status_away" msgid="1838861100379804730">"Borta"</string>
- <string name="status_busy" msgid="9147992455450257136">"Upptagen"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Spela upp röstmeddelande"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Inkommande samtal"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Utgående samtal"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Missat samtal"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Röstmeddelande"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Lägg till kontakt"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Visa kontakten <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Ring <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Skicka SMS till <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Ej hört röstmeddelande"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Skicka SMS till <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Ring telefonnumret <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Snabbkontakt för <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Jag"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Spara lokalt"</string>
<string name="add_account" msgid="8201790677994503186">"Lägg till ett konto"</string>
<string name="add_new_account" msgid="5748627740680940264">"Lägg till ett nytt konto"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Samtalet gick inte att koppla fram"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Välj Meny > Inställningar om du vill konfigurera röstbrevlådan."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Om du vill ringa röstbrevlådan måste du först inaktivera flygplansläget."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Exportera databasfiler"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Fler alternativ"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Expandera eller komprimera namnfält"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Bild. Välj om du vill ändra"</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 05ed850..b9fcb2a 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Simu"</string>
<string name="people" msgid="1048457247435785074">"Watu"</string>
<string name="contactsList" msgid="8661624236494819731">"Anwani"</string>
<string name="shortcutContact" msgid="749243779392912958">"Anwani"</string>
@@ -38,16 +37,12 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Kuhusu"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Masasisho"</string>
<string name="searchHint" msgid="8482945356247760701">"Tafuta anwani"</string>
- <string name="menu_search" msgid="9147752853603483719">"Tafuta"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Anwani mpya"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Tazama anwani"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</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_deleteContact" msgid="6788644058868189393">"Futa"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Nakili"</string>
- <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Weka kwenye skrini ya Nyumbani"</string>
+ <string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Weka kwenye skrini ya Kwanza"</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>
@@ -57,7 +52,7 @@
<string name="menu_new_group_action_bar" msgid="3520232877587377175">"Ongeza Kikundi"</string>
<string name="splitConfirmation_title" msgid="633640935430370530">"Tenganisha anwani?"</string>
<string name="splitConfirmation" msgid="740190210499587175">"Mwasiliani atatenganishwa kwa anwani kadha."</string>
- <string name="menu_joinAggregate" msgid="5027981918265667970">"Jiunge"</string>
+ <string name="menu_joinAggregate" msgid="5027981918265667970">"Muunganishe"</string>
<string name="titleJoinContactDataWith" msgid="7684875775798635354">"Unganisha anwani"</string>
<string name="blurbJoinContactDataWith" msgid="8736488417422708236">"Chagua mwasiliani unayetaka kuugana naye kwa <xliff:g id="NAME">%s</xliff:g>:"</string>
<string name="showAllContactsJoinItem" msgid="2189695051430392383">"Onyesha anwani zote"</string>
@@ -65,26 +60,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 kwa barua ya sauti"</string>
+ <string name="menu_redirect_calls_to_vm" msgid="4181789196416396656">"Simu zote ziwekewe ujumbe wa 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_done" msgid="796017761764190697">"Kwisha"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Ghairi"</string>
<string name="menu_discard" msgid="6456087569315685632">"Tupa"</string>
- <string name="label_notes" msgid="8337354953278341042">"Hati"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Simu ya wavuti"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Kampuni"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Jina la heshima"</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="phoneLabelsGroup" msgid="6468091477851199285">"Simu"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Barua pepe"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Ujumbe wa Papo Hapo"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Anwani"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Shirika"</item>
<item msgid="7196592230748086755">"Hati"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Hakuna anwani."</string>
<string name="noGroups" msgid="8614664663561385253">"Hakuna vikundi."</string>
<string name="noAccounts" msgid="7768267764545265909">"Ili kuunda vikundi unahitaji akaunti"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Hakuna anwani zinazolingana zilizopatikana."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Hakuna anwani zilizo na nambari za simu."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Hakuna watu katika kikundi hiki."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Kuongeza baadhi, hariri kikundi."</string>
<string name="savingContact" msgid="4075751076741924939">"Inahifadhi anwani..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Inahifadhi chaguo za mwonyesho.."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Anwani imehifadhiwa"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Haikuweza kuhifadhi mabadiliko ya mwasiliani."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Kikundi kimehifadhiwa."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"Anwani 1"</item>
<item quantity="other" msgid="3578469907265375314">"Anwani <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Hakuna wawasiliani."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Hakuna anwani zinazoonekana"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Hakuna Vipendwa."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Hakuna anwani kwenye <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Anwani kwenye <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Mhusika mmoja"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Mawasiliano katika mwoneko maalum"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"zaidi ya <xliff:g id="COUNT">%d</xliff:g> zimepatikana."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Hakuna anwani"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Patikana 1"</item>
@@ -136,265 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Anwani zote"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Vikundi"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Vipendwa"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Vipendwa na anwani zote"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Simu"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Logi ya orodha ya kupiga simu"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Tuma ujumbe wa maandishi"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Pigia <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hariri nambari kabla ya kupiga"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ongeza kwa anwani"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Toa kwa orodha ya simu zilizopigwa"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Futa rekodi ya simu"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Futa barua ya sauti"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Shiriki barua ya sauti"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Orodha ya kupiga simu ni tupu."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Futa rekodi ya simu?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Kumbukumbu zako zote za simu zitafutwa."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Inafuta rekodi ya simu ..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Futa uliowasiliana nao mara kwa mara?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Utafuta orodha ya unaowasiliana nao mara kwa mara katika programu ya Watu na Simu, na ulazimishe programu za barua pepe kujifunza mapendeleo yako ya anwani kutoka mwanzo."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Inafuta uliowasiliana nao mara kwa mara..."</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Barua ya sauti"</string>
- <string name="unknown" msgid="740067747858270469">"Haijulikani"</string>
- <string name="private_num" msgid="6374339738119166953">" Nambari isiyojulikana"</string>
- <string name="payphone" msgid="4864313342828942922">"Simu ya kulipia"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Tumia kibodi kubonyeza"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Piga ili kuongeza simu"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Inapakia kutoka SIM kadi..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Anwani za SIM kadi"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Huna anwani zozote ya kuonyesha. (Ikiwa umeongeza tu akaunti, inaweza kuchukua dakika chache ili kusawazisha anwani.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Hauna anwani zozote za kuonyesha."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Huna anwani zozote za kuonyeshwa."\n\n"Kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", kisha uguse:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kufungua akaunti yenye anwani unazoweza kusawazisha na kompyuta kibao"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kubuni anwani mpya kutoka mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ingiza/toa"</b></font>" ili uingize anwani kutoka kadi yako ya SIM au ya SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Hauna anwani zozote za kuonyesha."\n\n"Ili kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>" Menyu"</b></font>", kisha uguse: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kusanidi akaunti yenye anwani unazoweza kulandanisha na simu {"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" Anwani mpya"</b></font>" kuunda anwani mpya kutoka mwanzo "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" Leta/Hamisha "</b></font>" ili kuleta anwani kutoka kwa kadi yako wa SIM au ya SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Huna anwani zozote za kuonyeshwa. (ikiwa umeongeza akaunti sasa hivi, yaweza kuchukua dakika kadhaa kusawazisha anwani.)"\n\n"Ili kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", kisha uguse:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kufungua akaunti yenye anwani unazoweza kusawazisha na kompyuta kibao"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Onyesha chaguo"</b></font>" ili kubadilisha anwani zinazoweza kuonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kubuni mpya kutoka mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ingiza/Toat"</b></font>" ili uingize anwani kutoka kadi yako ya SIM au ya SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Hauna anwani zozote za kuonyesha. (Kama umeongeza akaunti sasa hivi, inaweza kuchukua dakika chache kulandanisha anwani.)"\n\n"Kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>",kisha uguse:{"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kuanzisha akaunti yenye anwani unazoweza kulandanisha kwenye simu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Onyesha uchaguzi"</b></font>" ili kubadilisha anwani gani zinazoonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>"ili kuunda anwani mpya kutoka mwanzo"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>" ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Hauna anwani zozote za kuonyesha."\n\n"Ili kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>" Menyu "</b></font>", kisha uguse: "\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" kuongeza au kuanzisha akaunti yenye anwani unazoweza kulandanisha na kompyuta ndogo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" kuanzisha anwani mpya kutoka mwanzo "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>" Leta/ Hamisha "</b></font>" ili kuhamisha anwani kutoka kwa kadi yako ya SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Huna anwani zozote za kuonyeshwa."\n\n"Kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", kisha uguse:"\n\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kufungua akaunti yenye anwani unazoweza kusawazisha na simu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kubuni anwani mpya kutoka mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ingiza/toa"</b></font>" ili uingize anwani kutoka kadi yako ya SIM au ya SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Hauna anwani zozote za kuonyesha. (Kama umeongeza akaunti sasa hivi tu, inaweza kuchukua dakika chache kulandanisha anwani.)"\n\n"Ili kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>",kisha uguse:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kusanidi akaunti na anwani unazoweza kulandanisha kwenye kompyuta ndogo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Onyesha chaguo"</b></font>" ili kubadilisha anwani zinazoonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>" ili kuunda anwani mpya kutoka mwanzo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>" ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Hauna anwani zozote za kuonyesha. (Kama umeongeza akaunti sasa hivi, inaweza kuchukua dakika chache kulandanisha anwani.)"\n\n"Kuongeza anwani, gusa "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>",kisha uguse:{"\n" "\n<li><font fgcolor="#ffffffff"><b>"Akaunti"</b></font>" ili kuongeza au kuanzisha akaunti yenye anwani unazoweza kulandanisha kwenye simu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Onyesha uchaguzi"</b></font>" kwa kubadilisha anwani gani zinazoonekana"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Anwani mpya"</b></font>"ili kuunda anwani mpya kutoka mwanzo"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Leta/Hamisha"</b></font>" ili kuleta anwani kutoka kwa kadi yako ya SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Huna vipendwa vyovyote."\n\n" Ili kuongeza anwani kwenye orodha yako ya vipendwa:"\n\n" "<li>"Gusa kichupo cha "<b>"Anwani"</b>\n</li>\n<li>"2Gusa anwani unayotaka kuiongeza kwenye vipendwa vyako"\n</li>" "\n<li>"Gusa nyota iliyo kando ya jina la anwani hiyo"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Tumia kibao cha kuchapa cha sauti na kugusa"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Rudi kwa simu inayoendelea"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Ongeza simu"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Maelezo ya simu"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Haikuweza kusoma maelezo ya simu iliyoombwa."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Simu inayoingia"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Simu inayotoka"</string>
- <string name="type_missed" msgid="2720502601640509542">"Simu isiyojibiwa"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Barua za sauti"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Simu zinazoingia"</string>
<string name="callBack" msgid="5498224409038809224">"Mpigie"</string>
<string name="callAgain" msgid="3197312117049874778">"Piga simu tena"</string>
<string name="returnCall" msgid="8171961914203617813">"Mpigie"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"Dakika <xliff:g id="MINUTES">%s</xliff:g> sekunde <xliff:g id="SECONDS">%s</xliff:g>"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Unaowasiliana nao zaidi"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Zinazopigwa mara kwa mara"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Ongeza \"<xliff:g id="EMAIL">%s</xliff:g>\" kwa anwani?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"moja"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"mbili"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tatu"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"nne"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"tano"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sita"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"saba"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"nane"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"tisa"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"nyota"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"sufuri"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"Pauni"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Barua ya sauti"</string>
- <string name="description_search_button" msgid="3660807558587384889">"tafuta"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"piga simu"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"futa"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"nambari ya kupiga"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"picha ya anwani"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"futa"</string>
<string name="description_plus_button" msgid="515164827856229880">"jumlisha"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Angalia anwani"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Hakuna hifadhi iliyopatikana."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Hakuna kadi ya SD iliyopatikana."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Ingiza kutoka kwa SIM kadi"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Leta kutoka kwa hifadhi"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Hamisha kwa hifadhi"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Shiriki anwani zinazoonekana"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Ingiza faili moja ya vKadi"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Ingiza faili anuwai za vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Ingiza faili zote za vKadi"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Inatafuta data ya vCard katika hifadhi..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Inatafuta data ya vKadi kwenye kadi ya SD"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Hifadhi haiku tambazwa. (Sababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Kadi ya SD haikutambazwa.(Sababu: \" <xliff:g id="FAIL_REASON">%s</xliff:g> \")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Hitilafu ya I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Hakuna kumbukumbu ya kutosha. Faili inaweza kuwa kubwa mno."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Haikuweza kuchanganua vCard kwa sababu isiyotarajiwa."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Fomati haiauniwi"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Haikuweza kuleta vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Hakuna faili ya vCard iliyopatikana katika hifadhi."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Hakuna faili ya vCard iliyopatikana kwenye kadi ya SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Haikuweza kukusanya maelezo meta ya faili zilizopeanwa za vCard."</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for fail_reason_failed_to_read_files (5823434810622484922) -->
- <skip />
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Hitilafu isiyojulikana."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Chagua faili ya vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Inaakibisha..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Vcard Inaakibisha ndani ya hifadhi ya muda mfupi. Uhamisho halisi utaanza hivi karibuni."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Inaingiza <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Inaingiza <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Haikuweza kusoma data ya vKadi"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Kusoma data ya VCard kumeghairiwa"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Imemaliza kuleta vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Kuleta <xliff:g id="FILENAME">%s</xliff:g> kumeghairiwa"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> italetwa hivi karibuni."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Faili italetwa hivi karibuni."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Ombi la kuleta vCard limekataliwa. Tafadhali jaribu baadaye."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> itahamishwa hivi karibuni."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Ombi la kuhamishwa kwa vCard limekataliwa. Jaribu tena baadaye."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"anwani"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Hamisha anwani?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Orodha yako ya anwani itahamishwa kwa faili: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Imeshindwa kuhamisha"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Data ya mwasiliani haikuhamishwa."\n"Sababu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Hakuna anwani inayoweza kuhamishwa."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Faili nyingi mno za vCard ziko katika hifadhi."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Faili nyingi mno za Vcard ziko kwa kadi ya SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Jina la faili linalohitajika ni refu sana (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Imemaliza kuhamisha <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Kuhamisha <xliff:g id="FILENAME">%s</xliff:g> kumeghairiwa"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Inahamisha data ya anwani"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Data ya mwasiliani wako inahamishwa kwa <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Haikuweza kuanzisha kihamishaji: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Hitilafu imetokea wakati wa uhamisho: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Haikupata maelezo ya hifadhidata."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Hakuna anwani za kuhamishwa. Ikiwa una anwani kwenye kompyuta yako ndogo baadhi ya watoa huduma za data wanaweza kosa kuruhusu anwani kuhamishwa kutoka kwa kompyuta ndogo."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Hakuna anwani za kuhamishwa. Kama una anwani kwenye simu yako, baadhi ya wahudumu wa data wanaweza kosa kuruhusu anwani kuhamishwa kutoka kwa simu."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Kitunzi cha vCard hakikuanza vizuri."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Haikuweza kufungua \"{<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Ghairi kuletwa kwa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Ghairi kuhamishwa kwa <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Haikuweza kughairiwa kuleta/kuhamisha vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Majina ya anwani zako"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Ongeza usitishaji wa sekunde 2"</string>
- <string name="add_wait" msgid="3360818652790319634">"Ongeza kusubiri"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Chagua nambari"</string>
- <string name="call_settings" msgid="7666474782093693667">"Mipangilio"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Chagua nambari"</string>
- <string name="make_primary" msgid="5829291915305113983">"Kumbuka chaguo hili"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Hakuna programu iliyopatikana ya kushughulikia tendo hili."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Hakuna jina)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Akaunti"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Futa idadi ya mara ambazo unawasiliana nao"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Anwani za kuonyesha"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Leta/hamisha"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Leta/Hamisha wawasiliani"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Ingiza anwani"</string>
<string name="menu_share" msgid="943789700636542260">"Shiriki"</string>
<string name="share_via" msgid="563121028023030093">"Shiriki anwani kupitia"</string>
- <string name="share_error" msgid="948429331673358107">"Mwasiliani huyu hawezi kushirikishwa."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Jina"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Jina la utani"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Shirika"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Tovuti"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Matukio"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Uhusiano"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Vikundi"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Weka anwani chini ya akaunti"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Buni kikundi chini ya akaunti"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Ondoa kikundi cha usawazishaji"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Ongeza kikundi cha usawazishaji"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Vikundi zaidi..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Anwani Zingine Zote"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Wawasiliani wote"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Kuondoa \"<xliff:g id="GROUP">%s</xliff:g>\" \"kutoka ulandanishi pia kutaondoa anwani zisizo kwenye kikundi kutoka kwa ulandanishi."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Kompyuta ndogo tu, haijasawazishwa"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Simu tu, haijasawazishwa"</string>
- <string name="call_custom" msgid="7756571794763171802">"Mpigie <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Piga simu nyumbani"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Pigia simu ya mkononi"</string>
- <string name="call_work" msgid="5328785911463744028">"Piga simu kazini"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Piga simu kwa pepesi ya kazini"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Piga simu kwa pepesi ya nyumbani"</string>
- <string name="call_pager" msgid="9003902812293983281">"Piga simu kwa peja"</string>
- <string name="call_other" msgid="8563753966926932052">"Piga simu"</string>
- <string name="call_callback" msgid="1910165691349426858">"Mpigie"</string>
- <string name="call_car" msgid="3280537320306436445">"Piga simu kwa gari"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Pigia nambari kuu ya simu ya kampuni"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Piga simu kwa ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Piga simu kuu"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Piga simu ya faksi"</string>
- <string name="call_radio" msgid="8296755876398357063">"Piga simu kwa redio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Piga simu kwa telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Pigia TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Piga simu kwa simu ya mkononi ya kazini"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Piga simu kwa peja"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Piga simu <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Piga simu kwa MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Tuma ujumbe kwa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Tuma ujumbe kwa simu ya nyumbani"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Tuma ujumbe wa maandishi kwa simu ya mkononi"</string>
- <string name="sms_work" msgid="2269624156655267740">"Tuma ujumbe kazini"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Tuma maandishi kwa faksi ya kazini"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Tuma ujumbe kwa pepesi ya nyumbani"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Tuma ujumbe kwa peja"</string>
- <string name="sms_other" msgid="806127844607642331">"Matini"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Piga simu tena kwa kutumia maandishi"</string>
- <string name="sms_car" msgid="7444227058437359641">"Tuma ujumbe kwa gari"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Kampuni kuu ya maandishi"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Tuma ujumbe kwa ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Tuma ujumbe wa simu kuu"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Faksi ya maandishi"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Tuma ujumbe kwa redio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Tuma ujumbe kwa teleksi"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Tuma ujumbe kwa TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Tuma ujumbe kwa simu ya mkononi ya kazini"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Tuma ujumbe kwa peja ya kazini"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Tuma ujumbe kwa <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Tuma maandishi ya MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Ujumbe wa maandishi"</string>
- <string name="email_home" msgid="8573740658148184279">"Nyumbani mwa barua pepe"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Tuma barua pepe kwa simu ya mkononi"</string>
- <string name="email_work" msgid="2807430017302722689">"Tuma barua pepe kazini"</string>
- <string name="email_other" msgid="3454004077967657109">"Barua pepe"</string>
- <string name="email_custom" msgid="7548003991586214105">"Barua pepe <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Barua pepe"</string>
- <string name="map_home" msgid="1243547733423343982">"Angalia anwani ya nyumbani"</string>
- <string name="map_work" msgid="1360474076921878088">"Angalia anwani ya kazini"</string>
- <string name="map_other" msgid="3817820803587012641">"Tazama anwani"</string>
- <string name="map_custom" msgid="6184363799976265281">"Angalia anwani <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Piga gumzo kwa kutumia AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Piga gumzo kwa kutumia Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Piga gumzo kwa kutumia Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Piga gumzo kwa kutumia Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Piga gumzo kwa kutumia QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Piga gumzo kwa kutumia Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Piga gumzo kwa kutumia ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Piga gumzo kwa kutumia Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Gumzo"</string>
<string name="audio_chat" msgid="2535716629358298691">"Gumzo la sauti"</string>
<string name="video_chat" msgid="1872255818640336072">"Piga gumzo la video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Anwani"</string>
- <string name="postal_street" msgid="8133143961580058972">"Barabara"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Sanduku la posta"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Mtaa"</string>
- <string name="postal_city" msgid="6597491300084895548">"Jiji"</string>
- <string name="postal_region" msgid="6045263193478437672">"Jimbo"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Msimbo wa posta"</string>
- <string name="postal_country" msgid="7638264508416368690">"Nchi"</string>
- <string name="full_name" msgid="6602579550613988977">"Jina"</string>
- <string name="name_given" msgid="1687286314106019813">"Jina la kupewa"</string>
- <string name="name_family" msgid="3416695586119999058">"Jina la familia"</string>
- <string name="name_prefix" msgid="59756378548779822">"Kiambishi awali cha jina"</string>
- <string name="name_middle" msgid="8467433655992690326">"Jina la kati"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Kiambishi awali cha jina"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Jina lililotolewa la fonetiki"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Jina la katikati la kifonetiki"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Jina la kifonetiki la familia"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Jina la kifonetiki"</string>
<string name="connections" msgid="8098440723172028350">"Miunganisho"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Ongeza muunganisho"</string>
<string name="recent" msgid="2659189233141493004">"Hivi karibuni"</string>
@@ -409,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Panga orodha kwa"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Jina la kwanza"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Jila la familia"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Tazama majina ya anwani kama"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Angalia majina ya anwani"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Jina ulilopewa kwanza"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Jina la familia kwanza"</string>
<string name="take_photo" msgid="7496128293167402354">"Piga picha"</string>
@@ -426,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Onyesha zote"</string>
<string name="menu_select_all" msgid="621719255150713545">"Chagua zote"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Usichague zozote"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Hakuna anwani zilizochaguliwa."</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>
@@ -440,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"haijaunganishwa"</item>
<item quantity="other" msgid="425683718017380845">"Zimeunganishwa kutoka kwa nyenzo <xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Nyingineyo"</string>
<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="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="directory_search_label" msgid="1887759056597975053">"Saraka"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Anwani zote"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Inaunda nakala ya kibinafsi..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Anwani zote"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Zenye Nyota"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Maalum"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Geuza kukufaa"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Anwani zote zilizo na nambari za simu"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Anwani"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Bainisha mwonekano maalum"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Inapakia…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Mipangilio"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Anwani za uonyesha"</string>
<string name="menu_settings" msgid="377929915873428211">"Mipangilio"</string>
<string name="menu_help" msgid="5123887102216637725">"Usaidizi"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Onyesha machaguo"</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="hint_findContacts" msgid="1808681193458772072">"Tafuta anwani"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Nambari ya simu"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Ongeza kwa anwani"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Ongeza kwa anwani"</string>
@@ -499,61 +215,7 @@
<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">"Unda wasifu wangu"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Charaza jina la mtu"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Tazama masasisho"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Barua ya sauti"</item>
- <item quantity="other" msgid="5513481419205061254">"Barua za sauti <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Cheza"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Barua mpya ya sauti kutoka <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Haikuweza kucheza barua ya sauti."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Inaakibisha..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Inaleta barua ya sauti…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Haikuweza kuleta barua ya sauti."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Mpya"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Nzee zaidi"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Simu zilizo na ujumbe wa sauti tu"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Simu zinazoingia tu"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Simu zinazotoka tu"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Simu zisizojibiwa tu"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Haiwezi kuunganisha kwa seva ya ujumbe wa sauti."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Imeshindwa kuwasiliana na seva ya ujumbe wa sauti. Mawasiliano mapya ya sauti yanasubiri kusikilizwa."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Sanidi ujumbe wako wa sauti."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Sauti haipatikani."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Sanidi"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Pigia barua sauti"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Kasi ya taratibu zaidi"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Kasi ya taratibu"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Kasi ya kawaida"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Kasi ya haraka"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Kasi ya haraka zaidi"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"( <xliff:g id="COUNT">%1$d</xliff:g> ) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Jina la kikundi"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Anwani imepokewa kupitia NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Onyesha zinazotoka pekee"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Onyesha zinazoingia pekee"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Onyesha zilizokosa kupokewa pekee"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Onyesha barua za sauti pekee"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Onyesha simu zote"</string>
- <string name="status_available" msgid="5586870015822828392">"Nipo"</string>
- <string name="status_away" msgid="1838861100379804730">"Mbali"</string>
- <string name="status_busy" msgid="9147992455450257136">"Ana shughuli"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Cheza barua ya sauti"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Simu inayoingia"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Simu inayotoka"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Simu isiyojibiwa"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Barua za sauti"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Ongeza anwani"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Angalia anwani <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Piga <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Tuma ujumbe wa maandishi kwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Barua sauti ambayo haijasikizwa"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Tuma ujumba kwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Piga simu <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Mwasiliani wa haraka wa <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Mimi"</string>
<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>
@@ -561,15 +223,11 @@
<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_one_account" msgid="8669032699767375976">"Mwasiliani wako mpya atalandanishwa na <xliff:g id="ACCOUNT_NAME">%1$s</xliff:g>."</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>
<string name="add_account" msgid="8201790677994503186">"Ongeza akaunti"</string>
<string name="add_new_account" msgid="5748627740680940264">"Ongeza akaunti mpya"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Simu haijatumwa"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ili kusanidi ujumbe wa sauti, nenda kwa Menyu > Mipangilio."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Kupigia simu ujumbe wa sauti, kwanza zima hali ya ndege."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Hamisha faili za hifadhidata"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Chaguo zaidi"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Panua au ukunje sehemu za jina"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Picha. Chagua ili ubadilishe"</string>
</resources>
diff --git a/res/values-sw580dp-land/integers.xml b/res/values-sw580dp-land/integers.xml
index 191eeb8..8ce96de 100644
--- a/res/values-sw580dp-land/integers.xml
+++ b/res/values-sw580dp-land/integers.xml
@@ -15,6 +15,5 @@
-->
<resources>
<integer name="contact_tile_column_count">3</integer>
- <integer name="contact_tile_column_count_in_favorites">3</integer>
<integer name="updates_tab_snippet_max_lines">7</integer>
</resources>
diff --git a/res/values-sw580dp/dimens.xml b/res/values-sw580dp/dimens.xml
index 0c73fa4..3e55240 100644
--- a/res/values-sw580dp/dimens.xml
+++ b/res/values-sw580dp/dimens.xml
@@ -15,11 +15,10 @@
-->
<resources>
<dimen name="editor_padding_top">32dip</dimen>
- <dimen name="editor_type_label_width">122dip</dimen>
<dimen name="editor_round_button_padding_left">16dip</dimen>
<dimen name="editor_round_button_padding_right">16dip</dimen>
+ <dimen name="editor_type_label_width">122dip</dimen>
<dimen name="editor_add_field_label_left_padding">16dip</dimen>
- <dimen name="detail_item_side_margin">0dip</dimen>
<dimen name="detail_item_vertical_margin">16dip</dimen>
<dimen name="detail_item_icon_margin">8dip</dimen>
<dimen name="shortcut_icon_size">64dip</dimen>
@@ -33,9 +32,6 @@
<!-- Center vertically -->
<dimen name="quick_contact_top_position">-1px</dimen>
<!-- Contact list (vertical scroll bar comes left) -->
- <dimen name="contact_browser_list_top_margin">16dip</dimen>
- <dimen name="contact_browser_list_header_left_margin">@dimen/list_visible_scrollbar_padding</dimen>
- <dimen name="contact_browser_list_header_right_margin">24dip</dimen>
<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-sw580dp/integers.xml b/res/values-sw580dp/integers.xml
index cdf6e4a..a62fa14 100644
--- a/res/values-sw580dp/integers.xml
+++ b/res/values-sw580dp/integers.xml
@@ -15,6 +15,5 @@
-->
<resources>
<integer name="contact_tile_column_count">2</integer>
- <integer name="contact_tile_column_count_in_favorites">3</integer>
<integer name="updates_tab_snippet_max_lines">4</integer>
</resources>
diff --git a/res/values-sw580dp/styles.xml b/res/values-sw580dp/styles.xml
index 1181d5d..3d919d6 100644
--- a/res/values-sw580dp/styles.xml
+++ b/res/values-sw580dp/styles.xml
@@ -97,16 +97,6 @@
<item name="android:windowSoftInputMode">adjustUnspecified</item>
</style>
- <style name="ContactListFilterTheme" parent="@android:Theme.Holo.Light.Dialog">
- <item name="android:windowCloseOnTouchOutside">true</item>
- <item name="android:listViewStyle">@style/ListViewStyle</item>
- </style>
-
- <style name="CustomContactListFilterView" parent="ContactListFilterTheme">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">400dip</item>
- </style>
-
<style name="DetailActivityTheme" parent="@android:Theme.Dialog">
<item name="android:windowContentOverlay">@null</item>
</style>
@@ -132,13 +122,4 @@
<item name="android:layout_height">200dip</item>
</style>
- <style name="BackgroundOnlyTheme" parent="@android:Theme.Holo.Light">
- <item name="android:windowBackground">@null</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowAnimationStyle">@null</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowNoDisplay">true</item>
- <item name="android:windowIsFloating">true</item>
- </style>
-
</resources>
diff --git a/res/values-sw680dp-land/integers.xml b/res/values-sw680dp-land/integers.xml
index bc9b2b7..d247e46 100644
--- a/res/values-sw680dp-land/integers.xml
+++ b/res/values-sw680dp-land/integers.xml
@@ -15,5 +15,4 @@
-->
<resources>
<integer name="contact_tile_column_count">4</integer>
- <integer name="contact_tile_column_count_in_favorites">4</integer>
</resources>
diff --git a/res/values-sw680dp/donottranslate_config.xml b/res/values-sw680dp/donottranslate_config.xml
deleted file mode 100644
index 5e5be30..0000000
--- a/res/values-sw680dp/donottranslate_config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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>
- <bool name="config_browse_list_show_images">true</bool>
- <bool name="config_use_two_panes_in_favorites">true</bool>
-</resources>
diff --git a/res/values-sw680dp/integers.xml b/res/values-sw680dp/integers.xml
index 5b348a5..eaf5971 100644
--- a/res/values-sw680dp/integers.xml
+++ b/res/values-sw680dp/integers.xml
@@ -15,6 +15,5 @@
-->
<resources>
<integer name="contact_tile_column_count">2</integer>
- <integer name="contact_tile_column_count_in_favorites">2</integer>
<integer name="updates_tab_snippet_max_lines">7</integer>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index be8e050..b33ab27 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"โทรศัพท์"</string>
<string name="people" msgid="1048457247435785074">"บุคคล"</string>
<string name="contactsList" msgid="8661624236494819731">"รายชื่อในสมุดโทรศัพท์"</string>
<string name="shortcutContact" msgid="749243779392912958">"สมุดโทรศัพท์"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"เกี่ยวกับ"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"อัปเดต"</string>
<string name="searchHint" msgid="8482945356247760701">"ค้นหาที่อยู่ติดต่อ"</string>
- <string name="menu_search" msgid="9147752853603483719">"ค้นหา"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"สร้างรายชื่อใหม่"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"ดูสมุดโทรศัพท์"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"คัดลอก"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"วางบนหน้าจอหลัก"</string>
<string name="menu_call" msgid="3992595586042260618">"โทรหารายชื่อในสมุดโทรศัพท์"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"ส่งข้อความถึงรายชื่อในสมุดโทรศัพท์"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"สมุดโทรศัพท์นี้มีข้อมูลจากหลายบัญชี ข้อมูลจากบัญชีแบบอ่านอย่างเดียวจะถูกซ่อนในรายการรายชื่อของคุณโดยไม่ถูกลบออก"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"การลบสมุดโทรศัพท์นี้จะลบข้อมูลจากบัญชีแบบหลายรายการ"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"รายชื่อนี้จะถูกลบ"</string>
- <string name="menu_done" msgid="796017761764190697">"เสร็จสิ้น"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"ยกเลิก"</string>
<string name="menu_discard" msgid="6456087569315685632">"ยกเลิก"</string>
- <string name="label_notes" msgid="8337354953278341042">"หมายเหตุ"</string>
- <string name="label_sip_address" msgid="124073911714324974">"การโทรทางอินเทอร์เน็ต"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"บริษัท"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"ชื่อ"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"โทรศัพท์"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"อีเมล"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"ที่อยู่"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"องค์กร"</item>
<item msgid="7196592230748086755">"หมายเหตุ"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"ไม่มีรายชื่อ"</string>
<string name="noGroups" msgid="8614664663561385253">"ไม่มีกลุ่ม"</string>
<string name="noAccounts" msgid="7768267764545265909">"คุณจำเป็นต้องมีบัญชีเพื่อสร้างกลุ่ม"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"ไม่พบรายชื่อที่ตรงกัน"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"ไม่รายชื่อที่มีหมายเลขโทรศัพท์"</string>
<string name="emptyGroup" msgid="7502116218697177370">"ไม่มีสมาชิกในกลุ่มนี้"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"หากต้องการเพิ่มสมาชิก ให้แก้ไขกลุ่ม"</string>
<string name="savingContact" msgid="4075751076741924939">"กำลังบันทึกรายชื่อ…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"บันทึกตัวเลือกการแสดงผล..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"บันทึกรายชื่อ"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"ไม่สามารถบันทึกการเปลี่ยนแปลงรายชื่อติดต่อ"</string>
<string name="groupSavedToast" msgid="1168756874239833756">"บันทึกกลุ่มแล้ว"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 รายชื่อติดต่อ"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> รายชื่อติดต่อ"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"ไม่มีรายชื่อติดต่อ"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"ไม่มีรายชื่อติดต่อที่แสดงไว้"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"ไม่มีรายการโปรด"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"ไม่มีรายชื่อติดต่อใน <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"ผู้ติดต่อใน <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"รายชื่อเดียว"</string>
- <string name="listCustomView" msgid="6950713892532194050">"ที่อยู่ติดต่อในมุมมองที่กำหนดเอง"</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="foundTooManyContacts" msgid="5163335650920020220">"พบมากกว่า <xliff:g id="COUNT">%d</xliff:g> รายการ"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"ไม่มีรายชื่อติดต่อ"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"พบ 1 รายการ"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"ที่อยู่ติดต่อทั้งหมด"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"กลุ่ม"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"รายการโปรด"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"รายการโปรดและผู้ติดต่อทั้งหมด"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"โทรศัพท์"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"บันทึกการโทร"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"ส่งข้อความตัวอักษร"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"โทรหา <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"แก้ไขหมายเลขก่อนโทร"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"เพิ่มในสมุดโทรศัพท์"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"ลบจากบันทึกการโทร"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"ล้างบันทึกการโทร"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ลบข้อความเสียง"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"แบ่งปันข้อความเสียง"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"บันทึกการโทรว่างเปล่า"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"ล้างบันทึกการโทร"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"บันทึกการโทรทั้งหมดของคุณจะถูกลบออก"</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"กำลังล้างบันทึกการโทร..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"ล้างผู้ที่คุณติดต่อด้วยบ่อยๆ หรือไม่"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"คุณจะล้างรายชื่อของผู้ที่ติดต่อด้วยบ่อยๆ ในแอป People and Phone และบังคับให้แอปอีเมลเรียนรู้การกำหนดที่อยู่ของคุณใหม่ตั้งแต่ต้น"</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"กำลังล้างผู้ที่คุณติดต่อด้วยบ่อยๆ…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"ข้อความเสียง"</string>
- <string name="unknown" msgid="740067747858270469">"ไม่ทราบ"</string>
- <string name="private_num" msgid="6374339738119166953">"หมายเลขส่วนตัว"</string>
- <string name="payphone" msgid="4864313342828942922">"โทรศัพท์สาธารณะ"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"ใช้แป้นพิมพ์กดหมายเลขโทรศัพท์"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"หมุนหมายเลขเพื่อเพิ่มการโทร"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"กำลังโหลดจากซิมการ์ด…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"รายชื่อบนซิมการ์ด"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"คุณไม่มีรายชื่อที่จะแสดง (หากคุณเพิ่งเพิ่มบัญชีลงไป อาจต้องใช้เวลาในการซิงค์รายชื่อสักครู่)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"คุณไม่มีรายชื่อให้แสดง"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"คุณไม่มีรายชื่อติดต่อที่จะแสดง"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับแท็บเล็ต"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากซิมการ์ดหรือการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"คุณไม่มีรายชื่อติดต่อที่จะแสดง"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n" "\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับโทรศัพท์"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากซิมการ์ดหรือการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"คุณไม่มีรายชื่อติดต่อที่จะแสดง (หากคุณเพิ่งเพิ่มบัญชี อาจต้องใช้เวลาสักครู่ในการซิงค์รายชื่อติดต่อ)"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับแท็บเล็ตได้"\n</li>\n<li><font fgcolor="#ffffffff"><b>"ตัวเลือกการแสดงผล"</b></font>" เพื่อเปลี่ยนว่าจะให้แสดงรายชื่อติดต่อใดบ้าง"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากซิมการ์ดหรือการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"คุณไม่มีรายชื่อติดต่อที่จะแสดง (หากคุณเพิ่งเพิ่มบัญชี อาจต้องใช้เวลาสักครู่ในการซิงค์รายชื่อติดต่อ)"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับโทรศัพท์ได้"\n</li>\n<li><font fgcolor="#ffffffff"><b>"ตัวเลือกการแสดงผล"</b></font>" เพื่อเปลี่ยนว่าจะให้แสดงรายชื่อติดต่อใดบ้าง"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากซิมการ์ดหรือการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"คุณไม่มีรายชื่อติดต่อที่จะแสดง"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับแท็บเล็ต"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"คุณไม่มีรายชื่อติดต่อที่จะแสดง"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับโทรศัพท์"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"คุณไม่มีรายชื่อติดต่อที่จะแสดง (หากคุณเพิ่งเพิ่มบัญชี อาจต้องใช้เวลาสักครู่ในการซิงค์รายชื่อติดต่อ)"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับแท็บเล็ตได้"\n</li>\n<li><font fgcolor="#ffffffff"><b>"ตัวเลือกการแสดงผล"</b></font>" เพื่อเปลี่ยนว่าจะให้แสดงรายชื่อติดต่อใดบ้าง"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากการ์ด SD ของคุณ"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"คุณไม่มีรายชื่อติดต่อที่จะแสดง (หากคุณเพิ่งเพิ่มบัญชี อาจต้องใช้เวลาสักครู่ในการซิงค์รายชื่อติดต่อ)"\n\n"หากต้องการเพิ่มรายชื่อติดต่อ ให้แตะ "<font fgcolor="#ffffffff"><b>"เมนู"</b></font>" แล้วแตะ:"\n\n<li><font fgcolor="#ffffffff"><b>"บัญชี"</b></font>" เพื่อเพิ่มหรือตั้งค่าบัญชีที่มีรายชื่อติดต่อที่คุณสามารถซิงค์กับโทรศัพท์ได้"\n</li>\n<li><font fgcolor="#ffffffff"><b>"ตัวเลือกการแสดงผล"</b></font>" เพื่อเปลี่ยนว่าจะให้แสดงรายชื่อติดต่อใดบ้าง"\n</li>\n<li><font fgcolor="#ffffffff"><b>"รายชื่อติดต่อใหม่"</b></font>" เพื่อสร้างรายชื่อติดต่อใหม่ตั้งแต่ต้น"\n</li>\n<li><font fgcolor="#ffffffff"><b>"นำเข้า/ส่งออก"</b></font>" เพื่อนำเข้ารายชื่อติดต่อจากการ์ด SD ของคุณ"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"คุณไม่มีรายการโปรดใดๆ "\n\n"หากต้องการเพิ่มรายชื่อในรายการโปรด:"\n\n" "<li>"แตะที่แท็บ "<b>"สมุดโทรศัพท์"</b>" "\n</li>" "\n<li>"แตะรายชื่อที่คุณต้องการเพิ่มลงในรายการโปรด"\n</li>" "\n<li>"แตะรูปดาวที่อยู่ติดกับชื่อ"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ใช้ปุ่มกดสัญญาณเสียง"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"กลับสู่การโทรที่กำลังดำเนินอยู่"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"เพิ่มการโทร"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"รายละเอียดการโทร"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"ไม่สามารถอ่านรายละเอียดสำหรับการโทรที่ขอ"</string>
- <string name="type_incoming" msgid="6502076603836088532">"สายเรียกเข้า"</string>
- <string name="type_outgoing" msgid="343108709599392641">"สายโทรออก"</string>
- <string name="type_missed" msgid="2720502601640509542">"สายที่ไม่ได้รับ"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"ข้อความเสียง"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"สายโทรเข้า"</string>
<string name="callBack" msgid="5498224409038809224">"ติดต่อกลับ"</string>
<string name="callAgain" msgid="3197312117049874778">"โทรอีกครั้ง"</string>
<string name="returnCall" msgid="8171961914203617813">"โทรกลับ"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> นาที <xliff:g id="SECONDS">%s</xliff:g> วินาที"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"ที่ติดต่อบ่อยครั้ง"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"มีการติดต่อบ่อย"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"เพิ่ม \"<xliff:g id="EMAIL">%s</xliff:g>\" ในสมุดโทรศัพท์หรือไม่"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"หนึ่ง"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"สอง"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"สาม"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"สี่"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"ห้า"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"หก"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"เจ็ด"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"แปด"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"เก้า"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ติดดาว"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"ศูนย์"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"ปอนด์"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"ข้อความเสียง"</string>
- <string name="description_search_button" msgid="3660807558587384889">"ค้นหา"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"หมุนหมายเลข"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"ย้อนกลับ"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"หมายเลขที่จะโทร"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"ภาพของรายชื่อ"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"ลบ"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"ดูรายชื่อติดต่อ"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"ไม่พบที่จัดเก็บข้อมูล"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"ไม่พบการ์ด SD"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"นำเข้าจากซิมการ์ด"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"นำเข้าจากที่เก็บข้อมูล"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"ส่งออกไปยังที่เก็บข้อมูล"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"แบ่งปันสมุดโทรศัพท์ที่มองเห็น"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"นำเข้าไฟล์ vCard หนึ่งไฟล์"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"นำเข้าไฟล์ vCard หลายไฟล์"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"นำเข้าไฟล์ vCard ทั้งหมด"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"กำลังค้นหาข้อมูล vCard ในที่จัดเก็บข้อมูล..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"กำลังค้นหาข้อมูล vCard บนการ์ด SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"ไม่สามารถสแกนที่จัดเก็บข้อมูล (สาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"ไม่สามารถสแกนการ์ด SD (สาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"ข้อผิดพลาด I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"หน่วยความจำไม่เพียงพอ ไฟล์อาจใหญ่เกินไป"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"ไม่สามารถแยกวิเคราะห์ vCard ด้วยเหตุผลที่ไม่คาดคิด"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"ไม่สนับสนุนรูปแบบนี้"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"ไม่สามารถนำเข้า vCard"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"ไม่พบไฟล์ vCard ในที่จัดเก็บข้อมูล"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"ไม่พบไฟล์ vCard บนการ์ด SD"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"ไม่สามารถรวบรวมข้อมูลเมตาของ vCard ที่ระบุ"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"ไม่สามารถนำเข้าไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไป (%s)"</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"ข้อผิดพลาดที่ไม่รู้จัก"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"เลือกไฟล์ vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"กำลังแคช"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"กำลังแคช vCard ไปยังที่จัดเก็บข้อมูลชั่วคราวในตัวเครื่อง การนำเข้าจริงจะเริ่มต้นในอีกสักครู่"</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"กำลังนำเข้า <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"กำลังนำเข้า <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"ไม่สามารถอ่านข้อมูล vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"ยกเลิกการอ่านข้อมูล vCard แล้ว"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"นำเข้า vCard <xliff:g id="FILENAME">%s</xliff:g> เรียบร้อยแล้ว"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"ยกเลิกการนำเข้า <xliff:g id="FILENAME">%s</xliff:g> แล้ว"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"การนำเข้า <xliff:g id="FILENAME">%s</xliff:g> จะเกิดขึ้นในไม่ช้า"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"ไฟล์จะถููกนำเข้าในไม่ช้า"</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"คำขอนำเข้า vCard ถูกปฏิเสธ ลองใหม่ภายหลัง"</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"การส่งออก <xliff:g id="FILENAME">%s</xliff:g> จะเกิดขึ้นในไม่ช้า"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"คำขอส่งออก vCard ถูกปฏิเสธ ลองใหม่ภายหลัง"</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"สมุดโทรศัพท์"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"ส่งออกรายชื่อติดต่อ"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"รายชื่อติดต่อของคุณจะถูกส่งออกเป็นไฟล์: <xliff:g id="VCARD_FILENAME">%s</xliff:g>"</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"ไม่สามารถส่งออก"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"ไม่ได้ส่งออกข้อมูลรายชื่อติดต่อ"\n"สาเหตุ: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้"</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"มีไฟล์ vCard ในที่จัดเก็บข้อมูลมากเกินไป"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"มีไฟล์ vCard บนการ์ด SD มากเกินไป"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"ชื่อไฟล์ที่ต้องระบุยาวเกินไป (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"ส่งออก <xliff:g id="FILENAME">%s</xliff:g> เสร็จแล้ว"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"ยกเลิกการส่งออก <xliff:g id="FILENAME">%s</xliff:g> แล้ว"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"กำลังส่งออกข้อมูลสมุดโทรศัพท์"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"กำลังส่งออกข้อมูลรายชื่อติดต่อของคุณไปยัง: <xliff:g id="FILE_NAME">%s</xliff:g>"</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"เริ่มใช้งานโปรแกรมส่งออกไม่ได้: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"เกิดข้อผิดพลาดระหว่างส่งออก: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"ไม่สามารถดึงข้อมูลจากฐานข้อมูล"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้ หากคุณมีรายชื่อติดต่ออยู่ในแท็บเล็ตของคุณจริงๆ อาจเป็นเพราะผู้ให้บริการข้อมูลบางรายไม่อนุญาตให้ส่งออกรายชื่อติดต่อจากแท็บเล็ต"</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"ไม่มีรายชื่อติดต่อที่สามารถส่งออกได้ หากคุณมีรายชื่อติดต่ออยู่ในโทรศัพท์ของคุณจริงๆ อาจเป็นเพราะผู้ให้บริการข้อมูลบางรายไม่อนุญาตให้ส่งออกรายชื่อติดต่อจากโทรศัพท์"</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"โปรแกรมเขียนข้อความ vCard เริ่มการทำงานไม่ถูกต้อง"</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"ไม่สามารถเปิด \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"ยกเลิกการนำเข้า <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"ยกเลิกการส่งออก <xliff:g id="FILENAME">%s</xliff:g> หรือไม่"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"ไม่สามารถยกเลิกการนำเข้า/ส่งออก vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"ชื่อของรายชื่อในสมุดโทรศัพท์ของคุณ"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"เพิ่มช่วงคั่น 2 วินาที"</string>
- <string name="add_wait" msgid="3360818652790319634">"เพิ่มการรอ"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"เลือกหมายเลข"</string>
- <string name="call_settings" msgid="7666474782093693667">"การตั้งค่า"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"เลือกหมายเลข"</string>
- <string name="make_primary" msgid="5829291915305113983">"จำตัวเลือกนี้"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"ไม่พบแอปพลิเคชันสำหรับการทำงานนี้"</string>
- <string name="missing_name" msgid="8745511583852904385">"(ไม่มีชื่อ)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"บัญชี"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"ล้างผู้ที่คุณติดต่อด้วยบ่อยๆ"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"รายชื่อติดต่อที่จะแสดง"</string>
- <string name="menu_import_export" msgid="26217871113229507">"นำเข้า/ส่งออก"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"นำเข้า/ส่งออกผู้ติดต่อ"</string>
- <string name="dialog_import" msgid="2431698729761448759">"นำเข้าสมุดโทรศัพท์"</string>
<string name="menu_share" msgid="943789700636542260">"ใช้ร่วมกัน"</string>
<string name="share_via" msgid="563121028023030093">"ใช้สมุดโทรศัพท์ร่วมกันทาง"</string>
- <string name="share_error" msgid="948429331673358107">"ไม่สามารถแบ่งปันรายชื่อติดต่อนี้ได้"</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"ชื่อ"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"ชื่อเล่น"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"องค์กร"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"เว็บไซต์"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"กิจกรรม"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"ความสัมพันธ์"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"กลุ่ม"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"สร้างรายชื่อภายในบัญชี"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"สร้างกลุ่มภายในบัญชี"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"นำกลุ่มที่ซิงค์ออก"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"เพิ่มกลุ่มที่ซิงค์"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"กลุ่มเพิ่มเติม…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"รายชื่อติดต่ออื่นทั้งหมด"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"รายชื่อติดต่อทั้งหมด"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"การนำ \"<xliff:g id="GROUP">%s</xliff:g>\" ออกจากการซิงค์จะนำรายชื่อติดต่อที่ไม่ได้จัดกลุ่มไว้ออกจากการซิงค์ด้วย"</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"แท็บเล็ตเท่านั้น ไม่ซิงค์"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"โทรศัพท์เท่านั้น ไม่ซิงค์"</string>
- <string name="call_custom" msgid="7756571794763171802">"โทรหา <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"โทรเข้าบ้าน"</string>
- <string name="call_mobile" msgid="7502236805487609178">"โทรเข้ามือถือ"</string>
- <string name="call_work" msgid="5328785911463744028">"โทรหาที่ทำงาน"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"โทรหาแฟกซ์ที่ทำงาน"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"โทรเข้าหมายเลขแฟกซ์ที่บ้าน"</string>
- <string name="call_pager" msgid="9003902812293983281">"โทรหาเพจเจอร์"</string>
- <string name="call_other" msgid="8563753966926932052">"โทร"</string>
- <string name="call_callback" msgid="1910165691349426858">"โทรหาหมายเลขติดต่อกลับ"</string>
- <string name="call_car" msgid="3280537320306436445">"โทรเข้าโทรศัพท์ในรถ"</string>
- <string name="call_company_main" msgid="6105120947138711257">"โทรหาโทรศัพท์หลักของบริษัท"</string>
- <string name="call_isdn" msgid="1541590690193403411">"โทรหา ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"โทรเข้าโทรศัพท์หลัก"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"โทรเข้าหมายเลขแฟกซ์"</string>
- <string name="call_radio" msgid="8296755876398357063">"โทรเข้าวิทยุ"</string>
- <string name="call_telex" msgid="2223170774548648114">"โทรเข้าหมายเลขเทเล็กซ์"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"โทรหา TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"โทรเข้ามือถือที่ทำงาน"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"โทรเข้าเพจเจอร์ที่ทำงาน"</string>
- <string name="call_assistant" msgid="2141641383068514308">"โทรหา <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"โทรหา MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"ส่งข้อความถึง <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"ส่งข้อความเข้าโทรศัพท์บ้าน"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"ส่งข้อความเข้ามือถือ"</string>
- <string name="sms_work" msgid="2269624156655267740">"ส่งข้อความถึงโทรศัพท์ที่ทำงาน"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"ส่งข้อความถึงแฟกซ์ที่ทำงาน"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"ส่งข้อความเข้าหมายเลขแฟกซ์บ้าน"</string>
- <string name="sms_pager" msgid="7730404569637015192">"ส่งข้อความถึงเพจเจอร์"</string>
- <string name="sms_other" msgid="806127844607642331">"ข้อความ"</string>
- <string name="sms_callback" msgid="5004824430094288752">"ส่งข้อความถึงหมายเลขติดต่อกลับ"</string>
- <string name="sms_car" msgid="7444227058437359641">"ส่งข้อความถึงรถยนต์"</string>
- <string name="sms_company_main" msgid="118970873419678087">"ส่งข้อความเข้าโทรศัพท์หลักของบริษัท"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"ส่งข้อความถึง ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"ส่งข้อความถึงโทรศัพท์หลัก"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"ส่งข้อความถึงหมายเลขแฟกซ์"</string>
- <string name="sms_radio" msgid="3329166673433967820">"ส่งข้อความถึงวิทยุ"</string>
- <string name="sms_telex" msgid="9034802430065267848">"ส่งข้อความถึงเทเล็กซ์"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"ส่งข้อความถึง TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"ส่งข้อความถึงโทรศัพท์มือถือที่ทำงาน"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"ส่งข้อความเข้าเพจเจอร์ที่ทำงาน"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"ส่งข้อความถึง <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"ส่งข้อความถึง MMS"</string>
- <string name="sms" msgid="1756857139634224222">"ข้อความตัวอักษร"</string>
- <string name="email_home" msgid="8573740658148184279">"ส่งไปที่อีเมลส่วนตัว"</string>
- <string name="email_mobile" msgid="2042889209787989814">"ส่งอีเมลเข้ามือถือ"</string>
- <string name="email_work" msgid="2807430017302722689">"ส่งอีเมลถึงที่ทำงาน"</string>
- <string name="email_other" msgid="3454004077967657109">"อีเมล"</string>
- <string name="email_custom" msgid="7548003991586214105">"อีเมล <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"อีเมล"</string>
- <string name="map_home" msgid="1243547733423343982">"ดูที่อยู่บ้าน"</string>
- <string name="map_work" msgid="1360474076921878088">"ดูที่อยู่ที่ทำงาน"</string>
- <string name="map_other" msgid="3817820803587012641">"ดูที่อยู่"</string>
- <string name="map_custom" msgid="6184363799976265281">"ดูที่อยู่ <xliff:g id="CUSTOM">%s</xliff:g> รายการ"</string>
- <string name="chat_aim" msgid="2588492205291249142">"แชทโดยใช้ AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"แชทโดยใช้ Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"แชทโดยใช้ Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"แชทโดยใช้ Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"แชทโดยใช้ QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"แชทโดยใช้ Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"แชทโดยใช้ ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"แชทโดยใช้ Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"แชท"</string>
<string name="audio_chat" msgid="2535716629358298691">"แชทด้วยเสียง"</string>
<string name="video_chat" msgid="1872255818640336072">"วิดีโอแชท"</string>
- <string name="postal_address" msgid="8765560217149624536">"ที่อยู่"</string>
- <string name="postal_street" msgid="8133143961580058972">"ถนน"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"ตู้ ปณ."</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"ย่านใกล้เคียง"</string>
- <string name="postal_city" msgid="6597491300084895548">"เมือง"</string>
- <string name="postal_region" msgid="6045263193478437672">"รัฐ"</string>
- <string name="postal_postcode" msgid="572136414136673751">"รหัสไปรษณีย์"</string>
- <string name="postal_country" msgid="7638264508416368690">"ประเทศ"</string>
- <string name="full_name" msgid="6602579550613988977">"ชื่อ"</string>
- <string name="name_given" msgid="1687286314106019813">"ชื่อ"</string>
- <string name="name_family" msgid="3416695586119999058">"นามสกุล"</string>
- <string name="name_prefix" msgid="59756378548779822">"คำนำหน้าชื่อ"</string>
- <string name="name_middle" msgid="8467433655992690326">"ชื่อกลาง"</string>
- <string name="name_suffix" msgid="3855278445375651441">"คำต่อท้ายชื่อ"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"ชื่อแบบออกเสียง"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"ชื่อกลางแบบออกเสียง"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"นามสกุลแบบออกเสียง"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"ชื่อแบบออกเสียง"</string>
<string name="connections" msgid="8098440723172028350">"การเชื่อมต่อ"</string>
<string name="add_connection_button" msgid="4861308615789601727">"เพิ่มการเชื่อมต่อ"</string>
<string name="recent" msgid="2659189233141493004">"ล่าสุด"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"ดูชื่อของรายชื่อเป็น"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"ไม่ได้เลือกสมุดโทรศัพท์ไว้"</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"ไม่รวม"</item>
<item quantity="other" msgid="425683718017380845">"รวมจากแหล่งที่มา <xliff:g id="COUNT">%0$d</xliff:g> แหล่ง"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"อื่นๆ"</string>
<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="directory_search_label" msgid="1887759056597975053">"ไดเรกทอรี"</string>
- <string name="local_search_label" msgid="2551177578246113614">"รายชื่อติดต่อทั้งหมด"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"กำลังสร้างสำเนาส่วนบุคคล..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"รายชื่อติดต่อทั้งหมด"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"ที่ติดดาว"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"กำหนดเอง"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"กำหนดค่า"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"รายชื่อติดต่อทั้งหมดที่มีหมายเลขโทรศัพท์"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"รายชื่อติดต่อ"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"กำหนดมุมมองที่กำหนดเอง"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"กำลังโหลด..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"การตั้งค่า"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"รายชื่อติดต่อที่จะแสดง"</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="hint_findContacts" msgid="1808681193458772072">"ค้นหารายชื่อติดต่อ"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"ดูการอัปเดต"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"ข้อความเสียง"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"เล่น"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ข้อความเสียงใหม่จาก <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"ไม่สามารถเล่นข้อความเสียง"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"กำลังเก็บบัฟเฟอร์…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"กำลังดึงข้อความเสียง…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"ไม่สามารถดึงข้อความเสียง"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"ใหม่"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"เก่ากว่า"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"เฉพาะสายที่มีข้อความเสียง"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"เฉพาะสายเรียกเข้า"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"เฉพาะสายโทรออก"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"เฉพาะสายที่ไม่ได้รับ"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ข้อความเสียง"</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ข้อความเสียง มีข้อความเสียงใหม่"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"ตั้งค่าข้อความเสียงของคุณ"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"ไม่มีเสียง"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ตั้งค่า"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"เรียกข้อความเสียง"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"ช้าที่สุด"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"ช้า"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"เร็วปกติ"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"เร็ว"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"เร็วที่สุด"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"ชื่อกลุ่ม"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"ผู้ติดต่อทาง NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"แสดงสายที่โทรออกเท่านั้น"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"แสดงสายโทรเข้าเท่านั้น"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"แสดงสายที่ไม่ได้รับเท่านั้น"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"แสดงเฉพาะข้อความเสียง"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"แสดงการโทรทั้งหมด"</string>
- <string name="status_available" msgid="5586870015822828392">"ว่าง"</string>
- <string name="status_away" msgid="1838861100379804730">"ไม่อยู่"</string>
- <string name="status_busy" msgid="9147992455450257136">"ไม่ว่าง"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"เล่นข้อความเสียง"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"สายเรียกเข้า"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"สายโทรออก"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"สายที่ไม่ได้รับ"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"ข้อความเสียง"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"เพิ่มรายชื่อติดต่อ"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"ดูรายชื่อติดต่อ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"โทรหา <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"ส่งข้อความไปที่ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ข้อความเสียงที่ยังไม่ได้ฟัง"</string>
- <string name="description_send_message" msgid="6046623392322890962">"ส่งข้อความให้ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"หมายเลขโทรศัพท์ของ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"สมุดโทรศัพท์ด่วนสำหรับ <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"ฉัน"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"จัดเก็บในตัวเครื่อง"</string>
<string name="add_account" msgid="8201790677994503186">"เพิ่มบัญชี"</string>
<string name="add_new_account" msgid="5748627740680940264">"เพิ่มบัญชีใหม่"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ไม่สามารถโทรออก"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"หากต้องการตั้งค่าข้อความเสียง ให้ไปที่เมนู > การตั้งค่า"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"หากต้องการฟังข้อความเสียง ให้ปิดโหมดใช้งานบนเครื่องบินก่อน"</string>
<string name="menu_export_database" msgid="2659719297530170820">"ส่งออกไฟล์ฐานข้อมูล"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"ตัวเลือกเพิ่มเติม"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"ขยายหรือยุบฟิลด์ชื่อ"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"ภาพ เลือกเพื่อเปลี่ยน"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 5c014fc..55cb281 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telepono"</string>
<string name="people" msgid="1048457247435785074">"Mga Tao"</string>
<string name="contactsList" msgid="8661624236494819731">"Mga Contact"</string>
<string name="shortcutContact" msgid="749243779392912958">"Contact"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Tungkol sa"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Mga Update"</string>
<string name="searchHint" msgid="8482945356247760701">"Maghanap ng mga contact"</string>
- <string name="menu_search" msgid="9147752853603483719">"Paghahanap"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Bagong contact"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Tingnan ang contact"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Idagdag sa mga paborito"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Alisin mula sa mga paborito"</string>
<string name="menu_editContact" msgid="9042415603857662633">"I-edit"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Tanggalin"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopyahin"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Ilagay sa Home screen"</string>
<string name="menu_call" msgid="3992595586042260618">"Tawagan ang contact"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Mag-text sa contact"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Tapos na"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Kanselahin"</string>
<string name="menu_discard" msgid="6456087569315685632">"Itapon"</string>
- <string name="label_notes" msgid="8337354953278341042">"Mga Tala"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Tawag sa internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Kumpanya"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Pamagat"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Lumikha ng bagong contact"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telepono"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Address"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Samahan"</item>
<item msgid="7196592230748086755">"Tandaan"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Walang mga contact."</string>
<string name="noGroups" msgid="8614664663561385253">"Walang mga pangkat."</string>
<string name="noAccounts" msgid="7768267764545265909">"Upang lumikha ng mga pangkat kailangan mo ng isang account."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Walang nakitang magkakatugmang mga contact."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Walang mga contact na may mga numero ng telepono."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Walang mga tao sa pangkat na ito."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Upang magdagdag ng ilan, i-edit ang pangkat."</string>
<string name="savingContact" msgid="4075751076741924939">"Nagse-save ng contact…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Sine-save ang mga pagpipilian sa pagpapakita…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Na-save ang contact."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Hindi ma-save ang mga pagbabago sa contact."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Na-save ang pangkat."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 contact"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> (na) contact"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Walang mga contact."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Walang mga nakikitang contact."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Walang mga paborito."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Walang mga contact sa <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Mga contact sa <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Iisang contact"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Mga contact sa custom na pagtingin"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Higit sa <xliff:g id="COUNT">%d</xliff:g> ang natagpuan."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Walang mga contact"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 ang nakita"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Lahat ng contact"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Mga Pangkat"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Mga Paborito"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Mga paborito at lahat ng contact"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telepono"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Log ng tawag"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Magpadala ng text message"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Tawagan si <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"I-edit ang numero bago tumawag"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Idagdag sa mga contact"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Alisin mula sa log ng tawag"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"I-clear ang log ng tawag"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Tanggalin ang voicemail"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Ibahagi ang voicemail"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Walang laman ang log ng tawag."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"I-clear ang log ng tawag?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tatanggalin ang lahat ng iyong record ng tawag."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Kini-clear ang log ng tawag…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"I-clear ang mga madalas tinatawagan?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Iki-clear mo ang listahan ng mga madalas na tinatawagan sa Mga Tao at Telepono na mga app, at pilitin ang mga email app na matutunan ang iyong mga kagustuhan sa pag-address mula sa umpisa."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Kini-clear ang mga madalas tinatawagan…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
- <string name="unknown" msgid="740067747858270469">"Di-kilala"</string>
- <string name="private_num" msgid="6374339738119166953">"Pribadong numero"</string>
- <string name="payphone" msgid="4864313342828942922">"Pay phone"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Gamitin ang keyboard upang mag-dial"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Mag-dial upang magdagdag ng tawag"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Naglo-load mula sa SIM card…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Mga contact sa SIM card"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Wala kang ipapakitang anumang mga contact. (Kung nagdagdag ka lang ng account, maaaring tumagal ng ilang minuto upang ma-sync ang mga contact.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Wala kang maipapakitang anumang mga contact."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Wala kang anumang mga ipapakitang contact."\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa iyong tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SIM o SD card"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Wala kang anumang mga ipapakitang contact."\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa telepono"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SIM o SD card"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Wala kang anumang mga ipapakitang contact. (Kung kadaragdag mo lamang ng isang account, maaari itong tumagal nang ilang minuto upang i-sync ang mga contact.)"\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mga pagpipilian sa display"</b></font>" upang baguhin kung aling mga contact ang nakikita"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SIM o SD card"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Wala kang anumang mga ipapakitang contact. (Kung kadaragdag mo lamang ng isang account, tatagal ito ng ilang minuto upang i-sync ang mga contact.)"\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa telepono"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mga pagpipilian sa display"</b></font>" upang baguhin kung aling mga contact ang nakikita"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SIM o SD card"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Wala kang anumang mga ipapakitang contact."\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-emport/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SD card"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Wala kang anumang mga ipapakitang contact."\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa telepono"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SD card"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Wala kang anumang mga ipapakitang contact. (Kung kadaragdag mo lamang ng isang account, maaari itong tumagal nang ilang minuto upang i-sync ang mga contact.)"\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag o mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa tablet"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mga pagpipilian sa display"</b></font>" upang baguhin kung aling mga contact ang nakikita"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SD card"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Wala kang anumang mga ipapakitang contact. (Kung kadaragdag mo lamang ng isang account, tatagal ito ng ilang minuto upang i-sync ang mga contact.)"\n\n"Upang magdagdag ng mga contact, pindutin ang "<font fgcolor="#ffffffff"><b>"Menu"</b></font>", pagkatapos ay pindutin ang:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Mga Account"</b></font>" upang magdagdag at mag-set up ng isang account na mayroong mga contact na maaari mong i-sync sa telepono"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mga pagpipilian sa display"</b></font>" upang baguhin kung aling mga contact ang nakikita"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Bagong contact"</b></font>" upang lumikha ng bagong contact mula sa wala"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Mag-import/Mag-export"</b></font>" upang mag-import ng mga contact mula sa iyong SD card"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Wala kang anumang mga paborito."\n\n"Upang magdagdag ng contact sa iyong listahan ng mga paborito:"\n\n" "<li>"Galawin ang tab na "<b>"Mga Contact"</b>\n</li>" "\n<li>"Galawin ang contact na gusto mong idagdag sa iyong mga paborito"\n</li>" "\n<li>"Galawin ang bituin sa tabi ng pangalan ng contact"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Gumamit ng touch tone na keypad"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kasalukuyang nagaganap ang pabalik na tawag"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Magdagdag ng tawag"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Mga detalye ng tawag"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Hindi mabasa ang mga detalye para sa hiniling na tawag."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Papasok na tawag"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Papalabas na tawag"</string>
- <string name="type_missed" msgid="2720502601640509542">"Hindi nasagot na tawag"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Mga paparating na tawag"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> (na) min <xliff:g id="SECONDS">%s</xliff:g> (na) seg"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Madalas na kino-contact"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Madalas na tinatawagan"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Idagdag ang \"<xliff:g id="EMAIL">%s</xliff:g>\" sa mga contact?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"isa"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"dalawa"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"tatlo"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"apat"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"lima"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"anim"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"pito"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"walo"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"siyam"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"lagyan ng bituin"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"zero"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pound"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"voicemail"</string>
- <string name="description_search_button" msgid="3660807558587384889">"maghanap"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"mag-dial"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"numerong ida-dial"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"larawan ng contact"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"tanggalin"</string>
<string name="description_plus_button" msgid="515164827856229880">"plus"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Tingnan ang contact"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Walang natagpuang storage."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Walang natagpuang SD card."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"I-import mula sa SIM card"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"I-import mula sa imbakan"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"I-export sa imbakan"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Magbahagi ng mga nakikitang contact"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Mag-import nang isang vCard file"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Mag-import ng maramihang vCard file"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"I-import ang lahat ng mga vCard file"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Naghahanap ng data ng vCard sa storage…"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Naghahanap ng data ng vCard data sa SD card…"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Hindi ma-scan ang storage. (Dahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Hindi ma-scan ang SD card. (Dahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O na error"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Walang sapat na memory. Maaaring masyadong malaki ang file."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Hindi ma-parse ang vCard dahil sa isang hindi inaasahang dahilan."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Hindi sinusuportahan ang format."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Hindi ma-import ang vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Walang natagpuang file ng vCard sa storage."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Walang natagpuang file ng vCard sa SD card."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Hindi makakolekta ng impormasyon ng meta ng nasabing (mga) file ng vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Ang isa o higit pang mga file ay hindi ma-import (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Hindi kilalang error."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Piliin ang file ng vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Nagka-cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Kina-cache ang (mga) vCard sa lokal na pansamantalang storage. Magsisimula sa lalong madaling panahon ang aktuwal na pag-import."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Nag-i-import <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Nag-iimport <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Hindi mabasa ang data ng vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Kinansela ang pagbabasa ng data ng vCard"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Tapos na ang pag-import ng vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Kinansela ang pag-import ng <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Mai-import ang <xliff:g id="FILENAME">%s</xliff:g> sa ilang saglit."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Sa ilang sandali ay mai-import na ang file."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Tinanggihan ang kahilingan sa pag-import ng vCard. Pakisubukang muli sa ibang pagkakataon."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Mae-export ang <xliff:g id="FILENAME">%s</xliff:g> sa ilang saglit."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Tinanggihan ang kahilingan sa pag-export ng vCard. Subukang muli sa ibang pagkakataon."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"contact"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"I-export ang mga contact?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Ang listahan ng iyong contact ay ie-export sa file: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Hindi ma-export"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Hindi na-export ang data ng contact."\n"Dahilan: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Walang maaaring i-export na contact."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Masyadong maraming file ng vCard ang nasa storage."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Masyadong maraming file ng vCard ang nasa SD card."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Masyadong mahaba ang kinakailangang filename (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Tapos na ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Kinansela ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Pag-e-export ng data ng contact"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Ine-export ang iyong data ng contact sa: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Hindi masimulan ang exporter: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Naganap ang isang error habang nag-e-export: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Hindi makuha ang impormasyon ng database."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Walang mga maaaring i-export na contact. Kung mayroon kang mga contact sa iyong tablet, maaaring hindi payagan ng ilang provider ng data provider na i-export mula sa tablet ang mga contact."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Walang mga maaaring i-export na contact. Kung mayroon kang mga contact sa iyong telepono, maaaring hindi pinapayagan ng ilang provider ng data na i-export mula sa telepono ang mga contact."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Hindi nagsimula nang tama ang composer ng vCard."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Hindi mabuksan ang \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Kanselahin ang pag-import ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Kanselahin ang pag-export ng <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Di makansela pag-import/pag-export vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Mga pangalan ng iyong mga contact"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Magdagdag ng pag-pause na 2-seg"</string>
- <string name="add_wait" msgid="3360818652790319634">"Magdagdag ng paghihintay"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Pumili ng numero"</string>
- <string name="call_settings" msgid="7666474782093693667">"Mga Setting"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Pumili ng numero"</string>
- <string name="make_primary" msgid="5829291915305113983">"Tandaan ang pagpipiliang ito"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Walang natagpuang app na mangangasiwa sa pagkilos na ito."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Walang pangalan)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Mga Account"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"I-clear ang mga madadalas"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Mga contact na ipapakita"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Mag-import/mag-export"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Mag-import/mag-export ng mga contact"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Mag-import ng mga contact"</string>
<string name="menu_share" msgid="943789700636542260">"Ibahagi"</string>
<string name="share_via" msgid="563121028023030093">"Ibahagi ang contact sa pamamagitan ng"</string>
- <string name="share_error" msgid="948429331673358107">"Hindi maibabahagi ang contact na ito."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Pangalan"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Palayaw"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Samahan"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Website"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Mga Kaganapan"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Kaugnayan"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Mga Pangkat"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Lumikha ng contact sa ilalim ng account"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Lumikha ng pangkat sa ilalim ng account"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Alisin ang pangkat sa pag-sync"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Magdagdag ng pangkat sa pag-sync"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Higit pang mga pangkat…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Lahat ng iba pang contact"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Lahat ng contact"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Aalisin rin ng pag-aalis sa \"<xliff:g id="GROUP">%s</xliff:g>\" mula sa sync ang anumang mga hindi nakapangkat na contact mula sa sync."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Tablet lang, hindi naka-sync"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Telepono lamang, hindi naka-sync"</string>
- <string name="call_custom" msgid="7756571794763171802">"Tawagan si <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Tawagan ang tahanan"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Tawagan ang mobile"</string>
- <string name="call_work" msgid="5328785911463744028">"Tawagan ang trabaho"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Tawagan ang fax sa trabaho"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Tawagan ang fax sa tahanan"</string>
- <string name="call_pager" msgid="9003902812293983281">"Tawagan ang pager"</string>
- <string name="call_other" msgid="8563753966926932052">"Tawag"</string>
- <string name="call_callback" msgid="1910165691349426858">"Tawagan ang pabalik na tawag"</string>
- <string name="call_car" msgid="3280537320306436445">"Tawagan sa kotse"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Tawagan ang pangunahing kumpanya"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Tawagan ang ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Tawagan ang pangunahin"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Tawagan ang fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Tumawag sa radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Tawagan ang telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Tawagan ang TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Tawagan ang mobile sa trabaho"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Tawagan ang pager sa trabaho"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Tawagan si <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Tawagan ang MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Mag-text sa <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Mag-text sa bahay"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Mag-text sa mobile"</string>
- <string name="sms_work" msgid="2269624156655267740">"Mag-text sa trabaho"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Mag-text sa fax sa trabaho"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"I-text ang fax sa tahanan"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Mag-text sa pager"</string>
- <string name="sms_other" msgid="806127844607642331">"Teksto"</string>
- <string name="sms_callback" msgid="5004824430094288752">"I-text ang callback"</string>
- <string name="sms_car" msgid="7444227058437359641">"Mag-text sa kotse"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Mag-text sa pangunahin ng kumpanya"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Mag-text sa ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"I-text ang pangunahin"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"I-text ang fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Mag-text sa radyo"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Mag-text sa telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"I-text ang TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"I-text ang mobile sa trabaho"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Mag-text sa pager sa trabaho"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Mag-text sa <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Mag-text ng MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Text message"</string>
- <string name="email_home" msgid="8573740658148184279">"Mag-email sa bahay"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Mag-email sa mobile"</string>
- <string name="email_work" msgid="2807430017302722689">"Mag-email sa trabaho"</string>
- <string name="email_other" msgid="3454004077967657109">"Email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Email <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Email"</string>
- <string name="map_home" msgid="1243547733423343982">"Tingnan ang home address"</string>
- <string name="map_work" msgid="1360474076921878088">"Tingnan ang address ng trabaho"</string>
- <string name="map_other" msgid="3817820803587012641">"Tingnan ang address"</string>
- <string name="map_custom" msgid="6184363799976265281">"Tingnan ang <xliff:g id="CUSTOM">%s</xliff:g> na address"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Makipag-chat gamit ang AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Makipag-chat gamit ang Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Makipag-chat gamit ang Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Makipag-chat gamit ang Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Makipag-chat gamit ang QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Makipag-chat gamit ang Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Makipag-chat gamit ang ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Makipag-chat gamit ang Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Makipag-chat"</string>
<string name="audio_chat" msgid="2535716629358298691">"Voice chat"</string>
<string name="video_chat" msgid="1872255818640336072">"Video chat"</string>
- <string name="postal_address" msgid="8765560217149624536">"Address"</string>
- <string name="postal_street" msgid="8133143961580058972">"Kalye"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"PO box"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Kapitbahayan"</string>
- <string name="postal_city" msgid="6597491300084895548">"Lungsod"</string>
- <string name="postal_region" msgid="6045263193478437672">"Katayuan"</string>
- <string name="postal_postcode" msgid="572136414136673751">"ZIP code"</string>
- <string name="postal_country" msgid="7638264508416368690">"Bansa"</string>
- <string name="full_name" msgid="6602579550613988977">"Pangalan"</string>
- <string name="name_given" msgid="1687286314106019813">"Pangalan"</string>
- <string name="name_family" msgid="3416695586119999058">"Apelyido"</string>
- <string name="name_prefix" msgid="59756378548779822">"Prefix ng pangalan"</string>
- <string name="name_middle" msgid="8467433655992690326">"Gitnang pangalan"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Suffix ng pangalan"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Phonetic na pangalan"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Phonetic na gitnang pangalan"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Phonetic na apelyido"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Phonetic na pangalan"</string>
<string name="connections" msgid="8098440723172028350">"Mga Koneksyon"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Magdagdag ng koneksyon"</string>
<string name="recent" msgid="2659189233141493004">"Kamakailan"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Pag-uri-uriin ang listahan ayon sa"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Pangalan"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Apelyido"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Tingnan ang mga pangalan ng contact bilang"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Tingnan ang mga pangalan ng contact"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Pangalan muna"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Apelyido muna"</string>
<string name="take_photo" msgid="7496128293167402354">"Kumuha ng larawan"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Ipakita lahat"</string>
<string name="menu_select_all" msgid="621719255150713545">"Piliin lahat"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Alisin sa pagkakapili ang lahat"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Walang napiling contact."</string>
<string name="add_field" msgid="2384260056674995230">"Magdagdag ng ibang field"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Magdagdag ng bago"</string>
<string name="add_organization" msgid="7311893231158291197">"Magdagdag ng samahan"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"hindi pinagsama"</item>
<item quantity="other" msgid="425683718017380845">"pinagsama mula sa <xliff:g id="COUNT">%0$d</xliff:g> (na) pinagmumulan"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Iba pa"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Isama ang kasalukuyang contact sa piniling contact?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Lumipat sa pag-edit ng napiling contact? Kokopyahin ang impormasyong ipinasok mo sa ngayon."</string>
<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="directory_search_label" msgid="1887759056597975053">"Direktoryo"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Lahat ng contact"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Lumilikha ng personal na kopya…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Lahat ng mga contact"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Naka-star"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Custom"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"I-customize"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Lahat ng contact na may mga numero ng telepono"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Contact"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Tukuyin ang custom na pagtingin"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Naglo-load…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Mga Setting"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Mga contact na ipapakita"</string>
<string name="menu_settings" msgid="377929915873428211">"Mga Setting"</string>
<string name="menu_help" msgid="5123887102216637725">"Tulong"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Mga pagpipilian sa pagpapakita"</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="hint_findContacts" msgid="1808681193458772072">"Mghanap ng contact"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Numero ng telepono"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Idagdag sa mga contact"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Idagdag sa contact"</string>
@@ -497,61 +215,7 @@
<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">"I-set up ang aking profile"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"I-type ang pangalan ng tao"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Tingnan ang mga update"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> (na) Voicemail"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"I-play"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Bagong voicemail mula kay <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Hindi ma-play ang voicemail."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Nagba-buffer…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Kinukuha ang voicemail…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Hindi makuha ang voicemail."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Bago"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Mas Luma"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Mga tawag lang na may voicemail"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Mga papasok na tawag lang"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Mga papalabas na tawag lang"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Mga hindi nasagot na tawag lang"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Hindi makakonekta sa server ng voicemail."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Hindi makakonekta sa server ng voicemail. Naghihintay ang mga bagong voicemail."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"I-set up ang iyong voicemail."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Hindi available ang audio."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"I-set up"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Tawagan ang voicemail"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Pinakamabagal na takbo"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Mabagal na takbo"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Karaniwang takbo"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Mabilis na takbo"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Pinakamabilis na takbo"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Pangalan ng pangkat"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Natanggap ang contact sa NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Ipakita lang ang papalabas"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Ipakita lang ang paparating"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Ipakita lang ang hindi nasagot"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ipakita lamang ang mga voicemail"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Ipakita ang lahat ng tawag"</string>
- <string name="status_available" msgid="5586870015822828392">"Available"</string>
- <string name="status_away" msgid="1838861100379804730">"Malayo"</string>
- <string name="status_busy" msgid="9147992455450257136">"Busy"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"I-play ang voicemail"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"May tumatawag"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Papalabas na tawag"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Hindi nasagot na tawag"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Voicemail"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Magdagdag ng contact"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Tingnan ang contact na si <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Tawagan si <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Ipadala ang text message kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Hindi pa naririnig na voicemail"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Magpadala ng mensahe kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"I-dial ang telepono ni <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Mabilisang contact para kay <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ako"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Panatilihing lokal"</string>
<string name="add_account" msgid="8201790677994503186">"Magdagdag ng account"</string>
<string name="add_new_account" msgid="5748627740680940264">"Magdagdag ng bagong account"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Hindi naipadala ang tawag"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Upang mag-set up ng voicemail, pumunta sa Menu > Mga Setting."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Upang tumawag sa voicemail, i-off muna ang Airplane mode."</string>
<string name="menu_export_database" msgid="2659719297530170820">"I-export ang mga file ng database"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Higit pang mga pagpipilian"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Palawakin o tiklupin ang mga field ng pangalan"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Larawan. Piliin upang palitan"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 00c1c6d..7580625 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
<string name="people" msgid="1048457247435785074">"Kişiler"</string>
<string name="contactsList" msgid="8661624236494819731">"Kişiler"</string>
<string name="shortcutContact" msgid="749243779392912958">"Kişi"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Hakkında"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Güncellemlr"</string>
<string name="searchHint" msgid="8482945356247760701">"Kişileri ara"</string>
- <string name="menu_search" msgid="9147752853603483719">"Ara"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Yeni kişi"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Kişiyi görüntüle"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Çağrı yap: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Sık kullanılanlara ekle"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Sık kullanılanlardan kaldır"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Düzenle"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Sil"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopyala"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Ana ekrana yerleştir"</string>
<string name="menu_call" msgid="3992595586042260618">"Çağrı yap"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Kısa mesaj gönder"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Bitti"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"İptal"</string>
<string name="menu_discard" msgid="6456087569315685632">"Sil"</string>
- <string name="label_notes" msgid="8337354953278341042">"Notlar"</string>
- <string name="label_sip_address" msgid="124073911714324974">"İnternet çağrısı"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Şirket"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Başlık"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Yeni kişi oluştur"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Telefon"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"E-posta"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Adres"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Kuruluş"</item>
<item msgid="7196592230748086755">"Not"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Hiçbir kişi yok."</string>
<string name="noGroups" msgid="8614664663561385253">"Grup yok."</string>
<string name="noAccounts" msgid="7768267764545265909">"Grup oluşturmanız için hesap gerekir."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Eşleşen kişi bulunamadı."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Telefon numarası olan hiçbir kişi yok."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Bu grupta hiç kimse yok."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Üye eklemek için grubu düzenleyin."</string>
<string name="savingContact" msgid="4075751076741924939">"Kişi kaydediliyor..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Görüntüleme seçenekleri kaydediliyor..."</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Kişi kaydedildi."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Kişi değişiklikleri kaydedilemedi."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Grup kaydedildi."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Kişi yok."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Görülebilir kişi yok"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Hiç favori yok"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"<xliff:g id="NAME">%s</xliff:g> içinde hiçbir kişi yok"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g> alan adındaki kişiler"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Tek kişi"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Özel görünümdeki kişiler"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"<xliff:g id="COUNT">%d</xliff:g> kişiden fazla bulundu."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Hiç kişi yok"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"1 kişi bulundu"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Tüm kişiler"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Gruplar"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Sık Kullanılanlar"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Favoriler ve tüm kişiler"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Çağrı kaydı"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Kısa mesaj gönder"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ara: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Önce numarayı düzenle"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Kişilere ekle"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Çağrı kaydından kaldır"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Çağrı kaydını temizle"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Sesli mesajı sil"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Sesli mesajı paylaş"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Çağrı kaydı boş."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Çağrı günlüğünü sil?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tüm çağrı kayıtlarınız silinecek."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Çağrı günlüğü temizleniyor..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Sık iletişim kurulanlar silinsin mi?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Kişiler ve Telefon uygulamalarındaki sık iletişim kurulanlar listesini temizleyecek ve e-posta uygulamalarını adres tercihlerinizi en baştan öğrenmeye zorlayacaksınız."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Sık iletişim kurulanlar siliniyor…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Sesli Mesaj"</string>
- <string name="unknown" msgid="740067747858270469">"Bilinmiyor"</string>
- <string name="private_num" msgid="6374339738119166953">"Özel numara"</string>
- <string name="payphone" msgid="4864313342828942922">"Ankesörlü telefon"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Çevirmek için klavyeyi kullan"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Arama eklemek için çevir"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM karttan yükleniyor..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM kart kişileri"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Görüntülenecek kişiniz yok. (Hesabı yeni eklediyseniz, kişilerin senkronize edilmesi birkaç dakika sürebilir.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Görüntülenecek kişiniz yok."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Görüntülenecek kişiniz yok."\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve ardından şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (tabletinizle senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" SIM veya SD kartınızdaki kişileri içe aktarmak için)"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Görüntülenecek kişiniz yok."\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve ardından şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (telefonunuzla senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" SIM veya SD kartınızdaki kişileri içe aktarmak için)"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Görüntülenecek kişiniz yok. (Kısa bir süre önce hesap eklediyseniz, kişileri senkronize etmek birkaç dakika sürebilir.)"\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (tabletle senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Görüntüleme seçenekleri"</b></font>" (hangi kişilerin görülebilir olacağını değiştirmek için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" (SIM veya SD kartınızdaki kişileri aktarmak için)"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Görüntülenecek kişiniz yok. (Kısa bir süre önce hesap eklediyseniz, kişileri senkronize etmek birkaç dakika sürebilir.)"\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (telefon ile senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Görüntüleme seçenekleri"</b></font>" (hangi kişilerin görülebilir olacağını değiştirmek için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" (SIM veya SD kartınızdaki kişileri aktarmak için)"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Görüntülenecek kişiniz yok."\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve ardından şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (telefonunuzla senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" SIM veya SD kartınızdaki kişileri içe aktarmak için)"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Görüntülenecek kişiniz yok."\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve ardından şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (telefonunuzla senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>" SIM veya SD kartınızdaki kişileri içe aktarmak için)"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Görüntülenecek kişiniz yok. (Kısa süre önce bir hesap eklediyseniz, kişileri senkronize etmek birkaç dakika sürebilir.)"\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye dokunun ve şunları seçin:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (tabletle senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Görüntüleme seçenekleri"</b></font>" (hangi kişilerin görülebilir olacağını değiştirmek için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>\n</li>"(SIM veya SD kartınızdaki kişileri içe aktarmak için)"</string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Görüntülenecek kişiniz yok. (Kısa süre önce bir hesap eklediyseniz kişileri senkronize etmek birkaç dakika sürebilir.)"\n\n"Kişi eklemek için, "<font fgcolor="#ffffffff"><b>"Menü"</b></font>"\'ye basın ve şunlara dokunun:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Hesaplar"</b></font>" (telefon ile senkronize edebileceğiniz kişiler içeren bir hesap eklemek veya yapılandırmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Görüntüleme seçenekleri"</b></font>" (hangi kişilerin görülebilir olacağını değiştirmek için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Yeni kişi"</b></font>" (en baştan yeni bir kişi oluşturmak için)"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"İçe/Dışa Aktar"</b></font>\n</li>"(SIM veya SD kartınızdaki kişileri içe aktarmak için)"</string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Favoriniz bulunmuyor."\n\n"Favoriler listenize kişi eklemek için:"\n\n" "<li><b>"Kişiler"</b>" sekmesine dokunun"\n</li>" "\n<li>"Favorilerinize eklemek istediğiniz kişiye dokunun"\n</li>" "\n<li>"Kişi adının yanındaki yıldız simgesine dokunun"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Telefon tuş takımını kullan"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Çağrıya dön"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Çağrı ekle"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Çağrı ayrıntıları"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"İstenen çağrı için ayrıntılar okunamadı."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Gelen çağrı"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Giden çağrı"</string>
- <string name="type_missed" msgid="2720502601640509542">"Cevapsız çağrı"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Sesli mesaj"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Gelen çağrılar"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> dak <xliff:g id="SECONDS">%s</xliff:g> sn"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Sık iletişim kurulanlar"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Sık arananlar"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"\"<xliff:g id="EMAIL">%s</xliff:g>\" adresi kişilere eklensin mi?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"bir"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"iki"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"üç"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"dört"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"beş"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"altı"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"yedi"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"sekiz"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"dokuz"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"yıldız"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"sıfır"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"pound"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Sesli mesaj"</string>
- <string name="description_search_button" msgid="3660807558587384889">"ara"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"çevir"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"geri tuşu"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"çevrilecek numara"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"kişi fotoğrafı"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"sil"</string>
<string name="description_plus_button" msgid="515164827856229880">"artı"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Kişiyi görüntüle"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Depolama birimi bulunamadı."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"SD kart bulunamadı."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"SIM karttan içe aktar"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Depl biriminden içe aktar"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Depolama birimine aktar"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Görülebilir kişileri paylaş"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Bir vCard dosyasını içe aktar"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Birden fazla vCard dosyasını içe aktar"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Tüm vCard dosyalarını içe aktar"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Depolama birimindeki vCard verileri aranıyor..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"SD kartta vCard verileri aranıyor..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Depolama biriminiz taranamadı. (Nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"SD kart taranamadı. (Nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"G/Ç Hatası"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Bellek yetersiz. Dosya çok büyük olabilir."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Beklenmeyen bir nedenden dolayı vCard ayrıştırılamadı."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Biçim desteklenmiyor."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"vCard içe aktarılamadı."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Depolama biriminde hiç vCard dosyası bulunamadı."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"SD kartta hiç vCard dosyası bulunamadı."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Belirtilen vCard dosyalarının meta bilgileri toplanamadı."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Bir veya daha fazla dosya içe aktarılamadı (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Bilinmeyen hata."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"vCard dosyası seçin"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Önbelleğe alınıyor"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"vCard\'lar geçici bir yerel depolama alanında önbelleğe alınıyor. Asıl içe aktarma işlemi kısa süre içinde başlayacak."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"İçe aktarılıyor <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"<xliff:g id="NAME">%s</xliff:g> içe aktarılıyor"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"vCard verileri okunamadı"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"vCard verilerini okuma işlemi iptal edildi"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"vCard <xliff:g id="FILENAME">%s</xliff:g> dosysn içe aktarma tamamlandı"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını içe aktarma iptal edildi"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> kısa bir süre içinde içe aktarılacak."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Dosya kısa bir süre sonra içe aktarılacaktır."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard\'ı içe aktarma isteği reddedildi. Daha sonra tekrar deneyin."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> kısa bir süre içinde dışa aktarılacak."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard\'ı dışa aktarma isteği reddedildi. Daha sonra tekrar deneyin."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"kişi"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTSIGN">%%</xliff:g><xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Kişileri dışa aktar?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Kişi listeniz şu dosyaya aktarılacak: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Dışa aktarılamadı"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Kişi verileri dışa aktarılamadı."\n"Nedeni: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Dışa verilebilecek kişi yok."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Depolama biriminde çok fazla vCard dosyası var."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD kartta çok fazla vCard dosyası var."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Gereken dosya adı çok uzun (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını dışa aktarma tamamlandı."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını dışa aktarma iptal edildi."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Kişi verileri dışa aktarılıyor"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Kişi verileriniz şu dosyaya aktarılıyor: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Dışa aktarıcı başlatılamadı: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Dışa aktarma sırasında bir hata oluştu: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Veritabanı bilgileri alınamadı."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Dışa aktarılabilecek kişi yok. Tabletinizde kişiler varsa, bazı veri sağlayıcıları kişilerin tabletten dışa aktarılmasına izin vermeyebilir."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Dışa aktarabilir kişi yok. Telefonunuzda kişileriniz varsa, bazı veri sağlayıcıları kişilerin telefondan dışa aktarılmasına izin vermeyebilir."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard oluşturucu düzgün başlamadı."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" açılamadı: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının içe aktarılması iptal edilsin mi?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"<xliff:g id="FILENAME">%s</xliff:g> dosyasının dışa aktarılması iptal edilsin mi?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"İçe/dışa aktrma işlmi iptl edilemedi"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Kişilerinizin adları"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyelik duraklama ekle"</string>
- <string name="add_wait" msgid="3360818652790319634">"Bekleme ekle"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Sayı seçin"</string>
- <string name="call_settings" msgid="7666474782093693667">"Ayarlar"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Sayı seçin"</string>
- <string name="make_primary" msgid="5829291915305113983">"Bu tercihi anımsa"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Bu işlemi gerçekleştirecek uygulama bulunamadı."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Adsız)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Hesaplar"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Sık iletişim kurulanları sil"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Görüntülenecek kişiler"</string>
- <string name="menu_import_export" msgid="26217871113229507">"İçe/Dışa Aktar"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Kişileri içe/dışa aktar"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Kişileri içe aktar"</string>
<string name="menu_share" msgid="943789700636542260">"Paylaş"</string>
<string name="share_via" msgid="563121028023030093">"Şunu kullanarak kişi paylaş:"</string>
- <string name="share_error" msgid="948429331673358107">"Bu kişi paylaşılamıyor."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Ad"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Takma ad"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Kuruluş"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Web sitesi"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Etkinlikler"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"İlişki"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Gruplar"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Hesap altında kişi oluştur"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Grubu şu hesabın altında oluştur:"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Senkronize grubu kaldır"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Senk. grup ekle"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Diğer gruplar..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Diğer tüm kişiler"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Tüm kişiler"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"\"<xliff:g id="GROUP">%s</xliff:g>\" adlı grubu senkronizasyondan kaldırmak, gruplanmamış tüm kişilerin de senkronizasyondan kaldırılmasına neden olur."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Yalnızca tablette, senkronize değil"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Yalnızca telefon, senkronize edilmemiş"</string>
- <string name="call_custom" msgid="7756571794763171802">"Ara (<xliff:g id="CUSTOM">%s</xliff:g>)"</string>
- <string name="call_home" msgid="1990519474420545392">"Çağrı yap (ev)"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Çağrı yap (mobil)"</string>
- <string name="call_work" msgid="5328785911463744028">"Çağrı yap (iş)"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Çağrı yap (iş faksı)"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Çağrı yap (ev faksı)"</string>
- <string name="call_pager" msgid="9003902812293983281">"Çağrı yap (çağrı cihazı)"</string>
- <string name="call_other" msgid="8563753966926932052">"Sesli arama yap"</string>
- <string name="call_callback" msgid="1910165691349426858">"Çağrı yap (geri arama)"</string>
- <string name="call_car" msgid="3280537320306436445">"Çağrı yap (araç)"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Çağrı yap (şirket ana hattı)"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Çağrı yap (ISDN)"</string>
- <string name="call_main" msgid="6082900571803441339">"Çağrı yap (ana hat)"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Faksı çağrı yap"</string>
- <string name="call_radio" msgid="8296755876398357063">"Çağrı yap (telsiz)"</string>
- <string name="call_telex" msgid="2223170774548648114">"Çağrı yap (teleks)"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Çağrı yap (TTY/TDD)"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Çağrı yap (iş cep telefonu)"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Çağrı yap (iş çağrı cihazı)"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Çağrı: <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Çağrı yap (MMS)"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Metin <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS gönder (ev)"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS gönder (mobil)"</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS gönder (iş)"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS gönder (iş faksı)"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS gönder (ev faksı)"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS gönder (çağrı cihazı)"</string>
- <string name="sms_other" msgid="806127844607642331">"SMS Gönder ()"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS Gönder (geri arama)"</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS gönder (araç)"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS gönder (şirket merkezi)"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS Gönder (ISDN)"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS Gönder (ana hat)"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Faksa SMS gönder"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS gönder (telsiz)"</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS Gönder (teleks)"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS Gönder (TTY/TDD)"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS Gönder (iş yeri cep telefonu)"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS Gönder (iş yeri çağrı cihazı)"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS Gönder (<xliff:g id="ASSISTANT">%s</xliff:g>)"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS gönder (MMS)"</string>
- <string name="sms" msgid="1756857139634224222">"Kısa mesaj"</string>
- <string name="email_home" msgid="8573740658148184279">"E-posta gönder (ev)"</string>
- <string name="email_mobile" msgid="2042889209787989814">"E-posta gönder (mobil)"</string>
- <string name="email_work" msgid="2807430017302722689">"E-posta gönder (iş)"</string>
- <string name="email_other" msgid="3454004077967657109">"E-posta"</string>
- <string name="email_custom" msgid="7548003991586214105">"E-posta <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"E-posta"</string>
- <string name="map_home" msgid="1243547733423343982">"Ev adresini görüntüle"</string>
- <string name="map_work" msgid="1360474076921878088">"İş adresini görüntüle"</string>
- <string name="map_other" msgid="3817820803587012641">"Adresi görüntüle"</string>
- <string name="map_custom" msgid="6184363799976265281">"<xliff:g id="CUSTOM">%s</xliff:g> adresini görüntüle"</string>
- <string name="chat_aim" msgid="2588492205291249142">"AIM kullanarak sohbet et"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Windows Live kullanarak sohbet et"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Yahoo kullanarak sohbet et"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Skype kullanarak sohbet et"</string>
- <string name="chat_qq" msgid="4294637812847719693">"QQ kullanarak sohbet et"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Google Talk kullanarak sohbet et"</string>
- <string name="chat_icq" msgid="8438405386153745775">"ICQ kullanarak sohbet et"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Jabber kullanarak sohbet et"</string>
- <string name="chat" msgid="9025361898797412245">"Sohbet"</string>
<string name="audio_chat" msgid="2535716629358298691">"Sesli sohbet"</string>
<string name="video_chat" msgid="1872255818640336072">"Görüntülü sohbet"</string>
- <string name="postal_address" msgid="8765560217149624536">"Adres"</string>
- <string name="postal_street" msgid="8133143961580058972">"Cadde"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Posta kutusu"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Mahalle"</string>
- <string name="postal_city" msgid="6597491300084895548">"Şehir"</string>
- <string name="postal_region" msgid="6045263193478437672">"Eyalet"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Alan kodu"</string>
- <string name="postal_country" msgid="7638264508416368690">"Ülke"</string>
- <string name="full_name" msgid="6602579550613988977">"Ad"</string>
- <string name="name_given" msgid="1687286314106019813">"Adı"</string>
- <string name="name_family" msgid="3416695586119999058">"Soyadı"</string>
- <string name="name_prefix" msgid="59756378548779822">"Ad öneki"</string>
- <string name="name_middle" msgid="8467433655992690326">"İkinci ad"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Ad soneki"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Fonetik adı"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Fonetik ikinci ad"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Fonetik soyadı"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Fonetik ad"</string>
<string name="connections" msgid="8098440723172028350">"Bağlantılar"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Bağlantı ekle"</string>
<string name="recent" msgid="2659189233141493004">"Son"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Listeyi şu ölçüte göre sırala:"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Adı"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Soyadı"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Kişi adlarını görüntüleme şekli:"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Kişi adlarını görüntüle"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Önce adı"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Önce soyadı"</string>
<string name="take_photo" msgid="7496128293167402354">"Fotoğraf çek"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Tümünü göster"</string>
<string name="menu_select_all" msgid="621719255150713545">"Tümünü seç"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Tümünün seçimini kaldır"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Seçili kişi yok."</string>
<string name="add_field" msgid="2384260056674995230">"Başka alan ekle"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Yeni ekle"</string>
<string name="add_organization" msgid="7311893231158291197">"Kuruluş ekle"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"birleştirilmemiş"</item>
<item quantity="other" msgid="425683718017380845">"<xliff:g id="COUNT">%0$d</xliff:g> kaynaktan birleştirildi"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Diğer"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Mevcut kişi, seçili kişiyle birleştirilsin mi?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Seçili kişiyi düzenlemeye geçilsin mi? Şimdiye kadar girdiğiniz bilgiler kopyalanacak."</string>
<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="directory_search_label" msgid="1887759056597975053">"Dizin"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Tüm kişiler"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Kişisel kopya oluşturuluyor..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Tüm kişiler"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Yıldızlı"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Özel"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Özelleştir"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Telefon numarası olan tüm kişiler"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Kişi"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Özel görünüm tanımla"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Yükleniyor..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Ayarlar"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Görüntülenecek kişiler"</string>
<string name="menu_settings" msgid="377929915873428211">"Ayarlar"</string>
<string name="menu_help" msgid="5123887102216637725">"Yardım"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Görüntüleme seçenekleri"</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="hint_findContacts" msgid="1808681193458772072">"Kişileri bul"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Telefon numarası"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Kişilere ekle"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Kişiye ekle"</string>
@@ -497,61 +215,7 @@
<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 ayarla"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Kişinin adını yazın"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Gncellmlri görüntüle"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Sesli mesaj"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Sesli mesaj"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Oynat"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Yeni sesli mesj gönderen: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Sesli mesaj yürütülemedi."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Arabelleğe alınıyor..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Sesli mesaj getiriliyor..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Sesli mesaj getirilemedi."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Yeni"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Daha eski"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Yalnızca sesli mesaj içeren çağrılar"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Yalnızca gelen çağrılar"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Yalnızca giden çağrılar"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Yalnızca cevapsız çağrılar"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Sesli mesaj sunucusuna bağlanılamıyor."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Sesli msj suncsuna bağlanılamıyor. Yeni sesli mesajlar bekliyor."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Sesli mesajınızı yapılandırın."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Ses kullanılamıyor."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Yapılandır"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Sesli mesaj ara"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"En yavaş hız"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Düşük hız"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal hız"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Yüksek hız"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"En yüksek hız"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Grubun adı"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Kişi NFC ile alındı"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Yalnızca gidenleri göster"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Yalnızca gelenleri göster"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Yalnızca cevapsızları göster"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Yalnızca sesli msajları göster"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Tüm çağrıları göster"</string>
- <string name="status_available" msgid="5586870015822828392">"Uygun"</string>
- <string name="status_away" msgid="1838861100379804730">"Dışarıda"</string>
- <string name="status_busy" msgid="9147992455450257136">"Meşgul"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Sesli mesajı oynat"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Gelen çağrı"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Giden çağrı"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Cevapsız çağrı"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Sesli mesaj"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Kişi ekle"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Kişiyi görüntüle: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Sesli arama yap: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Şu kişiye kısa mesaj gönder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Dinlenilmemiş sesli mesaj"</string>
- <string name="description_send_message" msgid="6046623392322890962">"<xliff:g id="NAME">%1$s</xliff:g> adlı kişiye mesaj gönder"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"<xliff:g id="NAME">%1$s</xliff:g> için çevrilecek telefon numarası"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g> için hızlı kişi"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Ben"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Yerel olarak sakla"</string>
<string name="add_account" msgid="8201790677994503186">"Hesap ekle"</string>
<string name="add_new_account" msgid="5748627740680940264">"Yeni hesap ekle"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Çağrı yapılamadı"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Sesli mesajı yapılandırmak için Menü > Ayarlar\'a gidin."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Sesli mesaja çağrı yapmak için öncelikle Uçak modunu kapatın."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Veritabanı dosyalarını dışarı aktar"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Diğer seçenekler"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Ad alanlarını genişlet veya daralt"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Resim. Değiştirmek için seçin"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index f688cd4..da7daf4 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Телеф."</string>
<string name="people" msgid="1048457247435785074">"Люди"</string>
<string name="contactsList" msgid="8661624236494819731">"Контакти"</string>
<string name="shortcutContact" msgid="749243779392912958">"Контакт"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Про контакт"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Оновлення"</string>
<string name="searchHint" msgid="8482945356247760701">"Пошук контактів"</string>
- <string name="menu_search" msgid="9147752853603483719">"Пошук"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Новий контакт"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Див. контакт"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Телефонувати <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"Копіювати"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Місце на головному екрані"</string>
<string name="menu_call" msgid="3992595586042260618">"Набрати конт."</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Повід. контакт"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"Цей контакт містить інфор-цію з декількох обл. записів. Інф-цію із записів лише для читання буде сховано у ваших списках контактів, а не видалено."</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Якщо видал. цей контакт, буде видалено інф-ю з декількох обл. записів."</string>
<string name="deleteConfirmation" msgid="811706994761610640">"Цей контакт буде видалено."</string>
- <string name="menu_done" msgid="796017761764190697">"Готово"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Скасувати"</string>
<string name="menu_discard" msgid="6456087569315685632">"Відхилити"</string>
- <string name="label_notes" msgid="8337354953278341042">"Примітки"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Інтернет-дзвінок"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Компанія"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Назва"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"Телеф."</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Ел.адр."</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"Чат"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Адреса"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Організація"</item>
<item msgid="7196592230748086755">"Прим."</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Немає контакт."</string>
<string name="noGroups" msgid="8614664663561385253">"Немає груп."</string>
<string name="noAccounts" msgid="7768267764545265909">"Для створення груп потрібен обліковий запис."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Не знайдено відпов. контактів."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Немає контактів з номерами тел."</string>
<string name="emptyGroup" msgid="7502116218697177370">"У цій групі немає людей."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Щоб додати когось, відредагуйте групу."</string>
<string name="savingContact" msgid="4075751076741924939">"Збереж-ня контакту…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Зберіг-ня парам. відображ…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Контакт збережено"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Не вдалося зберегти зміни в контакті."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Групу збережено."</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 контакт"</item>
<item quantity="other" msgid="3578469907265375314">"Контактів: <xliff:g id="COUNT">%d</xliff:g>"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Контактів немає."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Немає видимих контактів"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Вибраного немає."</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Немає контактів у <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Контакти в обліковому записі <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Один контакт"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Контакти в спеціальному перегляді"</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="foundTooManyContacts" msgid="5163335650920020220">"Знайдено понад <xliff:g id="COUNT">%d</xliff:g>."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Контактів немає"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Знайдено 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Усі контакти"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Групи"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Вибране"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Вибране та всі контакти"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Тел."</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Журн. викл."</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Надісл. текст. повід."</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Набрати <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Редаг. номер перед викл."</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Дод. до контактів"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Видал. з журн. викликів"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Очист. журнал викл."</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Видалити голосову пошту"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Надіслати голос. повідомлення"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Журн. викл. порожній."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Очистити журнал викликів?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Усі записи викликів буде видалено."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Очищення журналу викликів..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Очистити список частих контактів?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Ви очистите список користувачів, з якими часто спілкувалися, у програмах \"Телефон\" і \"Люди\" та примусите програми електронної пошти заново запам’ятовувати нові адреси."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Очищення списку частих контактів…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Голос. пошта"</string>
- <string name="unknown" msgid="740067747858270469">"Невідомий"</string>
- <string name="private_num" msgid="6374339738119166953">"Приватний номер"</string>
- <string name="payphone" msgid="4864313342828942922">"Таксофон"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Викор. клав. для набору"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Дзвон., щоб дод. виклик"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Завантаж. із SIM-карти…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Контакти SIM-карти"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Немає контактів для показу. (Якщо ви щойно додали облік. запис, синхронізація контактів може зайняти кілька хвилин)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"У вас немає контактів для показу."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Немає контактів для відображення."\n\n"Щоб додати контакти, торкніться "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім: "\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з планшетним ПК"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SIM або SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Немає контактів для відображення."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім: "\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з телефоном"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SIM або SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Немає контактів для відображення. (Якщо ви щойно додали обліковий запис, синхронізація контактів триватиме кілька хвилин)."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім:"\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з планшетним ПК"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Параметри відображення"</b></font>", щоб змінити параметри видимості контактів"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SIM або SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Немає контактів для відображення. (Якщо ви щойно додали обліковий запис, синхронізація контактів триватиме кілька хвилин)."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім:"\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з телефоном"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Параметри відображення"</b></font>", щоб змінити параметри видимості контактів"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SIM або SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Немає контактів для відображення."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім: "\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з планшетним ПК"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Немає контактів для відображення."\n\n"Щоб додати контакти, торкніться опції"<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім: "\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з телефоном"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Немає контактів для відображення. (Якщо ви щойно додали обліковий запис, синхронізація контактів триватиме кілька хвилин)."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім:"\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з планшетним ПК"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Параметри відображення"</b></font>", щоб змінити параметри видимості контактів"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SD"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Немає контактів для відображення. (Якщо ви щойно додали обліковий запис, синхронізація контактів триватиме кілька хвилин)."\n\n"Щоб додати контакти, торкніться опції "<font fgcolor="#ffffffff"><b>"Меню"</b></font>", а потім:"\n\n<li><font fgcolor="#ffffffff"><b>"Облікові записи"</b></font>", щоб додати чи налаштувати обліковий запис із контактами, які можна синхронізувати з телефоном"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Параметри відображення"</b></font>", щоб змінити параметри видимості контактів"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Новий контакт"</b></font>", щоб створити зовсім новий контакт"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Імпорт/експорт"</b></font>", щоб імпортувати контакти з карти SD"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"У вас немає вибраного."\n\n"Щоб додати контакт до списку вибраних:"\n\n" "<li>"Торкніться вкладки "<b>"Контакти"</b>\n</li>" "\n<li>"Торкніться контакту, який хочете додати до вибраного"\n</li>" "\n<li>"Торкніться зірочки поруч з іменем контакту"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Викор. кнопкову клавіат."</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Поверн. до поточн. виклику"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Дод. виклик"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Деталі виклику"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Неможл. прочитати деталі потрібного виклику."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Вхідний виклик"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Вихідний виклик"</string>
- <string name="type_missed" msgid="2720502601640509542">"Пропущ. виклик"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Голосова пошта"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Вхідні виклики"</string>
<string name="callBack" msgid="5498224409038809224">"Передзвонити"</string>
<string name="callAgain" msgid="3197312117049874778">"Набрати знову"</string>
<string name="returnCall" msgid="8171961914203617813">"Зворот. виклик"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> хв. <xliff:g id="SECONDS">%s</xliff:g> сек."</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Часті контакти"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Часті виклики"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Дод.\" <xliff:g id="EMAIL">%s</xliff:g>\" до контактів?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"один"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"два"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"три"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"чотири"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"п\'ять"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"шість"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"сім"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"вісім"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"дев\'ять"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"зірочка"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"нуль"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"решітка"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"голос. пошта"</string>
- <string name="description_search_button" msgid="3660807558587384889">"пошук"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"дзвон."</string>
- <string name="description_delete_button" msgid="6263102114033407382">"видалити"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"номер для набору"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"фото контакту"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"видалити"</string>
<string name="description_plus_button" msgid="515164827856229880">"плюс"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Переглянути контакт"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Пам’ять не знайдено."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Карту SD не знайдено."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Імпорт із SIM-карти"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Імпорт із зовн. пристрою"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Експорт на зовн. пристрій"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Передати видимі контакти"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Імпортув. 1 файл vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Імпортув. кілька файлів vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Імпортув. всі файли vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Пошук даних vCard у пам’яті..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Пошук даних vCard на карті SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Не вдалося сканувати пам’ять. (Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Не вдалося сканувати карту SD. (Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Помилка вводу/виводу"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Недостатньо пам’яті. Можливо, файл завеликий."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Не вдалося проаналізувати vCard через неочікувану причину."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Формат не підтримується."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Не вдалось імпортувати файл vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"У пам’яті не знайдено жодного файлу vCard."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"На карті SD не знайдено жодного файлу vCard"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Не вдалося зібрати мета-інформацію файлів цієї vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Не вдалося імпортувати один або кілька файлів (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Невідома помилка."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Вибрати файл vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Кешування"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Кешування файлів vCard у локальну тимчасову пам’ять. Імпорт почнеться незабаром."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Імпорт <xliff:g id="CURRENT_NUMBER">%s</xliff:g> з <xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Імпорт <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Не вдалося прочитати дані vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Читання даних vCard скасовано"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Імпорт файлу <xliff:g id="FILENAME">%s</xliff:g> vCard завершено"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Імпорт файлу <xliff:g id="FILENAME">%s</xliff:g> скасовано"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"Файл <xliff:g id="FILENAME">%s</xliff:g> незабаром буде імпортовано."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Незабаром файл буде імпортовано."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Запит на імпорт файлу vCard відхилено. Повторіть спробу пізніше."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"Файл <xliff:g id="FILENAME">%s</xliff:g> незабаром буде експортовано."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Запит на експорт файлу vCard відхилено. Повторіть спробу пізніше."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"контакт"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Експортув. контакти?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Ваш список контактів буде експортовано у файл: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Помилка експорту"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Контактні дані не експортовано."\n"Причина: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Немає контакту, який можна експортувати."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Забагато файлів vCard у пам’яті."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"На карті SD забагато файлів vCard."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Потрібна назва файлу задовга (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Експорт файлу <xliff:g id="FILENAME">%s</xliff:g> завершено."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Експорт файлу <xliff:g id="FILENAME">%s</xliff:g> скасовано."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Експорт. контактні дані"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Ваші контактні дані експортуються у файл: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Не вдалося запустити експортер: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Під час експорту сталася помилка: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Не вдалось отримати інформацію бази даних."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Немає контактів, які можна експортувати. Якщо у вашому планшетному ПК є контакти, можливо, якийсь постачальник даних заборонив експорт контактів із планшетного ПК."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Немає контактів, які можна експортувати. Якщо у вашому телефоні є контакти, можливо, якийсь постачальник даних заборонив експорт контактів із телефону."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Майстер vCard не запущено належним чином."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Не вдалося відкрити файл \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Скасувати імпорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Скасувати експорт файлу <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Не вдалося скасув. імпорт/експорт vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Імена ваших контактів"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Дод. 2-сек. паузу"</string>
- <string name="add_wait" msgid="3360818652790319634">"Дод. очікув."</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Вибрати номер"</string>
- <string name="call_settings" msgid="7666474782093693667">"Налаштування"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Вибрати номер"</string>
- <string name="make_primary" msgid="5829291915305113983">"Пам\'ятати цей вибір"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Не знайдено програму для обробки цієї дії."</string>
- <string name="missing_name" msgid="8745511583852904385">"(Без імені)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Обл. записи"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Очистити часті контакти"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Контакти для показу"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Імпорт або експорт"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Імпорт/експорт контактів"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Імпорт контактів"</string>
<string name="menu_share" msgid="943789700636542260">"Надісл."</string>
<string name="share_via" msgid="563121028023030093">"Надісл. контакт через"</string>
- <string name="share_error" msgid="948429331673358107">"Цей контакт неможливо надіслати."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Ім\'я"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Псевдонім"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Організація"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Веб-сайт"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Події"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Стосунки"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Групи"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Створ. контакт в обл. записі"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Створити групу в обліковому записі"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Видал. синхр. групу"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Дод. синхр. групу"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Інші групи…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Усі інші контакти"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Усі контакти"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Видалення групи \"<xliff:g id="GROUP">%s</xliff:g>\" із синхронізації призведе до припинення синхронізації незгрупованих контактів."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Лише в пристр., несинхр."</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Лише в тел., несинхр."</string>
- <string name="call_custom" msgid="7756571794763171802">"Набрати <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Набрати дом. ном."</string>
- <string name="call_mobile" msgid="7502236805487609178">"Набрати моб."</string>
- <string name="call_work" msgid="5328785911463744028">"Набрати роб."</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Набрати роб. факс"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Набрати дом. факс"</string>
- <string name="call_pager" msgid="9003902812293983281">"Набрати пейдж."</string>
- <string name="call_other" msgid="8563753966926932052">"Набрати"</string>
- <string name="call_callback" msgid="1910165691349426858">"Набрати зворот. виклик"</string>
- <string name="call_car" msgid="3280537320306436445">"Набрати ном. в авто"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Набрати осн. роб. тел."</string>
- <string name="call_isdn" msgid="1541590690193403411">"Набрати ном. ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Набрати осн. тел."</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Набрати факс"</string>
- <string name="call_radio" msgid="8296755876398357063">"Набрати радіотел."</string>
- <string name="call_telex" msgid="2223170774548648114">"Набрати телекс"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Набрати ном. TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Набрати роб. моб."</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Двон. на роб. пейдж."</string>
- <string name="call_assistant" msgid="2141641383068514308">"Набрати <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Набрати ном. MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"SMS на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"SMS на дом. тел."</string>
- <string name="sms_mobile" msgid="5200107250451030769">"SMS на моб."</string>
- <string name="sms_work" msgid="2269624156655267740">"SMS на роб. ном."</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"SMS на роб. факс"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"SMS на дом. факс"</string>
- <string name="sms_pager" msgid="7730404569637015192">"SMS на пейдж."</string>
- <string name="sms_other" msgid="806127844607642331">"SMS"</string>
- <string name="sms_callback" msgid="5004824430094288752">"SMS на зворот. викл."</string>
- <string name="sms_car" msgid="7444227058437359641">"SMS на ном. в авто"</string>
- <string name="sms_company_main" msgid="118970873419678087">"SMS на осн. роб. тел."</string>
- <string name="sms_isdn" msgid="8153785037515047845">"SMS на ном. ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"SMS на осн. ном."</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"SMS на факс"</string>
- <string name="sms_radio" msgid="3329166673433967820">"SMS на радіотел."</string>
- <string name="sms_telex" msgid="9034802430065267848">"SMS на телекс"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"SMS на TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"SMS на роб. моб."</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"SMS на роб. пейдж."</string>
- <string name="sms_assistant" msgid="2773424339923116234">"SMS на <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"SMS на ном. MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Текстове повідомлення"</string>
- <string name="email_home" msgid="8573740658148184279">"Написати на дом. адр."</string>
- <string name="email_mobile" msgid="2042889209787989814">"Напис. на моб."</string>
- <string name="email_work" msgid="2807430017302722689">"Напис. на роб. адр."</string>
- <string name="email_other" msgid="3454004077967657109">"Надісл. ел.лист"</string>
- <string name="email_custom" msgid="7548003991586214105">"Написати на <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Відправ."</string>
- <string name="map_home" msgid="1243547733423343982">"Див. дом. адресу"</string>
- <string name="map_work" msgid="1360474076921878088">"Див. роб. адресу"</string>
- <string name="map_other" msgid="3817820803587012641">"Див. адресу"</string>
- <string name="map_custom" msgid="6184363799976265281">"Див. <xliff:g id="CUSTOM">%s</xliff:g> адресу"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Чат через AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Чат через Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Чат через Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Чат через Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Чат через QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Чат через Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Чат через ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Чат через Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Чат"</string>
<string name="audio_chat" msgid="2535716629358298691">"Голосовий чат"</string>
<string name="video_chat" msgid="1872255818640336072">"Відеочат"</string>
- <string name="postal_address" msgid="8765560217149624536">"Адреса"</string>
- <string name="postal_street" msgid="8133143961580058972">"Вулиця"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Пошт. скр."</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"У районі"</string>
- <string name="postal_city" msgid="6597491300084895548">"Місто"</string>
- <string name="postal_region" msgid="6045263193478437672">"Область"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Пошт. код"</string>
- <string name="postal_country" msgid="7638264508416368690">"Країна"</string>
- <string name="full_name" msgid="6602579550613988977">"Ім\'я"</string>
- <string name="name_given" msgid="1687286314106019813">"Ім\'я"</string>
- <string name="name_family" msgid="3416695586119999058">"Прізвище"</string>
- <string name="name_prefix" msgid="59756378548779822">"Префікс імені"</string>
- <string name="name_middle" msgid="8467433655992690326">"По-батькові"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Суфікс імені"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Вимова імені"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Вимова по-батькові"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Вимова прізвища"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Вимова імені"</string>
<string name="connections" msgid="8098440723172028350">"Зв’язки"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Додати зв’язок"</string>
<string name="recent" msgid="2659189233141493004">"Останні"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"Див. імена контактів як"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"Контакти не вибрано."</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"не об\'єднано"</item>
<item quantity="other" msgid="425683718017380845">"об\'єднано з джерел: <xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Інші"</string>
<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="directory_search_label" msgid="1887759056597975053">"Каталог"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Усі контакти"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Створення особистої копії..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Усі контакти"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Із зірочкою"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Спеціальні"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Налаштувати"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Усі контакти з номерами телефону"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Контакт"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Налаштувати параметри перегляду"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Завантаження..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Налаштування"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Контакти для показу"</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="hint_findContacts" msgid="1808681193458772072">"Пошук контактів"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"Переглян. оновлення"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Голосова пошта"</item>
- <item quantity="other" msgid="5513481419205061254">"Повідомлень голос. пошти: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Відтворити"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова голосова пошта від <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Не вдалося відтворити голосову пошту."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Буферизація..."</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Отримання голосової пошти..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Не вдалось отримати голосову пошту."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Нові"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Старіші"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Лише виклики з голосовою поштою"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Лише вхідні виклики"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Лише вихідні виклики"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Лише пропущені виклики"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Неможливо під’єднатися до сервера голосової пошти."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Помилка з’єднання із сервером голосової пошти. Є нова пошта."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Налаштуйте свою голосову пошту."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Аудіо недоступне."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Налаштувати"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Дзвон.на голос.пошту"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Найнижча швидкість"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Низька швидкість"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Звичайна швидкість"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Висока швидкість"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Найвища швидкість"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Назва групи"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Конт., отрим.через NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Показувати лише вихідні"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Показувати лише вхідні"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Показувати лише пропущені"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показувати лише голосову пошту"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Показувати всі виклики"</string>
- <string name="status_available" msgid="5586870015822828392">"Доступний"</string>
- <string name="status_away" msgid="1838861100379804730">"Не на місці"</string>
- <string name="status_busy" msgid="9147992455450257136">"Зайнятий"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Відтворити голосову пошту"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Вхідний дзвінок"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Вихідний дзвінок"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Пропущений виклик"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Голосова пошта"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Додати контакт"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Переглянути контакт <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Дзвонити: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Надіслати текстове повідомлення: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Непрослухана голосова пошта"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Надіслати повідомлення контакту <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Набрати номер: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Швидкий контакт із: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"–"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Я"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Зберегти локально"</string>
<string name="add_account" msgid="8201790677994503186">"Додати обліковий запис"</string>
<string name="add_new_account" msgid="5748627740680940264">"Додати новий обліковий запис"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Виклик не здійснено"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Щоб налаштувати голосову пошту, перейдіть у Меню > Налаштування."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Щоб перевірити голосову пошту, спочатку вимкніть режим польоту."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Експортувати файли бази даних"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Інші варіанти"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Розгорнути або згорнути поля імен"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Зображення. Виберіть, щоб змінити"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 5461118..ec6160b 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Điện thoại"</string>
<string name="people" msgid="1048457247435785074">"Danh bạ"</string>
<string name="contactsList" msgid="8661624236494819731">"Danh bạ"</string>
<string name="shortcutContact" msgid="749243779392912958">"Liên hệ"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Giới thiệu"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Cập nhật"</string>
<string name="searchHint" msgid="8482945356247760701">"Tìm kiếm trong danh bạ"</string>
- <string name="menu_search" msgid="9147752853603483719">"Tìm kiếm"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Liên hệ mới"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Xem liên hệ"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Thêm vào mục ưa thích"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Xóa khỏi mục ưa thích"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Chỉnh sửa"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Xóa"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Sao chép"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Đặt trên màn hình chính"</string>
<string name="menu_call" msgid="3992595586042260618">"Gọi liên hệ"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Nhắn tin tới liên hệ"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Xong"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Hủy"</string>
<string name="menu_discard" msgid="6456087569315685632">"Hủy bỏ"</string>
- <string name="label_notes" msgid="8337354953278341042">"Ghi chú"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Cuộc gọi qua internet"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Công ty"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Tiêu đề"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Tạo địa chỉ liên hệ mới"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Điện thoại"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"Email"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Địa chỉ"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Tổ chức"</item>
<item msgid="7196592230748086755">"Ghi chú"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Không có liên hệ nào."</string>
<string name="noGroups" msgid="8614664663561385253">"Không có nhóm nào."</string>
<string name="noAccounts" msgid="7768267764545265909">"Để tạo nhóm, bạn cần có tài khoản."</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Không tìm thấy liên hệ nào phù hợp."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Không có liên hệ nào có số điện thoại"</string>
<string name="emptyGroup" msgid="7502116218697177370">"Không có người nào trong nhóm này."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Để thêm thành viên, chỉnh sửa nhóm."</string>
<string name="savingContact" msgid="4075751076741924939">"Đang lưu liên hệ…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Đang lưu tùy chọn hiển thị…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Đã lưu liên hệ."</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Không thể lưu thay đổi của địa chỉ liên hệ."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Đã lưu nhóm."</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Không có địa chỉ liên hệ nào."</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Không có địa chỉ liên hệ nào hiển thị."</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Không có địa chỉ liên hệ ưa thích nào"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Không có liên hệ nào trong <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Danh bạ trong <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Một liên hệ"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Danh bạ ở chế độ xem tùy chỉnh"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"Đã tìm thấy hơn <xliff:g id="COUNT">%d</xliff:g> địa chỉ liên hệ."</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Không có địa chỉ liên hệ nào"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"Đã tìm thấy 1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Tất cả liên hệ"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Nhóm"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Mục ưa thích"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Các mục yêu thích và tất cả các liên hệ"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Điện thoại"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Nhật ký cuộc gọi"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Gửi tin nhắn văn bản"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Gọi <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Chỉnh sửa số trước khi gọi"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Thêm vào danh bạ"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Xóa khỏi nhật ký cuộc gọi"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Xóa nhật ký cuộc gọi"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Xóa thư thoại"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Hiển thị thư thoại"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Nhật ký cuộc gọi trống."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Xóa nhật ký c.gọi?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Tất cả bản ghi cuộc gọi của bạn sẽ bị xóa."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Đang xóa nhật ký cuộc gọi…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Xóa danh sách liên hệ thường xuyên?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Bạn sẽ xóa danh sách liên hệ thường xuyên trong ứng dụng Liên hệ và điện thoại cũng như buộc các ứng dụng email phải tìm hiểu các tùy chọn gửi của bạn lại từ đầu."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Đang xóa DS liên hệ thường xuyên…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Thư thoại"</string>
- <string name="unknown" msgid="740067747858270469">"Không xác định"</string>
- <string name="private_num" msgid="6374339738119166953">"Số cá nhân"</string>
- <string name="payphone" msgid="4864313342828942922">"Điện thoại tự động"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Sử dụng bàn phím để quay số"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Quay số để thêm cuộc gọi"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Đang tải từ thẻ SIM…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"Danh bạ trên thẻ SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Bạn không có liên hệ nào để hiển thị. (Nếu bạn vừa thêm tài khoản, bạn có thể mất vài phút để đồng bộ hóa danh bạ)."</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Bạn không có liên hệ nào để hiển thị."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị."\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với máy tính bảng"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SIM hoặc thẻ SD của bạn"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị."\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với điện thoại"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SIM hoặc thẻ SD của bạn"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị. (Nếu bạn vừa thêm tài khoản, quá trình đồng bộ hóa danh bạ có thể mất vài phút.)"\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với máy tính bảng"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tùy chọn hiển thị"</b></font>" để thay đổi địa chỉ liên hệ nào hiển thị"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SIM hoặc thẻ SD của bạn"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị. (Nếu bạn vừa thêm tài khoản, quá trình đồng bộ hóa danh bạ có thể mất vài phút.)"\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với điện thoại"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tùy chọn hiển thị"</b></font>" để thay đổi địa chỉ liên hệ nào hiển thị"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SIM hoặc thẻ SD của bạn"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị."\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với máy tính bảng"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SD của bạn"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị."\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với điện thoại"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SD của bạn"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị. (Nếu bạn vừa thêm tài khoản, quá trình đồng bộ hóa danh bạ có thể mất vài phút.)"\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản với các địa chỉ liên hệ bạn có thể đồng bộ hóa với máy tính bảng"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tùy chọn hiển thị"</b></font>" để thay đổi địa chỉ liên hệ nào hiển thị"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SD của bạn"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Bạn không có bất kỳ địa chỉ liên hệ nào để hiển thị. (Nếu bạn vừa thêm tài khoản, quá trình đồng bộ hóa địa chỉ liên hệ có thể mất vài phút.)"\n\n"Để thêm địa chỉ liên hệ, chạm vào "<font fgcolor="#ffffffff"><b>"Trình đơn"</b></font>", sau đó chạm vào:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Tài khoản"</b></font>" để thêm hoặc thiết lập tài khoản có địa chỉ liên hệ mà bạn có thể đồng bộ hóa với điện thoại"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Tùy chọn hiển thị"</b></font>" để thay đổi địa chỉ liên hệ nào hiển thị"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Địa chỉ liên hệ mới"</b></font>" để tạo địa chỉ liên hệ mới từ đầu"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nhập/Xuất"</b></font>" để nhập địa chỉ liên hệ từ thẻ SD của bạn"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Bạn không có mục ưa thích nào."\n\n"Để thêm liên hệ vào danh sách mục ưa thích của bạn:"\n\n" "<li>"Chạm vào tab "<b>"Danh bạ"</b>\n</li>" "\n<li>"Chạm vào liên hệ bạn muốn thêm vào mục ưa thích của mình"\n</li>" "\n<li>"Chạm vào dấu sao bên cạnh tên của liên hệ"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Sử dụng bộ tạo xung từ bàn phím"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Quay lại cuộc gọi đang thực hiện"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Thêm cuộc gọi"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Chi tiết cuộc gọi"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Không thể đọc chi tiết về cuộc gọi yêu cầu."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Cuộc gọi đến"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Cuộc gọi đi"</string>
- <string name="type_missed" msgid="2720502601640509542">"Cuộc gọi nhỡ"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Thư thoại"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Cuộc gọi đến"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> phút <xliff:g id="SECONDS">%s</xliff:g> giây"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Thường xuyên được liên hệ"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Thường xuyên được gọi"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Thêm \"<xliff:g id="EMAIL">%s</xliff:g>\" vào danh bạ?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"một"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"hai"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"ba"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"bốn"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"năm"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"sáu"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"bảy"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"tám"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"chín"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"sao"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"không"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"dấu thăng"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"thư thoại"</string>
- <string name="description_search_button" msgid="3660807558587384889">"tìm kiếm"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"quay số"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"số để quay"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"ảnh của liên hệ"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"xóa"</string>
<string name="description_plus_button" msgid="515164827856229880">"cộng"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Xem địa chỉ liên hệ"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Không tìm thấy bộ nhớ nào."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Không tìm thấy thẻ SD nào."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Nhập từ thẻ SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Nhập từ bộ nhớ"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Xuất sang bộ nhớ"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Chia sẻ liên hệ hiển thị"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Nhập một tệp vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Nhập nhiều tệp vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Nhập tất cả tệp vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Đang tìm kiếm dữ liệu vCard trong bộ nhớ..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Đang tìm dữ liệu vCard trên thẻ SD..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Không thể quét bộ nhớ. (Lý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Không thể quét thẻ SD. (Lý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Lỗi I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Không đủ bộ nhớ. Tệp có thể quá lớn."</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Không thể phân tích cú pháp vCard vì lý do không mong muốn."</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Định dạng không được hỗ trợ."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Không thể nhập vCard."</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Không tìm thấy tệp vCard nào trong bộ nhớ."</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Không tìm thấy tệp vCard trên thẻ SD."</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Không thể thu thập thông tin meta của (các) tệp vCard cụ thể."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Không thể nhập một hoặc nhiều tệp (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Lỗi không xác định."</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Chọn tệp vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Đang lưu vào bộ nhớ cache"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Đang lưu vào bộ nhớ cache các tệp vCard sẽ được nhập vào bộ nhớ cục bộ tạm thời. Thao tác nhập thực sự sẽ sớm bắt đầu."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Đang nhập <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Đang nhập <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Không thể đọc dữ liệu vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Thao tác đọc dữ liệu vCard bị hủy"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Đã nhập xong vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Quá trình nhập <xliff:g id="FILENAME">%s</xliff:g> bị hủy"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> sẽ sớm được nhập."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Tệp sẽ sớm được nhập."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Yêu cầu nhập vCard bị từ chối. Hãy thử lại sau."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> sẽ sớm được xuất."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Yêu cầu xuất vCard bị từ chối. Hãy thử lại sau."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"địa chỉ liên hệ"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Xuất danh bạ?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Danh sách địa chỉ liên hệ của bạn sẽ được xuất sang tệp: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Không thể xuất"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Không xuất được dữ liệu địa chỉ liên hệ."\n"Lý do: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Không thể xuất địa chỉ liên hệ nào."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Quá nhiều tệp vCard trong bộ nhớ."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Quá nhiều tệp vCard trên thẻ SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Tên tệp yêu cầu quá dài (\"<xliff:g id="FILENAME">%s</xliff:g>\")."</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Đã xuất xong <xliff:g id="FILENAME">%s</xliff:g>."</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Quá trình xuất <xliff:g id="FILENAME">%s</xliff:g> bị hủy."</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Xuất dữ liệu liên hệ"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Dữ liệu địa chỉ liên hệ của bạn đang được xuất sang: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Không thể khởi chạy trình xuất: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Đã xảy ra lỗi khi xuất: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Không thể nhận thông tin cơ sở dữ liệu."</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Không thể xuất địa chỉ liên hệ nào. Nếu bạn có danh bạ trên máy tính bảng của mình, một số nhà cung cấp dữ liệu có thể không cho phép xuất danh bạ từ máy tính bảng."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Không thể xuất địa chỉ liên hệ nào. Nếu bạn có danh bạ trên điện thoại của mình, một số nhà cung cấp dữ liệu không cho phép xuất danh bạ từ điện thoại."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Trình soạn vCard không khởi động đúng."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Không thể mở \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>."</string>
<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="cancel_import_confirmation_message" msgid="3929951040347726757">"Hủy yêu cầu nhập <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Hủy yêu cầu xuất <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Không thể nhập/xuất vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Tên danh bạ của bạn"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Thêm 2 giây dừng"</string>
- <string name="add_wait" msgid="3360818652790319634">"Thêm chờ"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Chọn số"</string>
- <string name="call_settings" msgid="7666474782093693667">"Cài đặt"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Chọn số"</string>
- <string name="make_primary" msgid="5829291915305113983">"Nhớ lựa chọn này"</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_name" msgid="8745511583852904385">"(Không có tên)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Tài khoản"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Xóa DS liên hệ thường xuyên"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Danh sách liên hệ để hiển thị"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Nhập/xuất"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Nhập/xuất danh bạ"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Nhập danh bạ"</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="share_error" msgid="948429331673358107">"Không thể chia sẻ địa chỉ liên hệ này."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Tên"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Biệt hiệu"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Tổ chức"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Trang web"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Sự kiện"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Mối quan hệ"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Nhóm"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Tạo liên hệ trong tài khoản"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Tạo nhóm trong tài khoản"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Xóa nhóm đồng bộ hóa"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Thêm nhóm đồng bộ hóa"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Nhóm khác…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Tất cả địa chỉ l.hệ khác"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Tất cả địa chỉ liên hệ"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Xóa \"<xliff:g id="GROUP">%s</xliff:g>\" khỏi đồng bộ hóa cũng sẽ xóa bất kỳ địa chỉ liên hệ nào đã được tách nhóm khỏi đồng bộ hóa."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Chỉ trên máy tính bảng, chưa được đồng bộ hóa"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Chỉ trên điện thoại, chưa đồng bộ hóa"</string>
- <string name="call_custom" msgid="7756571794763171802">"Gọi <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Gọi số điện thoại nhà riêng"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Gọi số điện thoại di động"</string>
- <string name="call_work" msgid="5328785911463744028">"Gọi số điện thoại cơ quan"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Gọi số fax cơ quan"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Gọi số fax nhà riêng"</string>
- <string name="call_pager" msgid="9003902812293983281">"Gọi số máy nhắn tin"</string>
- <string name="call_other" msgid="8563753966926932052">"Gọi"</string>
- <string name="call_callback" msgid="1910165691349426858">"Gọi số gọi lại"</string>
- <string name="call_car" msgid="3280537320306436445">"Gọi số điện thoại trên ô tô"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Gọi số điện thoại chính của công ty"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Gọi ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Gọi số điện thoại chính"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Gọi số fax"</string>
- <string name="call_radio" msgid="8296755876398357063">"Gọi số điện thoại radio"</string>
- <string name="call_telex" msgid="2223170774548648114">"Gọi số telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Gọi số điện thoại TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Gọi số điện thoại di động tại cơ quan"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Gọi số máy nhắn tin tại cơ quan"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Gọi <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Gọi MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"Nhắn tin <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Nhắn tin tới số điện thoại nhà riêng"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Nhắn tin tới số điện thoại di động"</string>
- <string name="sms_work" msgid="2269624156655267740">"Nhắn tin tới số điện thoại cơ quan"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Nhắn tin tới số fax cơ quan"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Nhắn tin tới số fax nhà riêng"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Nhắn tin tới số máy nhắn tin"</string>
- <string name="sms_other" msgid="806127844607642331">"Nhắn tin"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Nhắn tin tới số gọi lại"</string>
- <string name="sms_car" msgid="7444227058437359641">"Nhắn tin tới số điện thoại trên ô tô"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Nhắn tin tới số điện thoại chính của công ty"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Nhắn tin tới số điện thoại ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Nhắn tin tới số điện thoại chính"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Nhắn tin tới số fax"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Nhắn tin tới số điện thoại radio"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Nhắn tin tới số telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Nhắn tới số TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Nhắn tới số điện thoại di động tại cơ quan"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Nhắn tin tới số máy nhắn tin tại cơ quan"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Nhắn tin <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Nhắn tin tới số điện thoại MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Tin nhắn văn bản"</string>
- <string name="email_home" msgid="8573740658148184279">"Gửi email tới địa chỉ email nhà riêng"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Gửi email tới địa chỉ email điện thoại di động"</string>
- <string name="email_work" msgid="2807430017302722689">"Gửi email tới địa chỉ email cơ quan"</string>
- <string name="email_other" msgid="3454004077967657109">"Gửi email"</string>
- <string name="email_custom" msgid="7548003991586214105">"Gửi email cho <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"Gửi email"</string>
- <string name="map_home" msgid="1243547733423343982">"Xem địa chỉ nhà riêng"</string>
- <string name="map_work" msgid="1360474076921878088">"Xem địa chỉ cơ quan"</string>
- <string name="map_other" msgid="3817820803587012641">"Xem địa chỉ"</string>
- <string name="map_custom" msgid="6184363799976265281">"Xem địa chỉ <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Trò chuyện sử dụng AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Trò chuyện sử dụng Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Trò chuyện sử dụng Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Trò chuyện sử dụng Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Trò chuyện sử dụng QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Trò chuyện sử dụng Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Trò chuyện sử dụng ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Trò chuyện sử dụng Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Trò chuyện"</string>
<string name="audio_chat" msgid="2535716629358298691">"Trò chuyện thoại"</string>
<string name="video_chat" msgid="1872255818640336072">"Trò chuyện qua video"</string>
- <string name="postal_address" msgid="8765560217149624536">"Địa chỉ"</string>
- <string name="postal_street" msgid="8133143961580058972">"Đường phố"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"Hộp thư bưu điện"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Vùng lân cận"</string>
- <string name="postal_city" msgid="6597491300084895548">"Thành phố"</string>
- <string name="postal_region" msgid="6045263193478437672">"Tiểu bang"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Mã ZIP"</string>
- <string name="postal_country" msgid="7638264508416368690">"Quốc gia"</string>
- <string name="full_name" msgid="6602579550613988977">"Tên"</string>
- <string name="name_given" msgid="1687286314106019813">"Tên"</string>
- <string name="name_family" msgid="3416695586119999058">"Họ"</string>
- <string name="name_prefix" msgid="59756378548779822">"Tiền tố tên"</string>
- <string name="name_middle" msgid="8467433655992690326">"Tên đệm"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Hậu tố tên"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Tên đúng phát âm"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Tên đệm đúng phát âm"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Họ đúng phát âm"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Tên theo phiên âm"</string>
<string name="connections" msgid="8098440723172028350">"Kết nối"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Thêm kết nối"</string>
<string name="recent" msgid="2659189233141493004">"Gần đây"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Sắp xếp danh sách theo"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Tên"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Họ"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Xem tên liên hệ dưới dạng"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Xem tên liên hệ"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Tên trước tiên"</string>
<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>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Hiển thị tất cả"</string>
<string name="menu_select_all" msgid="621719255150713545">"Chọn tất cả"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Bỏ chọn tất cả"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Không có địa chỉ liên hệ nào được chọn."</string>
<string name="add_field" msgid="2384260056674995230">"Thêm trường khác"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Thêm mục mới"</string>
<string name="add_organization" msgid="7311893231158291197">"Thêm tổ chức"</string>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"chưa được hợp nhất"</item>
<item quantity="other" msgid="425683718017380845">"được hợp nhất từ <xliff:g id="COUNT">%0$d</xliff:g> nguồn"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Khác"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Kết hợp địa chỉ liên hệ hiện tại với địa chỉ liên hệ đã chọn?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Chuyển sang chỉnh sửa liên hệ đã chọn? Thông tin bạn đã nhập đến giờ sẽ được sao chép."</string>
<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="directory_search_label" msgid="1887759056597975053">"Thư mục"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Tất cả địa chỉ liên hệ"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Đang tạo bản sao cá nhân..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Tất cả địa chỉ liên hệ"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Được gắn dấu sao"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Tùy chỉnh"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Tùy chỉnh"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Tất cả địa chỉ liên hệ có số điện thoại"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Địa chỉ liên hệ"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Xác định chế độ xem tùy chỉnh"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Đang tải…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Cài đặt"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"DS liên hệ để hiển thị"</string>
<string name="menu_settings" msgid="377929915873428211">"Cài đặt"</string>
<string name="menu_help" msgid="5123887102216637725">"Trợ giúp"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Tùy chọn hiển thị"</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="hint_findContacts" msgid="1808681193458772072">"Tìm địa chỉ liên hệ"</string>
<string name="non_phone_caption" msgid="1541655052330027380">"Số điện thoại"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Thêm vào danh bạ"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Thêm vào đ.chỉ l.hệ"</string>
@@ -497,61 +215,7 @@
<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">"Thiết lập tiểu sử của tôi"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Nhập tên của người này"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Xem thông tin c.nhật"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Thư thoại"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Thư thoại"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Phát"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Thư thoại mới từ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Không thể phát thư thoại."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Đang lưu tạm vào bộ đệm…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"Đang tìm nạp thư thoại…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Không thể tìm nạp thư thoại."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Mới"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Cũ hơn"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Chỉ cuộc gọi có thư thoại"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Chỉ cuộc gọi đến"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Chỉ cuộc gọi đi"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Chỉ cuộc gọi nhỡ"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Không thể kết nối với máy chủ thư thoại."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Không thể kết nối với máy chủ thư thoại. Thư thoại mới đang chờ."</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Thiết lập thư thoại của bạn."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Âm thanh không khả dụng."</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Thiết lập"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Gọi thư thoại"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Tốc độ chậm nhất"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"Tốc độ chậm"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"Tốc độ bình thường"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"Tốc độ nhanh"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Tốc độ nhanh nhất"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Tên nhóm"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"L.h nhận qua NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Chỉ hiển thị cuộc gọi đi"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Chỉ hiển thị cuộc gọi đến"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Chỉ hiển thị cuộc gọi nhỡ"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Chỉ hiển thị thư thoại"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Hiển thị tất cả cuộc gọi"</string>
- <string name="status_available" msgid="5586870015822828392">"Có mặt"</string>
- <string name="status_away" msgid="1838861100379804730">"Vắng mặt"</string>
- <string name="status_busy" msgid="9147992455450257136">"Bận"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Phát thư thoại"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Cuộc gọi đến"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Cuộc gọi đi"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Cuộc gọi nhỡ"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Thư thoại"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Thêm địa chỉ liên hệ"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Xem thông tin liên hệ của <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Gọi <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Gửi tin nhắn văn bản tới <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Thư thoại chưa nghe"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Gửi tin nhắn tới <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Quay số điện thoại <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Liên hệ nhanh cho <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Tôi"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Lưu trữ cục bộ"</string>
<string name="add_account" msgid="8201790677994503186">"Thêm tài khoản"</string>
<string name="add_new_account" msgid="5748627740680940264">"Thêm tài khoản mới"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Không thể thực hiện cuộc gọi"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Để thiết lập thư thoại, đi tới Trình đơn > Cài đặt."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Để gọi thư thoại, trước tiên hãy tắt chế độ trên Máy bay."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Xuất các tệp cơ sở dữ liệu"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Tùy chọn khác"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Mở rộng hoặc thu gọn các trường tên"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Ảnh. Chọn để thay đổi"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7eaea24..348fe30 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"拨号"</string>
<string name="people" msgid="1048457247435785074">"联系人"</string>
<string name="contactsList" msgid="8661624236494819731">"联系人"</string>
<string name="shortcutContact" msgid="749243779392912958">"联系人"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"关于"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"最新动态"</string>
<string name="searchHint" msgid="8482945356247760701">"搜索联系人"</string>
- <string name="menu_search" msgid="9147752853603483719">"搜索"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"新建联系人"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"查看联系人"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"拨打 <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"复制"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"放在主屏幕上"</string>
<string name="menu_call" msgid="3992595586042260618">"呼叫联系人"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"向联系人发送短信"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"该联系人的信息中包含来自多个帐户的信息。来自只读帐户的信息将在您的联系人列表中隐藏,但不会删除。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"删除该联系人将会删除多个帐户中的信息。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"将会删除此联系人。"</string>
- <string name="menu_done" msgid="796017761764190697">"完成"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"取消"</string>
<string name="menu_discard" msgid="6456087569315685632">"舍弃"</string>
- <string name="label_notes" msgid="8337354953278341042">"备注"</string>
- <string name="label_sip_address" msgid="124073911714324974">"互联网电话"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"公司"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"职位"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"电话"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"电子邮件"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"即时聊天工具"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"地址"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"组织"</item>
<item msgid="7196592230748086755">"备注"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"没有联系人。"</string>
<string name="noGroups" msgid="8614664663561385253">"没有任何群组。"</string>
<string name="noAccounts" msgid="7768267764545265909">"您需要拥有一个帐户才能创建群组。"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"未找到匹配的联系人。"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"没有联系人拥有电话号码。"</string>
<string name="emptyGroup" msgid="7502116218697177370">"此组中没有联系人。"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"要添加联系人,请修改该组。"</string>
<string name="savingContact" msgid="4075751076741924939">"正在保存联系人…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"正在保存显示选项…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"此联系人已保存。"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"无法保存联系人更改。"</string>
<string name="groupSavedToast" msgid="1168756874239833756">"群组已保存。"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 位联系人"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> 位联系人"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"没有联系人。"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"未发现任何联系人。"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"未收藏任何联系人。"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"“<xliff:g id="NAME">%s</xliff:g>”中没有联系人"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g> 帐户中的联系人"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"单个联系人"</string>
- <string name="listCustomView" msgid="6950713892532194050">"自定义视图中的联系人"</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="foundTooManyContacts" msgid="5163335650920020220">"找到的联系人超过 <xliff:g id="COUNT">%d</xliff:g> 位。"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"没有联系人"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"找到 1 个联系人"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"所有联系人"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"群组"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"收藏"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"收藏和所有联系人"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"拨号"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"通话记录"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"发送短信"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"呼叫之前编辑号码"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"添加到“联系人”"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"从通话记录中删除"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"清除通话记录"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"删除语音邮件"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"分享语音邮件"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"通话记录为空。"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"要清除通话记录吗?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"系统将删除您的所有通话记录。"</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"正在清除通话记录..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"是否清除常用联系人?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"此操作会清除“联系人”和“拨号”应用中的常用联系人列表,并强制电子邮件应用重新获取您最常使用的联系地址。"</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"正在清除常用联系人…"</string>
- <string name="imei" msgid="3045126336951684285">"移动通信国际识别码"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"语音信箱"</string>
- <string name="unknown" msgid="740067747858270469">"未知"</string>
- <string name="private_num" msgid="6374339738119166953">"私人号码"</string>
- <string name="payphone" msgid="4864313342828942922">"公用电话"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"使用键盘拨号"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"拨号以添加通话"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"正从 SIM 卡中载入..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM 卡联系人"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"没有任何联系人可供显示。(如果您刚刚添加了一个帐户,则系统需要几分钟的时间同步联系人。)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"没有任何联系人可供显示。"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"您没有任何可显示的联系人。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到平板电脑"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SIM 卡或 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"您没有任何可显示的联系人。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到手机"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SIM 卡或 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"您没有任何可显示的联系人(如果您刚刚添加过帐户,可能是系统需要几分钟的时间来同步联系人信息)。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到平板电脑"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"显示选项"</b></font>"可更改显示的联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SIM 卡或 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"您没有任何可显示的联系人(如果您刚刚添加过帐户,可能是系统需要几分钟的时间来同步联系人信息)。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到手机"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"显示选项"</b></font>"可更改显示的联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SIM 卡或 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"您没有任何可显示的联系人。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到平板电脑"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"您没有任何可显示的联系人。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到手机"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"您没有任何可显示的联系人(如果您刚刚添加过帐户,可能是系统需要几分钟的时间来同步联系人信息)。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到平板电脑"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"显示选项"</b></font>"可更改显示的联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SD 卡中导入联系人"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"您没有任何可显示的联系人(如果您刚刚添加过帐户,可能是系统需要几分钟的时间来同步联系人信息)。"\n\n"要添加联系人,请触摸"<font fgcolor="#ffffffff"><b>"菜单"</b></font>",然后:"\n\n<li>"触摸"<font fgcolor="#ffffffff"><b>"帐户"</b></font>"可添加或设置帐户,您可以将该帐户中包含的联系人同步到手机"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"显示选项"</b></font>"可更改显示的联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"新建联系人"</b></font>"可创建新联系人"\n</li>\n<li>"触摸"<font fgcolor="#ffffffff"><b>"导入/导出"</b></font>"可从您的 SD 卡中导入联系人"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"您未收藏任何联系人。"\n\n"要向您的收藏列表添加联系人,请执行以下操作:"\n\n" "<li>"触摸"<b>"联系人"</b>"标签"\n</li>\n<li>"触摸您要加入收藏的联系人"\n</li>\n<li>"触摸联系人姓名旁边的星标"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"使用按键式键盘"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"返回正在进行的通话"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"添加通话"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"通话详情"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"无法读取所请求呼叫的详细信息。"</string>
- <string name="type_incoming" msgid="6502076603836088532">"来电"</string>
- <string name="type_outgoing" msgid="343108709599392641">"外拨电话"</string>
- <string name="type_missed" msgid="2720502601640509542">"未接电话"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"语音信箱"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"来电"</string>
<string name="callBack" msgid="5498224409038809224">"回电"</string>
<string name="callAgain" msgid="3197312117049874778">"重拨"</string>
<string name="returnCall" msgid="8171961914203617813">"回拨"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"经常联系的人"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"经常呼叫的联系人"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"将“<xliff:g id="EMAIL">%s</xliff:g>”添加到联系人?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"一"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"二"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"三"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"四"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"五"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"六"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"七"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"八"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"九"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"星形符号"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"零"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"英镑符号"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"语音信箱"</string>
- <string name="description_search_button" msgid="3660807558587384889">"搜索"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"拨打"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"退格"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"要拨打的号码"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"联系人照片"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"删除"</string>
<string name="description_plus_button" msgid="515164827856229880">"添加"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"查看联系人"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"未找到任何存储设备。"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"未找到 SD 卡。"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"从 SIM 卡导入"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"从存储设备导入"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"导出到存储设备"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"分享可见的联系人"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"导入一个 vCard 文件"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"导入多个 vCard 文件"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"导入所有 vCard 文件"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"正在从存储设备中搜索 vCard 文件..."</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"正在 SD 卡中搜索 vCard 数据..."</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"无法扫描该存储设备。(原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"无法扫描该 SD 卡。(原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”)"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 错误"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"内存不足。该文件可能过大。"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"由于意外原因而无法解析 vCard。"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"该格式不受支持。"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"无法导入 vCard。"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"未在存储设备中找到 vCard 文件。"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"未在该 SD 卡上找到 vCard 文件。"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"无法收集指定的 vCard 文件的元信息。"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"一个或多个文件无法导入 (%s)。"</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"未知错误。"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"选择 vCard 文件"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"正在缓存..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"正在将 vCard 缓存到本地临时存储设备。实际导入操作即将开始。"</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"正在导入第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 个(共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 个)联系人:<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"正在导入<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"无法读取 vCard 数据"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"已取消读取 vCard 数据"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"导入 vCard <xliff:g id="FILENAME">%s</xliff:g> 已完成"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"已取消导入 <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> 将在稍后导入。"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"系统稍后就会导入该文件。"</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard 导入请求遭拒,请稍后重试。"</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> 将在稍后导出。"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard 导出请求遭拒,请稍后重试。"</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"联系人"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"要导出联系人吗?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"系统会将您的联系人列表导出到以下文件:<xliff:g id="VCARD_FILENAME">%s</xliff:g>。"</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"无法导出"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"未导出联系人数据。"\n"原因:“<xliff:g id="FAIL_REASON">%s</xliff:g>”"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"没有可导出的联系人。"</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"存储设备中的 vCard 文件过多。"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"该 SD 卡中的 vCard 文件过多。"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"指定的文件名过长(“<xliff:g id="FILENAME">%s</xliff:g>”)。"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"导出 <xliff:g id="FILENAME">%s</xliff:g> 已完成。"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"已取消导出 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"正在导出联系人数据"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"正在将您的联系人数据导出到:<xliff:g id="FILE_NAME">%s</xliff:g>。"</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"无法启动导出程序:“<xliff:g id="EXACT_REASON">%s</xliff:g>”。"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"导出时出错:“<xliff:g id="EXACT_REASON">%s</xliff:g>”。"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"无法获取数据库信息。"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"没有可导出的联系人。如果您的平板电脑上确实存有联系人信息,可能是某些数据服务提供商不允许从平板电脑中导出联系人。"</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"没有可导出的联系人。如果您的手机上确实存有联系人信息,可能是某些数据服务提供商不允许从手机中导出联系人。"</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 制作程序未正确启动。"</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"无法打开“<xliff:g id="FILE_NAME">%s</xliff:g>”:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"要取消导入 <xliff:g id="FILENAME">%s</xliff:g> 吗?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"要取消导出 <xliff:g id="FILENAME">%s</xliff:g> 吗?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"无法取消导入/导出 vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"联系人姓名"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"暂停时间延长 2 秒"</string>
- <string name="add_wait" msgid="3360818652790319634">"延长等待时间"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"选择号码"</string>
- <string name="call_settings" msgid="7666474782093693667">"设置"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"选择号码"</string>
- <string name="make_primary" msgid="5829291915305113983">"记住此选择"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"未找到可处理此操作的应用。"</string>
- <string name="missing_name" msgid="8745511583852904385">"(无姓名)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"帐户"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"清除常用联系人"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"要显示的联系人"</string>
- <string name="menu_import_export" msgid="26217871113229507">"导入/导出"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"导入/导出联系人"</string>
- <string name="dialog_import" msgid="2431698729761448759">"导入联系人"</string>
<string name="menu_share" msgid="943789700636542260">"分享"</string>
<string name="share_via" msgid="563121028023030093">"联系人分享方式"</string>
- <string name="share_error" msgid="948429331673358107">"无法分享此联系人。"</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"姓名"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"昵称"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"组织"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"网站"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"重要日子"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"关系"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"群组"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"在帐户下创建联系人"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"要在哪个帐户下创建群组?"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"删除同步群组"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"添加同步群组"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"更多群组…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"其他所有联系人"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"所有联系人"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"如果您停止同步“<xliff:g id="GROUP">%s</xliff:g>”,将同时停止同步所有未分组的联系人。"</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"只限平板电脑,不同步"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"仅保存在手机中,不同步"</string>
- <string name="call_custom" msgid="7756571794763171802">"呼叫<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"呼叫住宅电话"</string>
- <string name="call_mobile" msgid="7502236805487609178">"呼叫手机"</string>
- <string name="call_work" msgid="5328785911463744028">"呼叫单位"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"呼叫单位传真"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"呼叫住宅传真"</string>
- <string name="call_pager" msgid="9003902812293983281">"呼叫寻呼机"</string>
- <string name="call_other" msgid="8563753966926932052">"呼叫"</string>
- <string name="call_callback" msgid="1910165691349426858">"呼叫回拨号码"</string>
- <string name="call_car" msgid="3280537320306436445">"呼叫车载电话"</string>
- <string name="call_company_main" msgid="6105120947138711257">"呼叫公司总机"</string>
- <string name="call_isdn" msgid="1541590690193403411">"呼叫 ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"呼叫总机"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"呼叫传真号码"</string>
- <string name="call_radio" msgid="8296755876398357063">"呼叫无线装置"</string>
- <string name="call_telex" msgid="2223170774548648114">"呼叫电报"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"呼叫 TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"呼叫单位手机"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"呼叫单位寻呼机"</string>
- <string name="call_assistant" msgid="2141641383068514308">"呼叫<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"呼叫彩信号码"</string>
- <string name="sms_custom" msgid="5932736853732191825">"向<xliff:g id="CUSTOM">%s</xliff:g>发送文本消息"</string>
- <string name="sms_home" msgid="7524332261493162995">"向住宅电话发送短信"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"向手机发送短信"</string>
- <string name="sms_work" msgid="2269624156655267740">"向单位电话发送短信"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"向单位传真机发送短信"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"向住宅传真机发送短信"</string>
- <string name="sms_pager" msgid="7730404569637015192">"向寻呼机发送文字消息"</string>
- <string name="sms_other" msgid="806127844607642331">"发送短信"</string>
- <string name="sms_callback" msgid="5004824430094288752">"向回拨号码发送短信"</string>
- <string name="sms_car" msgid="7444227058437359641">"向车载电话发送短信"</string>
- <string name="sms_company_main" msgid="118970873419678087">"向公司总机发送短信"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"向 ISDN 发送短信"</string>
- <string name="sms_main" msgid="8621625784504541679">"向总机发送短信"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"向传真号码发送短信"</string>
- <string name="sms_radio" msgid="3329166673433967820">"向无线装置发送短信"</string>
- <string name="sms_telex" msgid="9034802430065267848">"向电报发送短信"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"向 TTY/TDD 发送短信"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"向单位手机发送短信"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"向单位寻呼机发送短信"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"向<xliff:g id="ASSISTANT">%s</xliff:g>发送短信"</string>
- <string name="sms_mms" msgid="4069352461380762677">"向彩信号码发送短信"</string>
- <string name="sms" msgid="1756857139634224222">"短信"</string>
- <string name="email_home" msgid="8573740658148184279">"向住宅邮箱发送电子邮件"</string>
- <string name="email_mobile" msgid="2042889209787989814">"向手机发送电子邮件"</string>
- <string name="email_work" msgid="2807430017302722689">"向单位邮箱发送电子邮件"</string>
- <string name="email_other" msgid="3454004077967657109">"发送电子邮件"</string>
- <string name="email_custom" msgid="7548003991586214105">"向<xliff:g id="CUSTOM">%s</xliff:g>发送电子邮件"</string>
- <string name="email" msgid="5668400997660065897">"电子邮件"</string>
- <string name="map_home" msgid="1243547733423343982">"查看住宅地址"</string>
- <string name="map_work" msgid="1360474076921878088">"查看单位地址"</string>
- <string name="map_other" msgid="3817820803587012641">"查看地址"</string>
- <string name="map_custom" msgid="6184363799976265281">"查看<xliff:g id="CUSTOM">%s</xliff:g>地址"</string>
- <string name="chat_aim" msgid="2588492205291249142">"使用 AIM 聊天"</string>
- <string name="chat_msn" msgid="8041633440091073484">"使用 Windows Live 聊天"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"使用雅虎软件聊天"</string>
- <string name="chat_skype" msgid="1210045020427480566">"使用 Skype 聊天"</string>
- <string name="chat_qq" msgid="4294637812847719693">"使用 QQ 聊天"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"使用 Google Talk 聊天"</string>
- <string name="chat_icq" msgid="8438405386153745775">"使用 ICQ 聊天"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"使用 Jabber 聊天"</string>
- <string name="chat" msgid="9025361898797412245">"聊天"</string>
<string name="audio_chat" msgid="2535716629358298691">"语音聊天"</string>
<string name="video_chat" msgid="1872255818640336072">"视频聊天"</string>
- <string name="postal_address" msgid="8765560217149624536">"地址"</string>
- <string name="postal_street" msgid="8133143961580058972">"街道"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"信箱"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"街区"</string>
- <string name="postal_city" msgid="6597491300084895548">"城市"</string>
- <string name="postal_region" msgid="6045263193478437672">"省/直辖市/自治区"</string>
- <string name="postal_postcode" msgid="572136414136673751">"邮政编码"</string>
- <string name="postal_country" msgid="7638264508416368690">"国家/地区"</string>
- <string name="full_name" msgid="6602579550613988977">"姓名"</string>
- <string name="name_given" msgid="1687286314106019813">"名字"</string>
- <string name="name_family" msgid="3416695586119999058">"姓氏"</string>
- <string name="name_prefix" msgid="59756378548779822">"姓名前缀"</string>
- <string name="name_middle" msgid="8467433655992690326">"中间名"</string>
- <string name="name_suffix" msgid="3855278445375651441">"姓名后缀"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"名字拼音"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"中间名拼音"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"姓氏拼音"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"姓名拼音"</string>
<string name="connections" msgid="8098440723172028350">"社交网络"</string>
<string name="add_connection_button" msgid="4861308615789601727">"添加社交网络"</string>
<string name="recent" msgid="2659189233141493004">"最新"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"联系人姓名的显示方式"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"未选择联系人。"</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"未合并"</item>
<item quantity="other" msgid="425683718017380845">"合并自 <xliff:g id="COUNT">%0$d</xliff:g> 个来源"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"其他"</string>
<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="directory_search_label" msgid="1887759056597975053">"目录"</string>
- <string name="local_search_label" msgid="2551177578246113614">"所有联系人"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"正在创建个人副本..."</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"所有联系人"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"已加星标"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"自定义"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"自定义"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"所有拥有电话号码的联系人"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"联系人"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"定义自定义视图"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"正在加载..."</string>
<string name="activity_title_settings" msgid="5464130076132770781">"设置"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"要显示的联系人"</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="hint_findContacts" msgid="1808681193458772072">"查找联系人"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"查看更新"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"语音邮件"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>,<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"来自<xliff:g id="CALLER">%1$s</xliff:g>的新语音邮件"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"无法播放语音邮件。"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"正在缓冲…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"正在抓取语音邮件…"</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"无法抓取语音邮件。"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"新记录"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"旧记录"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"只显示语音信箱留言"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"只显示来电"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"只显示外拨电话"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"只显示未接来电"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"无法连接到语音信箱服务器。"</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"无法连接到语音信箱服务器。新的语音邮件正在等待接收。"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"设置您的语音信箱。"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"音频不可用。"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"设置"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"呼叫语音信箱"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"最慢"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"慢速"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"正常速度"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"快速"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"最快"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"群组名称"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"已通过 NFC 收到联系人信息"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"仅显示外拨电话"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"仅显示来电"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"仅显示未接来电"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"只显示语音邮件"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"显示所有通话"</string>
- <string name="status_available" msgid="5586870015822828392">"在线"</string>
- <string name="status_away" msgid="1838861100379804730">"离开"</string>
- <string name="status_busy" msgid="9147992455450257136">"忙碌"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"播放语音邮件"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"来电"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"去电"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"未接电话"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"语音邮件"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"添加联系人"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"查看联系人<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"呼叫<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"向<xliff:g id="NAME">%1$s</xliff:g>发送短信"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未收听的语音邮件"</string>
- <string name="description_send_message" msgid="6046623392322890962">"向<xliff:g id="NAME">%1$s</xliff:g>发送短信"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"拨打<xliff:g id="NAME">%1$s</xliff:g>的电话"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g>的快速联系头像"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"我"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"本地保存"</string>
<string name="add_account" msgid="8201790677994503186">"添加帐户"</string>
<string name="add_new_account" msgid="5748627740680940264">"添加新帐户"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"电话未拨出"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"要设置语音信箱,请转到“菜单”>“设置”。"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"要呼叫语音信箱,请先关闭飞行模式。"</string>
<string name="menu_export_database" msgid="2659719297530170820">"导出数据库文件"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"更多选项"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"展开或折叠姓名字段"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"照片(选择即可更换)"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index fcf887a..3274d83 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"電話"</string>
<string name="people" msgid="1048457247435785074">"使用者"</string>
<string name="contactsList" msgid="8661624236494819731">"聯絡人"</string>
<string name="shortcutContact" msgid="749243779392912958">"聯絡人"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"相關資訊"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"更新"</string>
<string name="searchHint" msgid="8482945356247760701">"搜尋聯絡人"</string>
- <string name="menu_search" msgid="9147752853603483719">"搜尋"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"新增聯絡人"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"檢視聯絡人"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</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_copy" msgid="6108677035381940698">"複製"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"新增到主螢幕上"</string>
<string name="menu_call" msgid="3992595586042260618">"去電聯絡人"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"傳送簡訊至聯絡人"</string>
@@ -70,21 +65,11 @@
<string name="readOnlyContactDeleteConfirmation" msgid="2137170726670196909">"此聯絡人包含來自多個帳戶的資訊。您的聯絡人清單不會顯示唯讀帳戶的資訊 (這些資訊並不會被刪除)。"</string>
<string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"刪除此聯絡人將會刪除多個帳戶的資訊。"</string>
<string name="deleteConfirmation" msgid="811706994761610640">"刪除此聯絡人?"</string>
- <string name="menu_done" msgid="796017761764190697">"完成"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"取消"</string>
<string name="menu_discard" msgid="6456087569315685632">"捨棄"</string>
- <string name="label_notes" msgid="8337354953278341042">"附註"</string>
- <string name="label_sip_address" msgid="124073911714324974">"網路電話"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"公司"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"職稱"</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 name="phoneLabelsGroup" msgid="6468091477851199285">"電話"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"電子郵件"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"即時訊息"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"地址"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"機構"</item>
<item msgid="7196592230748086755">"附註"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"沒有聯絡人。"</string>
<string name="noGroups" msgid="8614664663561385253">"沒有群組。"</string>
<string name="noAccounts" msgid="7768267764545265909">"必須要有帳戶才能建立群組。"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"找不到符合的聯絡人。"</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"沒有包含電話號碼的聯絡人資訊。"</string>
<string name="emptyGroup" msgid="7502116218697177370">"這個群組中沒有成員。"</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"如要新增成員,請編輯群組。"</string>
<string name="savingContact" msgid="4075751076741924939">"正在儲存聯絡人…"</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"正在儲存顯示選項…"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"聯絡人已儲存。"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"無法儲存聯絡人變更。"</string>
<string name="groupSavedToast" msgid="1168756874239833756">"群組已儲存。"</string>
@@ -117,18 +99,10 @@
<item quantity="one" msgid="3405747744700823280">"1 位聯絡人"</item>
<item quantity="other" msgid="3578469907265375314">"<xliff:g id="COUNT">%d</xliff:g> 位聯絡人"</item>
</plurals>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"沒有聯絡人。"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"沒有可顯示的聯絡人。"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"沒有最愛的聯絡人。"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"「<xliff:g id="NAME">%s</xliff:g>」中沒有聯絡人"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"<xliff:g id="NAME">%s</xliff:g> 中的聯絡人"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"單一聯絡人"</string>
- <string name="listCustomView" msgid="6950713892532194050">"聯絡人自訂檢視"</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="foundTooManyContacts" msgid="5163335650920020220">"找到 <xliff:g id="COUNT">%d</xliff:g> 位以上的聯絡人。"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"沒有聯絡人"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"找到 1 位聯絡人"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"所有聯絡人"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"群組"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"我的最愛"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"最愛的聯絡人和所有聯絡人"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"通話記錄"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"傳送簡訊"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"撥電話給<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"撥打電話前編輯號碼"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"新增至通訊錄"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"從通話記錄中移除"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"清除通話記錄"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"刪除語音留言"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"分享語音信箱"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"無通話記錄。"</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"確定要清除通話記錄?"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"即將刪除您所有的通話記錄。"</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"正在清除通話記錄…"</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"清除常用聯絡人?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"您將清除「使用者」應用程式和「電話」應用程式中的常用聯絡人清單,並強制電子郵件應用程式重新瞭解您的寄件偏好設定。"</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"正在清除常用聯絡人…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"語音留言"</string>
- <string name="unknown" msgid="740067747858270469">"不明"</string>
- <string name="private_num" msgid="6374339738119166953">"私人號碼"</string>
- <string name="payphone" msgid="4864313342828942922">"公共電話"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"使用鍵盤撥號"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"撥號即可新增通話"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"從 SIM 卡讀取中…"</string>
- <string name="simContacts_title" msgid="27341688347689769">"SIM 卡聯絡人"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"您沒有任何聯絡人可供顯示 (如果您剛剛才新增帳戶,系統需要幾分鐘的時間才能同步聯絡人資訊)。"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"您沒有任何聯絡人可供顯示。"</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"您沒有任何聯絡人可供顯示。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和平板電腦保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SIM 卡或 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"您沒有任何聯絡人可供顯示。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和手機保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SIM 卡或 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"您沒有任何聯絡人可供顯示 (如果您剛新增帳戶,系統可能需要幾分鐘同步處理通訊錄)。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和平板電腦保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[顯示選項]"<b></b></font>" 變更所要顯示的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SIM 卡或 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"您沒有任何聯絡人可供顯示 (如果您剛新增帳戶,系統可能需要幾分鐘同步處理處理通訊錄)。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和手機保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[顯示選項]"<b></b></font>" 變更所要顯示的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SIM 卡或 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"您沒有任何聯絡人可供顯示。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和平板電腦保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"您沒有任何聯絡人可供顯示。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和手機保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"您沒有任何聯絡人可供顯示 (如果您剛新增帳戶,系統可能需要幾分鐘同步處理通訊錄)。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和平板電腦保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[顯示選項]"<b></b></font>" 變更所要顯示的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SD 卡匯入聯絡人"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"您沒有任何聯絡人可供顯示 (如果您剛新增帳戶,系統可能需要幾分鐘同步處理通訊錄)。"\n\n"如要新增聯絡人,請輕觸"<font fgcolor="#ffffffff"><b>"選單鍵"</b></font>",然後輕觸:"\n\n<li><font fgcolor="#ffffffff">"[帳戶]"<b></b></font>" 新增或設定帳戶,其中含有可和手機保持同步的聯絡人資料"\n</li>" "\n<li><font fgcolor="#ffffffff">"[顯示選項]"<b></b></font>" 變更所要顯示的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[新增聯絡人]"<b></b></font>" 從頭開始建立新的聯絡人"\n</li>" "\n<li><font fgcolor="#ffffffff">"[匯入/匯出]"<b></b></font>" 從 SD 卡匯入聯絡人"\n</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"您沒有任何最愛。"\n\n"如要將聯絡人新增至最愛清單:"\n\n<li>"輕觸 [聯絡人"<b></b>"] 標籤"\n</li>" "\n<li>"輕觸要新增至最愛的聯絡人"\n</li>" "\n<li>"輕觸聯絡人名稱旁邊的星號圖示"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"使用觸控音按鍵"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"返回進行中的通話"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"新增通話"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"通話詳細資料"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"無法解讀通話要求詳細資訊。"</string>
- <string name="type_incoming" msgid="6502076603836088532">"來電"</string>
- <string name="type_outgoing" msgid="343108709599392641">"撥出電話"</string>
- <string name="type_missed" msgid="2720502601640509542">"未接來電"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"語音信箱"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"來電"</string>
<string name="callBack" msgid="5498224409038809224">"回播電話"</string>
<string name="callAgain" msgid="3197312117049874778">"重撥"</string>
<string name="returnCall" msgid="8171961914203617813">"回電"</string>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"常用聯絡人"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"常用聯絡人"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"要將「<xliff:g id="EMAIL">%s</xliff:g>」加到通訊錄嗎?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"1"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"2"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"3"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"4"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"5"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"6"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"7"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"8"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"9"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"星號"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"0"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"磅"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"語音信箱"</string>
- <string name="description_search_button" msgid="3660807558587384889">"搜尋"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"撥號"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"Backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"撥號號碼"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"聯絡人相片"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"刪除"</string>
<string name="description_plus_button" msgid="515164827856229880">"加號"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"查看聯絡人"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"找不到任何儲存裝置。"</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"找不到 SD 卡。"</string>
- <string name="import_from_sim" msgid="3859272228033941659">"從 SIM 卡匯入"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"從儲存裝置匯入"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"匯出到儲存裝置"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"分享正常顯示的聯絡人"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"匯入一個 vCard 檔案"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"匯入多個 vCard 檔案"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"匯入所有 vCard 檔案"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"正在搜尋儲存裝置中的 vCard 資料…"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"正在 SD 卡上搜尋 vCard 資料…"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"無法掃描儲存裝置 (原因:<xliff:g id="FAIL_REASON">%s</xliff:g>)。"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"無法掃描 SD 卡 (原因:<xliff:g id="FAIL_REASON">%s</xliff:g>)。"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"I/O 錯誤"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"記憶體不足,檔案可能過大。"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"由於意外因素,導致無法剖析 vCard。"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"不支援此格式。"</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"無法匯入 vCard。"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"在儲存裝置中找不到 vCard 檔案。"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"在 SD 卡上找不到 vCard 檔案。"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"無法從指定的 vCard 檔案收集中繼資料。"</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"無法匯入一或多個檔案 (%s)。"</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"不明錯誤。"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"選擇 vCard 檔案"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"快取中"</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"正在將 vCard 資料快取至本機暫存空間,隨即將啟動實際的匯入作業。"</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"正在匯入第 <xliff:g id="CURRENT_NUMBER">%s</xliff:g> 筆資料:<xliff:g id="NAME">%s</xliff:g>,共 <xliff:g id="TOTAL_NUMBER">%s</xliff:g> 筆資料"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"正在匯入 <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"無法讀取 vCard 資料"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"已取消讀取 vCard 資料"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"已完成匯入 vCard 的 <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"已取消匯入 <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯入。"</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"稍候即將匯入該檔案。"</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"vCard 匯入要求遭到拒絕,請稍後再試。"</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"<xliff:g id="FILENAME">%s</xliff:g> 將在稍後匯出。"</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"vCard 匯出要求遭到拒絕,請稍後再試。"</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"聯絡人"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"確定要匯出聯絡人?"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"您的聯絡人清單即將匯出至以下檔案:<xliff:g id="VCARD_FILENAME">%s</xliff:g>。"</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"無法匯出"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"聯絡人資料未匯出。"\n"原因:<xliff:g id="FAIL_REASON">%s</xliff:g>"</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"沒有可匯出的聯絡人。"</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"儲存裝置中的 vCard 檔案過多。"</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"SD 卡上的 vCard 檔案過多。"</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"要求的檔案名稱過長 (<xliff:g id="FILENAME">%s</xliff:g>)。"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"已完成 <xliff:g id="FILENAME">%s</xliff:g> 匯出作業。"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"已取消匯出 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"正在匯出聯絡人資料"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"正在將您的聯絡人資料匯出至:<xliff:g id="FILE_NAME">%s</xliff:g>。"</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"無法啟動匯出程式:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"匯出時發生錯誤:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"無法取得資料庫資訊。"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"沒有可匯出的聯絡人。如果您的平板電腦中確實有聯絡人資料,那麼可能是部分資料提供者不允許您將聯絡人資料從平板電腦匯出。"</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"沒有可匯出的聯絡人。如果您的手機中確實有聯絡人資料,那麼可能是部分資料提供者不允許您將聯絡人資料從手機中匯出。"</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"vCard 編輯器並未正確啟動。"</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"無法開啟「<xliff:g id="FILE_NAME">%s</xliff:g>」:<xliff:g id="EXACT_REASON">%s</xliff:g>。"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"確定要取消匯入 <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"確定要取消匯出 <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"無法取消匯入/匯出 vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"您的聯絡人姓名"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"新增 2 秒暫停功能"</string>
- <string name="add_wait" msgid="3360818652790319634">"新增插播功能"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"選擇號碼"</string>
- <string name="call_settings" msgid="7666474782093693667">"設定"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"選擇號碼"</string>
- <string name="make_primary" msgid="5829291915305113983">"記住這個選擇"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"找不到可以處理這個動作的應用程式。"</string>
- <string name="missing_name" msgid="8745511583852904385">"(無姓名)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"帳戶"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"清除常用聯絡人"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"要顯示的聯絡人"</string>
- <string name="menu_import_export" msgid="26217871113229507">"匯入/匯出"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"匯入/匯出聯絡人"</string>
- <string name="dialog_import" msgid="2431698729761448759">"匯入聯絡人"</string>
<string name="menu_share" msgid="943789700636542260">"分享"</string>
<string name="share_via" msgid="563121028023030093">"使用下列應用程式分享聯絡人資訊:"</string>
- <string name="share_error" msgid="948429331673358107">"無法分享這位聯絡人。"</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"姓名"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"暱稱"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"機構"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"網站"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"活動"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"關係"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"群組"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"在帳戶下建立聯絡人"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"選擇帳戶以建立群組"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"移除同步處理群組"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"新增同步處理群組"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"更多群組…"</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"所有其他聯絡人"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"所有聯絡人"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"如果停用「<xliff:g id="GROUP">%s</xliff:g>」群組的同步處理設定,也會停止同步處理任何未分組的聯絡人。"</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"僅限平板電腦,不會同步處理"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"僅儲存於手機 (不會同步處理)"</string>
- <string name="call_custom" msgid="7756571794763171802">"去電<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"去電住家電話"</string>
- <string name="call_mobile" msgid="7502236805487609178">"去電行動裝置"</string>
- <string name="call_work" msgid="5328785911463744028">"去電公司電話"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"去電公司傳真"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"去電住家傳真"</string>
- <string name="call_pager" msgid="9003902812293983281">"去電呼叫器"</string>
- <string name="call_other" msgid="8563753966926932052">"通話"</string>
- <string name="call_callback" msgid="1910165691349426858">"去電回撥號碼"</string>
- <string name="call_car" msgid="3280537320306436445">"去電汽車電話"</string>
- <string name="call_company_main" msgid="6105120947138711257">"去電公司代表號"</string>
- <string name="call_isdn" msgid="1541590690193403411">"去電 ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"去電代表號"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"撥打傳真"</string>
- <string name="call_radio" msgid="8296755876398357063">"去電無線電"</string>
- <string name="call_telex" msgid="2223170774548648114">"去電 Telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"去電 TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"去電公司行動電話"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"去電公司呼叫器"</string>
- <string name="call_assistant" msgid="2141641383068514308">"去電<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"去電 MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">"傳送簡訊至<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"傳送簡訊至住家電話"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"傳送簡訊至行動裝置"</string>
- <string name="sms_work" msgid="2269624156655267740">"傳送簡訊至公司電話"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"傳送簡訊至公司傳真"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"傳送簡訊至住家傳真"</string>
- <string name="sms_pager" msgid="7730404569637015192">"傳送簡訊至呼叫器"</string>
- <string name="sms_other" msgid="806127844607642331">"傳送簡訊"</string>
- <string name="sms_callback" msgid="5004824430094288752">"傳送簡訊至回撥號碼"</string>
- <string name="sms_car" msgid="7444227058437359641">"傳送簡訊至汽車電話"</string>
- <string name="sms_company_main" msgid="118970873419678087">"傳送簡訊至公司代表號"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"傳送簡訊至 ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"傳送簡訊至代表號"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"傳送簡訊至傳真"</string>
- <string name="sms_radio" msgid="3329166673433967820">"傳送簡訊至無線電"</string>
- <string name="sms_telex" msgid="9034802430065267848">"傳送簡訊至 Telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"傳送簡訊至 TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"傳送簡訊至公司行動電話"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"傳送簡訊至公司呼叫器"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"傳送簡訊至<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"傳送 MMS 簡訊"</string>
- <string name="sms" msgid="1756857139634224222">"簡訊"</string>
- <string name="email_home" msgid="8573740658148184279">"傳送電子郵件至住家電子郵件地址"</string>
- <string name="email_mobile" msgid="2042889209787989814">"傳送電子郵件至行動裝置"</string>
- <string name="email_work" msgid="2807430017302722689">"傳送電子郵件至公司電子郵件地址"</string>
- <string name="email_other" msgid="3454004077967657109">"傳送電子郵件"</string>
- <string name="email_custom" msgid="7548003991586214105">"傳送電子郵件至<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"傳送電子郵件"</string>
- <string name="map_home" msgid="1243547733423343982">"檢視住家地址"</string>
- <string name="map_work" msgid="1360474076921878088">"檢視公司地址"</string>
- <string name="map_other" msgid="3817820803587012641">"檢視地址"</string>
- <string name="map_custom" msgid="6184363799976265281">"檢視<xliff:g id="CUSTOM">%s</xliff:g>地址"</string>
- <string name="chat_aim" msgid="2588492205291249142">"使用 AIM 進行即時通訊"</string>
- <string name="chat_msn" msgid="8041633440091073484">"使用 Windows Live 進行即時通訊"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"使用 Yahoo 進行即時通訊"</string>
- <string name="chat_skype" msgid="1210045020427480566">"使用 Skype 進行即時通訊"</string>
- <string name="chat_qq" msgid="4294637812847719693">"使用 QQ 進行即時通訊"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"使用 Google Talk 進行即時通訊"</string>
- <string name="chat_icq" msgid="8438405386153745775">"使用 ICQ 進行即時通訊"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"使用 Jabber 進行即時通訊"</string>
- <string name="chat" msgid="9025361898797412245">"即時通訊"</string>
<string name="audio_chat" msgid="2535716629358298691">"語音通訊"</string>
<string name="video_chat" msgid="1872255818640336072">"語音通訊"</string>
- <string name="postal_address" msgid="8765560217149624536">"地址"</string>
- <string name="postal_street" msgid="8133143961580058972">"街道"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"郵政信箱"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"鄰"</string>
- <string name="postal_city" msgid="6597491300084895548">"鄉/鎮/市/區"</string>
- <string name="postal_region" msgid="6045263193478437672">"州/省"</string>
- <string name="postal_postcode" msgid="572136414136673751">"郵遞區號"</string>
- <string name="postal_country" msgid="7638264508416368690">"國家/地區"</string>
- <string name="full_name" msgid="6602579550613988977">"姓名"</string>
- <string name="name_given" msgid="1687286314106019813">"名字"</string>
- <string name="name_family" msgid="3416695586119999058">"姓氏"</string>
- <string name="name_prefix" msgid="59756378548779822">"姓名前稱銜"</string>
- <string name="name_middle" msgid="8467433655992690326">"中間名"</string>
- <string name="name_suffix" msgid="3855278445375651441">"姓名後稱銜"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"名字 (拼音)"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"中間名 (拼音)"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"姓氏 (拼音)"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"姓名拼音"</string>
<string name="connections" msgid="8098440723172028350">"聯絡方式"</string>
<string name="add_connection_button" msgid="4861308615789601727">"加入聯絡方式"</string>
<string name="recent" msgid="2659189233141493004">"最新"</string>
@@ -407,7 +138,7 @@
<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="18022868169627979">"聯絡人姓名顯示方式"</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>
@@ -424,7 +155,6 @@
<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="no_contacts_selected" msgid="5877803471037324613">"未選取任何聯絡人。"</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>
@@ -438,30 +168,18 @@
<item quantity="one" msgid="148365587896371969">"未合併"</item>
<item quantity="other" msgid="425683718017380845">"從 <xliff:g id="COUNT">%0$d</xliff:g> 個來源合併"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"其他"</string>
<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="directory_search_label" msgid="1887759056597975053">"目錄"</string>
- <string name="local_search_label" msgid="2551177578246113614">"所有聯絡人"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"正在建立個人副本…"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"所有聯絡人"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"已加星號"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"自訂"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"自訂"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"所有包含電話號碼的聯絡人資訊"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"聯絡人"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"定義自訂檢視"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"載入中…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"設定"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"要顯示的聯絡人"</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_1">%1$s</xliff:g> <xliff:g id="COMPANY_0">%2$s</xliff:g>"</string>
- <string name="hint_findContacts" msgid="1808681193458772072">"尋找聯絡人"</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>
@@ -497,61 +215,7 @@
<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="view_updates_from_group" msgid="1782685984905600034">"查看更新"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"語音留言"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 則語音留言"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"最新語音留言者:<xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"無法播放語音留言。"</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"緩衝處理中…"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"正在擷取語音留言..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"無法擷取語音留言。"</string>
- <string name="call_log_new_header" msgid="846546437517724715">"最新"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"較舊"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"僅顯示語音信箱留言"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"僅顯示來電"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"僅顯示已撥電話"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"僅顯示未接來電"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"無法連線至語音信箱伺服器。"</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"無法連線至語音信箱伺服器,新的語音留言仍待聽取。"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"設定您的語音信箱。"</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"無法使用音訊。"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"設定"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"撥打語音信箱號碼"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"最慢速"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"慢速"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"正常速度"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"快速"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"最快速"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"群組名稱"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"已透過 NFC 收到聯絡人資訊"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"僅顯示撥出電話"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"僅顯示來電"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"僅顯示未接來電"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"僅顯示語音留言"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"顯示所有通話"</string>
- <string name="status_available" msgid="5586870015822828392">"線上"</string>
- <string name="status_away" msgid="1838861100379804730">"離開"</string>
- <string name="status_busy" msgid="9147992455450257136">"忙碌"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"播放語音留言"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"來電"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"已撥電話"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"未接來電"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"語音留言"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"新增聯絡人"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"查看聯絡人<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"撥電話給<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"傳送簡訊給<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"未聽取的語音留言"</string>
- <string name="description_send_message" msgid="6046623392322890962">"傳送訊息給<xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"撥打 <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"<xliff:g id="NAME">%1$s</xliff:g>的快速聯絡人相片"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"我自己"</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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"儲存在本機中"</string>
<string name="add_account" msgid="8201790677994503186">"新增帳戶"</string>
<string name="add_new_account" msgid="5748627740680940264">"新增帳戶"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"無法撥號"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"如要設定語音信箱,請前往 [選單] > [設定]。"</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"如要聽語音留言,請先關閉飛行模式。"</string>
<string name="menu_export_database" msgid="2659719297530170820">"匯出資料庫檔案"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"更多選項"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"展開或收合名稱欄位"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"圖片 (選取即可變更)"</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 6be7463..dc068ae 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -16,7 +16,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="launcherDialer" msgid="8636288196618486553">"Ifoni"</string>
<string name="people" msgid="1048457247435785074">"Abantu"</string>
<string name="contactsList" msgid="8661624236494819731">"Othi tana nabo"</string>
<string name="shortcutContact" msgid="749243779392912958">"Othintana naye"</string>
@@ -38,15 +37,11 @@
<string name="contactDetailAbout" msgid="5430408883907061400">"Mayelana"</string>
<string name="contactDetailUpdates" msgid="3780588624763446941">"Izibuyekezo"</string>
<string name="searchHint" msgid="8482945356247760701">"Sesha othintana nabo"</string>
- <string name="menu_search" msgid="9147752853603483719">"Sesha"</string>
- <string name="menu_newContact" msgid="1209922412763274638">"Othintana naye omusha"</string>
<string name="menu_viewContact" msgid="2795575601596468581">"Buka othintana naye"</string>
- <string name="menu_callNumber" msgid="997146291983360266">"Shayela u-<xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="menu_addStar" msgid="2908478235715404876">"Engeza ezintandokazini"</string>
<string name="menu_removeStar" msgid="5844227078364227030">"Susa ezintandokazini"</string>
<string name="menu_editContact" msgid="9042415603857662633">"Hlela"</string>
<string name="menu_deleteContact" msgid="6788644058868189393">"Susa"</string>
- <string name="menu_copy" msgid="6108677035381940698">"Kopisha"</string>
<string name="menu_create_contact_shortcut" msgid="1217971915748509640">"Indawo esikrinini sekhaya"</string>
<string name="menu_call" msgid="3992595586042260618">"Shayela othintana naye"</string>
<string name="menu_sendSMS" msgid="5535886767547006515">"Bhalela othintana naye"</string>
@@ -70,21 +65,11 @@
<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_done" msgid="796017761764190697">"Kwenziwe"</string>
- <string name="menu_doNotSave" msgid="58593876893538465">"Khansela"</string>
<string name="menu_discard" msgid="6456087569315685632">"Lahla"</string>
- <string name="label_notes" msgid="8337354953278341042">"Imibhalo"</string>
- <string name="label_sip_address" msgid="124073911714324974">"Ikholi le-Inthanethi"</string>
- <string name="ghostData_company" msgid="5414421120553765775">"Inkampani"</string>
- <string name="ghostData_title" msgid="7496735200318496110">"Isihloko"</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>
<string name="pickerNewContactText" msgid="6166997164401048211">"Dala othintana naye omusha"</string>
- <string name="phoneLabelsGroup" msgid="6468091477851199285">"Ifoni"</string>
- <string name="emailLabelsGroup" msgid="8389931313045344406">"I-imeyli"</string>
- <string name="imLabelsGroup" msgid="3898238486262614027">"IM"</string>
- <string name="postalLabelsGroup" msgid="3487738141112589324">"Ikheli"</string>
<string-array name="otherLabels">
<item msgid="8287841928119937597">"Inhlangano"</item>
<item msgid="7196592230748086755">"Yazi"</item>
@@ -98,12 +83,9 @@
<string name="noContacts" msgid="8579310973261953559">"Abekho othintana nabo"</string>
<string name="noGroups" msgid="8614664663561385253">"Awekho amaqembu."</string>
<string name="noAccounts" msgid="7768267764545265909">"Ukuze wakhe iqembu udinga i-akhawunti"</string>
- <string name="noMatchingContacts" msgid="4266283206853990471">"Abekho othintana nabo abafanayo abatholakele."</string>
- <string name="noContactsWithPhoneNumbers" msgid="1605457050218824269">"Abekho othintana nabo abanezinombolo zocingo."</string>
<string name="emptyGroup" msgid="7502116218697177370">"Akunabanti kuleli qembu."</string>
<string name="addPeopleToGroup" msgid="7879585947222263516">"Ukungeza okunye, hlela iqembu."</string>
<string name="savingContact" msgid="4075751076741924939">"Igcina othintana naye..."</string>
- <string name="savingDisplayGroups" msgid="2133152192716475939">"Ilondoloza izinketho zokubonisa"</string>
<string name="contactSavedToast" msgid="7152589189385441091">"Othintana naye ulondoloziwe"</string>
<string name="contactSavedErrorToast" msgid="3207250533172944892">"Yehlulekile ukulondoloza izinguquko zoxhumana nabo."</string>
<string name="groupSavedToast" msgid="1168756874239833756">"Isigcawu silondiwe"</string>
@@ -117,18 +99,10 @@
<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>
- <string name="listTotalAllContactsZero" msgid="5513001821794568211">"Abekho othintana nabo"</string>
- <string name="listTotalAllContactsZeroCustom" msgid="5004974705699445044">"Abekho othintana nabo ababonakalayo"</string>
- <string name="listTotalAllContactsZeroStarred" msgid="3173820905501592808">"Azikho izintandokazi"</string>
- <string name="listTotalAllContactsZeroGroup" msgid="5448979458248027615">"Abekho othintana nabo ku <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listAllContactsInAccount" msgid="7496143179265311758">"Oxhumana nabo ku-<xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="listSingleContact" msgid="6067813698903535563">"Oxhumana naye oyedwa"</string>
- <string name="listCustomView" msgid="6950713892532194050">"Ohlu loxhumana nabo olubukwa kokulungiselwe lokhu"</string>
<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>
</plurals>
- <string name="foundTooManyContacts" msgid="5163335650920020220">"kutholakele <xliff:g id="COUNT">%d</xliff:g>edlula"</string>
<string name="listFoundAllContactsZero" msgid="922980883593159444">"Abekho oxhumana nabo"</string>
<plurals name="searchFoundContacts">
<item quantity="one" msgid="4826918429708286628">"otholakele ongu-1"</item>
@@ -136,263 +110,20 @@
</plurals>
<string name="contactsAllLabel" msgid="6479708629170672169">"Bonke oxhumana nabo"</string>
<string name="contactsGroupsLabel" msgid="2841971472518003524">"Amaqembu"</string>
- <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Izintandokazi"</string>
- <string name="dialerAllContactsLabel" msgid="1025920923112988336">"Izintandokazi nabo bonke ongaxhumana nabo"</string>
- <string name="dialerIconLabel" msgid="6500826552823403796">"Ifoni"</string>
- <string name="recentCallsIconLabel" msgid="1419116422359067949">"Ifayela lokungena lekholi"</string>
- <string name="menu_sendTextMessage" msgid="6937343460284499306">"Thumela umyalezo wombhalo"</string>
- <string name="recentCalls_callNumber" msgid="1756372533999226126">"Shayela <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hlela inombolo ngaphambi kokushaya ucingo"</string>
- <string name="recentCalls_addToContact" msgid="1429899535546487008">"Engeza kothintana nabo"</string>
- <string name="recentCalls_removeFromRecentList" msgid="401662244636511330">"Susa kwifayela yokungena"</string>
- <string name="recentCalls_deleteAll" msgid="6352364392762163704">"Sula ifayela lokungena"</string>
- <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Susa imeyili yezwi"</string>
- <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Abelana nemeyili yezwi"</string>
- <string name="recentCalls_empty" msgid="247053222448663107">"Ifayela lokungena lekholi alinalutho."</string>
- <string name="clearCallLogConfirmation_title" msgid="6427524640461816332">"Sula ifayela lokungena"</string>
- <string name="clearCallLogConfirmation" msgid="5043563133171583152">"Yonke imininingwane eqoshiwe iyosuswa."</string>
- <string name="clearCallLogProgress_title" msgid="8365943000154295771">"Isula imininingwane yokushaya..."</string>
- <string name="clearFrequentsConfirmation_title" msgid="766292372438450432">"Sula oxhumana nabo njalo?"</string>
- <string name="clearFrequentsConfirmation" msgid="3254215748990281318">"Uzosula uhlu okuxhunyanwa nalo njalo kwizinhlelo zokusebenza zaBantu kanye Nefoni, futhi iphoqelela izinhlelo zokusebenza ze-imeyli ukufunda okukhethayo kokuthintana kusuka ekuqaleni."</string>
- <string name="clearFrequentsProgress_title" msgid="5157001637482794212">"Isula oxhumana nabo njalo…"</string>
- <string name="imei" msgid="3045126336951684285">"IMEI"</string>
- <string name="meid" msgid="6210568493746275750">"I-MEID"</string>
- <string name="voicemail" msgid="3851469869202611441">"Ivoyisimeyili"</string>
- <string name="unknown" msgid="740067747858270469">"Akwaziwa"</string>
- <string name="private_num" msgid="6374339738119166953">"Inombolo yangasese"</string>
- <string name="payphone" msgid="4864313342828942922">"Ifoni ekhokhelwayo"</string>
- <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Sebenzisa ikhibhodi ukudayela"</string>
- <string name="dialerDialpadHintText" msgid="5824490365898349041">"Dayela ukwengeza ikholi"</string>
- <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Ilayisha kusuka ekhadini le-SIM..."</string>
- <string name="simContacts_title" msgid="27341688347689769">"Othintana nabo bekhadi le-SIM"</string>
- <string name="noContactsHelpTextWithSyncForCreateShortcut" msgid="801504710275614594">"Awunabo othintana nabo ongababonisa. (Uma usanda kufaka i-akhawunti, kungase kuthathe amaminithi ambalwa ukuvumelanisa othintana nabo.)"</string>
- <string name="noContactsHelpTextForCreateShortcut" msgid="3081286388667108335">"Awunabo othintana nabo ongababonisa."</string>
- <string name="noContactsHelpText" product="tablet" msgid="6226271923423236696">"Awunabo oxhumana nabo ongabaveza."\n\n"Ukwengeza ongaxhumana nabo, thinta "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", bese uthinta:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ama-akhawunti"</b></font>" ukwengeza noma usethe ama-akhawunti ngongaxhumana nabo ongabavumelanisa ocingweni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Oxhuana nabo basha"</b></font>" ukwenza oxhumna naye umsusa ekuqaleni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Landa/thumela"</b></font>" ukulanda oxhumana nabo kwi-SIM noma ikhadi lakho le-SD"\n</li></string>
- <string name="noContactsHelpText" product="default" msgid="4405064135698982080">"Awunabo oxhumana nabo ongabaveza."\n\n"Ukwengeza oxhumana nabo, thinta "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", bese uthinta:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ama-akhawunti"</b></font>" ukwengeza noma usethe ama-akhawunti ngongaxhumana nabo ongabavumelanisa ocingweni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Oxhuana nabo basha"</b></font>" ukwenz oxhumna naye umsusa ekuqaleni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Landa/thumela"</b></font>" ukulanda oxhumana nabo kwi-SIM noma ikhadi ikhadi le-SD "\n</li></string>
- <string name="noContactsHelpTextWithSync" product="tablet" msgid="6773195806404659174">"Awunabo othintana nabo ongababonisa. (Uma usanda kufaka i-akhawunti, kungase kuthathe imizuzu embalwa ukuvumelanisa othintana nabo.)"\n\n"Ukufaka othintana nabo, cindezela "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" bese uthinta:ama-"\n\n<li><font fgcolor="#ffffffff"><b>"Akhawunti"</b></font>" ukufaka noma ukumisa i-akhawunti nothintana nabo ungavumelanisa efonini"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Bonisa okukhethwa kukho"</b></font>\n"ukushintsha ukuthi yibaphi othintana nabo ababonakalayo"</li>\n<li><font fgcolor="#ffffffff"><b></b>"Othintana naye omusha"</font>\n" ukwenza othintana naye omusha kusuka ekuqaleni "</li>\n<li><font fgcolor="#ffffffff"><b>"Ngenisa/Thekelisa"</b></font>" ukungenisa othintana nabo kwi-SIM yakho noma ikhadi le-SD"\n</li></string>
- <string name="noContactsHelpTextWithSync" product="default" msgid="7016825676090327312">"Awunabo othintana nabo ongababonisa. (Uma usanda kufaka i-akhawunti, kungase kuthathe imizuzu embalwa ukuvumelanisa othintana nabo.)"\n\n"Ukufaka othintana nabo, cindezela "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" bese uthinta:ama-"\n\n<li><font fgcolor="#ffffffff"><b>"Akhawunti"</b></font>" ukufaka noma ukumisa i-akhawunti nothintana nabo ungavumelanisa efonini"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Bonisa okukhethwa kukho"</b></font>\n"ukushintsha ukuthi yibaphi othintana nabo ababonakalayo"</li>\n<li><font fgcolor="#ffffffff"><b></b>"Othintana naye omusha"</font>\n" ukwenza othintana naye omusha kusuka ekuqaleni "</li>\n<li><font fgcolor="#ffffffff"><b>"Ngenisa/Thekelisa"</b></font>"ukungenisa othintana nabo kwi-SIM yakho noma ikhadi le-SD"\n</li></string>
- <string name="noContactsNoSimHelpText" product="tablet" msgid="7823757505923033456">"Awunabo oxhumana nabo ongabaveza."\n\n"Ukwengeza ongaxhumana nabo, thinta "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", bese uthinta:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ama-akhawunti"</b></font>" ukwengeza noma usethe ama-akhawunti ngongaxhumana nabo ongabavumelanisa efonini "\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Oxhuana nabo basha"</b></font>" ukwenza oxhumna naye umsusa ekuqaleni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Landa/thumela"</b></font>" ukulanda oxhumana nabo kwi-SIM noma ikhadi lkhadi le-SD "\n</li></string>
- <string name="noContactsNoSimHelpText" product="default" msgid="6224952277619986841">"Awunabo oxhumana nabo ongabaveza."\n\n"Ukwengeza ongaxhumana nabo, thinta "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>", bese uthinta:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ama-akhawunti"</b></font>" ukwengeza noma usethe ama-akhawunti ngongaxhumana nabo ongabavumelanisa ocingweni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Oxhuana nabo basha"</b></font>" ukwenz oxhumna naye umsusa ekuqaleni"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Landa/thumela"</b></font>" ukulanda oxhumana nabo kwi-SIM noma ikhadi lkho le-SD card"\n</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="tablet" msgid="5415762667445638265">"Awunabo othintana nabo ongababonisa. (Uma usanda kufaka i-akhawunti, kungase kuthathe imizuzu embalwa ukuvumelanisa othintana nabo.)"\n\n"Ukufaka othintana nabo, cindezela "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" bese uthinta:ama-"\n\n<li><font fgcolor="#ffffffff"><b>"Akhawunti"</b></font>" ukufaka noma ukumisa i-akhawunti nothintana nabo ungavumelanisa efonini"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Bonisa okukhethwa kukho"</b></font>\n"ukushintsha ukuthi yibaphi othintana nabo ababonakalayo"</li>\n<li><font fgcolor="#ffffffff"><b></b>"Othintana naye omusha"</font>\n" ukwenza othintana naye omusha kusuka ekuqaleni "</li>\n<li><font fgcolor="#ffffffff"><b></b>"Ngenisa/Thekelisa"</font>\n" ukungenisa othintana nabo kusuka ekhadini lakho le-SD"</li></string>
- <string name="noContactsNoSimHelpTextWithSync" product="default" msgid="7443705129830284440">"Awunabo othintana nabo ongababonisa. (Uma usanda kufaka i-akhawunti, kungase kuthathe imizuzu embalwa ukuvumelanisa othintana nabo.)"\n\n"Ukufaka othintana nabo, cindezela "<font fgcolor="#ffffffff"><b>"Menyu"</b></font>" bese uthinta:ama-"\n\n<li><font fgcolor="#ffffffff"><b>"Akhawunti"</b></font>" ukufaka noma ukumisa i-akhawunti nothintana nabo ungavumelanisa efonini"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Bonisa okukhethwa kukho"</b></font>\n"ukushintsha ukuthi yibaphi othintana nabo ababonakalayo"</li>\n<li><font fgcolor="#ffffffff"><b></b>"Othintana naye omusha"</font>\n" ukwenza othintana naye omusha kusuka ekuqaleni "</li>\n<li><font fgcolor="#ffffffff"><b></b>"Ngenisa/Thekelisa"</font>\n" ukungenisa othintana nabo kusuka ekhadini lakho le-SD"</li></string>
- <string name="noFavoritesHelpText" msgid="3744655776704833277">"Awunazo izintandokazi."\n\n"Ukufaka othintana naye ohlwini lwakho lwezintandokazi:"\n\n" "<li>"Thinta "<b>"ithebhu"</b>" Yothintana nabo"\n</li>" "\n<li>"Thinta othintana naye ofuna ukumufaka ezintandokazini zakho"\n</li>" "\n<li>"Thinta inkanyezi eseduze negama lothintana naye"\n</li></string>
- <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Sebenzisa ikhiphedi yethoni yokuthinta"</string>
- <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Buyela kukholi eqhubekayo"</string>
- <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Yengeza ikholi"</string>
- <string name="callDetailTitle" msgid="5340227785196217938">"Imininingwane yokushayela"</string>
- <string name="toast_call_detail_error" msgid="7200975244804730096">"Ayikwazanga ukufunda imininingwane yokushayela okuceliwe."</string>
- <string name="type_incoming" msgid="6502076603836088532">"Ikholi engenayo"</string>
- <string name="type_outgoing" msgid="343108709599392641">"Ikholi oluphumayo"</string>
- <string name="type_missed" msgid="2720502601640509542">"Ikholi elahlekeli"</string>
- <string name="type_voicemail" msgid="5153139450668549908">"Ivoyisimeyili"</string>
- <string name="actionIncomingCall" msgid="6028930669817038600">"Amakholi angenayo"</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>
- <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> amaminithi <xliff:g id="SECONDS">%s</xliff:g> amasekhondi"</string>
- <string name="favoritesFrequentContacted" msgid="6184232487472425690">"Abathintwa njalo"</string>
- <string name="favoritesFrequentCalled" msgid="6128306889600696124">"Abashayelwa njalo"</string>
<string name="add_contact_dlg_message_fmt" msgid="7986472669444326576">"Faka \"<xliff:g id="EMAIL">%s</xliff:g>\" kothintana nabo?"</string>
- <string name="description_image_button_one" msgid="1740638037139856139">"kunye"</string>
- <string name="description_image_button_two" msgid="5882638439003731308">"okubili"</string>
- <string name="description_image_button_three" msgid="8709731759376015180">"ntathu"</string>
- <string name="description_image_button_four" msgid="3530239685642246130">"okune"</string>
- <string name="description_image_button_five" msgid="1182465427501188413">"okuhlanu"</string>
- <string name="description_image_button_six" msgid="2093656269261415475">"isithupha"</string>
- <string name="description_image_button_seven" msgid="2450357020447676481">"isikhombisa"</string>
- <string name="description_image_button_eight" msgid="6969435115163287801">"isishiyagalombili"</string>
- <string name="description_image_button_nine" msgid="7857248695662558323">"isishiyagalolunye"</string>
- <string name="description_image_button_star" msgid="3365919907520767866">"ikanyezi"</string>
- <string name="description_image_button_zero" msgid="4133108949401820710">"lutho"</string>
- <string name="description_image_button_pound" msgid="3039765597595889230">"iphawundi"</string>
- <string name="description_voicemail_button" msgid="3402506823655455591">"Umyalezo wezwi"</string>
- <string name="description_search_button" msgid="3660807558587384889">"sesha"</string>
- <string name="description_dial_button" msgid="1274091017188142646">"dayela"</string>
- <string name="description_delete_button" msgid="6263102114033407382">"i-backspace"</string>
- <string name="description_digits_edittext" msgid="8760207516497016437">"inombolo okumele uyidayele"</string>
<string name="description_contact_photo" msgid="3387458082667894062">"isithombe sothintana naye"</string>
- <string name="description_minus_button" msgid="6908099247930477551">"susa"</string>
<string name="description_plus_button" msgid="515164827856229880">"kuhlanganise"</string>
- <string name="description_view_contact_detail" msgid="9133251213656414807">"Buka othintana naye"</string>
- <string name="no_sdcard_message" product="nosdcard" msgid="5242558018442357189">"Ayikho indawo yokulondoloza etholakele."</string>
- <string name="no_sdcard_message" product="default" msgid="3357810406684913482">"Alikho ikhadi le-SD elitholakele."</string>
- <string name="import_from_sim" msgid="3859272228033941659">"Ngenisa kusuka kwikhadi le-SIM"</string>
- <string name="import_from_sdcard" product="default" msgid="8668347930577565175">"Ngenisa kusuka esigcineni"</string>
- <string name="export_to_sdcard" product="default" msgid="6092815580965201089">"Thekelisa kusigcini"</string>
- <string name="share_visible_contacts" msgid="890150378880783797">"Yabelana nothintana nabo ababonakalayo"</string>
- <string name="import_one_vcard_string" msgid="9059163467020328433">"Ngenisa ifayela eyodwa ye-vCard"</string>
- <string name="import_multiple_vcard_string" msgid="3810226492811062392">"Ngenisa amafayela amaningi e-vCard"</string>
- <string name="import_all_vcard_string" msgid="5518136113853448474">"Ngenisa wonke amafayela e-vCard"</string>
- <string name="searching_vcard_message" product="nosdcard" msgid="557077639409584945">"Isesha idatha ye-vCard kusigcini"</string>
- <string name="searching_vcard_message" product="default" msgid="3962269894118092049">"Iseshela idatha ye-vCard ekhadini le-SD"</string>
- <string name="scanning_sdcard_failed_message" product="nosdcard" msgid="7221682312959229201">"Isilondolozi asiskeneknga. (Isizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="scanning_sdcard_failed_message" product="default" msgid="189023067829510792">"Ikhadi le-SD aliskenekanga. (Isizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
- <string name="fail_reason_io_error" msgid="6748358842976073255">"Iphutha le-I/O"</string>
- <string name="fail_reason_low_memory_during_import" msgid="875222757734882898">"Isikhala asanele (kungenzeka ifayela ibe nkulu kakhulu)"</string>
- <string name="fail_reason_vcard_parse_error" msgid="888263542360355784">"Yehlulekile ukunqunta i-vCard ngokwesizathu esingalindelekile"</string>
- <string name="fail_reason_not_supported" msgid="8219562769267148825">"Ifomethi ayisekelwe."</string>
- <string name="vcard_import_failed" msgid="5223531255894842406">"Yehlulekile ukulanda i-vCard"</string>
- <string name="import_failure_no_vcard_file" product="nosdcard" msgid="2071820850017305867">"Ayikho ifayela ye-vCard etholakele kusigcini"</string>
- <string name="import_failure_no_vcard_file" product="default" msgid="1754014167874286173">"Ayikho ifayela ye-vCard etholakele ekhadini le-SD"</string>
- <string name="fail_reason_failed_to_collect_vcard_meta_info" msgid="6427931733267328564">"Yehlulekile ukuqoqa ulwazi lwemetha lwefayela noma amafayela e-vCard."</string>
- <string name="fail_reason_failed_to_read_files" msgid="5823434810622484922">"Ifayela elilodwa noma amafayela angaphezulu ehlulekile ukungenisa (%s)."</string>
- <string name="fail_reason_unknown" msgid="1714092345030570863">"Iphutha elingaziwa"</string>
- <string name="select_vcard_title" msgid="7791371083694672861">"Khetha ifayela ye-vCard"</string>
- <string name="caching_vcard_title" msgid="1226272312940516605">"Ukulondoloza isikhashana..."</string>
- <string name="caching_vcard_message" msgid="4926308675041506756">"Ifihla i-vCard/ama-vCard endaweni yokugcina eseduze. Ukulandwa kwangampela kuzoqala khona maduze."</string>
- <string name="progress_notifier_message" msgid="2311011466908220528">"Ingenisa <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="importing_vcard_description" msgid="4245275224298571351">"Iyangenisa <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="reading_vcard_failed_title" msgid="4251647443358422855">"Yehlulekile ukufunda imininingo ye-vCard"</string>
- <string name="reading_vcard_canceled_title" msgid="1925216585981542019">"Ukufundwa kwe-Vcard kumisiwe"</string>
- <string name="importing_vcard_finished_title" msgid="3341541727268747967">"Iqedile ukungenisa i-vCard <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="importing_vcard_canceled_title" msgid="2147475978165599336">"Ukulandwa <xliff:g id="FILENAME">%s</xliff:g> kukhanseliwe"</string>
- <string name="vcard_import_will_start_message" msgid="2804911199145873396">"i-<xliff:g id="FILENAME">%s</xliff:g> izongeniswa maduze nje."</string>
- <string name="vcard_import_will_start_message_with_default_name" msgid="1022969530654129470">"Ifayela izongeniswa maduze nje."</string>
- <string name="vcard_import_request_rejected_message" msgid="2890471184508516011">"Isicelo sokungenisa i-vCard sinqatshelwe. Sicela uzame futhi emva kwesikhathi."</string>
- <string name="vcard_export_will_start_message" msgid="2210241345252081463">"i-<xliff:g id="FILENAME">%s</xliff:g> izothekeliswa maduze nje."</string>
- <string name="vcard_export_request_rejected_message" msgid="2844874826431327531">"Isicelo sokuthekelisa i-vCard sinqatshelwe. Sicela uzame futhi emva kwesikhathi."</string>
- <string name="vcard_unknown_filename" msgid="7171709890959915954">"othintana nabo"</string>
- <string name="percentage" msgid="1044592438199055502">"<xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g>"</string>
- <string name="confirm_export_title" msgid="6834385377255286349">"Thekelisa othintana nabo"</string>
- <string name="confirm_export_message" msgid="2423421354816428708">"Uhlu loxhumana nabo luyothunyelw efayelini: <xliff:g id="VCARD_FILENAME">%s</xliff:g>."</string>
- <string name="exporting_contact_failed_title" msgid="4892358112409576342">"Yehlulekile ukuthumela"</string>
- <string name="exporting_contact_failed_message" msgid="4938527850142003141">"Imininingwane yoxhumana naye ayizange ithunyelwe."\n"Isizathu: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_no_exportable_contact" msgid="8728506011371262065">"Abekho othintana nabo abathumelekayo."</string>
- <string name="fail_reason_too_many_vcard" product="nosdcard" msgid="590645599157376285">"Maningi kakhulu amafayela e-Vcard endaweni yokulondoloza."</string>
- <string name="fail_reason_too_many_vcard" product="default" msgid="4887177369627277474">"Maningi kakhulu amafayela e-Vcard ekhadini le-SD."</string>
- <string name="fail_reason_too_long_filename" msgid="3393764245254738333">"Igama lefayela elidingekayo lide kakhulu (\"<xliff:g id="FILENAME">%s</xliff:g>\")"</string>
- <string name="exporting_vcard_finished_title" msgid="4767045779458185251">"Iqedile ukuthumela kwenye indawo <xliff:g id="FILENAME">%s</xliff:g>"</string>
- <string name="exporting_vcard_canceled_title" msgid="2652222370493306887">"Ukulandwa <xliff:g id="FILENAME">%s</xliff:g> kumisiwe"</string>
- <string name="exporting_contact_list_title" msgid="9072240631534457415">"Ithekelisa idatha yothintana naye"</string>
- <string name="exporting_contact_list_message" msgid="7181663157672374569">"Iminingwane yoxhuana naye ithunyelelwa e: <xliff:g id="FILE_NAME">%s</xliff:g>."</string>
- <string name="fail_reason_could_not_initialize_exporter" msgid="707260459259688510">"Ayikwazanga ukuqalisa isithekelisi: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\""</string>
- <string name="fail_reason_error_occurred_during_export" msgid="3018855323913649063">"Kube khona iphutha ngesikhathi kuthunyelwa: \"<xliff:g id="EXACT_REASON">%s</xliff:g>\"."</string>
- <string name="composer_failed_to_get_database_infomation" msgid="1765944280846236723">"Yehlulekile ukuthola ulwazi lwemininingo egciniwe"</string>
- <string name="composer_has_no_exportable_contact" product="tablet" msgid="6991449891825077743">"Abekho oxhuana nabo abangathumeleka. Uma unabo oxhumana nabo ekhompyutheni yakho yepeni, abanye abahlinzeki be-data kungenzeka bangavumi ukuthi oxhumana nabo bthuyelwe besuka ekhompyutheni yakho yepeni."</string>
- <string name="composer_has_no_exportable_contact" product="default" msgid="3296493229040294335">"Abekho oxhuana nabo abathuelekayo. Um unabo oxhuana nabo ocingweni lwakho, banye abahlinzeki be-data kungenzeka bangavumeli labo oxhuana nabo ukuthi bathunyelwe kolunye ucingo."</string>
- <string name="composer_not_initialized" msgid="2321648986367005254">"Umqambi we-Vcard akazange aqale ngendlela efanele."</string>
- <string name="fail_reason_could_not_open_file" msgid="2067725459821997463">"Ayikwazi ukuvula \"<xliff:g id="FILE_NAME">%s</xliff:g>\": <xliff:g id="EXACT_REASON">%s</xliff:g>"</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="cancel_import_confirmation_message" msgid="3929951040347726757">"Misa ukulndwa kwe <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_export_confirmation_message" msgid="1995462401949262638">"Misa ukulandwa kwe <xliff:g id="FILENAME">%s</xliff:g>?"</string>
- <string name="cancel_vcard_import_or_export_failed" msgid="6139900383366166706">"Yehlulekile ukukhansela ukungenisa/thekelisa i-vCard"</string>
<string name="search_settings_description" msgid="2675223022992445813">"Amagama othintana nabo"</string>
- <string name="add_2sec_pause" msgid="9214012315201040129">"Faka ukumisa okwesikhashana kwamasekhondi angu-2"</string>
- <string name="add_wait" msgid="3360818652790319634">"Yengeza ukulinda"</string>
- <string name="call_disambig_title" msgid="4392886850104795739">"Khetha inombolo"</string>
- <string name="call_settings" msgid="7666474782093693667">"Izilungiselelo"</string>
- <string name="sms_disambig_title" msgid="5846266399240630846">"Khetha inombolo"</string>
- <string name="make_primary" msgid="5829291915305113983">"Khumbula lokhu okukhethiwe"</string>
<string name="quickcontact_missing_app" msgid="358168575340921552">"Ayikho insiza etholakele ukubhekana nalengxenye."</string>
- <string name="missing_name" msgid="8745511583852904385">"(alikho igama)"</string>
- <string name="menu_accounts" msgid="8499114602017077970">"Ama-akhawunti"</string>
- <string name="menu_clear_frequents" msgid="7688250191932838833">"Sula oxhumana nabo njalo"</string>
- <string name="menu_contacts_filter" msgid="2165153460860262501">"Othintana nabo abazoboniswa"</string>
- <string name="menu_import_export" msgid="26217871113229507">"Ngenisa/Thekelisa"</string>
- <string name="dialog_import_export" msgid="4360648034889921624">"Ngenisa/Thekelisa othintana nabo"</string>
- <string name="dialog_import" msgid="2431698729761448759">"Ngenisa othintana nabo"</string>
<string name="menu_share" msgid="943789700636542260">"Yabelana"</string>
<string name="share_via" msgid="563121028023030093">"Abelana nothintana naye nge"</string>
- <string name="share_error" msgid="948429331673358107">"Lona oxhumana naye ngeke ukwazi ukwabelana ngaye."</string>
- <string name="nameLabelsGroup" msgid="2034640839640477827">"Igama"</string>
- <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Igama lokudlala"</string>
- <string name="organizationLabelsGroup" msgid="2478611760751832035">"Inhlangano"</string>
- <string name="websiteLabelsGroup" msgid="4202998982804009261">"Iwebhusayithi"</string>
- <string name="eventLabelsGroup" msgid="3695433812142818803">"Izehlakalo"</string>
- <string name="relationLabelsGroup" msgid="1854373894284572781">"Ubudlelwano"</string>
- <string name="groupsLabel" msgid="8573535366319059326">"Amaqembu"</string>
- <string name="dialog_new_contact_account" msgid="9044704073286262197">"Yenza othintana naye ngaphansi kwe-akhawunti"</string>
<string name="dialog_new_group_account" msgid="2318032089273496830">"Yenza isigcawu ngaphansi kwe-akhawunti"</string>
- <string name="menu_sync_remove" msgid="3266725887008450161">"Khipha iqembu lokuvumelanisa"</string>
- <string name="dialog_sync_add" msgid="8267045393119375803">"Ngeza iqembu lokuvumelanisa"</string>
- <string name="display_more_groups" msgid="2682547080423434170">"Amanye amaqembu..."</string>
- <string name="display_ungrouped" msgid="6885954210243119591">"Bonke Abanye Othintana Nabo"</string>
- <string name="display_all_contacts" msgid="2031647544742889505">"Bonke oxhumana nabo"</string>
- <string name="display_warn_remove_ungrouped" msgid="8872290721676651414">"Iyasusa \"<xliff:g id="GROUP">%s</xliff:g>\" kokuvumelanisiwe izophinde isuse nanoma ibaphi oxhumana nabo abangelona iqoqo."</string>
- <string name="account_phone" product="tablet" msgid="7946049152658522054">"Ithebhulethi kuphela, ayivumelanisiwe"</string>
- <string name="account_phone" product="default" msgid="3682950835276226870">"Ifoni kuphela, ayivumelanisiwe"</string>
- <string name="call_custom" msgid="7756571794763171802">"Shayela <xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="call_home" msgid="1990519474420545392">"Shayela ekhaya"</string>
- <string name="call_mobile" msgid="7502236805487609178">"Shayela ifoni"</string>
- <string name="call_work" msgid="5328785911463744028">"Shayela emsebenzini"</string>
- <string name="call_fax_work" msgid="7467763592359059243">"Shayela ifeksi yasemsebenzini"</string>
- <string name="call_fax_home" msgid="8342175628887571876">"Shayela ifeksi yasekhaya"</string>
- <string name="call_pager" msgid="9003902812293983281">"Shayela isicingo"</string>
- <string name="call_other" msgid="8563753966926932052">"Shayela"</string>
- <string name="call_callback" msgid="1910165691349426858">"Shayela ukuphinda ushaye"</string>
- <string name="call_car" msgid="3280537320306436445">"Shayela imoto"</string>
- <string name="call_company_main" msgid="6105120947138711257">"Shayela isisekelo senkampani"</string>
- <string name="call_isdn" msgid="1541590690193403411">"Shayela i-ISDN"</string>
- <string name="call_main" msgid="6082900571803441339">"Shayela isisekelo"</string>
- <string name="call_other_fax" msgid="5745314124619636674">"Shayela ifeksi"</string>
- <string name="call_radio" msgid="8296755876398357063">"Shayela umsakazo"</string>
- <string name="call_telex" msgid="2223170774548648114">"Shayela i-telex"</string>
- <string name="call_tty_tdd" msgid="8951266948204379604">"Shayela i-TTY/TDD"</string>
- <string name="call_work_mobile" msgid="8707874281430105394">"Shayela ifoni yasemsebenzini"</string>
- <string name="call_work_pager" msgid="3419348514157949008">"Shayela isicingo sasemsebenzini"</string>
- <string name="call_assistant" msgid="2141641383068514308">"Shayela<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="call_mms" msgid="6274041545876221437">"Shayela i-MMS"</string>
- <string name="sms_custom" msgid="5932736853732191825">" Okubhaliwe<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="sms_home" msgid="7524332261493162995">"Ikhaya lombhalo"</string>
- <string name="sms_mobile" msgid="5200107250451030769">"Umbhalo wefoni"</string>
- <string name="sms_work" msgid="2269624156655267740">"Bhalela emsebenzini"</string>
- <string name="sms_fax_work" msgid="8028189067816907075">"Bhalela ifeksi yasemsebenzini"</string>
- <string name="sms_fax_home" msgid="9204042076306809634">"Bhalela ifeksi yasekhaya"</string>
- <string name="sms_pager" msgid="7730404569637015192">"Bhalela isicingo"</string>
- <string name="sms_other" msgid="806127844607642331">"Umbhalo"</string>
- <string name="sms_callback" msgid="5004824430094288752">"Bhalela ukuphinda ukushayela"</string>
- <string name="sms_car" msgid="7444227058437359641">"Bhalela imoto"</string>
- <string name="sms_company_main" msgid="118970873419678087">"Bhalela isisekelo senkampani"</string>
- <string name="sms_isdn" msgid="8153785037515047845">"Bhalela i-ISDN"</string>
- <string name="sms_main" msgid="8621625784504541679">"Bhalela isisekelo"</string>
- <string name="sms_other_fax" msgid="3888842199855843152">"Ifeksi yombhalo"</string>
- <string name="sms_radio" msgid="3329166673433967820">"Bhalela umsakazo"</string>
- <string name="sms_telex" msgid="9034802430065267848">"Bhalela i-telex"</string>
- <string name="sms_tty_tdd" msgid="6782284969132531532">"Bhalela i-TTY/TDD"</string>
- <string name="sms_work_mobile" msgid="2459939960512702560">"Bhalela ifoni yasemsebenzini"</string>
- <string name="sms_work_pager" msgid="5566924423316960597">"Bhalela isicingo sasemsebenzini"</string>
- <string name="sms_assistant" msgid="2773424339923116234">"Okubhaliwe<xliff:g id="ASSISTANT">%s</xliff:g>"</string>
- <string name="sms_mms" msgid="4069352461380762677">"Bhala i-MMS"</string>
- <string name="sms" msgid="1756857139634224222">"Umlayezo wombhalo"</string>
- <string name="email_home" msgid="8573740658148184279">"Ikhaya le-imeyili"</string>
- <string name="email_mobile" msgid="2042889209787989814">"Imeyla ifoni"</string>
- <string name="email_work" msgid="2807430017302722689">"Imeyila emsebenzini"</string>
- <string name="email_other" msgid="3454004077967657109">"I-imeyli"</string>
- <string name="email_custom" msgid="7548003991586214105">"I-imeyili<xliff:g id="CUSTOM">%s</xliff:g>"</string>
- <string name="email" msgid="5668400997660065897">"I-imeyili"</string>
- <string name="map_home" msgid="1243547733423343982">"Vuka ikheli lasekhaya"</string>
- <string name="map_work" msgid="1360474076921878088">"Buka ikheli lasemsebenzini"</string>
- <string name="map_other" msgid="3817820803587012641">"Buka ikheli"</string>
- <string name="map_custom" msgid="6184363799976265281">"Buka <xliff:g id="CUSTOM">%s</xliff:g> ikheli"</string>
- <string name="chat_aim" msgid="2588492205291249142">"Xoxa usebenzisa i-AIM"</string>
- <string name="chat_msn" msgid="8041633440091073484">"Xoxa usebenzisa i-Windows Live"</string>
- <string name="chat_yahoo" msgid="6629211142719943666">"Xoxa usebenzisa i-Yahoo"</string>
- <string name="chat_skype" msgid="1210045020427480566">"Xoxa usebenzisa i-Skype"</string>
- <string name="chat_qq" msgid="4294637812847719693">"Xoxa usebenzisa i-QQ"</string>
- <string name="chat_gtalk" msgid="981575737258117697">"Xoxa usebenzisa i-Google Talk"</string>
- <string name="chat_icq" msgid="8438405386153745775">"Xoxa usebenzisa i-ICQ"</string>
- <string name="chat_jabber" msgid="7561444230307829609">"Xoxa usebenzisa i-Jabber"</string>
- <string name="chat" msgid="9025361898797412245">"Xoxa"</string>
<string name="audio_chat" msgid="2535716629358298691">"Ingxoxo yezw"</string>
<string name="video_chat" msgid="1872255818640336072">"Ingxoxo yevidiyo"</string>
- <string name="postal_address" msgid="8765560217149624536">"Ikheli"</string>
- <string name="postal_street" msgid="8133143961580058972">"Isitaladi"</string>
- <string name="postal_pobox" msgid="4431938829180269821">"PO box"</string>
- <string name="postal_neighborhood" msgid="1450783874558956739">"Indawo yasekhaya"</string>
- <string name="postal_city" msgid="6597491300084895548">"Idolobha"</string>
- <string name="postal_region" msgid="6045263193478437672">"Idolobha"</string>
- <string name="postal_postcode" msgid="572136414136673751">"Ikhodi ye-ZIP"</string>
- <string name="postal_country" msgid="7638264508416368690">"Izwe"</string>
- <string name="full_name" msgid="6602579550613988977">"Igama"</string>
- <string name="name_given" msgid="1687286314106019813">"Igama elinikeziwe"</string>
- <string name="name_family" msgid="3416695586119999058">"Igama lomkhaya"</string>
- <string name="name_prefix" msgid="59756378548779822">"Qamba isiqalo"</string>
- <string name="name_middle" msgid="8467433655992690326">"Igama"</string>
- <string name="name_suffix" msgid="3855278445375651441">"Qamba isijobelelo"</string>
- <string name="name_phonetic_given" msgid="6853570431394449191">"Igama elinikeziwe lefonethikhi"</string>
- <string name="name_phonetic_middle" msgid="8643721493320405200">"Igama lefonethikhi"</string>
- <string name="name_phonetic_family" msgid="462095502140180305">"Igama lomkhaya wefonethikhi"</string>
- <string name="name_phonetic" msgid="4259595234312430484">"Igama leFonethikhi"</string>
<string name="connections" msgid="8098440723172028350">"Oxhumana nabo"</string>
<string name="add_connection_button" msgid="4861308615789601727">"Yengeza oxhumana nabo"</string>
<string name="recent" msgid="2659189233141493004">"Okwakamuva"</string>
@@ -407,7 +138,7 @@
<string name="display_options_sort_list_by" msgid="6080091755852211076">"Hlunga uhlu nge"</string>
<string name="display_options_sort_by_given_name" msgid="184916793466387067">"Igama elinikeziwe"</string>
<string name="display_options_sort_by_family_name" msgid="7857986975275712622">"Igama lomkhaya"</string>
- <string name="display_options_view_names_as" msgid="18022868169627979">"Buka amagama othintana nabo njenge"</string>
+ <string name="display_options_view_names_as" msgid="4386932036180428374">"Buka amagama woxhumana nabo"</string>
<string name="display_options_view_given_name_first" msgid="6968288511197363292">"Igama elinikeziwe kuqala"</string>
<string name="display_options_view_family_name_first" msgid="1447288164951453714">"Igama lomkhaya kuqala"</string>
<string name="take_photo" msgid="7496128293167402354">"Thatha isithombe"</string>
@@ -424,7 +155,6 @@
<string name="menu_display_all" msgid="8887488642609786198">"Bonisa konke"</string>
<string name="menu_select_all" msgid="621719255150713545">"Khetha konke"</string>
<string name="menu_select_none" msgid="7093222469852132345">"Ungakhethi konke"</string>
- <string name="no_contacts_selected" msgid="5877803471037324613">"Abekho othintana nabo abakhethiwe."</string>
<string name="add_field" msgid="2384260056674995230">"Yengeza enye inkambu"</string>
<string name="add_new_entry_for_section" msgid="5223080690667565044">"Faka okusha"</string>
<string name="add_organization" msgid="7311893231158291197">"Ngeza inhlangano"</string>
@@ -438,31 +168,19 @@
<item quantity="one" msgid="148365587896371969">"akuhlanganisiwe"</item>
<item quantity="other" msgid="425683718017380845">"ihlanganiswe kusuka emithombeni engu-<xliff:g id="COUNT">%0$d</xliff:g>"</item>
</plurals>
- <string name="local_invisible_directory" msgid="6046691709127661065">"Okunye"</string>
<string name="aggregation_suggestion_join_dialog_message" msgid="3842757977671434836">"Joyina othintana naye wamanje nothintana naye okhethiwe?"</string>
<string name="aggregation_suggestion_edit_dialog_message" msgid="6549585283910518095">"Shintshela ekuhleleni othintana naye okhethiwe? Ulwazi olufakile kuze kube manje luzokopishwa."</string>
<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="directory_search_label" msgid="1887759056597975053">"Uhla lwemibhalo"</string>
- <string name="local_search_label" msgid="2551177578246113614">"Bonke oxhumana nabo"</string>
<string name="toast_making_personal_copy" msgid="288549957278065542">"Idala ikhophi yomuntu siqu"</string>
- <string name="list_filter_all_accounts" msgid="8908683398914322369">"Bonke othintana nabo"</string>
- <string name="list_filter_all_starred" msgid="5031734941601931356">"Okunenkanyezi"</string>
<string name="list_filter_custom" msgid="8910173055702057002">"Ngokwezifiso"</string>
- <string name="list_filter_customize" msgid="4789963356004169321">"Enza ngendlela oyifisayo"</string>
- <string name="list_filter_phones" msgid="735313795643493365">"Bonke othintana nabo kanye nezinombolo zabo zocingo"</string>
- <string name="list_filter_single" msgid="5871400283515893087">"Othintana nabo"</string>
- <string name="custom_list_filter" msgid="7836035257402013957">"Cacisa ukubuka ngokwezifisio"</string>
- <string name="contact_list_loading" msgid="5488620820563977329">"Iyalayisha…"</string>
<string name="activity_title_settings" msgid="5464130076132770781">"Izilungiselelo"</string>
- <string name="activity_title_contacts_filter" msgid="8275542497615516969">"Othintana nabo abazoboniswa"</string>
<string name="menu_settings" msgid="377929915873428211">"Izilungiselelo"</string>
<string name="menu_help" msgid="5123887102216637725">"Usizo"</string>
<string name="preference_displayOptions" msgid="1341720270148252393">"Izinketho zokubonisa"</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="hint_findContacts" msgid="1808681193458772072">"Thola othintana nabo"</string>
- <string name="non_phone_caption" msgid="1541655052330027380">"Inombolo yocingo"</string>
+ <string name="non_phone_caption" msgid="1541655052330027380">"Inombolo yefoni"</string>
<string name="non_phone_add_to_contacts" msgid="6590985286250471169">"Yengeza kothintana nabo"</string>
<string name="activity_title_confirm_add_detail" msgid="4065089866210730616">"Faka koxhumana nabo"</string>
<string name="non_phone_close" msgid="7608506439725515667">"Vala"</string>
@@ -497,61 +215,7 @@
<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">"Misa iphrofayli yami"</string>
<string name="enter_contact_name" msgid="1738391320566349924">"Thayipha igama lomuntu"</string>
- <string name="view_updates_from_group" msgid="1782685984905600034">"Buka Okwenziwe Kabusha"</string>
- <plurals name="notification_voicemail_title">
- <item quantity="one" msgid="1746619685488504230">"Ivoyisimeyili"</item>
- <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ama-meyli ezwi"</item>
- </plurals>
- <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Dlala"</string>
- <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
- <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"I-imeyli entsha esuka ku <xliff:g id="CALLER">%1$s</xliff:g>"</string>
- <string name="voicemail_playback_error" msgid="1811242131549854624">"Yehlulekile ukudlala i-voicemail."</string>
- <string name="voicemail_buffering" msgid="738287747618697097">"Ukugcina kumthamo"</string>
- <string name="voicemail_fetching_content" msgid="877911315738258780">"ilanda i-voicemail..."</string>
- <string name="voicemail_fetching_timout" msgid="6691792377574905201">"Yehlulekile ukulanda i-voicemail."</string>
- <string name="call_log_new_header" msgid="846546437517724715">"Okusha"</string>
- <string name="call_log_old_header" msgid="6262205894314263629">"Okudadlana"</string>
- <string name="call_log_voicemail_header" msgid="3945407886667089173">"Amakholi anevoyisimeyili kuphela"</string>
- <string name="call_log_incoming_header" msgid="2787722299753674684">"Amakholi angenayo kuphela"</string>
- <string name="call_log_outgoing_header" msgid="761009180766735769">"Amakholi aphumayo kuphela"</string>
- <string name="call_log_missed_header" msgid="8017148056610855956">"Amakholi agejiwe kuphela"</string>
- <string name="voicemail_status_voicemail_not_available" msgid="3021980206152528883">"Ayikwazi ukuxhuma kusiphakeli se-imeyli yezwi."</string>
- <string name="voicemail_status_messages_waiting" msgid="7113421459602803605">"Ayikwazi ukuxhumana nesiphakeli semeyli yezwi. Ama-imeyli ezwi amasha alindile"</string>
- <string name="voicemail_status_configure_voicemail" msgid="3738537770636895689">"Setha umyalezo wakho wephimbo."</string>
- <string name="voicemail_status_audio_not_available" msgid="3369618334553341626">"Umsindo awutholakali"</string>
- <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Setha"</string>
- <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Shayela ivoyisimeyili"</string>
- <string name="voicemail_speed_slowest" msgid="1733460666177707312">"ijubane elincane kakhulu"</string>
- <string name="voicemail_speed_slower" msgid="1508601287347216244">"ijubane elinensayo"</string>
- <string name="voicemail_speed_normal" msgid="9033988544627228892">"ijubane elijwayelekile"</string>
- <string name="voicemail_speed_faster" msgid="2019965121475935488">"ijubane elisheshayo"</string>
- <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Ijubane eliphezulu kakhudlwane"</string>
- <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
<string name="group_name_hint" msgid="238359485263401293">"Igama leqemnbu"</string>
- <string name="nfc_vcard_file_name" msgid="2823095213265993609">"Othintana naye utholakale nge-NFC"</string>
- <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Bonisa eziphumayo kuphela"</string>
- <string name="menu_show_incoming_only" msgid="7534206815238877417">"Bonisa okungenayo kuphela"</string>
- <string name="menu_show_missed_only" msgid="154473166059743996">"Bonisa okugejiwe kuphela"</string>
- <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Bonisa ama-imeyli ezwi kuphela"</string>
- <string name="menu_show_all_calls" msgid="7560347482073345885">"Bonisa zonke izingcingo ezenziwe"</string>
- <string name="status_available" msgid="5586870015822828392">"Yatholakala"</string>
- <string name="status_away" msgid="1838861100379804730">"Akekho"</string>
- <string name="status_busy" msgid="9147992455450257136">"Matasa"</string>
- <string name="description_call_log_play_button" msgid="651182125650429846">"Dlala i-imeyli yezwi"</string>
- <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Ikholi engenayo"</string>
- <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Ikholi eliphumayo"</string>
- <string name="description_call_log_missed_call" msgid="2242805209983708825">"Ikholi ekulahlekele"</string>
- <string name="description_call_log_voicemail" msgid="4600798771975158948">"Ivoyisimeyili"</string>
- <string name="description_add_contact" msgid="3103414772502485851">"Faka oxhumana naye"</string>
- <string name="description_view_contact" msgid="5205669345700598415">"Bheka oxhumana naye <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call" msgid="3443678121983852666">"Fonela <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_send_text_message" msgid="7803126439934046891">"Hambisa umyalezo ku <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"I-imeyli yezwi engazwakalanga"</string>
- <string name="description_send_message" msgid="6046623392322890962">"Thumela imiyalezo ku <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_dial_phone_number" msgid="8831647331642648637">"Shayela ucingo <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="description_quick_contact_for" msgid="6737516415168327789">"Oxhumene naye ngokushesha ku <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
- <string name="user_profile_contacts_list_header" msgid="5582421742835006940">"Mina"</string>
<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>
@@ -564,10 +228,6 @@
<string name="keep_local" msgid="1258761699192993322">"Gcina kuseduze"</string>
<string name="add_account" msgid="8201790677994503186">"Engeza i-akhawunti"</string>
<string name="add_new_account" msgid="5748627740680940264">"Yengeza i-akhawunti enthsha"</string>
- <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"ucingo aluthunyelwanga"</string>
- <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Ukuya emyalezweni wephimbo, yana ezisethweni > zemenyu."</string>
- <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Ukushayela i-voicemail, vala kuqala imodi Yendiza."</string>
<string name="menu_export_database" msgid="2659719297530170820">"Khipha amafayela emininingo egciniwe"</string>
- <string name="action_menu_overflow_description" msgid="2303272250613084574">"Izinketho eziningi"</string>
- <string name="expand_collapse_name_fields_description" msgid="8682630859539604311">"Nweba noma goqa izinkambu zegama"</string>
+ <string name="contact_detail_picture_description" msgid="6083230522651287030">"Isithombe. Khetha ukuze ushintshe"</string>
</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 5a5016e..6da3b94 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -51,63 +51,4 @@
<attr name="layout_widePaddingRight" format="dimension"/>
</declare-styleable>
- <declare-styleable name="ProportionalLayout">
- <attr name="direction" format="string"/>
- <attr name="ratio" format="float"/>
- </declare-styleable>
-
- <declare-styleable name="ContactBrowser">
- <attr name="contact_browser_list_padding_left" format="dimension"/>
- <attr name="contact_browser_list_padding_right" format="dimension"/>
- <attr name="contact_browser_background" format="reference"/>
- </declare-styleable>
-
- <declare-styleable name="ContactListItemView">
- <attr name="list_item_height" format="dimension"/>
- <attr name="list_section_header_height" format="dimension"/>
- <attr name="activated_background" format="reference"/>
- <attr name="section_header_background" format="reference"/>
- <attr name="list_item_divider" format="reference"/>
- <attr name="list_item_padding_top" format="dimension"/>
- <attr name="list_item_padding_right" format="dimension"/>
- <attr name="list_item_padding_bottom" format="dimension"/>
- <attr name="list_item_padding_left" format="dimension"/>
- <attr name="list_item_gap_between_image_and_text" format="dimension"/>
- <attr name="list_item_gap_between_label_and_data" format="dimension"/>
- <attr name="list_item_presence_icon_margin" format="dimension"/>
- <attr name="list_item_presence_icon_size" format="dimension"/>
- <attr name="list_item_photo_size" format="dimension"/>
- <attr name="list_item_profile_photo_size" format="dimension"/>
- <attr name="list_item_prefix_highlight_color" format="color"/>
- <attr name="list_item_header_text_indent" format="dimension" />
- <attr name="list_item_header_text_color" format="color" />
- <attr name="list_item_header_text_size" format="dimension" />
- <attr name="list_item_header_height" format="dimension" />
- <attr name="list_item_header_underline_height" format="dimension" />
- <attr name="list_item_header_underline_color" format="color" />
- <attr name="list_item_contacts_count_text_color" format="color" />
- <attr name="list_item_text_indent" format="dimension" />
- <attr name="list_item_contacts_count_text_size" format="dimension" />
- <attr name="list_item_data_width_weight" format="integer" />
- <attr name="list_item_label_width_weight" format="integer" />
- </declare-styleable>
-
- <declare-styleable name="CallLog">
- <attr name="call_log_primary_text_color" format="color" />
- <attr name="call_log_primary_background_color" format="color" />
- <attr name="call_log_secondary_text_color" format="color" />
- <attr name="call_log_secondary_background_color" format="color" />
- <attr name="call_log_header_color" format="color" />
- </declare-styleable>
-
- <declare-styleable name="VoicemailStatus">
- <attr name="call_log_voicemail_status_height" format="dimension" />
- <attr name="call_log_voicemail_status_background_color" format="color" />
- <attr name="call_log_voicemail_status_text_color" format="color" />
- <attr name="call_log_voicemail_status_action_text_color" format="color" />
- </declare-styleable>
-
- <declare-styleable name="Favorites">
- <attr name="favorites_padding_bottom" format="dimension" />
- </declare-styleable>
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index cb2b1ca..7fc7c6e 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -14,10 +14,6 @@
limitations under the License.
-->
<resources>
- <color name="textColorIconOverlay">#fff</color>
- <color name="textColorIconOverlayShadow">#000</color>
-
- <color name="shortcut_overlay_text_background">#7f000000</color>
<color name="quickcontact_list_divider">#ffcdcdcd</color>
<color name="quickcontact_list_background">#ffe2e2e2</color>
@@ -34,49 +30,13 @@
<!-- 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 describing an unconsumed missed call. -->
- <color name="call_log_missed_call_highlight_color">#FF0000</color>
-
- <!-- Color of the text describing an unconsumed voicemail. -->
- <color name="call_log_voicemail_highlight_color">#33b5e5</color>
-
- <!-- Colour background for the voicemail playback ui. -->
- <color name="voicemail_playback_ui_background">@android:color/black</color>
-
- <!-- Colour of voicemail progress bar to the right of position indicator. -->
- <color name="voicemail_playback_seek_bar_yet_to_play">#44ffffff</color>
-
- <!-- Colour of voicemail progress bar to the left of position indicator. -->
- <color name="voicemail_playback_seek_bar_already_played">#ccffffff</color>
-
- <!-- Color of the theme of the People app -->
- <color name="people_app_theme_color">#33B5E5</color>
-
- <!-- Secondary text color in the Phone app -->
- <color name="dialtacts_secondary_text_color">#888888</color>
-
- <!-- Colors in the contact browser list -->
- <color name="contact_count_text_color">#AAAAAA</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 text for buttons in the action bar -->
<color name="action_bar_button_text_color">#FFFFFF</color>
- <!-- Color of the status message for starred contacts in the People app -->
- <color name="people_contact_tile_status_color">#CCCCCC</color>
-
- <!-- Color of the semi-transparent shadow box on contact tiles -->
- <color name="contact_tile_shadow_box_color">#7F000000</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 image view placeholder. -->
- <color name="image_placeholder">#DDDDDD</color>
-
- <!-- Standard color for selected items. -->
- <color name="item_selected">#660099cc</color>
-
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 94faf49..598846a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -29,20 +29,20 @@
<dimen name="editor_round_button_padding_top">8dip</dimen>
<dimen name="editor_round_button_padding_bottom">8dip</dimen>
- <!-- Left padding of the label in the add field button for the contact editor -->
- <dimen name="editor_add_field_label_left_padding">16dip</dimen>
-
- <!-- Width of the Type-Label in the Editor -->
- <dimen name="editor_type_label_width">100dip</dimen>
-
- <!-- Left padding of a field in the Editor -->
- <dimen name="editor_field_left_padding">4dip</dimen>
+ <!-- Minimum height of a row in the Editor -->
+ <dimen name="editor_min_line_item_height">48dip</dimen>
<!-- Right padding of a field in the Editor -->
<dimen name="editor_field_right_padding">4dip</dimen>
- <!-- Minimum height of a row in the Editor -->
- <dimen name="editor_min_line_item_height">48dip</dimen>
+ <!-- Left padding of a field in the Editor -->
+ <dimen name="editor_field_left_padding">4dip</dimen>
+
+ <!-- Width of the Type-Label in the Editor -->
+ <dimen name="editor_type_label_width">100dip</dimen>
+
+ <!-- Left padding of the label in the add field button for the contact editor -->
+ <dimen name="editor_add_field_label_left_padding">16dip</dimen>
<!-- Height of the shadow asset under the photo on the contact detail page -->
<dimen name="detail_contact_photo_shadow_height">10dip</dimen>
@@ -93,18 +93,12 @@
<!-- Left and right padding for a contact detail item -->
<dimen name="detail_item_icon_margin">8dip</dimen>
- <!-- Left and right padding for a contact detail item -->
- <dimen name="detail_item_side_margin">16dip</dimen>
-
<!-- Top and bottom padding for a contact detail item -->
<dimen name="detail_item_vertical_margin">8dip</dimen>
<!-- Minimum height of a row in the contact detail -->
<dimen name="detail_min_line_item_height">48dip</dimen>
- <!-- Width of height of an icon from a third-party app in the networks section of the contact card. -->
- <dimen name="detail_network_icon_size">32dip</dimen>
-
<!-- Font size for the display name in header of the contact detail page -->
<dimen name="detail_header_name_text_size">36sp</dimen>
@@ -112,27 +106,12 @@
(phone number, email, etc.) and a secondary action button -->
<dimen name="detail_vertical_divider_vertical_margin">16dip</dimen>
- <!-- Padding to be used between a visible scrollbar and the contact list -->
- <dimen name="list_visible_scrollbar_padding">32dip</dimen>
-
<!-- Font size used for the contact name in the widget -->
<dimen name="widget_text_size_name">14sp</dimen>
<!-- Font size used for the social status in the widget -->
<dimen name="widget_text_size_snippet">13sp</dimen>
- <!-- Size of the shortcut icon. 0dip means: use the system default -->
- <dimen name="shortcut_icon_size">0dip</dimen>
-
- <!-- Width of darkened border for shortcut icon -->
- <dimen name="shortcut_icon_border_width">1dp</dimen>
-
- <!-- Text size of shortcut icon overlay text -->
- <dimen name="shortcut_overlay_text_size">12dp</dimen>
-
- <!-- Extra vertical padding for darkened background behind shortcut icon overlay text -->
- <dimen name="shortcut_overlay_text_background_padding">1dp</dimen>
-
<!-- Height of list sections (A, B, C) that show the first character of the contacts -->
<dimen name="list_section_height">25dip</dimen>
@@ -160,89 +139,22 @@
<!-- Height of the quick contact photo container (for screens that are too large to use the screen width/height as a constraint)-->
<dimen name="quick_contact_photo_container_height">180dip</dimen>
- <!-- Height of edit text in dialpad fragment -->
- <dimen name="dialpad_horizontal_margin">0dip</dimen>
- <dimen name="dialpad_vertical_margin">2dip</dimen>
- <dimen name="dialpad_digits_text_size">35sp</dimen>
-
- <!-- Just used in landscape mode -->
- <dimen name="dialpad_digits_height">0px</dimen>
- <dimen name="dialpad_digits_margin_bottom">0px</dimen>
- <dimen name="dialpad_center_margin">3dp</dimen>
- <dimen name="dialpad_button_margin">2dp</dimen>
- <!-- Match call_button_height to Phone's dimens/in_call_end_button_height -->
- <dimen name="call_button_height">74dp</dimen>
-
<!-- Width of search view in action bar. Use 0dip for MATCH_PARENT -->
<dimen name="search_view_width">0dip</dimen>
- <!-- contact browser list margins -->
- <dimen name="contact_browser_list_header_left_margin">16dip</dimen>
- <dimen name="contact_browser_list_header_right_margin">@dimen/list_visible_scrollbar_padding</dimen>
- <dimen name="contact_browser_list_item_photo_size">64dip</dimen>
- <dimen name="contact_browser_list_item_text_indent">8dip</dimen>
- <dimen name="contact_browser_list_top_margin">8dip</dimen>
<!-- For join screen. Mainly for tablet. -->
<dimen name="join_header_left_margin">@dimen/contact_browser_list_header_left_margin</dimen>
<dimen name="join_header_right_margin">@dimen/contact_browser_list_header_right_margin</dimen>
<dimen name="join_header_top_margin">16dip</dimen>
<dimen name="join_header_bottom_margin">0dip</dimen>
- <!-- Padding between the action bar's bottom edge and the first header
- in contacts/group lists. -->
- <dimen name="list_header_extra_top_padding">0dip</dimen>
-
- <!-- ContactTile Layouts -->
- <!--
- Use sp instead of dip so that the shadowbox heights can all scale uniformly
- when the font size is scaled for accessibility purposes
- -->
- <dimen name="contact_tile_shadowbox_height">48sp</dimen>
-
- <!-- Top padding of the ListView in the contact tile list -->
- <dimen name="contact_tile_list_padding_top">0dip</dimen>
-
- <!-- Call Log -->
- <dimen name="call_log_call_action_size">32dip</dimen>
- <dimen name="call_log_call_action_width">48dip</dimen>
- <dimen name="call_log_icon_margin">4dip</dimen>
- <dimen name="call_log_inner_margin">8dip</dimen>
- <dimen name="call_log_outer_margin">16dip</dimen>
- <dimen name="call_log_indent_margin">24dip</dimen>
- <dimen name="call_log_list_item_height">56dip</dimen>
- <dimen name="call_log_list_contact_photo_size">64dip</dimen>
- <dimen name="call_detail_contact_name_margin">24dip</dimen>
- <dimen name="call_detail_button_spacing">2dip</dimen>
-
- <!-- Empty message margins -->
- <dimen name="empty_message_top_margin">48dip</dimen>
<dimen name="no_accounts_message_margin">20dip</dimen>
- <!-- For contact filter setting screens -->
- <dimen name="contact_filter_left_margin">16dip</dimen>
- <dimen name="contact_filter_right_margin">16dip</dimen>
- <dimen name="contact_filter_item_min_height">48dip</dimen>
- <dimen name="contact_filter_icon_size">32dip</dimen>
<dimen name="contact_filter_header_min_height">24dip</dimen>
- <!-- Vertical and horizontal padding in between contact tiles -->
- <dimen name="contact_tile_divider_padding">1dip</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>
- <!-- Layout weight values for dialpad screen. These layouts will be used in one
- LinearLayout (dialpad_fragment.xml), configuring dialpad screen's vertical
- ratio. -->
- <integer name="dialpad_layout_weight_digits">20</integer>
- <integer name="dialpad_layout_weight_dialpad">65</integer>
- <integer name="dialpad_layout_weight_additional_buttons">15</integer>
-
- <!-- Minimum height used with @drawable/list_section_divider_holo_custom.
- Right now the drawable has implicit 32dip minimal height, which is confusing.
- This value is for making the hidden configuration explicit in xml. -->
- <dimen name="list_section_divider_min_height">32dip</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>
@@ -251,6 +163,4 @@
wide screen devices). -->
<dimen name="contact_picker_contact_list_min_height">550dip</dimen>
- <!-- Min with of fake menu buttons, which should be same as ActionBar's one -->
- <dimen name="fake_menu_button_min_width">56dip</dimen>
</resources>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index 2110a8b..3f5bff1 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -18,85 +18,10 @@
-->
<resources>
- <!-- Flag indicating whether Contacts app is allowed to import contacts from SDCard -->
- <bool name="config_allow_import_from_sdcard">true</bool>
- <!-- If true, all vcard files are imported from SDCard without asking a user.
- If not, dialog shows to let the user to select whether all vcard files are imported or not.
- If the user selects "not", then the application ask the user to select a file.-->
- <bool name="config_import_all_vcard_from_sdcard_automatically">false</bool>
- <!-- If true, vcard importer shows a dialog which asks the user whether the user wants
- to import all vcard files in SDCard or select one vcard file. If false, the dialog is
- skipped and the importer asks the user to choose one vcard file.
- If config_import_all_vcard_from_sdcard_automatically is set true, this configuration
- is ignored. -->
- <bool name="config_allow_users_select_all_vcard_import">true</bool>
-
- <!-- Flag indicating whether Contacts app is allowed to export contacts to SDCard -->
- <bool name="config_allow_export_to_sdcard">true</bool>
-
- <!-- Flag indicating whether Contacts app is allowed to share contacts with devices outside -->
- <bool name="config_allow_share_visible_contacts">true</bool>
-
- <!-- If true, enable vibration (haptic feedback) for dialer key presses.
- The pattern is set on a per-platform basis using config_virtualKeyVibePattern.
- TODO: If enough users are annoyed by this, we might eventually
- need to make it a user preference rather than a per-platform
- resource. -->
- <bool name="config_enable_dialer_key_vibration">true</bool>
<!-- Flag indicating whether to show images in browse list -->
<bool name="config_browse_list_show_images">true</bool>
- <!-- The type of vcard for improt. If the vcard importer cannot guess the exact type
- of a vCard type, the improter uses this type. -->
- <string name="config_import_vcard_type" translatable="false">default</string>
-
- <!-- The type of VCard for export. If you want to let the app emit vCard which is
- specific to some vendor (like DoCoMo), specify this type (e.g. "docomo") -->
- <string name="config_export_vcard_type" translatable="false">default</string>
-
- <!-- Prefix of exported VCard file -->
- <string name="config_export_file_prefix" translatable="false"></string>
-
- <!-- Suffix of exported VCard file. Attached before an extension -->
- <string name="config_export_file_suffix" translatable="false"></string>
-
- <!-- Extension for exported VCard files -->
- <string name="config_export_file_extension" translatable="false">vcf</string>
-
- <!-- Minimum number of exported VCard file index -->
- <integer name="config_export_file_min_index">1</integer>
-
- <!-- Maximum number of exported VCard file index -->
- <integer name="config_export_file_max_index">99999</integer>
-
- <!-- The list (separated by ',') of extensions should be checked in addition to
- config_export_extension. e.g. If "aaa" is added to here and 00001.vcf and 00002.aaa
- exist in a target directory, 00003.vcf becomes a next file name candidate.
- Without this configuration, 00002.vcf becomes the candidate.-->
- <string name="config_export_extensions_to_consider" translatable="false"></string>
-
- <!-- If true, show an onscreen "Dial" button in the dialer.
- In practice this is used on all platforms even the ones with hard SEND/END
- keys, but for maximum flexibility it's controlled by a flag here
- (which can be overridden on a per-product basis.) -->
- <bool name="config_show_onscreen_dial_button">true</bool>
-
- <!-- If true, an option is shown in Display Options UI to choose a sort order -->
- <bool name="config_sort_order_user_changeable">true</bool>
-
- <!-- If true, the default sort order is primary (i.e. by given name) -->
- <bool name="config_default_sort_order_primary">true</bool>
-
- <!-- If true, an option is shown in Display Options UI to choose a name display order -->
- <bool name="config_display_order_user_changeable">true</bool>
-
- <!-- If true, the default sort order is primary (i.e. by given name) -->
- <bool name="config_default_display_order_primary">true</bool>
-
- <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
- <bool name="config_editor_field_order_primary">true</bool>
-
<!-- If true, phonetic name is included in the contact editor by default -->
<bool name="config_editor_include_phonetic_name">false</bool>
@@ -127,17 +52,6 @@
contact detail page -->
<item name="tab_height_screen_width_percentage" type="fraction">50%</item>
- <!-- Regular expression for prohibiting certain phone numbers in dialpad.
- Ignored if empty. -->
- <string name="config_prohibited_phone_number_regexp"></string>
-
- <!-- If true, enable the "import contacts from SIM" feature if the device
- has an appropriate SIM or ICC card.
- Setting this flag to false in a resource overlay allows you to
- entirely disable SIM import on a per-product basis. -->
- <bool name="config_allow_sim_import">true</bool>
-
-
<!-- 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/ids.xml b/res/values/ids.xml
index 2de327a..b5a230f 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -19,30 +19,10 @@
<item type="id" name="header_phones"/>
<item type="id" name="dialog_sync_add"/>
- <!-- For vcard.ImportVCardActivity -->
- <item type="id" name="dialog_searching_vcard"/>
- <item type="id" name="dialog_sdcard_not_found"/>
- <item type="id" name="dialog_vcard_not_found"/>
- <item type="id" name="dialog_select_import_type"/>
- <item type="id" name="dialog_select_one_vcard"/>
- <item type="id" name="dialog_select_multiple_vcard"/>
- <item type="id" name="dialog_cache_vcard"/>
- <item type="id" name="dialog_io_exception"/>
- <item type="id" name="dialog_error_with_message"/>
-
- <!-- For vcard.CancelActivity -->
- <item type="id" name="dialog_cancel_confirmation"/>
- <item type="id" name="dialog_cancel_failed"/>
-
<!-- For ContactDeletionInteraction -->
<item type="id" name="dialog_delete_contact_confirmation"/>
<item type="id" name="dialog_delete_contact_loader_id" />
- <!-- For ExportVCardActivity -->
- <item type="id" name="dialog_export_confirmation"/>
- <item type="id" name="dialog_exporting_vcard"/>
- <item type="id" name="dialog_fail_to_export_with_reason"/>
-
<!-- For PhoneNumberInteraction -->
<item type="id" name="dialog_phone_number_call_disambiguation"/>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 6d5f7c9..e742ba0 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -18,9 +18,6 @@
<!-- Determines the number of columns in a ContactTileRow -->
<integer name="contact_tile_column_count">2</integer>
- <!-- Determines the number of columns in a ContactTileRow in the favorites tab -->
- <integer name="contact_tile_column_count_in_favorites">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>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 561b5bd..8326603 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -14,9 +14,6 @@
limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Title for the activity that dials the phone. This is the name
- used in the Launcher icon. -->
- <string name="launcherDialer">Phone</string>
<!-- Title for the activity that opens the People app. This is the name
used in the Launcher icon. -->
@@ -91,18 +88,9 @@
<!-- Hint text in the search box when the user hits the Search key while in the contacts app -->
<string name="searchHint">Search contacts</string>
- <!-- Menu item to search contacts -->
- <string name="menu_search">Search</string>
-
- <!-- Menu item to create a new contact -->
- <string name="menu_newContact">New contact</string>
-
<!-- Menu item used to view the details for a specific contact -->
<string name="menu_viewContact">View contact</string>
- <!-- Menu item used to call a contact, containing the number of the contact to call -->
- <string name="menu_callNumber">Call <xliff:g id="number">%s</xliff:g></string>
-
<!-- Menu item used to add a star to a contact, which makes that contact show up at the top of favorites -->
<string name="menu_addStar">Add to favorites</string>
@@ -115,9 +103,6 @@
<!-- Menu item used to delete a specific contact -->
<string name="menu_deleteContact">Delete</string>
- <!-- Menu item to copy something [CHAR_LIMIT=10] -->
- <string name="menu_copy">Copy</string>
-
<!-- Menu item used to create a contact shortcut when viewing contact details. [CHAR LIMIT=30] -->
<string name="menu_create_contact_shortcut">Place on Home screen</string>
@@ -187,27 +172,9 @@
<!-- 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 are done editing a contact and want to save the changes you've made -->
- <string name="menu_done">Done</string>
-
- <!-- Menu item to indicate you want to cancel the current editing process and NOT save the changes you've made [CHAR LIMIT=12] -->
- <string name="menu_doNotSave">Cancel</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>
- <!-- The label describing the Notes field of a contact. This field allows free form text entry about a contact -->
- <string name="label_notes">Notes</string>
-
- <!-- The label describing the SIP address field of a contact. [CHAR LIMIT=20] -->
- <string name="label_sip_address">Internet call</string>
-
- <!-- Hint text for the organization name when editing -->
- <string name="ghostData_company">Company</string>
-
- <!-- Hint text for the organization title when editing -->
- <string name="ghostData_title">Title</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]-->
<string name="invalidContactMessage">The contact doesn\'t exist.</string>
@@ -224,18 +191,6 @@
[CHAR LIMIT=30] -->
<string name="pickerNewContactText">Create new contact</string>
- <!-- Header that expands to list all of the types of phone numbers when editing or creating a phone number for a contact [CHAR LIMIT=20] -->
- <string name="phoneLabelsGroup">Phone</string>
-
- <!-- Header that expands to list all of the types of email addresses when editing or creating an email address for a contact [CHAR LIMIT=20] -->
- <string name="emailLabelsGroup">Email</string>
-
- <!-- Header that expands to list all of the types of IM account when editing or creating an IM account for a contact [CHAR LIMIT=20] -->
- <string name="imLabelsGroup">IM</string>
-
- <!-- Header that expands to list all of the types of postal addresses when editing or creating an postal address for a contact [CHAR LIMIT=20] -->
- <string name="postalLabelsGroup">Address</string>
-
<!-- The order of the items below is important, don't reorder without changing EditContactActivity.java -->
<skip/>
<!-- The labels that are under the otherLabelsGroup when editing a contact. [CHAR LIMIT=20] -->
@@ -273,12 +228,6 @@
<!-- The text displayed when the groups list is empty and no accounts are set on the device while displaying all groups [CHAR LIMIT=NONE] -->
<string name="noAccounts">To create groups you need an account.</string>
- <!-- The text displayed when the contacts list is empty while displaying results after searching contacts -->
- <string name="noMatchingContacts">No matching contacts found.</string>
-
- <!-- The text displayed when the contacts list is empty while displaying only contacts that have phone numbers -->
- <string name="noContactsWithPhoneNumbers">No contacts with phone numbers.</string>
-
<!-- The text displayed when there are no members in the group while displaying the group detail page [CHAR LIMIT=40] -->
<string name="emptyGroup">No people in this group.</string>
@@ -288,9 +237,6 @@
<!-- Displayed in a spinner dialog after the user creates a contact and it's being saved to the database -->
<string name="savingContact">Saving contact\u2026</string>
- <!-- Displayed in a spinner dialog as user changes to display options are saved -->
- <string name="savingDisplayGroups">Saving display options\u2026</string>
-
<!-- Toast displayed when a contact is saved [CHAR LIMIT=NONE] -->
<string name="contactSavedToast">Contact saved.</string>
@@ -318,36 +264,12 @@
<item quantity="other"><xliff:g id="count">%d</xliff:g> contacts</item>
</plurals>
- <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "All contacts" is selected [CHAR LIMIT=64]-->
- <string name="listTotalAllContactsZero">No contacts.</string>
-
- <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when "Custom" is selected [CHAR LIMIT=64]-->
- <string name="listTotalAllContactsZeroCustom">No visible contacts.</string>
-
- <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when starred contact list is selected [CHAR LIMIT=64]-->
- <string name="listTotalAllContactsZeroStarred">No favorites.</string>
-
- <!-- Displayed at the top of the contacts showing the zero total number of contacts visible when a group or account is selected [CHAR LIMIT=64]-->
- <string name="listTotalAllContactsZeroGroup">No contacts in <xliff:g id="name" example="Friends">%s</xliff:g></string>
-
- <!-- Displayed at the top of the contacts showing the account filter selected [CHAR LIMIT=64] -->
- <string name="listAllContactsInAccount">Contacts in <xliff:g id="name" example="abc@gmail.com">%s</xliff:g></string>
-
- <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=64] -->
- <string name="listSingleContact">Single contact</string>
-
- <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=64] -->
- <string name="listCustomView">Contacts in custom view</string>
-
<!-- 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>
<item quantity="other"><xliff:g id="count">%d</xliff:g> found</item>
</plurals>
- <!-- Displayed at the top of search results indicating that more contacts were found than shown [CHAR LIMIT=64] -->
- <string name="foundTooManyContacts">More than <xliff:g id="count">%d</xliff:g> found.</string>
-
<!-- Displayed at the top of the contacts showing the zero total number of contacts found when "Only contacts with phones" not selected. [CHAR LIMIT=30] -->
<string name="listFoundAllContactsZero">No contacts</string>
@@ -373,219 +295,6 @@
[CHAR LIMIT=NONE] -->
<string name="contactsGroupsLabel">Groups</string>
- <!-- The description text for the favorites 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="contactsFavoritesLabel">Favorites</string>
-
- <!-- The description text for the favorites and all contacts tab in the phone app.
- [CHAR LIMIT=NONE] -->
- <string name="dialerAllContactsLabel">Favorites and all contacts</string>
-
- <!-- The description text for the dialer 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="dialerIconLabel">Phone</string>
-
- <!-- The description text for the call log 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="recentCallsIconLabel">Call log</string>
-
- <!-- Menu item used to send an SMS or MMS message to a phone number -->
- <string name="menu_sendTextMessage">Send text message</string>
-
- <!-- Menu item used to call a contact from the call log -->
- <string name="recentCalls_callNumber">Call <xliff:g id="name">%s</xliff:g></string>
-
- <!-- Menu item used to copy a number from the call log to the dialer so it can be edited before calling it -->
- <string name="recentCalls_editNumberBeforeCall">Edit number before call</string>
-
- <!-- Menu item used to add a number from the call log to contacts -->
- <string name="recentCalls_addToContact">Add to contacts</string>
-
- <!-- Menu item used to remove a single call from the call log -->
- <string name="recentCalls_removeFromRecentList">Remove from call log</string>
-
- <!-- Menu item used to remove all calls from the call log -->
- <string name="recentCalls_deleteAll">Clear call log</string>
-
- <!-- Menu item used to delete a voicemail. [CHAR LIMIT=30] -->
- <string name="recentCalls_trashVoicemail">Delete voicemail</string>
-
- <!-- Menu item used to share a voicemail. [CHAR LIMIT=30] -->
- <string name="recentCalls_shareVoicemail">Share voicemail</string>
-
- <!-- Text displayed when the call log is empty -->
- <string name="recentCalls_empty">Call log is empty.</string>
-
- <!-- Title of the confirmation dialog for clearing the call log. [CHAR LIMIT=37] -->
- <string name="clearCallLogConfirmation_title">Clear call log?</string>
-
- <!-- Confirmation dialog for clearing the call log. [CHAR LIMIT=NONE] -->
- <string name="clearCallLogConfirmation">All your call records will be deleted.</string>
-
- <!-- Title of the "Clearing call log" progress-dialog [CHAR LIMIT=35] -->
- <string name="clearCallLogProgress_title">Clearing call log\u2026</string>
-
- <!-- Title of the confirmation dialog for clearing frequents. [CHAR LIMIT=37] -->
- <string name="clearFrequentsConfirmation_title">Clear frequently contacted?</string>
-
- <!-- Confirmation dialog for clearing frequents. [CHAR LIMIT=NONE] -->
- <string name="clearFrequentsConfirmation">You\'ll clear the frequently contacted list in the People and Phone apps, and force email apps to learn your addressing preferences from scratch.</string>
-
- <!-- Title of the "Clearing frequently contacted" progress-dialog [CHAR LIMIT=35] -->
- <string name="clearFrequentsProgress_title">Clearing frequently contacted\u2026</string>
-
- <!-- The title of a dialog that displays the IMEI of the phone -->
- <string name="imei">IMEI</string>
-
- <!-- The title of a dialog that displays the MEID of the CDMA phone -->
- <string name="meid">MEID</string>
-
- <!-- String used for displaying calls to the voicemail number in the call log -->
- <string name="voicemail">Voicemail</string>
-
- <!-- String used to display calls from unknown numbers in the call log -->
- <string name="unknown">Unknown</string>
-
- <!-- String used to display calls from private numbers in the call log -->
- <string name="private_num">Private number</string>
-
- <!-- String used to display calls from pay phone in the call log -->
- <string name="payphone">Pay phone</string>
-
- <!-- Displayed in the text entry box in the dialer when in landscape mode to guide the user
- to dial using the physical keyboard -->
- <string name="dialerKeyboardHintText">Use keyboard to dial</string>
-
- <!-- Hint text displayed in the "digits" field above the dialer's
- dialpad, if there's already a call in progress. (This hint
- reminds the user that the dialer will add a new call, as opposed
- to sending DTMF tones over the current call.)
- [CHAR LIMIT=40] -->
- <string name="dialerDialpadHintText">Dial to add a call</string>
-
- <!-- Dialog text displayed when loading a phone number from the SIM card for speed dial -->
- <string name="simContacts_emptyLoading">Loading from SIM card\u2026</string>
-
- <!-- Dialog title displayed when loading a phone number from the SIM card for speed dial -->
- <string name="simContacts_title">SIM card contacts</string>
-
- <!-- Displayed full screen when the user want to create a shortcut, but there is no contacts, and contact syncing is enabled -->
- <string name="noContactsHelpTextWithSyncForCreateShortcut">"You don't have any contacts to display. (If you just added an account, it can take a few minutes to sync contacts.)"</string>
-
- <!-- Displayed full screen when the user want to create a shortcut, but there is no contacts -->
- <string name="noContactsHelpTextForCreateShortcut">"You don't have any contacts to display."</string>
-
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is disabled. [CHAR LIMIT=NONE] -->
- <string name="noContactsHelpText" product="tablet">"You don't have any contacts to display.\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the tablet\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/export</b></font> to import contacts from your SIM or SD card\n</li>"
- </string>
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is disabled. [CHAR LIMIT=NONE] -->
- <string name="noContactsHelpText" product="default">"You don't have any contacts to display.\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the phone\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SIM or SD card\n</li>"
- </string>
-
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is enabled. [CHAR LIMIT=NONE] -->
- <string name="noContactsHelpTextWithSync" product="tablet">"You don't have any contacts to display. (If you just added an account, it can take a few minutes to sync contacts.)\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the tablet\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Display options</b></font> to change which contacts are visible\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SIM or SD card\n</li>"
- </string>
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is enabled. [CHAR LIMIT=NONE] -->
- <string name="noContactsHelpTextWithSync" product="default">"You don't have any contacts to display. (If you just added an account, it can take a few minutes to sync contacts.)\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the phone\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Display options</b></font> to change which contacts are visible\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SIM or SD card\n</li>"
- </string>
-
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is disabled, and there is no sim card (cdma). [CHAR LIMIT=NONE]-->
- <string name="noContactsNoSimHelpText" product="tablet">"You don't have any contacts to display.\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the tablet\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SD card\n</li>"
- </string>
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is disabled, and there is no sim card (cdma). [CHAR LIMIT=NONE]-->
- <string name="noContactsNoSimHelpText" product="default">"You don't have any contacts to display.\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the phone\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SD card\n</li>"
- </string>
-
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is enabled, and there is no sim card (cdma). [CHAR LIMIT=NONE] -->
- <string name="noContactsNoSimHelpTextWithSync" product="tablet">"You don't have any contacts to display. (If you just added an account, it can take a few minutes to sync contacts.)\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the tablet\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Display options</b></font> to change which contacts are visible\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SD card\n</li>"
- </string>
- <!-- Displayed full screen when the user has no contacts and they are displaying the My Contacts group, and contact syncing is enabled, and there is no sim card (cdma). [CHAR LIMIT=NONE] -->
- <string name="noContactsNoSimHelpTextWithSync" product="default">"You don't have any contacts to display. (If you just added an account, it can take a few minutes to sync contacts.)\n\nTo add contacts, touch <font fgcolor="#ffffffff"><b>Menu</b></font>, then touch:\n
- \n<li><font fgcolor="#ffffffff"><b>Accounts</b></font> to add or set up an account with contacts you can sync to the phone\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Display options</b></font> to change which contacts are visible\n</li>
- \n<li><font fgcolor="#ffffffff"><b>New contact</b></font> to create a new contact from scratch\n</li>
- \n<li><font fgcolor="#ffffffff"><b>Import/Export</b></font> to import contacts from your SD card\n</li>"
- </string>
-
- <!-- Displayed full screen when the user has no favorites and they are displaying the favorites tab. [CHAR LIMIT=NONE] -->
- <string name="noFavoritesHelpText">"You don't have any favorites.\n\nTo add a contact to your list of favorites:\n
- <li>Touch the <b>Contacts</b> tab\n</li>
- \n<li>Touch the contact you want to add to your favorites\n</li>
- \n<li>Touch the star next to the contact\'s name\n</li>"
- </string>
-
- <!-- Item label: jump to the in-call DTMF dialpad.
- (Part of a list of options shown in the dialer when another call
- is already in progress.) -->
- <string name="dialer_useDtmfDialpad">Use touch tone keypad</string>
-
- <!-- Item label: jump to the in-call UI.
- (Part of a list of options shown in the dialer when another call
- is already in progress.) -->
- <string name="dialer_returnToInCallScreen">Return to call in progress</string>
-
- <!-- Item label: use the Dialer's dialpad to add another call.
- (Part of a list of options shown in the dialer when another call
- is already in progress.) -->
- <string name="dialer_addAnotherCall">Add call</string>
-
- <!-- Title bar for call detail screen -->
- <string name="callDetailTitle">Call details</string>
-
- <!-- Toast for call detail screen when couldn't read the requested details -->
- <string name="toast_call_detail_error">Couldn\'t read details for the requested call.</string>
-
- <!-- Title for incoming call details screen -->
- <string name="type_incoming">Incoming call</string>
-
- <!-- Title for outgoing call details screen -->
- <string name="type_outgoing">Outgoing call</string>
-
- <!-- Title for missed call details screen -->
- <string name="type_missed">Missed call</string>
-
- <!-- Title for voicemail details screen -->
- <string name="type_voicemail">Voicemail</string>
-
- <!-- Description for incoming calls going to voice mail vs. not -->
- <string name="actionIncomingCall">Incoming calls</string>
-
<!-- Action string for calling back a number in the call log -->
<string name="callBack">Call back</string>
@@ -595,670 +304,46 @@
<!-- Action string for returning a missed call in the call log -->
<string name="returnCall">Return call</string>
- <!-- A nicely formatted call duration displayed when viewing call details. For example "42 mins 28 secs" -->
- <string name="callDetailsDurationFormat"><xliff:g id="minutes" example="42">%s</xliff:g> mins <xliff:g id="seconds" example="28">%s</xliff:g> secs</string>
-
- <!-- The text displayed on the divider for the Favorites tab in People app indicating that items below it are frequently contacted [CHAR LIMIT = 39] -->
- <string name="favoritesFrequentContacted">Frequently contacted</string>
-
- <!-- The text displayed on the divider for the Favorites tab in Phone app indicating that items below it are frequently called as opposed to starred contacts [CHAR LIMIT = 39] -->
- <string name="favoritesFrequentCalled">Frequently called</string>
-
<!-- Dialog message when prompting before creating a contact. Includes
the email address, e.g. "Add xyz@foo.com to contacts?" -->
<string name="add_contact_dlg_message_fmt">Add \"<xliff:g id="email">%s</xliff:g>\" to contacts?</string>
- <!-- String describing the image on ImageButton one
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_one">one</string>
-
- <!-- String describing the image on ImageButton two
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_two">two</string>
-
- <!-- String describing the image on ImageButton three
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_three">three</string>
-
- <!-- String describing the image on ImageButton four
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_four">four</string>
-
- <!-- String describing the image on ImageButton five
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_five">five</string>
-
- <!-- String describing the image on ImageButton six
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_six">six</string>
-
- <!-- String describing the image on ImageButton seven
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_seven">seven</string>
-
- <!-- String describing the image on ImageButton eight
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_eight">eight</string>
-
- <!-- String describing the image on ImageButton nine
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_nine">nine</string>
-
- <!-- String describing the image on ImageButton star
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_star">star</string>
-
- <!-- String describing the image on ImageButton zero
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_zero">zero</string>
-
- <!-- String describing the image on ImageButton pound
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_image_button_pound">pound</string>
-
- <!-- String describing the Voicemail ImageButton
-
- Used by AccessibilityService to announce the purpose of the button.
- -->
- <string name="description_voicemail_button">voicemail</string>
-
- <!-- String describing the Search ImageButton
-
- Used by AccessibilityService to announce the purpose of the button.
- [CHAR LIMIT=NONE]
- -->
- <string name="description_search_button">search</string>
-
- <!-- String describing the Dial ImageButton
-
- Used by AccessibilityService to announce the purpose of the button.
- -->
- <string name="description_dial_button">dial</string>
-
- <!-- String describing the Delete/Backspace ImageButton
-
- Used by AccessibilityService to announce the purpose of the button.
- -->
- <string name="description_delete_button">backspace</string>
-
- <!-- String describing the digits text box containing the number to dial.
-
- Used by AccessibilityService to announce the purpose of the view.
- -->
- <string name="description_digits_edittext">number to dial</string>
-
<!-- String describing the Contact Photo Image
Used by AccessibilityService to announce the purpose of the view.
-->
<string name="description_contact_photo">contact photo</string>
- <!-- String describing the Contact Editor Minus button
-
- Used by AccessibilityService to announce the purpose of the button.
-
- [CHAR LIMIT=NONE]
- -->
- <string name="description_minus_button">delete</string>
-
<!-- String describing the Contact Editor Plus button
Used by AccessibilityService to announce the purpose of the button.
-->
<string name="description_plus_button">plus</string>
- <!-- String describing a contact picture that introduces users to the contact detail screen.
-
- Used by AccessibilityService to announce the purpose of the button.
-
- [CHAR LIMIT=NONE]
- -->
- <string name="description_view_contact_detail" msgid="2795575601596468581">View contact</string>
-
- <!-- Dialog message shown when (USB) storage does not exist [CHAR LIMIT=30] -->
- <string name="no_sdcard_message" product="nosdcard">No storage was found.</string>
- <!-- Dialog message shown when SDcard does not exist. [CHAR LIMIT=30] -->
- <string name="no_sdcard_message" product="default">No SD card was found.</string>
-
- <!-- Action string for selecting SIM for importing contacts -->
- <string name="import_from_sim">Import from SIM card</string>
-
- <!-- Action string for selecting (USB) storage for importing contacts [CHAR LIMIT=25] -->
- <string name="import_from_sdcard" product="default">Import from storage</string>
-
- <!-- Action that exports all contacts to (USB) storage [CHAR LIMIT=25] -->
- <string name="export_to_sdcard" product="default">Export to storage</string>
-
- <!-- Action that shares visible contacts -->
- <string name="share_visible_contacts">Share visible contacts</string>
-
- <!-- One of alternatives shown when the system allows a user to select how many vCard files
- should be imported. This message shows only when the system is certain that there's more
- than one vCard files available in the system. -->
- <string name="import_one_vcard_string">Import one vCard file</string>
-
- <!-- One of alternatives shown when the system allows a user to select how many vCard files
- should be imported. This message shows only when the system is certain that there's more
- than one vCard files available in the system. -->
- <string name="import_multiple_vcard_string">Import multiple vCard files</string>
-
- <!-- One of alternatives shown when the system allows a user to select how many vCard files
- should be imported. This message shows only when the system is certain that there's more
- than one vCard files available in the system. -->
- <string name="import_all_vcard_string">Import all vCard files</string>
-
- <!-- Dialog message shown when searching VCard data from (USB) storage [CHAR LIMIT=NONE] -->
- <string name="searching_vcard_message" product="nosdcard">Searching for vCard data in storage\u2026</string>
- <!-- Dialog message shown when searching VCard data from SD Card. [CHAR LIMIT=NONE] -->
- <string name="searching_vcard_message" product="default">Searching for vCard data on SD card\u2026</string>
-
- <!-- Dialog message shown when searching VCard data failed.
- An exact reason for the failure should [CHAR LIMIT=NONE] -->
- <string name="scanning_sdcard_failed_message" product="nosdcard">The storage couldn\'t be scanned. (Reason: \"<xliff:g id="fail_reason">%s</xliff:g>\")</string>
- <!-- Dialog message shown when searching VCard data failed.
- An exact reason for the failure should [CHAR LIMIT=NONE] -->
- <string name="scanning_sdcard_failed_message" product="default">The SD card couldn\'t be scanned. (Reason: \"<xliff:g id="fail_reason">%s</xliff:g>\")</string>
-
- <!-- The failed reason shown when Contacts app (especially vCard importer/exporter)
- emitted some I/O error. Exact reason will be appended by the system. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_io_error">I/O error</string>
-
- <!-- Failure reason show when Contacts app (especially vCard importer) encountered
- low memory problem and could not proceed its import procedure. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_low_memory_during_import">Not enough memory. The file may be too large.</string>
-
- <!-- The failed reason shown when vCard parser was not able to be parsed by the current vCard
- implementation. This might happen even when the input vCard is completely valid, though
- we believe it is rather rare in the actual world. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_vcard_parse_error">Couldn\'t parse vCard for an unexpected reason.</string>
-
- <!-- The failed reason shown when vCard importer doesn't support the format.
- This may be shown when the vCard is corrupted [CHAR LIMIT=40] -->
- <string name="fail_reason_not_supported">The format isn\'t supported.</string>
-
- <!-- Message used when vCard import has failed. [CHAR LIMIT=40] -->
- <string name="vcard_import_failed">Couldn\'t import vCard.</string>
-
- <!-- The failure message shown when the system could not find any vCard file.
- (with extension ".vcf" in (USB) storage.)
- [CHAR LIMIT=128] -->
- <string name="import_failure_no_vcard_file" product="nosdcard">No vCard file found in storage.</string>
- <!-- The failure message shown when the system could not find any vCard file.
- (with extension ".vcf" in SDCard.)
- [CHAR LIMIT=128] -->
- <string name="import_failure_no_vcard_file" product="default">No vCard file found on the SD card.</string>
-
- <!-- Fail reason shown when vCard importer failed to look over meta information stored in vCard file(s). -->
- <string name="fail_reason_failed_to_collect_vcard_meta_info">Couldn\'t collect meta information of given vCard file(s).</string>
-
- <!-- The failed reason shown when the import of some of vCard files failed during multiple vCard
- files import. It includes the case where all files were failed to be imported. -->
- <string name="fail_reason_failed_to_read_files">One or more files couldn\'t be imported (%s).</string>
-
- <!-- The failed reason which should not be shown but it may in some buggy condition. [CHAR LIMIT=40] -->
- <string name="fail_reason_unknown">Unknown error.</string>
-
- <!-- Dialog title shown when a user is asked to select vCard file. [CHAR LIMIT=25] -->
- <string name="select_vcard_title">Choose vCard file</string>
-
- <!-- The title shown when vCard importer is caching files to be imported into local temporary
- data storage. [CHAR LIMIT=40] -->
- <string name="caching_vcard_title">Caching</string>
-
- <!-- The message shown when vCard importer is caching files to be imported into local temporary
- data storage. [CHAR LIMIT=NONE] -->
- <string name="caching_vcard_message">Caching vCard(s) to local temporary storage. The actual import will start soon.</string>
-
- <!-- The message shown while importing vCard(s).
- First argument is current index of contacts to be imported.
- Second argument is the total number of contacts.
- Third argument is the name of a contact which is being read.
- [CHAR LIMIT=20] -->
- <string name="progress_notifier_message">Importing <xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
-
- <!-- Description shown when importing vCard data.
- The argument is the name of a contact which is being read.
- [CHAR LIMIT=20] -->
- <string name="importing_vcard_description">Importing <xliff:g id="name" example="Joe Due">%s</xliff:g></string>
-
- <!-- Dialog title shown when reading vCard data failed [CHAR LIMIT=40] -->
- <string name="reading_vcard_failed_title">Couldn\'t read vCard data</string>
-
- <!-- The title shown when reading vCard is canceled (probably by a user)
- [CHAR LIMIT=40] -->
- <string name="reading_vcard_canceled_title">Reading vCard data canceled</string>
-
- <!-- The title shown when reading vCard finished
- The argument is file name the user imported.
- [CHAR LIMIT=40] -->
- <string name="importing_vcard_finished_title">Finished importing vCard <xliff:g id="filename" example="import.vcf">%s</xliff:g></string>
-
- <!-- The title shown when importing vCard is canceled (probably by a user)
- The argument is file name the user canceled importing.
- [CHAR LIMIT=40] -->
- <string name="importing_vcard_canceled_title">Importing <xliff:g id="filename" example="import.vcf">%s</xliff:g> canceled</string>
-
- <!-- The message shown when vCard import request is accepted. The system may start that work soon, or do it later
- when there are already other import/export requests.
- The argument is file name the user imported.
- [CHAR LIMIT=40] -->
- <string name="vcard_import_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> will be imported shortly.</string>
- <!-- The message shown when vCard import request is accepted. The system may start that work soon, or do it later when there are already other import/export requests.
- "The file" is what a user selected for importing.
- [CHAR LIMIT=40] -->
- <string name="vcard_import_will_start_message_with_default_name">The file will be imported shortly.</string>
- <!-- The message shown when a given vCard import request is rejected by the system. [CHAR LIMIT=NONE] -->
- <string name="vcard_import_request_rejected_message">vCard import request was rejected. Try again later.</string>
- <!-- The message shown when vCard export request is accepted. The system may start that work soon, or do it later
- when there are already other import/export requests.
- The argument is file name the user exported.
- [CHAR LIMIT=40] -->
- <string name="vcard_export_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> will be exported shortly.</string>
- <!-- The message shown when a given vCard export request is rejected by the system. [CHAR LIMIT=NONE] -->
- <string name="vcard_export_request_rejected_message">vCard export request was rejected. Try again later.</string>
- <!-- Used when file name is unknown in vCard processing. It typically happens
- when the file is given outside the Contacts app. [CHAR LIMIT=30] -->
- <string name="vcard_unknown_filename">contact</string>
-
- <!-- The percentage, used for expressing the progress of vCard import/export. -->
- <string name="percentage"><xliff:g id="percentage" example="50">%s</xliff:g><xliff:g id="percentsign" example="%">%%</xliff:g></string>
-
- <!-- Dialog title shown when a user confirms whether he/she export Contact data. [CHAR LIMIT=32] -->
- <string name="confirm_export_title">Export contacts?</string>
-
- <!-- Dialog message shown when a user confirms whether he/she export Contact data [CHAR LIMIT=NONE] -->
- <string name="confirm_export_message">Your contact list will be exported to file: <xliff:g id="vcard_filename">%s</xliff:g>.</string>
-
- <!-- Dialog title shown when exporting Contact data failed. [CHAR LIMIT=20] -->
- <string name="exporting_contact_failed_title">Couldn\'t export</string>
-
- <!-- Dialog message shown when exporting Contact data failed. [CHAR LIMIT=NONE] -->
- <string name="exporting_contact_failed_message">The contact data wasn\'t exported.\nReason: \"<xliff:g id="fail_reason">%s</xliff:g>\"</string>
-
- <!-- The failed reason shown when there's no contact which is allowed to be exported.
- Note that user may have contacts data but all of them are probably not allowed to be
- exported because of security/permission reasons. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_no_exportable_contact">There is no exportable contact.</string>
-
- <!-- The failed reason shown when vCard exporter could not create a file for the vCard since
- there are too many files relevant to vCard. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_too_many_vcard" product="nosdcard">Too many vCard files are in the storage.</string>
- <!-- The failed reason shown when vCard exporter could not create a file for the vCard since
- there are too many files relevant to vCard. -->
- <string name="fail_reason_too_many_vcard" product="default">Too many vCard files are on the SD card.</string>
-
- <!-- The failed reason shown when the given file name is too long for the system.
- The length limit of each file is different in each Android device, so we don't need to
- mention it here. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_too_long_filename">Required filename is too long (\"<xliff:g id="filename">%s</xliff:g>\").</string>
-
- <!-- The title shown when exporting vCard is successfuly finished [CHAR LIMIT=40] -->
- <string name="exporting_vcard_finished_title">Finished exporting <xliff:g id="filename" example="export.vcf">%s</xliff:g>.</string>
-
- <!-- The title shown when exporting vCard is canceled (probably by a user)
- The argument is file name the user canceled importing.
- [CHAR LIMIT=40] -->
- <string name="exporting_vcard_canceled_title">Exporting <xliff:g id="filename" example="export.vcf">%s</xliff:g> canceled.</string>
-
- <!-- Dialog title shown when the application is exporting contact data outside. [CHAR LIMIT=NONE] -->
- <string name="exporting_contact_list_title">Exporting contact data</string>
-
- <!-- Message shown when the application is exporting contact data outside -->
- <string name="exporting_contact_list_message">Your contact data is being exported to: <xliff:g id="file_name">%s</xliff:g>.</string>
-
- <!-- The failed reason shown when contacts exporter fails to be initialized.
- Some exact reason must follow this. [CHAR LIMIT=NONE]-->
- <string name="fail_reason_could_not_initialize_exporter">Couldn\'t start the exporter: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
-
- <!-- The failed reason shown when some error happend during contacts export.
- Some exact reason must follow this. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_error_occurred_during_export">An error occurred during export: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
-
- <!-- The error reason the vCard composer "may" emit when database is corrupted or
- something is going wrong. Usually users should not see this text. [CHAR LIMIT=NONE] -->
- <string name="composer_failed_to_get_database_infomation">Couldn\'t get database information.</string>
-
- <!-- This error message shown when the user actually have no contact
- (e.g. just after data-wiping), or, data providers of the contact list prohibits their
- contacts from being exported to outside world via vcard exporter, etc. [CHAR LIMIT=NONE] -->
- <string name="composer_has_no_exportable_contact" product="tablet">There are no exportable contacts. If you do have contacts on your tablet, some data providers may not allow the contacts to be exported from the tablet.</string>
- <!-- This error message shown when the user actually have no contact
- (e.g. just after data-wiping), or, data providers of the contact list prohibits their
- contacts from being exported to outside world via vcard exporter, etc. [CHAR LIMIT=NONE] -->
- <string name="composer_has_no_exportable_contact" product="default">There are no exportable contacts. If you do have contacts on your phone, some data providers may not allow the contacts to be exported from the phone.</string>
-
- <!-- The error reason the vCard composer may emit when vCard composer is not initialized
- even when needed.
- Users should not usually see this error message. [CHAR LIMIT=NONE] -->
- <string name="composer_not_initialized">The vCard composer didn\'t start properly.</string>
-
- <!-- The failed reason shown when vCard importer/exporter could not open the file
- specified by a user. The file name should be in the message. [CHAR LIMIT=NONE] -->
- <string name="fail_reason_could_not_open_file">Couldn\'t open \"<xliff:g id="file_name">%s</xliff:g>\": <xliff:g id="exact_reason">%s</xliff:g>.</string>
-
<!-- Message in progress bar while exporting contact list to a file "(current number) of (total number) contacts" The order of "current number" and "total number" cannot be changed (like "total: (total number), current: (current number)")-->
<string name="exporting_contact_list_progress"><xliff:g id="current_number">%s</xliff:g> of <xliff:g id="total_number">%s</xliff:g> contacts</string>
- <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard import.
- The argument is file name for the vCard import the user wants to cancel.
- [CHAR LIMIT=128] -->
- <string name="cancel_import_confirmation_message">Cancel import of <xliff:g id="filename" example="import.vcf">%s</xliff:g>?</string>
-
- <!-- Message shown in a Dialog confirming a user's cancel request toward existing vCard export.
- The argument is file name for the vCard export the user wants to cancel.
- [CHAR LIMIT=128] -->
- <string name="cancel_export_confirmation_message">Cancel export of <xliff:g id="filename" example="export.vcf">%s</xliff:g>?</string>
-
- <!-- Title shown in a Dialog telling users cancel vCard import/export operation is failed. [CHAR LIMIT=40] -->
- <string name="cancel_vcard_import_or_export_failed">Couldn\'t cancel vCard import/export</string>
-
<!-- The string used to describe Contacts as a searchable item within system search settings. -->
<string name="search_settings_description">Names of your contacts</string>
- <!-- Menu items for dialpad options as part of Pause and Wait ftr -->
- <string name="add_2sec_pause">Add 2-sec pause</string>
- <string name="add_wait">Add wait</string>
-
- <!-- Title for the call disambiguation dialog -->
- <string name="call_disambig_title">Choose number</string>
-
- <!-- Menu item label for call settings [CHAR LIMIT=30] -->
- <string name="call_settings">Settings</string>
-
- <!-- Title for the sms disambiguation dialog -->
- <string name="sms_disambig_title">Choose number</string>
-
- <!-- Message next to disamgiguation dialog check box -->
- <string name="make_primary">Remember this choice</string>
-
<!-- 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>
- <!-- Shown as the display name for a person when the name is missing or unknown. [CHAR LIMIT=18]-->
- <string name="missing_name">(No name)</string>
-
- <!-- The menu item to open the list of accounts -->
- <string name="menu_accounts">Accounts</string>
-
- <!-- The menu item to clear frequents [CHAR LIMIT=30] -->
- <string name="menu_clear_frequents">Clear frequents</string>
-
- <!-- The menu item to filter the list of contacts displayed -->
- <string name="menu_contacts_filter">Contacts to display</string>
-
- <!-- The menu item to bulk import or bulk export contacts from SIM card or SD card. [CHAR LIMIT=30]-->
- <string name="menu_import_export">Import/export</string>
-
- <!-- Dialog title when selecting the bulk operation to perform from a list. [CHAR LIMIT=36] -->
- <string name="dialog_import_export">Import/export contacts</string>
-
- <!-- Dialog title when importing contacts from an external source. [CHAR LIMIT=36] -->
- <string name="dialog_import">Import contacts</string>
-
<!-- The menu item to share the currently viewed contact [CHAR LIMIT=30] -->
<string name="menu_share">Share</string>
<!-- Dialog title when picking the application to share a contact with. -->
<string name="share_via">Share contact via</string>
- <!-- Toast indicating that sharing a contact has failed. [CHAR LIMIT=NONE] -->
- <string name="share_error">This contact can\'t be shared.</string>
-
- <!-- Header that expands to list all name types when editing a structured name of a contact [CHAR LIMIT=20] -->
- <string name="nameLabelsGroup">Name</string>
- <!-- Header that expands to list all nickname types when editing a nickname of a contact [CHAR LIMIT=20] -->
- <string name="nicknameLabelsGroup">Nickname</string>
- <!-- Header that expands to list all organization types when editing an organization of a contact [CHAR LIMIT=20] -->
- <string name="organizationLabelsGroup">Organization</string>
- <!-- Header that expands to list all website types when editing a website of a contact [CHAR LIMIT=20] -->
- <string name="websiteLabelsGroup">Website</string>
- <!-- Header that expands to list all event types when editing an event of a contact [CHAR LIMIT=20] -->
- <string name="eventLabelsGroup">Events</string>
- <!-- Header for the list of all relationships for a contact [CHAR LIMIT=20] -->
- <string name="relationLabelsGroup">Relationship</string>
- <!-- Header for the list of all groups for a contact [CHAR LIMIT=20] -->
- <string name="groupsLabel">Groups</string>
-
- <string name="dialog_new_contact_account">Create contact under account</string>
-
<!-- Title for the disambiguation dialog that requests the user choose an account for the new group to be created under [CHAR LIMIT=NONE] -->
<string name="dialog_new_group_account">Create group under account</string>
- <string name="menu_sync_remove">Remove sync group</string>
- <string name="dialog_sync_add">Add sync group</string>
- <string name="display_more_groups">More groups\u2026</string>
-
- <!-- List title for a special contacts group that covers all contacts. [CHAR LIMIT=25] -->
- <string name="display_ungrouped">All other contacts</string>
-
- <!-- List title for a special contacts group that covers all contacts that
- aren't members of any other group. [CHAR LIMIT=25] -->
- <string name="display_all_contacts">All contacts</string>
-
- <!-- Warning message given to users just before they remove a currently syncing
- group that would also cause all ungrouped contacts to stop syncing. [CHAR LIMIT=NONE] -->
- <string name="display_warn_remove_ungrouped">Removing \"<xliff:g id="group" example="Starred">%s</xliff:g>\" from sync will also remove any ungrouped contacts from sync.</string>
-
- <!-- Title for data source when creating or editing a contact that doesn't
- belong to a specific account. This contact will only exist on the phone
- and will not be synced. -->
- <string name="account_phone" product="tablet">Tablet-only, unsynced</string>
- <!-- Title for data source when creating or editing a contact that doesn't
- belong to a specific account. This contact will only exist on the phone
- and will not be synced. -->
- <string name="account_phone" product="default">Phone-only, unsynced</string>
-
- <!-- Action string for calling a custom phone number -->
- <string name="call_custom">Call <xliff:g id="custom">%s</xliff:g></string>
- <!-- Action string for calling a home phone number -->
- <string name="call_home">Call home</string>
- <!-- Action string for calling a mobile phone number -->
- <string name="call_mobile">Call mobile</string>
- <!-- Action string for calling a work phone number -->
- <string name="call_work">Call work</string>
- <!-- Action string for calling a work fax phone number -->
- <string name="call_fax_work">Call work fax</string>
- <!-- Action string for calling a home fax phone number -->
- <string name="call_fax_home">Call home fax</string>
- <!-- Action string for calling a pager phone number -->
- <string name="call_pager">Call pager</string>
- <!-- Action string for calling an other phone number -->
- <string name="call_other">Call</string>
- <!-- Action string for calling a callback number -->
- <string name="call_callback">Call callback</string>
- <!-- Action string for calling a car phone number -->
- <string name="call_car">Call car</string>
- <!-- Action string for calling a company main phone number -->
- <string name="call_company_main">Call company main</string>
- <!-- Action string for calling a ISDN phone number -->
- <string name="call_isdn">Call ISDN</string>
- <!-- Action string for calling a main phone number -->
- <string name="call_main">Call main</string>
- <!-- Action string for calling an other fax phone number -->
- <string name="call_other_fax">Call fax</string>
- <!-- Action string for calling a radio phone number -->
- <string name="call_radio">Call radio</string>
- <!-- Action string for calling a Telex phone number -->
- <string name="call_telex">Call telex</string>
- <!-- Action string for calling a TTY/TDD phone number -->
- <string name="call_tty_tdd">Call TTY/TDD</string>
- <!-- Action string for calling a work mobile phone number -->
- <string name="call_work_mobile">Call work mobile</string>
- <!-- Action string for calling a work pager phone number -->
- <string name="call_work_pager">Call work pager</string>
- <!-- Action string for calling an assistant phone number -->
- <string name="call_assistant">Call <xliff:g id="assistant">%s</xliff:g></string>
- <!-- Action string for calling a MMS phone number -->
- <string name="call_mms">Call MMS</string>
-
- <!-- Action string for sending an SMS to a custom phone number -->
- <string name="sms_custom">Text <xliff:g id="custom">%s</xliff:g></string>
- <!-- Action string for sending an SMS to a home phone number -->
- <string name="sms_home">Text home</string>
- <!-- Action string for sending an SMS to a mobile phone number -->
- <string name="sms_mobile">Text mobile</string>
- <!-- Action string for sending an SMS to a work phone number -->
- <string name="sms_work">Text work</string>
- <!-- Action string for sending an SMS to a work fax phone number -->
- <string name="sms_fax_work">Text work fax</string>
- <!-- Action string for sending an SMS to a home fax phone number -->
- <string name="sms_fax_home">Text home fax</string>
- <!-- Action string for sending an SMS to a pager phone number -->
- <string name="sms_pager">Text pager</string>
- <!-- Action string for sending an SMS to an other phone number -->
- <string name="sms_other">Text</string>
- <!-- Action string for sending an SMS to a callback number -->
- <string name="sms_callback">Text callback</string>
- <!-- Action string for sending an SMS to a car phone number -->
- <string name="sms_car">Text car</string>
- <!-- Action string for sending an SMS to a company main phone number -->
- <string name="sms_company_main">Text company main</string>
- <!-- Action string for sending an SMS to a ISDN phone number -->
- <string name="sms_isdn">Text ISDN</string>
- <!-- Action string for sending an SMS to a main phone number -->
- <string name="sms_main">Text main</string>
- <!-- Action string for sending an SMS to an other fax phone number -->
- <string name="sms_other_fax">Text fax</string>
- <!-- Action string for sending an SMS to a radio phone number -->
- <string name="sms_radio">Text radio</string>
- <!-- Action string for sending an SMS to a Telex phone number -->
- <string name="sms_telex">Text telex</string>
- <!-- Action string for sending an SMS to a TTY/TDD phone number -->
- <string name="sms_tty_tdd">Text TTY/TDD</string>
- <!-- Action string for sending an SMS to a work mobile phone number -->
- <string name="sms_work_mobile">Text work mobile</string>
- <!-- Action string for sending an SMS to a work pager phone number -->
- <string name="sms_work_pager">Text work pager</string>
- <!-- Action string for sending an SMS to an assistant phone number -->
- <string name="sms_assistant">Text <xliff:g id="assistant">%s</xliff:g></string>
- <!-- Action string for sending an SMS to a MMS phone number -->
- <string name="sms_mms">Text MMS</string>
-
- <!-- Generic action string for text messaging a contact. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
- <string name="sms">Text message</string>
-
- <!-- Action string for sending an email to a home email address -->
- <string name="email_home">Email home</string>
- <!-- Action string for sending an email to a mobile email address -->
- <string name="email_mobile">Email mobile</string>
- <!-- Action string for sending an email to a work email address -->
- <string name="email_work">Email work</string>
- <!-- Action string for sending an email to an other email address -->
- <string name="email_other">Email</string>
- <!-- Action string for sending an email to a custom email address -->
- <string name="email_custom">Email <xliff:g id="custom">%s</xliff:g></string>
-
- <!-- Generic action string for sending an email -->
- <string name="email">Email</string>
-
- <!-- Action string for viewing a home postal address -->
- <string name="map_home">View home address</string>
- <!-- Action string for viewing a work postal address -->
- <string name="map_work">View work address</string>
- <!-- Action string for viewing an other postal address -->
- <string name="map_other">View address</string>
- <!-- Action string for viewing a custom postal address -->
- <string name="map_custom">View <xliff:g id="custom">%s</xliff:g> address</string>
-
- <!-- Action string for starting an IM chat with the AIM protocol -->
- <string name="chat_aim">Chat using AIM</string>
- <!-- Action string for starting an IM chat with the MSN or Windows Live protocol -->
- <string name="chat_msn">Chat using Windows Live</string>
- <!-- Action string for starting an IM chat with the Yahoo protocol -->
- <string name="chat_yahoo">Chat using Yahoo</string>
- <!-- Action string for starting an IM chat with the Skype protocol -->
- <string name="chat_skype">Chat using Skype</string>
- <!-- Action string for starting an IM chat with the QQ protocol -->
- <string name="chat_qq">Chat using QQ</string>
- <!-- Action string for starting an IM chat with the Google Talk protocol -->
- <string name="chat_gtalk">Chat using Google Talk</string>
- <!-- Action string for starting an IM chat with the ICQ protocol -->
- <string name="chat_icq">Chat using ICQ</string>
- <!-- Action string for starting an IM chat with the Jabber protocol -->
- <string name="chat_jabber">Chat using Jabber</string>
-
- <!-- Generic action string for starting an IM chat -->
- <string name="chat">Chat</string>
<!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
<string name="audio_chat">Voice chat</string>
<!-- Generic action string for starting a video chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
<string name="video_chat">Video chat</string>
- <!-- Field title for the full postal address of a contact [CHAR LIMIT=64]-->
- <string name="postal_address">Address</string>
- <!-- Field title for the street of a structured postal address of a contact -->
- <string name="postal_street">Street</string>
- <!-- Field title for the PO box of a structured postal address of a contact -->
- <string name="postal_pobox">PO box</string>
- <!-- Field title for the neighborhood of a structured postal address of a contact -->
- <string name="postal_neighborhood">Neighborhood</string>
- <!-- Field title for the city of a structured postal address of a contact -->
- <string name="postal_city">City</string>
- <!-- Field title for the region, or state, of a structured postal address of a contact -->
- <string name="postal_region">State</string>
- <!-- Field title for the postal code of a structured postal address of a contact -->
- <string name="postal_postcode">ZIP code</string>
- <!-- Field title for the country of a structured postal address of a contact -->
- <string name="postal_country">Country</string>
-
- <!-- Field title for the full name of a contact [CHAR LIMIT=64]-->
- <string name="full_name">Name</string>
- <!-- Field title for the given name of a contact -->
- <string name="name_given">Given name</string>
- <!-- Field title for the family name of a contact -->
- <string name="name_family">Family name</string>
- <!-- Field title for the prefix name of a contact -->
- <string name="name_prefix">Name prefix</string>
- <!-- Field title for the middle name of a contact -->
- <string name="name_middle">Middle name</string>
- <!-- Field title for the suffix name of a contact -->
- <string name="name_suffix">Name suffix</string>
- <!-- Field title for the phonetic given name of a contact -->
- <string name="name_phonetic_given">Phonetic given name</string>
- <!-- Field title for the phonetic middle name of a contact -->
- <string name="name_phonetic_middle">Phonetic middle name</string>
- <!-- Field title for the phonetic family name of a contact -->
- <string name="name_phonetic_family">Phonetic family name</string>
- <!-- Field title for the phonetic name of a contact [CHAR LIMIT=64]-->
- <string name="name_phonetic">Phonetic name</string>
-
<!-- Title for the list of all contact details that come from third-party sources (including a corporate directory) [CHAR LIMIT=20] -->
<string name="connections">Connections</string>
@@ -1298,8 +383,8 @@
<!-- An allowable value for the "sort list by" contact display option -->
<string name="display_options_sort_by_family_name">Family name</string>
- <!-- Label of the "view names as" display option -->
- <string name="display_options_view_names_as">View contact names as</string>
+ <!-- Label of the "view names as" display option [CHAR LIMIT=64]-->
+ <string name="display_options_view_names_as">View contact names</string>
<!-- An allowable value for the "view names as" contact display option -->
<string name="display_options_view_given_name_first">Given name first</string>
@@ -1351,9 +436,6 @@
<!-- Label to clear all selection in multiple picker -->
<string name="menu_select_none">"Unselect all"</string>
- <!-- The text displayed when the contacts list is empty while displaying only selected contacts in multiple picker -->
- <string name="no_contacts_selected">"No contacts selected."</string>
-
<!-- The add field button shown in the editor under each editable Raw Contact [CHAR LIMIT=30] -->
<string name="add_field">Add another field</string>
@@ -1391,9 +473,6 @@
<item quantity="other">merged from <xliff:g id="count">%0$d</xliff:g> sources</item>
</plurals>
- <!-- The name of the invisible local contact directory -->
- <string name="local_invisible_directory">Other</string>
-
<!-- The message in a confirmation dialog shown when the user selects a
contact aggregation suggestion in Contact editor. [CHAR LIMIT=512]-->
<string name="aggregation_suggestion_join_dialog_message">Join
@@ -1416,45 +495,15 @@
<!-- 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>
- <!-- The label in section header in the contact list for a contact directory [CHAR LIMIT=128] -->
- <string name="directory_search_label">Directory</string>
-
- <!-- The label in section header in the contact list for a local contacts [CHAR LIMIT=128] -->
- <string name="local_search_label">All contacts</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 label indicating that the list is showing all available accounts [CHAR LIMIT=64] -->
- <string name="list_filter_all_accounts">All contacts</string>
-
- <!-- Contact list filter label indicating that the list is showing all starred contacts [CHAR LIMIT=64] -->
- <string name="list_filter_all_starred">Starred</string>
-
<!-- Contact list filter indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
<string name="list_filter_custom">Custom</string>
- <!-- Contact list filter selection indicating that the list shows groups chosen by the user [CHAR LIMIT=64] -->
- <string name="list_filter_customize">Customize</string>
-
- <!-- Contact list filter selection indicating that the list shows all contacts with phone numbers [CHAR LIMIT=64] -->
- <string name="list_filter_phones">All contacts with phone numbers</string>
-
- <!-- Contact list filter selection indicating that the list shows only the selected contact [CHAR LIMIT=64] -->
- <string name="list_filter_single">Contact</string>
-
- <!-- Title of the activity that allows the user to customize filtering of contact list [CHAR LIMIT=128] -->
- <string name="custom_list_filter">Define custom view</string>
-
- <!-- Message that appears in the favorites tab of the Phone app when the contact list has not fully loaded yet (below the favorite and frequent contacts) [CHAR LIMIT=20] -->
- <string name="contact_list_loading">Loading\u2026</string>
-
<!-- Title of the settings activity [CHAR LIMIT=64] -->
<string name="activity_title_settings">Settings</string>
- <!-- Title of the activity that allows the uesr to filter the list of contacts displayed according to account [CHAR LIMIT=25] -->
- <string name="activity_title_contacts_filter">Contacts to display</string>
-
<!-- Menu item for the settings activity [CHAR LIMIT=64] -->
<string name="menu_settings" msgid="377929915873428211">Settings</string>
@@ -1468,9 +517,6 @@
of a Contact. This is mostly about the formatting of the two elements, so it should be kept small [CHAR LIMIT=79] -->
<string name="organization_company_and_title"><xliff:g id="company" example="Technical Program Manager">%2$s</xliff:g>, <xliff:g id="company" example="Google Inc.">%1$s</xliff:g></string>
- <!-- Query hint displayed inside the search field [CHAR LIMIT=64] -->
- <string name="hint_findContacts">Find contacts</string>
-
<!-- Title shown for the phone number when the number tries to call on a device that it not a phone [CHAR LIMIT=30] -->
<string name="non_phone_caption">Phone number</string>
@@ -1570,231 +616,9 @@
<!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
<string name="enter_contact_name">Type person\'s name</string>
- <!-- Button to view the updates from the current group on the group detail page [CHAR LIMIT=25] -->
- <string name="view_updates_from_group">View updates</string>
-
- <!-- Title of the notification of new voicemails. [CHAR LIMIT=30] -->
- <plurals name="notification_voicemail_title">
- <item quantity="one">Voicemail</item>
- <item quantity="other"><xliff:g id="count">%1$d</xliff:g> Voicemails</item>
- </plurals>
-
- <!-- Used in the notification of a new voicemail for the action to play the voicemail. -->
- <string name="notification_action_voicemail_play">Play</string>
-
- <!-- Used to build a list of names or phone numbers, to indicate the callers who left
- voicemails.
- The first argument may be one or more callers, the most recent ones.
- The second argument is an additional callers.
- This string is used to build a list of callers.
-
- [CHAR LIMIT=10]
- -->
- <string name="notification_voicemail_callers_list"><xliff:g id="newer_callers">%1$s</xliff:g>, <xliff:g id="older_caller">%2$s</xliff:g></string>
-
- <!-- Text used in the ticker to notify the user of the latest voicemail. [CHAR LIMIT=30] -->
- <string name="notification_new_voicemail_ticker">New voicemail from <xliff:g id="caller">%1$s</xliff:g></string>
-
- <!-- Message to show when there is an error playing back the voicemail. [CHAR LIMIT=40] -->
- <string name="voicemail_playback_error">Couldn\'t play voicemail.</string>
-
- <!-- Message to display before we have prepared the media player, i.e. before we know duration. [CHAR LIMIT=40] -->
- <string name="voicemail_buffering">Buffering\u2026</string>
-
- <!-- Message to display whilst we are waiting for the content to be fetched. [CHAR LIMIT=40] -->
- <string name="voicemail_fetching_content">Fetching voicemail\u2026</string>
-
- <!-- Message to display if we fail to get content within a suitable time period. [CHAR LIMIT=40] -->
- <string name="voicemail_fetching_timout">Couldn\'t fetch voicemail.</string>
-
- <!-- The header in the call log used to identify missed calls and voicemail that have not yet been consumed [CHAR LIMIT=10] -->
- <string name="call_log_new_header">New</string>
-
- <!-- The header in the call log used to identify items that have been already consumed [CHAR LIMIT=10] -->
- <string name="call_log_old_header">Older</string>
-
- <!-- The header to show that call log is only showing voicemail calls. [CHAR LIMIT=40] -->
- <string name="call_log_voicemail_header">Calls with voicemail only</string>
-
- <!-- The header to show that call log is only showing incoming calls. [CHAR LIMIT=40] -->
- <string name="call_log_incoming_header">Incoming calls only</string>
-
- <!-- The header to show that call log is only showing outgoing calls. [CHAR LIMIT=40] -->
- <string name="call_log_outgoing_header">Outgoing calls only</string>
-
- <!-- The header to show that call log is only showing missed calls. [CHAR LIMIT=40] -->
- <string name="call_log_missed_header">Missed calls only</string>
-
- <!-- Voicemail status message shown at the top of call log to notify the user that no new
-voicemails are currently available. This can happen when both notification as well as data
-connection to the voicemail server is lost. [CHAR LIMIT=64] -->
- <string name="voicemail_status_voicemail_not_available">Can\'t connect to voicemail server.</string>
- <!-- Voicemail status message shown at the top of call log to notify the user that there is no
- data connection to the voicemail server, but there are new voicemails waiting on the server.
- [CHAR LIMIT=64] -->
- <string name="voicemail_status_messages_waiting">Can\'t connect to voicemail server. New voicemails are waiting.</string>
- <!-- Voicemail status message shown at the top of call log to invite the user to configure
- visual voicemail. [CHAR LIMIT=64] -->
- <string name="voicemail_status_configure_voicemail">Set up your voicemail.</string>
- <!-- Voicemail status message shown at the top of call details screen to notify the user that
- the audio of this voicemail is not available. [CHAR LIMIT=64] -->
- <string name="voicemail_status_audio_not_available">Audio not available.</string>
-
- <!-- User action prompt shown next to a voicemail status message to let the user configure
- visual voicemail. [CHAR LIMIT=20] -->
- <string name="voicemail_status_action_configure">Set up</string>
- <!-- User action prompt shown next to a voicemail status message to let the user call voicemail
- server directly to listen to the voicemails. [CHAR LIMIT=20] -->
- <string name="voicemail_status_action_call_server">Call voicemail</string>
-
- <!-- The slowest voicemail playback speed. [CHAR LIMIT=30] -->
- <string name="voicemail_speed_slowest">Slowest speed</string>
- <!-- Slower than normal voicemail playback speed. [CHAR LIMIT=30] -->
- <string name="voicemail_speed_slower">Slow speed</string>
- <!-- Normal voicemail playback speed. [CHAR LIMIT=30] -->
- <string name="voicemail_speed_normal">Normal speed</string>
- <!-- Faster than normal pvoicemail playback speed. [CHAR LIMIT=30] -->
- <string name="voicemail_speed_faster">Fast speed</string>
- <!-- Fastest voicemail playback speed. [CHAR LIMIT=30] -->
- <string name="voicemail_speed_fastest">Fastest speed</string>
-
- <!-- The counter for calls in a group and the date of the latest call as shown in the call log [CHAR LIMIT=15] -->
- <string name="call_log_item_count_and_date">(<xliff:g id="count">%1$d</xliff:g>) <xliff:g id="date">%2$s</xliff:g></string>
-
<!-- Hint text in the group name box in the edit group view. [CHAR LIMIT=20]-->
<string name="group_name_hint">Group\'s name</string>
- <!-- The "file name" displayed for vCards received directly via NFC [CHAR LIMIT=16] -->
- <string name="nfc_vcard_file_name">Contact received over NFC</string>
-
- <!-- Menu item used to show only outgoing in the call log. [CHAR LIMIT=30] -->
- <string name="menu_show_outgoing_only">Show outgoing only</string>
-
- <!-- Menu item used to show only incoming in the call log. [CHAR LIMIT=30] -->
- <string name="menu_show_incoming_only">Show incoming only</string>
-
- <!-- Menu item used to show only missed in the call log. [CHAR LIMIT=30] -->
- <string name="menu_show_missed_only">Show missed only</string>
-
- <!-- Menu item used to show only voicemails in the call log. [CHAR LIMIT=30] -->
- <string name="menu_show_voicemails_only">Show voicemails only</string>
-
- <!-- Menu item used to show all calls in the call log. [CHAR LIMIT=30] -->
- <string name="menu_show_all_calls">Show all calls</string>
-
- <!-- Used to display as default status when the contact is available for chat [CHAR LIMIT=19] -->
- <string name="status_available">Available</string>
-
- <!-- Used to display as default status when the contact is away or idle for chat [CHAR LIMIT=19] -->
- <string name="status_away">Away</string>
-
- <!-- Used to display as default status when the contact is busy or Do not disturb for chat [CHAR LIMIT=19] -->
- <string name="status_busy">Busy</string>
-
- <!-- String describing the icon in the call log used to play a voicemail.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_call_log_play_button">Play voicemail</string>
-
- <!-- String describing the icon in the call log used to represent an incoming call.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_call_log_incoming_call">Incoming call</string>
-
- <!-- String describing the icon in the call log used to represent an outgoing call.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
-
- <string name="description_call_log_outgoing_call">Outgoing call</string>
-
- <!-- String describing the icon in the call log used to represent a missed call.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
-
- <string name="description_call_log_missed_call">Missed call</string>
-
- <!-- String describing the icon in the call log used to represent a voicemail left to the user.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_call_log_voicemail">Voicemail</string>
-
- <!-- String describing the button to add a contact for the current number.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_add_contact">Add contact</string>
-
- <!-- String describing the button to view the contact for the current number.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_view_contact">View contact <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- String describing the button to call a number or contact.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_call">Call <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- String describing the button to SMS a number or contact.
-
- 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="description_send_text_message">Send text message to <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- String describing the icon in the call log used to represent an unheard voicemail left to
- the user.
-
- 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="description_call_log_unheard_voicemail">Unheard voicemail</string>
-
- <!-- String describing the button to send a text message on quick contact.
-
- 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="description_send_message">Send message to <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- String describing the text for a phone number in quick contact.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_dial_phone_number">Dial phone <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- String describing the text for photo of a contact in a contacts list.
-
- Note: AccessibilityServices use this attribute to announce what the view represents.
- This is especially valuable for views without textual representation like ImageView.
- -->
- <string name="description_quick_contact_for">Quick contact for <xliff:g id="name">%1$s</xliff:g></string>
-
- <!-- The string used to represent an unknown location for a phone number in the call log [CHAR LIMIT=3] -->
- <string name="call_log_empty_gecode">-</string>
-
- <!-- String describing the text on the header of the profile contact in the contacts list
- This may be programatically capitalized. [CHAR LIMIT=20] -->
- <string name="user_profile_contacts_list_header" msgid="9154761216179882405">Me</string>
-
<!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
<string name="local_profile_title">My local profile</string>
@@ -1832,33 +656,9 @@
<!-- Button label to prompt the user to add another account (when there are already existing accounts on the device) [CHAR LIMIT=30] -->
<string name="add_new_account">Add new account</string>
- <!-- Dialog message which is shown when the user tries to make a phone call
- to prohibited phone numbers [CHAR LIMIT=NONE] -->
- <string name="dialog_phone_call_prohibited_message" msgid="4313552620858880999">Call not sent</string>
-
- <!-- Dialog message which is shown when the user tries to check voicemail
- while the system isn't ready for the access. [CHAR LIMIT=NONE] -->
- <string name="dialog_voicemail_not_ready_message">To set up voicemail, go to Menu > Settings.</string>
-
- <!-- Dialog message which is shown when the user tries to check voicemail
- while the system is in airplane mode. The user cannot access to
- voicemail service in Airplane mode. [CHAR LIMI=NONE] -->
- <string name="dialog_voicemail_airplane_mode_message">To call voicemail, first turn off Airplane mode.</string>
-
<!-- Menu item shown only when the special debug mode is enabled, which is used to send all contacts database files via email. [CHAR LIMI=NONE] -->
<string name="menu_export_database">Export database files</string>
- <!-- Content description for the fake action menu overflow button.
- This should be same as the description for the real action menu
- overflow button available in ActionBar.
- [CHAR LIMIT=NONE] -->
- <string name="action_menu_overflow_description" msgid="2295659037509008453">More options</string>
-
- <!-- Content description for the expand or collapse name fields button.
- Clicking this button causes the name editor to toggle between showing
- a single field where the entire name is edited at once, or multiple
- fields corresponding to each part of the name (Name Prefix, First Name,
- Middle Name, Last Name, Name Suffix).
- [CHAR LIMIT=NONE] -->
- <string name="expand_collapse_name_fields_description">Expand or collapse name fields</string>
+ <!-- Description when picture in the contact detail view is selected. [CHAR LIMIT=NONE] -->
+ <string name="contact_detail_picture_description">Picture. Select to change</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ad8d07b..6e5cbf9 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -14,72 +14,6 @@
limitations under the License.
-->
<resources>
- <style name="DialtactsTheme"
- parent="android:Theme.Holo">
- <item name="android:textColorSecondary">@color/dialtacts_secondary_text_color</item>
- <item name="android:windowActionBarOverlay">true</item>
- <item name="android:actionBarStyle">@style/DialtactsActionBarStyle</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowBackground">@drawable/background_dial_holo_dark</item>
- <item name="android:listViewStyle">@style/ListViewStyle</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">32dip</item>
- <item name="list_item_divider">?android:attr/listDivider</item>
- <item name="list_item_padding_top">0dip</item>
- <item name="list_item_padding_right">0dip</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">@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_header_text_indent">8dip</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">24dip</item>
- <item name="list_item_header_underline_height">1dip</item>
- <item name="list_item_header_underline_color">@color/people_app_theme_color</item>
- <item name="list_item_data_width_weight">5</item>
- <item name="list_item_label_width_weight">3</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>
- <!-- CallLog -->
- <item name="call_log_primary_text_color">#FFFFFF</item>
- <item name="call_log_primary_background_color">#000000</item>
- <item name="call_log_secondary_text_color">#888888</item>
- <item name="call_log_secondary_background_color">#333333</item>
- <item name="call_log_header_color">#33b5e5</item>
- <!-- VoicemailStatus -->
- <item name="call_log_voicemail_status_height">48dip</item>
- <item name="call_log_voicemail_status_background_color">#262626</item>
- <item name="call_log_voicemail_status_text_color">#888888</item>
- <item name="call_log_voicemail_status_action_text_color">#33b5e5</item>
- <!-- Favorites -->
- <item name="favorites_padding_bottom">?android:attr/actionBarSize</item>
- </style>
-
- <style name="CallDetailActivityTheme" parent="android:Theme.Holo">
- <item name="android:windowBackground">@android:color/black</item>
- <item name="android:gravity">top</item>
- <item name="android:listViewStyle">@style/ListViewStyle</item>
- <!-- CallLog -->
- <item name="call_log_primary_text_color">#FFFFFF</item>
- <item name="call_log_primary_background_color">#000000</item>
- <item name="call_log_secondary_text_color">#FFFFFF</item>
- <item name="call_log_secondary_background_color">#333333</item>
- <item name="call_log_header_color">#33b5e5</item>
- <!-- VoicemailStatus -->
- <item name="call_log_voicemail_status_height">48dip</item>
- <item name="call_log_voicemail_status_background_color">#262626</item>
- <item name="call_log_voicemail_status_text_color">#888888</item>
- <item name="call_log_voicemail_status_action_text_color">#33b5e5</item>
- </style>
<style name="DetailActivityTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/ContactsActionBarStyle</item>
@@ -100,15 +34,6 @@
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
- <style name="BackgroundOnlyTheme" parent="@android:style/Theme.Holo.Light">
- <item name="android:windowBackground">@null</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowAnimationStyle">@null</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowNoDisplay">true</item>
- <item name="android:windowIsFloating">true</item>
- </style>
-
<style name="Theme">
</style>
@@ -192,10 +117,6 @@
<item name="android:listSelector">?android:attr/listChoiceBackgroundIndicator</item>
</style>
- <style name="ListViewStyle" parent="@android:style/Widget.Holo.Light.ListView">
- <item name="android:overScrollMode">always</item>
- </style>
-
<style name="ContactPickerTheme" parent="@style/PeopleTheme" />
<style name="ContactPickerLayout" parent="ContactPickerTheme">
@@ -214,15 +135,6 @@
<item name="android:listViewStyle">@style/ListViewStyle</item>
</style>
- <style name="CustomContactListFilterView" parent="ContactListFilterTheme">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">match_parent</item>
- </style>
-
- <style name="DirectoryHeader" parent="PeopleTheme">
- <item name="android:background">@android:color/transparent</item>
- </style>
-
<style name="NonPhoneActivityTheme" parent="@android:Theme.Translucent.NoTitleBar">
</style>
@@ -254,25 +166,6 @@
<item name="android:layout_gravity">center_vertical</item>
</style>
- <style name="DialtactsDigitsTextAppearance">
- <item name="android:maxLines">1</item>
- <item name="android:scrollHorizontally">true</item>
- <item name="android:textSize">@dimen/dialpad_digits_text_size</item>
- <item name="android:freezesText">true</item>
- <item name="android:focusableInTouchMode">true</item>
- <item name="android:editable">true</item>
- <item name="android:cursorVisible">false</item>
- <item name="android:layout_weight">0</item>
- </style>
-
- <style name="DialtactsDialpadButtonStyle">
- <item name="android:layout_width">0dip</item>
- <item name="android:layout_height">match_parent</item>
- <item name="android:layout_weight">1</item>
- <item name="android:background">?android:attr/selectableItemBackground</item>
- <item name="android:soundEffectsEnabled">false</item>
- </style>
-
<style name="ConfirmAddDetailViewStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
@@ -283,12 +176,6 @@
<item name="android:layout_height">150dip</item>
</style>
- <style name="DialtactsActionBarStyle" parent="android:Widget.Holo.ActionBar">
- <item name="android:backgroundSplit">@null</item>
- <item name="android:backgroundStacked">@drawable/ab_stacked_opaque_dark_holo</item>
- <item name="android:displayOptions"></item>
- </style>
-
<style name="QuickContactListItemStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
@@ -304,6 +191,8 @@
<item name="android:layout_weight">1</item>
<item name="android:paddingLeft">16dip</item>
<item name="android:paddingRight">16dip</item>
+ <item name="android:paddingStart">16dip</item>
+ <item name="android:paddingEnd">16dip</item>
<item name="android:gravity">center_vertical</item>
<item name="android:orientation">vertical</item>
</style>
@@ -326,27 +215,6 @@
<style name="GroupMembershipSizeTextAppearance" parent="@android:style/TextAppearance.Small"/>
- <!-- TextView style with blue underline. It is most suitable for headers.
-
- This is similar to ?android:attr/listSeparatorTextView but uses different
- background and text color. See also android:style/Widget.Holo.TextView.ListSeparator
- (which is private, so we cannot specify it as a parent style). -->
- <style name="ContactListSeparatorTextViewStyle">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <!-- See comments for @dimen/list_section_divider_min_height -->
- <item name="android:minHeight">@dimen/list_section_divider_min_height</item>
- <item name="android:background">@drawable/list_section_divider_holo_custom</item>
- <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
- <item name="android:textStyle">bold</item>
- <item name="android:textColor">@color/people_app_theme_color</item>
- <item name="android:gravity">center_vertical</item>
- <item name="android:paddingLeft">8dip</item>
- <item name="android:ellipsize">end</item>
- <item name="android:singleLine">true</item>
- <item name="android:textAllCaps">true</item>
- </style>
-
<style name="PeopleNavigationDropDownTextAppearance">
<item name="android:textColor">#333333</item>
<item name="android:textSize">18sp</item>
@@ -357,7 +225,4 @@
<item name="android:textSize">18sp</item>
</style>
- <style name="FragmentActionBarPadding">
- <item name="android:paddingBottom">?android:attr/actionBarSize</item>
- </style>
</resources>
diff --git a/res/xml/preference_display_options.xml b/res/xml/preference_display_options.xml
index a65010d..4ec31b2 100644
--- a/res/xml/preference_display_options.xml
+++ b/res/xml/preference_display_options.xml
@@ -15,16 +15,13 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory
- android:title="@string/preference_displayOptions">
- <com.android.contacts.preference.SortOrderPreference
- android:key="sortOrder"
- android:title="@string/display_options_sort_list_by"
- android:dialogTitle="@string/display_options_sort_list_by" />
+ <com.android.contacts.preference.SortOrderPreference
+ android:key="sortOrder"
+ android:title="@string/display_options_sort_list_by"
+ android:dialogTitle="@string/display_options_sort_list_by" />
- <com.android.contacts.preference.DisplayOrderPreference
- android:key="displayOrder"
- android:title="@string/display_options_view_names_as"
- android:dialogTitle="@string/display_options_view_names_as" />
- </PreferenceCategory>
+ <com.android.contacts.preference.DisplayOrderPreference
+ android:key="displayOrder"
+ android:title="@string/display_options_view_names_as"
+ android:dialogTitle="@string/display_options_view_names_as" />
</PreferenceScreen>
diff --git a/script/test.sh b/script/test.sh
new file mode 100755
index 0000000..306340a
--- /dev/null
+++ b/script/test.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# 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.
+#
+
+adb shell am instrument ${@} -w com.android.contacts.tests/android.test.InstrumentationTestRunner
diff --git a/src/com/android/contacts/BackScrollManager.java b/src/com/android/contacts/BackScrollManager.java
deleted file mode 100644
index 192b79e..0000000
--- a/src/com/android/contacts/BackScrollManager.java
+++ /dev/null
@@ -1,89 +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;
-
-import android.view.View;
-import android.widget.AbsListView;
-import android.widget.ListView;
-
-/**
- * Handles scrolling back of a list tied to a header.
- * <p>
- * This is used to implement a header that scrolls up with the content of a list to be partially
- * obscured.
- */
-public class BackScrollManager {
- /** Defines the header to be scrolled. */
- public interface ScrollableHeader {
- /** Sets the offset by which to scroll. */
- public void setOffset(int offset);
- /** Gets the maximum offset that should be applied to the header. */
- public int getMaximumScrollableHeaderOffset();
- }
-
- private final ScrollableHeader mHeader;
- private final ListView mListView;
-
- private final AbsListView.OnScrollListener mScrollListener =
- new AbsListView.OnScrollListener() {
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
- int totalItemCount) {
- if (firstVisibleItem != 0) {
- // The first item is not shown, the header should be pinned at the top.
- mHeader.setOffset(mHeader.getMaximumScrollableHeaderOffset());
- return;
- }
-
- View firstVisibleItemView = view.getChildAt(firstVisibleItem);
- if (firstVisibleItemView == null) {
- return;
- }
- // We scroll the header up, but at most pin it to the top of the screen.
- int offset = Math.min(
- (int) -view.getChildAt(firstVisibleItem).getY(),
- mHeader.getMaximumScrollableHeaderOffset());
- mHeader.setOffset(offset);
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- // Nothing to do here.
- }
- };
-
- /**
- * Creates a new instance of a {@link BackScrollManager} that connected the header and the list
- * view.
- */
- public static void bind(ScrollableHeader header, ListView listView) {
- BackScrollManager backScrollManager = new BackScrollManager(header, listView);
- backScrollManager.bind();
- }
-
- private BackScrollManager(ScrollableHeader header, ListView listView) {
- mHeader = header;
- mListView = listView;
- }
-
- private void bind() {
- mListView.setOnScrollListener(mScrollListener);
- // We disable the scroll bar because it would otherwise be incorrect because of the hidden
- // header.
- mListView.setVerticalScrollBarEnabled(false);
- }
-}
diff --git a/src/com/android/contacts/CallContactActivity.java b/src/com/android/contacts/CallContactActivity.java
deleted file mode 100644
index c4b4dc7..0000000
--- a/src/com/android/contacts/CallContactActivity.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts;
-
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract.Contacts;
-
-import com.android.contacts.interactions.PhoneNumberInteraction;
-
-/**
- * An interstitial activity used when the user selects a QSB search suggestion using
- * a call button.
- */
-public class CallContactActivity extends ContactsActivity implements OnDismissListener {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Uri contactUri = getIntent().getData();
- if (contactUri == null) {
- finish();
- }
-
- // If this method is being invoked with a saved state, rely on Activity
- // to restore it
- if (savedInstanceState != null) {
- return;
- }
-
- if (Contacts.CONTENT_ITEM_TYPE.equals(getContentResolver().getType(contactUri))) {
- PhoneNumberInteraction.startInteractionForPhoneCall(this, contactUri);
- } else {
- startActivity(ContactsUtils.getCallIntent(contactUri));
- finish();
- }
- }
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- if (!isChangingConfigurations()) {
- finish();
- }
- }
-}
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
deleted file mode 100644
index 7bb2157..0000000
--- a/src/com/android/contacts/CallDetailActivity.java
+++ /dev/null
@@ -1,936 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts;
-
-import android.app.ActionBar;
-import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.provider.Contacts.Intents.Insert;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.VoicemailContract.Voicemails;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.ActionMode;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.contacts.BackScrollManager.ScrollableHeader;
-import com.android.contacts.calllog.CallDetailHistoryAdapter;
-import com.android.contacts.calllog.CallTypeHelper;
-import com.android.contacts.calllog.ContactInfo;
-import com.android.contacts.calllog.ContactInfoHelper;
-import com.android.contacts.calllog.PhoneNumberHelper;
-import com.android.contacts.format.FormatUtils;
-import com.android.contacts.util.AsyncTaskExecutor;
-import com.android.contacts.util.AsyncTaskExecutors;
-import com.android.contacts.util.ClipboardUtils;
-import com.android.contacts.util.Constants;
-import com.android.contacts.voicemail.VoicemailPlaybackFragment;
-import com.android.contacts.voicemail.VoicemailStatusHelper;
-import com.android.contacts.voicemail.VoicemailStatusHelper.StatusMessage;
-import com.android.contacts.voicemail.VoicemailStatusHelperImpl;
-
-import java.util.List;
-
-/**
- * Displays the details of a specific call log entry.
- * <p>
- * This activity can be either started with the URI of a single call log entry, or with the
- * {@link #EXTRA_CALL_LOG_IDS} extra to specify a group of call log entries.
- */
-public class CallDetailActivity extends Activity implements ProximitySensorAware {
- private static final String TAG = "CallDetail";
-
- /** The time to wait before enabling the blank the screen due to the proximity sensor. */
- private static final long PROXIMITY_BLANK_DELAY_MILLIS = 100;
- /** The time to wait before disabling the blank the screen due to the proximity sensor. */
- private static final long PROXIMITY_UNBLANK_DELAY_MILLIS = 500;
-
- /** The enumeration of {@link AsyncTask} objects used in this class. */
- public enum Tasks {
- MARK_VOICEMAIL_READ,
- DELETE_VOICEMAIL_AND_FINISH,
- REMOVE_FROM_CALL_LOG_AND_FINISH,
- UPDATE_PHONE_CALL_DETAILS,
- }
-
- /** A long array extra containing ids of call log entries to display. */
- public static final String EXTRA_CALL_LOG_IDS = "EXTRA_CALL_LOG_IDS";
- /** If we are started with a voicemail, we'll find the uri to play with this extra. */
- public static final String EXTRA_VOICEMAIL_URI = "EXTRA_VOICEMAIL_URI";
- /** If we should immediately start playback of the voicemail, this extra will be set to true. */
- public static final String EXTRA_VOICEMAIL_START_PLAYBACK = "EXTRA_VOICEMAIL_START_PLAYBACK";
- /** If the activity was triggered from a notification. */
- public static final String EXTRA_FROM_NOTIFICATION = "EXTRA_FROM_NOTIFICATION";
-
- private CallTypeHelper mCallTypeHelper;
- private PhoneNumberHelper mPhoneNumberHelper;
- private PhoneCallDetailsHelper mPhoneCallDetailsHelper;
- private TextView mHeaderTextView;
- private View mHeaderOverlayView;
- private ImageView mMainActionView;
- private ImageButton mMainActionPushLayerView;
- private ImageView mContactBackgroundView;
- private AsyncTaskExecutor mAsyncTaskExecutor;
- private ContactInfoHelper mContactInfoHelper;
-
- private String mNumber = null;
- private String mDefaultCountryIso;
-
- /* package */ LayoutInflater mInflater;
- /* package */ Resources mResources;
- /** Helper to load contact photos. */
- private ContactPhotoManager mContactPhotoManager;
- /** Helper to make async queries to content resolver. */
- private CallDetailActivityQueryHandler mAsyncQueryHandler;
- /** Helper to get voicemail status messages. */
- private VoicemailStatusHelper mVoicemailStatusHelper;
- // Views related to voicemail status message.
- private View mStatusMessageView;
- private TextView mStatusMessageText;
- private TextView mStatusMessageAction;
-
- /** Whether we should show "edit number before call" in the options menu. */
- private boolean mHasEditNumberBeforeCallOption;
- /** Whether we should show "trash" in the options menu. */
- private boolean mHasTrashOption;
- /** Whether we should show "remove from call log" in the options menu. */
- private boolean mHasRemoveFromCallLogOption;
-
- private ProximitySensorManager mProximitySensorManager;
- private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
-
- /**
- * The action mode used when the phone number is selected. This will be non-null only when the
- * phone number is selected.
- */
- private ActionMode mPhoneNumberActionMode;
-
- private CharSequence mPhoneNumberLabelToCopy;
- private CharSequence mPhoneNumberToCopy;
-
- /** Listener to changes in the proximity sensor state. */
- private class ProximitySensorListener implements ProximitySensorManager.Listener {
- /** Used to show a blank view and hide the action bar. */
- private final Runnable mBlankRunnable = new Runnable() {
- @Override
- public void run() {
- View blankView = findViewById(R.id.blank);
- blankView.setVisibility(View.VISIBLE);
- getActionBar().hide();
- }
- };
- /** Used to remove the blank view and show the action bar. */
- private final Runnable mUnblankRunnable = new Runnable() {
- @Override
- public void run() {
- View blankView = findViewById(R.id.blank);
- blankView.setVisibility(View.GONE);
- getActionBar().show();
- }
- };
-
- @Override
- public synchronized void onNear() {
- clearPendingRequests();
- postDelayed(mBlankRunnable, PROXIMITY_BLANK_DELAY_MILLIS);
- }
-
- @Override
- public synchronized void onFar() {
- clearPendingRequests();
- postDelayed(mUnblankRunnable, PROXIMITY_UNBLANK_DELAY_MILLIS);
- }
-
- /** Removed any delayed requests that may be pending. */
- public synchronized void clearPendingRequests() {
- View blankView = findViewById(R.id.blank);
- blankView.removeCallbacks(mBlankRunnable);
- blankView.removeCallbacks(mUnblankRunnable);
- }
-
- /** Post a {@link Runnable} with a delay on the main thread. */
- private synchronized void postDelayed(Runnable runnable, long delayMillis) {
- // Post these instead of executing immediately so that:
- // - They are guaranteed to be executed on the main thread.
- // - If the sensor values changes rapidly for some time, the UI will not be
- // updated immediately.
- View blankView = findViewById(R.id.blank);
- blankView.postDelayed(runnable, delayMillis);
- }
- }
-
- static final String[] CALL_LOG_PROJECTION = new String[] {
- CallLog.Calls.DATE,
- CallLog.Calls.DURATION,
- CallLog.Calls.NUMBER,
- CallLog.Calls.TYPE,
- CallLog.Calls.COUNTRY_ISO,
- CallLog.Calls.GEOCODED_LOCATION,
- };
-
- static final int DATE_COLUMN_INDEX = 0;
- static final int DURATION_COLUMN_INDEX = 1;
- static final int NUMBER_COLUMN_INDEX = 2;
- static final int CALL_TYPE_COLUMN_INDEX = 3;
- static final int COUNTRY_ISO_COLUMN_INDEX = 4;
- static final int GEOCODED_LOCATION_COLUMN_INDEX = 5;
-
- private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return;
- }
- startActivity(((ViewEntry) view.getTag()).primaryIntent);
- }
- };
-
- private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return;
- }
- startActivity(((ViewEntry) view.getTag()).secondaryIntent);
- }
- };
-
- private final View.OnLongClickListener mPrimaryLongClickListener =
- new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- if (finishPhoneNumerSelectedActionModeIfShown()) {
- return true;
- }
- startPhoneNumberSelectedActionMode(v);
- return true;
- }
- };
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- setContentView(R.layout.call_detail);
-
- mAsyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
- mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
- mResources = getResources();
-
- mCallTypeHelper = new CallTypeHelper(getResources());
- mPhoneNumberHelper = new PhoneNumberHelper(mResources);
- mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper,
- mPhoneNumberHelper);
- mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
- mAsyncQueryHandler = new CallDetailActivityQueryHandler(this);
- mHeaderTextView = (TextView) findViewById(R.id.header_text);
- mHeaderOverlayView = findViewById(R.id.photo_text_bar);
- mStatusMessageView = findViewById(R.id.voicemail_status);
- mStatusMessageText = (TextView) findViewById(R.id.voicemail_status_message);
- mStatusMessageAction = (TextView) findViewById(R.id.voicemail_status_action);
- mMainActionView = (ImageView) findViewById(R.id.main_action);
- mMainActionPushLayerView = (ImageButton) findViewById(R.id.main_action_push_layer);
- mContactBackgroundView = (ImageView) findViewById(R.id.contact_background);
- mDefaultCountryIso = ContactsUtils.getCurrentCountryIso(this);
- mContactPhotoManager = ContactPhotoManager.getInstance(this);
- mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
- mContactInfoHelper = new ContactInfoHelper(this, ContactsUtils.getCurrentCountryIso(this));
- configureActionBar();
- optionallyHandleVoicemail();
- if (getIntent().getBooleanExtra(EXTRA_FROM_NOTIFICATION, false)) {
- closeSystemDialogs();
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- updateData(getCallLogEntryUris());
- }
-
- /**
- * Handle voicemail playback or hide voicemail ui.
- * <p>
- * If the Intent used to start this Activity contains the suitable extras, then start voicemail
- * playback. If it doesn't, then hide the voicemail ui.
- */
- private void optionallyHandleVoicemail() {
- View voicemailContainer = findViewById(R.id.voicemail_container);
- if (hasVoicemail()) {
- // Has voicemail: add the voicemail fragment. Add suitable arguments to set the uri
- // to play and optionally start the playback.
- // Do a query to fetch the voicemail status messages.
- VoicemailPlaybackFragment playbackFragment = new VoicemailPlaybackFragment();
- Bundle fragmentArguments = new Bundle();
- fragmentArguments.putParcelable(EXTRA_VOICEMAIL_URI, getVoicemailUri());
- if (getIntent().getBooleanExtra(EXTRA_VOICEMAIL_START_PLAYBACK, false)) {
- fragmentArguments.putBoolean(EXTRA_VOICEMAIL_START_PLAYBACK, true);
- }
- playbackFragment.setArguments(fragmentArguments);
- voicemailContainer.setVisibility(View.VISIBLE);
- getFragmentManager().beginTransaction()
- .add(R.id.voicemail_container, playbackFragment).commitAllowingStateLoss();
- mAsyncQueryHandler.startVoicemailStatusQuery(getVoicemailUri());
- markVoicemailAsRead(getVoicemailUri());
- } else {
- // No voicemail uri: hide the status view.
- mStatusMessageView.setVisibility(View.GONE);
- voicemailContainer.setVisibility(View.GONE);
- }
- }
-
- private boolean hasVoicemail() {
- return getVoicemailUri() != null;
- }
-
- private Uri getVoicemailUri() {
- return getIntent().getParcelableExtra(EXTRA_VOICEMAIL_URI);
- }
-
- private void markVoicemailAsRead(final Uri voicemailUri) {
- mAsyncTaskExecutor.submit(Tasks.MARK_VOICEMAIL_READ, new AsyncTask<Void, Void, Void>() {
- @Override
- public Void doInBackground(Void... params) {
- ContentValues values = new ContentValues();
- values.put(Voicemails.IS_READ, true);
- getContentResolver().update(voicemailUri, values,
- Voicemails.IS_READ + " = 0", null);
- return null;
- }
- });
- }
-
- /**
- * Returns the list of URIs to show.
- * <p>
- * There are two ways the URIs can be provided to the activity: as the data on the intent, or as
- * a list of ids in the call log added as an extra on the URI.
- * <p>
- * If both are available, the data on the intent takes precedence.
- */
- private Uri[] getCallLogEntryUris() {
- Uri uri = getIntent().getData();
- if (uri != null) {
- // If there is a data on the intent, it takes precedence over the extra.
- return new Uri[]{ uri };
- }
- long[] ids = getIntent().getLongArrayExtra(EXTRA_CALL_LOG_IDS);
- Uri[] uris = new Uri[ids.length];
- for (int index = 0; index < ids.length; ++index) {
- uris[index] = ContentUris.withAppendedId(Calls.CONTENT_URI_WITH_VOICEMAIL, ids[index]);
- }
- return uris;
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_CALL: {
- // Make sure phone isn't already busy before starting direct call
- TelephonyManager tm = (TelephonyManager)
- getSystemService(Context.TELEPHONY_SERVICE);
- if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
- startActivity(ContactsUtils.getCallIntent(
- Uri.fromParts(Constants.SCHEME_TEL, mNumber, null)));
- return true;
- }
- }
- }
-
- return super.onKeyDown(keyCode, event);
- }
-
- /**
- * Update user interface with details of given call.
- *
- * @param callUris URIs into {@link CallLog.Calls} of the calls to be displayed
- */
- private void updateData(final Uri... callUris) {
- class UpdateContactDetailsTask extends AsyncTask<Void, Void, PhoneCallDetails[]> {
- @Override
- public PhoneCallDetails[] doInBackground(Void... params) {
- // TODO: All phone calls correspond to the same person, so we can make a single
- // lookup.
- final int numCalls = callUris.length;
- PhoneCallDetails[] details = new PhoneCallDetails[numCalls];
- try {
- for (int index = 0; index < numCalls; ++index) {
- details[index] = getPhoneCallDetailsForUri(callUris[index]);
- }
- return details;
- } catch (IllegalArgumentException e) {
- // Something went wrong reading in our primary data.
- Log.w(TAG, "invalid URI starting call details", e);
- return null;
- }
- }
-
- @Override
- public void onPostExecute(PhoneCallDetails[] details) {
- if (details == null) {
- // Somewhere went wrong: we're going to bail out and show error to users.
- Toast.makeText(CallDetailActivity.this, R.string.toast_call_detail_error,
- Toast.LENGTH_SHORT).show();
- finish();
- return;
- }
-
- // We know that all calls are from the same number and the same contact, so pick the
- // first.
- PhoneCallDetails firstDetails = details[0];
- mNumber = firstDetails.number.toString();
- final Uri contactUri = firstDetails.contactUri;
- final Uri photoUri = firstDetails.photoUri;
-
- // Set the details header, based on the first phone call.
- mPhoneCallDetailsHelper.setCallDetailsHeader(mHeaderTextView, firstDetails);
-
- // Cache the details about the phone number.
- final boolean canPlaceCallsTo = mPhoneNumberHelper.canPlaceCallsTo(mNumber);
- final boolean isVoicemailNumber = mPhoneNumberHelper.isVoicemailNumber(mNumber);
- final boolean isSipNumber = mPhoneNumberHelper.isSipNumber(mNumber);
-
- // Let user view contact details if they exist, otherwise add option to create new
- // contact from this number.
- final Intent mainActionIntent;
- final int mainActionIcon;
- final String mainActionDescription;
-
- final CharSequence nameOrNumber;
- if (!TextUtils.isEmpty(firstDetails.name)) {
- nameOrNumber = firstDetails.name;
- } else {
- nameOrNumber = firstDetails.number;
- }
-
- if (contactUri != null) {
- mainActionIntent = new Intent(Intent.ACTION_VIEW, contactUri);
- // This will launch People's detail contact screen, so we probably want to
- // treat it as a separate People task.
- mainActionIntent.setFlags(
- Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- mainActionIcon = R.drawable.ic_contacts_holo_dark;
- mainActionDescription =
- getString(R.string.description_view_contact, nameOrNumber);
- } else if (isVoicemailNumber) {
- mainActionIntent = null;
- mainActionIcon = 0;
- mainActionDescription = null;
- } else if (isSipNumber) {
- // TODO: This item is currently disabled for SIP addresses, because
- // the Insert.PHONE extra only works correctly for PSTN numbers.
- //
- // To fix this for SIP addresses, we need to:
- // - define ContactsContract.Intents.Insert.SIP_ADDRESS, and use it here if
- // the current number is a SIP address
- // - update the contacts UI code to handle Insert.SIP_ADDRESS by
- // updating the SipAddress field
- // and then we can remove the "!isSipNumber" check above.
- mainActionIntent = null;
- mainActionIcon = 0;
- mainActionDescription = null;
- } else if (canPlaceCallsTo) {
- mainActionIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- mainActionIntent.setType(Contacts.CONTENT_ITEM_TYPE);
- mainActionIntent.putExtra(Insert.PHONE, mNumber);
- mainActionIcon = R.drawable.ic_add_contact_holo_dark;
- mainActionDescription = getString(R.string.description_add_contact);
- } else {
- // If we cannot call the number, when we probably cannot add it as a contact either.
- // This is usually the case of private, unknown, or payphone numbers.
- mainActionIntent = null;
- mainActionIcon = 0;
- mainActionDescription = null;
- }
-
- if (mainActionIntent == null) {
- mMainActionView.setVisibility(View.INVISIBLE);
- mMainActionPushLayerView.setVisibility(View.GONE);
- mHeaderTextView.setVisibility(View.INVISIBLE);
- mHeaderOverlayView.setVisibility(View.INVISIBLE);
- } else {
- mMainActionView.setVisibility(View.VISIBLE);
- mMainActionView.setImageResource(mainActionIcon);
- mMainActionPushLayerView.setVisibility(View.VISIBLE);
- mMainActionPushLayerView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(mainActionIntent);
- }
- });
- mMainActionPushLayerView.setContentDescription(mainActionDescription);
- mHeaderTextView.setVisibility(View.VISIBLE);
- mHeaderOverlayView.setVisibility(View.VISIBLE);
- }
-
- // This action allows to call the number that places the call.
- if (canPlaceCallsTo) {
- final CharSequence displayNumber =
- mPhoneNumberHelper.getDisplayNumber(
- firstDetails.number, firstDetails.formattedNumber);
-
- ViewEntry entry = new ViewEntry(
- getString(R.string.menu_callNumber,
- FormatUtils.forceLeftToRight(displayNumber)),
- ContactsUtils.getCallIntent(mNumber),
- getString(R.string.description_call, nameOrNumber));
-
- // Only show a label if the number is shown and it is not a SIP address.
- if (!TextUtils.isEmpty(firstDetails.name)
- && !TextUtils.isEmpty(firstDetails.number)
- && !PhoneNumberUtils.isUriNumber(firstDetails.number.toString())) {
- entry.label = Phone.getTypeLabel(mResources, firstDetails.numberType,
- firstDetails.numberLabel);
- }
-
- // The secondary action allows to send an SMS to the number that placed the
- // call.
- if (mPhoneNumberHelper.canSendSmsTo(mNumber)) {
- entry.setSecondaryAction(
- R.drawable.ic_text_holo_dark,
- new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts("sms", mNumber, null)),
- getString(R.string.description_send_text_message, nameOrNumber));
- }
-
- configureCallButton(entry);
- mPhoneNumberToCopy = displayNumber;
- mPhoneNumberLabelToCopy = entry.label;
- } else {
- disableCallButton();
- mPhoneNumberToCopy = null;
- mPhoneNumberLabelToCopy = null;
- }
-
- mHasEditNumberBeforeCallOption =
- canPlaceCallsTo && !isSipNumber && !isVoicemailNumber;
- mHasTrashOption = hasVoicemail();
- mHasRemoveFromCallLogOption = !hasVoicemail();
- invalidateOptionsMenu();
-
- ListView historyList = (ListView) findViewById(R.id.history);
- historyList.setAdapter(
- new CallDetailHistoryAdapter(CallDetailActivity.this, mInflater,
- mCallTypeHelper, details, hasVoicemail(), canPlaceCallsTo,
- findViewById(R.id.controls)));
- BackScrollManager.bind(
- new ScrollableHeader() {
- private View mControls = findViewById(R.id.controls);
- private View mPhoto = findViewById(R.id.contact_background_sizer);
- private View mHeader = findViewById(R.id.photo_text_bar);
- private View mSeparator = findViewById(R.id.blue_separator);
-
- @Override
- public void setOffset(int offset) {
- mControls.setY(-offset);
- }
-
- @Override
- public int getMaximumScrollableHeaderOffset() {
- // We can scroll the photo out, but we should keep the header if
- // present.
- if (mHeader.getVisibility() == View.VISIBLE) {
- return mPhoto.getHeight() - mHeader.getHeight();
- } else {
- // If the header is not present, we should also scroll out the
- // separator line.
- return mPhoto.getHeight() + mSeparator.getHeight();
- }
- }
- },
- historyList);
- loadContactPhotos(photoUri);
- findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
- }
- }
- mAsyncTaskExecutor.submit(Tasks.UPDATE_PHONE_CALL_DETAILS, new UpdateContactDetailsTask());
- }
-
- /** Return the phone call details for a given call log URI. */
- private PhoneCallDetails getPhoneCallDetailsForUri(Uri callUri) {
- ContentResolver resolver = getContentResolver();
- Cursor callCursor = resolver.query(callUri, CALL_LOG_PROJECTION, null, null, null);
- try {
- if (callCursor == null || !callCursor.moveToFirst()) {
- throw new IllegalArgumentException("Cannot find content: " + callUri);
- }
-
- // Read call log specifics.
- String number = callCursor.getString(NUMBER_COLUMN_INDEX);
- long date = callCursor.getLong(DATE_COLUMN_INDEX);
- long duration = callCursor.getLong(DURATION_COLUMN_INDEX);
- int callType = callCursor.getInt(CALL_TYPE_COLUMN_INDEX);
- String countryIso = callCursor.getString(COUNTRY_ISO_COLUMN_INDEX);
- final String geocode = callCursor.getString(GEOCODED_LOCATION_COLUMN_INDEX);
-
- if (TextUtils.isEmpty(countryIso)) {
- countryIso = mDefaultCountryIso;
- }
-
- // Formatted phone number.
- final CharSequence formattedNumber;
- // Read contact specifics.
- final CharSequence nameText;
- final int numberType;
- final CharSequence numberLabel;
- final Uri photoUri;
- final Uri lookupUri;
- // If this is not a regular number, there is no point in looking it up in the contacts.
- ContactInfo info =
- mPhoneNumberHelper.canPlaceCallsTo(number)
- && !mPhoneNumberHelper.isVoicemailNumber(number)
- ? mContactInfoHelper.lookupNumber(number, countryIso)
- : null;
- if (info == null) {
- formattedNumber = mPhoneNumberHelper.getDisplayNumber(number, null);
- nameText = "";
- numberType = 0;
- numberLabel = "";
- photoUri = null;
- lookupUri = null;
- } else {
- formattedNumber = info.formattedNumber;
- nameText = info.name;
- numberType = info.type;
- numberLabel = info.label;
- photoUri = info.photoUri;
- lookupUri = info.lookupUri;
- }
- return new PhoneCallDetails(number, formattedNumber, countryIso, geocode,
- new int[]{ callType }, date, duration,
- nameText, numberType, numberLabel, lookupUri, photoUri);
- } finally {
- if (callCursor != null) {
- callCursor.close();
- }
- }
- }
-
- /** Load the contact photos and places them in the corresponding views. */
- private void loadContactPhotos(Uri photoUri) {
- mContactPhotoManager.loadPhoto(mContactBackgroundView, photoUri,
- mContactBackgroundView.getWidth(), true);
- }
-
- static final class ViewEntry {
- public final String text;
- public final Intent primaryIntent;
- /** The description for accessibility of the primary action. */
- public final String primaryDescription;
-
- public CharSequence label = null;
- /** Icon for the secondary action. */
- public int secondaryIcon = 0;
- /** Intent for the secondary action. If not null, an icon must be defined. */
- public Intent secondaryIntent = null;
- /** The description for accessibility of the secondary action. */
- public String secondaryDescription = null;
-
- public ViewEntry(String text, Intent intent, String description) {
- this.text = text;
- primaryIntent = intent;
- primaryDescription = description;
- }
-
- public void setSecondaryAction(int icon, Intent intent, String description) {
- secondaryIcon = icon;
- secondaryIntent = intent;
- secondaryDescription = description;
- }
- }
-
- /** Disables the call button area, e.g., for private numbers. */
- private void disableCallButton() {
- findViewById(R.id.call_and_sms).setVisibility(View.GONE);
- }
-
- /** Configures the call button area using the given entry. */
- private void configureCallButton(ViewEntry entry) {
- View convertView = findViewById(R.id.call_and_sms);
- convertView.setVisibility(View.VISIBLE);
-
- ImageView icon = (ImageView) convertView.findViewById(R.id.call_and_sms_icon);
- View divider = convertView.findViewById(R.id.call_and_sms_divider);
- TextView text = (TextView) convertView.findViewById(R.id.call_and_sms_text);
-
- View mainAction = convertView.findViewById(R.id.call_and_sms_main_action);
- mainAction.setOnClickListener(mPrimaryActionListener);
- mainAction.setTag(entry);
- mainAction.setContentDescription(entry.primaryDescription);
- mainAction.setOnLongClickListener(mPrimaryLongClickListener);
-
- if (entry.secondaryIntent != null) {
- icon.setOnClickListener(mSecondaryActionListener);
- icon.setImageResource(entry.secondaryIcon);
- icon.setVisibility(View.VISIBLE);
- icon.setTag(entry);
- icon.setContentDescription(entry.secondaryDescription);
- divider.setVisibility(View.VISIBLE);
- } else {
- icon.setVisibility(View.GONE);
- divider.setVisibility(View.GONE);
- }
- text.setText(entry.text);
-
- TextView label = (TextView) convertView.findViewById(R.id.call_and_sms_label);
- if (TextUtils.isEmpty(entry.label)) {
- label.setVisibility(View.GONE);
- } else {
- label.setText(entry.label);
- label.setVisibility(View.VISIBLE);
- }
- }
-
- protected void updateVoicemailStatusMessage(Cursor statusCursor) {
- if (statusCursor == null) {
- mStatusMessageView.setVisibility(View.GONE);
- return;
- }
- final StatusMessage message = getStatusMessage(statusCursor);
- if (message == null || !message.showInCallDetails()) {
- mStatusMessageView.setVisibility(View.GONE);
- return;
- }
-
- mStatusMessageView.setVisibility(View.VISIBLE);
- mStatusMessageText.setText(message.callDetailsMessageId);
- if (message.actionMessageId != -1) {
- mStatusMessageAction.setText(message.actionMessageId);
- }
- if (message.actionUri != null) {
- mStatusMessageAction.setClickable(true);
- mStatusMessageAction.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(new Intent(Intent.ACTION_VIEW, message.actionUri));
- }
- });
- } else {
- mStatusMessageAction.setClickable(false);
- }
- }
-
- private StatusMessage getStatusMessage(Cursor statusCursor) {
- List<StatusMessage> messages = mVoicemailStatusHelper.getStatusMessages(statusCursor);
- if (messages.size() == 0) {
- return null;
- }
- // There can only be a single status message per source package, so num of messages can
- // at most be 1.
- if (messages.size() > 1) {
- Log.w(TAG, String.format("Expected 1, found (%d) num of status messages." +
- " Will use the first one.", messages.size()));
- }
- return messages.get(0);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.call_details_options, menu);
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- // This action deletes all elements in the group from the call log.
- // We don't have this action for voicemails, because you can just use the trash button.
- menu.findItem(R.id.menu_remove_from_call_log).setVisible(mHasRemoveFromCallLogOption);
- menu.findItem(R.id.menu_edit_number_before_call).setVisible(mHasEditNumberBeforeCallOption);
- menu.findItem(R.id.menu_trash).setVisible(mHasTrashOption);
- return super.onPrepareOptionsMenu(menu);
- }
-
- @Override
- public boolean onMenuItemSelected(int featureId, MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home: {
- onHomeSelected();
- return true;
- }
-
- // All the options menu items are handled by onMenu... methods.
- default:
- throw new IllegalArgumentException();
- }
- }
-
- public void onMenuRemoveFromCallLog(MenuItem menuItem) {
- final StringBuilder callIds = new StringBuilder();
- for (Uri callUri : getCallLogEntryUris()) {
- if (callIds.length() != 0) {
- callIds.append(",");
- }
- callIds.append(ContentUris.parseId(callUri));
- }
- mAsyncTaskExecutor.submit(Tasks.REMOVE_FROM_CALL_LOG_AND_FINISH,
- new AsyncTask<Void, Void, Void>() {
- @Override
- public Void doInBackground(Void... params) {
- getContentResolver().delete(Calls.CONTENT_URI_WITH_VOICEMAIL,
- Calls._ID + " IN (" + callIds + ")", null);
- return null;
- }
-
- @Override
- public void onPostExecute(Void result) {
- finish();
- }
- });
- }
-
- public void onMenuEditNumberBeforeCall(MenuItem menuItem) {
- startActivity(new Intent(Intent.ACTION_DIAL, ContactsUtils.getCallUri(mNumber)));
- }
-
- public void onMenuTrashVoicemail(MenuItem menuItem) {
- final Uri voicemailUri = getVoicemailUri();
- mAsyncTaskExecutor.submit(Tasks.DELETE_VOICEMAIL_AND_FINISH,
- new AsyncTask<Void, Void, Void>() {
- @Override
- public Void doInBackground(Void... params) {
- getContentResolver().delete(voicemailUri, null, null);
- return null;
- }
- @Override
- public void onPostExecute(Void result) {
- finish();
- }
- });
- }
-
- private void configureActionBar() {
- ActionBar actionBar = getActionBar();
- if (actionBar != null) {
- actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME);
- }
- }
-
- /** Invoked when the user presses the home button in the action bar. */
- private void onHomeSelected() {
- Intent intent = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
- // This will open the call log even if the detail view has been opened directly.
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- finish();
- }
-
- @Override
- protected void onPause() {
- // Immediately stop the proximity sensor.
- disableProximitySensor(false);
- mProximitySensorListener.clearPendingRequests();
- super.onPause();
- }
-
- @Override
- public void enableProximitySensor() {
- mProximitySensorManager.enable();
- }
-
- @Override
- public void disableProximitySensor(boolean waitForFarState) {
- mProximitySensorManager.disable(waitForFarState);
- }
-
- /**
- * If the phone number is selected, unselect it and return {@code true}.
- * Otherwise, just {@code false}.
- */
- private boolean finishPhoneNumerSelectedActionModeIfShown() {
- if (mPhoneNumberActionMode == null) return false;
- mPhoneNumberActionMode.finish();
- return true;
- }
-
- private void startPhoneNumberSelectedActionMode(View targetView) {
- mPhoneNumberActionMode = startActionMode(new PhoneNumberActionModeCallback(targetView));
- }
-
- private void closeSystemDialogs() {
- sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
- }
-
- private class PhoneNumberActionModeCallback implements ActionMode.Callback {
- private final View mTargetView;
- private final Drawable mOriginalViewBackground;
-
- public PhoneNumberActionModeCallback(View targetView) {
- mTargetView = targetView;
-
- // Highlight the phone number view. Remember the old background, and put a new one.
- mOriginalViewBackground = mTargetView.getBackground();
- mTargetView.setBackgroundColor(getResources().getColor(R.color.item_selected));
- }
-
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- if (TextUtils.isEmpty(mPhoneNumberToCopy)) return false;
-
- getMenuInflater().inflate(R.menu.call_details_cab, menu);
- return true;
- }
-
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return true;
- }
-
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- switch (item.getItemId()) {
- case R.id.copy_phone_number:
- ClipboardUtils.copyText(CallDetailActivity.this, mPhoneNumberLabelToCopy,
- mPhoneNumberToCopy, true);
- mode.finish(); // Close the CAB
- return true;
- }
- return false;
- }
-
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- mPhoneNumberActionMode = null;
-
- // Restore the view background.
- mTargetView.setBackground(mOriginalViewBackground);
- }
- }
-}
diff --git a/src/com/android/contacts/CallDetailActivityQueryHandler.java b/src/com/android/contacts/CallDetailActivityQueryHandler.java
deleted file mode 100644
index 41cf937..0000000
--- a/src/com/android/contacts/CallDetailActivityQueryHandler.java
+++ /dev/null
@@ -1,104 +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;
-
-import android.content.AsyncQueryHandler;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract.Status;
-import android.provider.VoicemailContract.Voicemails;
-import android.util.Log;
-
-import com.android.common.io.MoreCloseables;
-import com.android.contacts.voicemail.VoicemailStatusHelperImpl;
-
-/**
- * Class used by {@link CallDetailActivity} to fire async content resolver queries.
- */
-public class CallDetailActivityQueryHandler extends AsyncQueryHandler {
- private static final String TAG = "CallDetail";
- private static final int QUERY_VOICEMAIL_CONTENT_TOKEN = 101;
- private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 102;
-
- private final String[] VOICEMAIL_CONTENT_PROJECTION = new String[] {
- Voicemails.SOURCE_PACKAGE,
- Voicemails.HAS_CONTENT
- };
- private static final int SOURCE_PACKAGE_COLUMN_INDEX = 0;
- private static final int HAS_CONTENT_COLUMN_INDEX = 1;
-
- private final CallDetailActivity mCallDetailActivity;
-
- public CallDetailActivityQueryHandler(CallDetailActivity callDetailActivity) {
- super(callDetailActivity.getContentResolver());
- mCallDetailActivity = callDetailActivity;
- }
-
- /**
- * Fires a query to update voicemail status for the given voicemail record. On completion of the
- * query a call to {@link CallDetailActivity#updateVoicemailStatusMessage(Cursor)} is made.
- * <p>
- * if this is a voicemail record then it makes up to two asynchronous content resolver queries.
- * The first one to fetch voicemail content details and check if the voicemail record has audio.
- * If the voicemail record does not have an audio yet then it fires the second query to get the
- * voicemail status of the associated source.
- */
- public void startVoicemailStatusQuery(Uri voicemailUri) {
- startQuery(QUERY_VOICEMAIL_CONTENT_TOKEN, null, voicemailUri, VOICEMAIL_CONTENT_PROJECTION,
- null, null, null);
- }
-
- @Override
- protected synchronized void onQueryComplete(int token, Object cookie, Cursor cursor) {
- try {
- if (token == QUERY_VOICEMAIL_CONTENT_TOKEN) {
- // Query voicemail status only if this voicemail record does not have audio.
- if (moveToFirst(cursor) && hasNoAudio(cursor)) {
- startQuery(QUERY_VOICEMAIL_STATUS_TOKEN, null,
- Status.buildSourceUri(getSourcePackage(cursor)),
- VoicemailStatusHelperImpl.PROJECTION, null, null, null);
- } else {
- // nothing to show in status
- mCallDetailActivity.updateVoicemailStatusMessage(null);
- }
- } else if (token == QUERY_VOICEMAIL_STATUS_TOKEN) {
- mCallDetailActivity.updateVoicemailStatusMessage(cursor);
- } else {
- Log.w(TAG, "Unknown query completed: ignoring: " + token);
- }
- } finally {
- MoreCloseables.closeQuietly(cursor);
- }
- }
-
- /** Check that the cursor is non-null and can be moved to first. */
- private boolean moveToFirst(Cursor cursor) {
- if (cursor == null || !cursor.moveToFirst()) {
- Log.e(TAG, "Cursor not valid, could not move to first");
- return false;
- }
- return true;
- }
-
- private boolean hasNoAudio(Cursor voicemailCursor) {
- return voicemailCursor.getInt(HAS_CONTENT_COLUMN_INDEX) == 0;
- }
-
- private String getSourcePackage(Cursor voicemailCursor) {
- return voicemailCursor.getString(SOURCE_PACKAGE_COLUMN_INDEX);
- }
-}
diff --git a/src/com/android/contacts/Collapser.java b/src/com/android/contacts/Collapser.java
deleted file mode 100644
index 3b2f2a9..0000000
--- a/src/com/android/contacts/Collapser.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Class used for collapsing data items into groups of similar items. The data items that should be
- * collapsible should implement the Collapsible interface. The class also contains a utility
- * function that takes an ArrayList of items and returns a list of the same items collapsed into
- * groups.
- */
-public final class Collapser {
-
- /*
- * This utility class cannot be instantiated.
- */
- private Collapser() {}
-
- /*
- * Interface implemented by data types that can be collapsed into groups of similar data. This
- * can be used for example to collapse similar contact data items into a single item.
- */
- public interface Collapsible<T> {
- public boolean collapseWith(T t);
- public boolean shouldCollapseWith(T t);
- }
-
- /**
- * Collapses a list of Collapsible items into a list of collapsed items. Items are collapsed
- * if {@link Collapsible#shouldCollapseWith(Object)} returns true, and are collapsed
- * through the {@Link Collapsible#collapseWith(Object)} function implemented by the data item.
- *
- * @param list List of Objects of type <T extends Collapsible<T>> to be collapsed.
- */
- public static <T extends Collapsible<T>> void collapseList(List<T> list) {
-
- int listSize = list.size();
-
- for (int i = 0; i < listSize; i++) {
- T iItem = list.get(i);
- if (iItem != null) {
- for (int j = i + 1; j < listSize; j++) {
- T jItem = list.get(j);
- if (jItem != null) {
- if (iItem.shouldCollapseWith(jItem)) {
- iItem.collapseWith(jItem);
- list.set(j, null);
- }
- }
- }
- }
- }
-
- // Remove the null items
- Iterator<T> itr = list.iterator();
- while (itr.hasNext()) {
- if (itr.next() == null) {
- itr.remove();
- }
- }
-
- }
-}
diff --git a/src/com/android/contacts/ContactListEmptyView.java b/src/com/android/contacts/ContactListEmptyView.java
deleted file mode 100644
index 40d5152..0000000
--- a/src/com/android/contacts/ContactListEmptyView.java
+++ /dev/null
@@ -1,113 +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;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.IContentService;
-import android.os.RemoteException;
-import android.provider.ContactsContract;
-import android.telephony.TelephonyManager;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-/**
- * Displays a message when there is nothing to display in a contact list.
- */
-public class ContactListEmptyView extends ScrollView {
-
- private static final String TAG = "ContactListEmptyView";
-
- public ContactListEmptyView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public void hide() {
- TextView empty = (TextView) findViewById(R.id.emptyText);
- empty.setVisibility(GONE);
- }
-
- public void show(boolean searchMode, boolean displayOnlyPhones,
- boolean isFavoritesMode, boolean isQueryMode, boolean isShortcutAction,
- boolean isMultipleSelectionEnabled, boolean showSelectedOnly) {
- if (searchMode) {
- return;
- }
-
- TextView empty = (TextView) findViewById(R.id.emptyText);
- Context context = getContext();
- if (displayOnlyPhones) {
- empty.setText(context.getText(R.string.noContactsWithPhoneNumbers));
- } else if (isFavoritesMode) {
- empty.setText(context.getText(R.string.noFavoritesHelpText));
- } else if (isQueryMode) {
- empty.setText(context.getText(R.string.noMatchingContacts));
- } if (isMultipleSelectionEnabled) {
- if (showSelectedOnly) {
- empty.setText(context.getText(R.string.no_contacts_selected));
- } else {
- empty.setText(context.getText(R.string.noContactsWithPhoneNumbers));
- }
- } else {
- TelephonyManager telephonyManager =
- (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- boolean hasSim = telephonyManager.hasIccCard();
- if (isSyncActive()) {
- if (isShortcutAction) {
- // Help text is the same no matter whether there is SIM or not.
- empty.setText(
- context.getText(R.string.noContactsHelpTextWithSyncForCreateShortcut));
- } else if (hasSim) {
- empty.setText(context.getText(R.string.noContactsHelpTextWithSync));
- } else {
- empty.setText(context.getText(R.string.noContactsNoSimHelpTextWithSync));
- }
- } else {
- if (isShortcutAction) {
- // Help text is the same no matter whether there is SIM or not.
- empty.setText(context.getText(R.string.noContactsHelpTextForCreateShortcut));
- } else if (hasSim) {
- empty.setText(context.getText(R.string.noContactsHelpText));
- } else {
- empty.setText(context.getText(R.string.noContactsNoSimHelpText));
- }
- }
- }
- empty.setVisibility(VISIBLE);
- }
-
- private boolean isSyncActive() {
- Account[] accounts = AccountManager.get(getContext()).getAccounts();
- if (accounts != null && accounts.length > 0) {
- IContentService contentService = ContentResolver.getContentService();
- for (Account account : accounts) {
- try {
- if (contentService.isSyncActive(account, ContactsContract.AUTHORITY)) {
- return true;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Could not get the sync status");
- }
- }
- }
- return false;
- }
-}
diff --git a/src/com/android/contacts/ContactPhotoManager.java b/src/com/android/contacts/ContactPhotoManager.java
deleted file mode 100644
index 5c866d0..0000000
--- a/src/com/android/contacts/ContactPhotoManager.java
+++ /dev/null
@@ -1,1223 +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;
-
-import android.content.ComponentCallbacks2;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Paint.Style;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.TransitionDrawable;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Handler.Callback;
-import android.os.HandlerThread;
-import android.os.Message;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Contacts.Photo;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.Directory;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.LruCache;
-import android.util.TypedValue;
-import android.widget.ImageView;
-
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.util.BitmapUtil;
-import com.android.contacts.util.MemoryUtils;
-import com.android.contacts.util.UriUtils;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Asynchronously loads contact photos and maintains a cache of photos.
- */
-public abstract class ContactPhotoManager implements ComponentCallbacks2 {
- static final String TAG = "ContactPhotoManager";
- static final boolean DEBUG = false; // Don't submit with true
- static final boolean DEBUG_SIZES = false; // Don't submit with true
-
- /** Caches 180dip in pixel. This is used to detect whether to show the hires or lores version
- * of the default avatar */
- private static int s180DipInPixel = -1;
-
- public static final String CONTACT_PHOTO_SERVICE = "contactPhotos";
-
- /**
- * Returns the resource id of the default avatar. Tries to find a resource that is bigger
- * than the given extent (width or height). If extent=-1, a thumbnail avatar is returned
- */
- public static int getDefaultAvatarResId(Context context, int extent, boolean darkTheme) {
- // TODO: Is it worth finding a nicer way to do hires/lores here? In practice, the
- // default avatar doesn't look too different when stretched
- if (s180DipInPixel == -1) {
- Resources r = context.getResources();
- s180DipInPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 180,
- r.getDisplayMetrics());
- }
-
- final boolean hires = (extent != -1) && (extent > s180DipInPixel);
- return getDefaultAvatarResId(hires, darkTheme);
- }
-
- public static int getDefaultAvatarResId(boolean hires, boolean darkTheme) {
- if (hires && darkTheme) return R.drawable.ic_contact_picture_180_holo_dark;
- if (hires) return R.drawable.ic_contact_picture_180_holo_light;
- if (darkTheme) return R.drawable.ic_contact_picture_holo_dark;
- return R.drawable.ic_contact_picture_holo_light;
- }
-
- public static abstract class DefaultImageProvider {
- /**
- * Applies the default avatar to the ImageView. Extent is an indicator for the size (width
- * or height). If darkTheme is set, the avatar is one that looks better on dark background
- */
- public abstract void applyDefaultImage(ImageView view, int extent, boolean darkTheme);
- }
-
- private static class AvatarDefaultImageProvider extends DefaultImageProvider {
- @Override
- public void applyDefaultImage(ImageView view, int extent, boolean darkTheme) {
- view.setImageResource(getDefaultAvatarResId(view.getContext(), extent, darkTheme));
- }
- }
-
- private static class BlankDefaultImageProvider extends DefaultImageProvider {
- private static Drawable sDrawable;
-
- @Override
- public void applyDefaultImage(ImageView view, int extent, boolean darkTheme) {
- if (sDrawable == null) {
- Context context = view.getContext();
- sDrawable = new ColorDrawable(context.getResources().getColor(
- R.color.image_placeholder));
- }
- view.setImageDrawable(sDrawable);
- }
- }
-
- public static final DefaultImageProvider DEFAULT_AVATAR = new AvatarDefaultImageProvider();
-
- public static final DefaultImageProvider DEFAULT_BLANK = new BlankDefaultImageProvider();
-
- /**
- * Requests the singleton instance of {@link AccountTypeManager} with data bound from
- * the available authenticators. This method can safely be called from the UI thread.
- */
- public static ContactPhotoManager getInstance(Context context) {
- Context applicationContext = context.getApplicationContext();
- ContactPhotoManager service =
- (ContactPhotoManager) applicationContext.getSystemService(CONTACT_PHOTO_SERVICE);
- if (service == null) {
- service = createContactPhotoManager(applicationContext);
- Log.e(TAG, "No contact photo service in context: " + applicationContext);
- }
- return service;
- }
-
- public static synchronized ContactPhotoManager createContactPhotoManager(Context context) {
- return new ContactPhotoManagerImpl(context);
- }
-
- /**
- * Load thumbnail image into the supplied image view. If the photo is already cached,
- * it is displayed immediately. Otherwise a request is sent to load the photo
- * from the database.
- */
- public abstract void loadThumbnail(ImageView view, long photoId, boolean darkTheme,
- DefaultImageProvider defaultProvider);
-
- /**
- * Calls {@link #loadThumbnail(ImageView, long, boolean, DefaultImageProvider)} with
- * {@link #DEFAULT_AVATAR}.
- */
- public final void loadThumbnail(ImageView view, long photoId, boolean darkTheme) {
- loadThumbnail(view, photoId, darkTheme, DEFAULT_AVATAR);
- }
-
- /**
- * Load photo into the supplied image view. If the photo is already cached,
- * it is displayed immediately. Otherwise a request is sent to load the photo
- * from the location specified by the URI.
- * @param view The target view
- * @param photoUri The uri of the photo to load
- * @param requestedExtent Specifies an approximate Max(width, height) of the targetView.
- * This is useful if the source image can be a lot bigger that the target, so that the decoding
- * is done using efficient sampling. If requestedExtent is specified, no sampling of the image
- * is performed
- * @param darkTheme Whether the background is dark. This is used for default avatars
- * @param defaultProvider The provider of default avatars (this is used if photoUri doesn't
- * refer to an existing image)
- */
- public abstract void loadPhoto(ImageView view, Uri photoUri, int requestedExtent,
- boolean darkTheme, DefaultImageProvider defaultProvider);
-
- /**
- * Calls {@link #loadPhoto(ImageView, Uri, boolean, boolean, DefaultImageProvider)} with
- * {@link #DEFAULT_AVATAR}.
- */
- public final void loadPhoto(ImageView view, Uri photoUri, int requestedExtent,
- boolean darkTheme) {
- loadPhoto(view, photoUri, requestedExtent, darkTheme, DEFAULT_AVATAR);
- }
-
- /**
- * Calls {@link #loadPhoto(ImageView, Uri, boolean, boolean, DefaultImageProvider)} with
- * {@link #DEFAULT_AVATAR} and with the assumption, that the image is a thumbnail
- */
- public final void loadDirectoryPhoto(ImageView view, Uri photoUri, boolean darkTheme) {
- loadPhoto(view, photoUri, -1, darkTheme, DEFAULT_AVATAR);
- }
-
- /**
- * Remove photo from the supplied image view. This also cancels current pending load request
- * inside this photo manager.
- */
- public abstract void removePhoto(ImageView view);
-
- /**
- * Temporarily stops loading photos from the database.
- */
- public abstract void pause();
-
- /**
- * Resumes loading photos from the database.
- */
- public abstract void resume();
-
- /**
- * Marks all cached photos for reloading. We can continue using cache but should
- * also make sure the photos haven't changed in the background and notify the views
- * if so.
- */
- public abstract void refreshCache();
-
- /**
- * Stores the given bitmap directly in the LRU bitmap cache.
- * @param photoUri The URI of the photo (for future requests).
- * @param bitmap The bitmap.
- * @param photoBytes The bytes that were parsed to create the bitmap.
- */
- public abstract void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes);
-
- /**
- * Initiates a background process that over time will fill up cache with
- * preload photos.
- */
- public abstract void preloadPhotosInBackground();
-
- // ComponentCallbacks2
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- }
-
- // ComponentCallbacks2
- @Override
- public void onLowMemory() {
- }
-
- // ComponentCallbacks2
- @Override
- public void onTrimMemory(int level) {
- }
-}
-
-class ContactPhotoManagerImpl extends ContactPhotoManager implements Callback {
- private static final String LOADER_THREAD_NAME = "ContactPhotoLoader";
-
- private static final int FADE_TRANSITION_DURATION = 200;
-
- /**
- * Type of message sent by the UI thread to itself to indicate that some photos
- * need to be loaded.
- */
- private static final int MESSAGE_REQUEST_LOADING = 1;
-
- /**
- * Type of message sent by the loader thread to indicate that some photos have
- * been loaded.
- */
- private static final int MESSAGE_PHOTOS_LOADED = 2;
-
- private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
- private static final String[] COLUMNS = new String[] { Photo._ID, Photo.PHOTO };
-
- /**
- * Maintains the state of a particular photo.
- */
- private static class BitmapHolder {
- final byte[] bytes;
- final int originalSmallerExtent;
-
- volatile boolean fresh;
- Bitmap bitmap;
- Reference<Bitmap> bitmapRef;
- int decodedSampleSize;
-
- public BitmapHolder(byte[] bytes, int originalSmallerExtent) {
- this.bytes = bytes;
- this.fresh = true;
- this.originalSmallerExtent = originalSmallerExtent;
- }
- }
-
- private final Context mContext;
-
- /**
- * An LRU cache for bitmap holders. The cache contains bytes for photos just
- * as they come from the database. Each holder has a soft reference to the
- * actual bitmap.
- */
- private final LruCache<Object, BitmapHolder> mBitmapHolderCache;
-
- /**
- * {@code true} if ALL entries in {@link #mBitmapHolderCache} are NOT fresh.
- */
- private volatile boolean mBitmapHolderCacheAllUnfresh = true;
-
- /**
- * Cache size threshold at which bitmaps will not be preloaded.
- */
- private final int mBitmapHolderCacheRedZoneBytes;
-
- /**
- * Level 2 LRU cache for bitmaps. This is a smaller cache that holds
- * the most recently used bitmaps to save time on decoding
- * them from bytes (the bytes are stored in {@link #mBitmapHolderCache}.
- */
- private final LruCache<Object, Bitmap> mBitmapCache;
-
- /**
- * A map from ImageView to the corresponding photo ID or uri, encapsulated in a request.
- * The request may swapped out before the photo loading request is started.
- */
- private final ConcurrentHashMap<ImageView, Request> mPendingRequests =
- new ConcurrentHashMap<ImageView, Request>();
-
- /**
- * Handler for messages sent to the UI thread.
- */
- private final Handler mMainThreadHandler = new Handler(this);
-
- /**
- * Thread responsible for loading photos from the database. Created upon
- * the first request.
- */
- private LoaderThread mLoaderThread;
-
- /**
- * A gate to make sure we only send one instance of MESSAGE_PHOTOS_NEEDED at a time.
- */
- private boolean mLoadingRequested;
-
- /**
- * Flag indicating if the image loading is paused.
- */
- private boolean mPaused;
-
- /** Cache size for {@link #mBitmapHolderCache} for devices with "large" RAM. */
- private static final int HOLDER_CACHE_SIZE = 2000000;
-
- /** Cache size for {@link #mBitmapCache} for devices with "large" RAM. */
- private static final int BITMAP_CACHE_SIZE = 36864 * 48; // 1728K
-
- private static final int LARGE_RAM_THRESHOLD = 640 * 1024 * 1024;
-
- /** For debug: How many times we had to reload cached photo for a stale entry */
- private final AtomicInteger mStaleCacheOverwrite = new AtomicInteger();
-
- /** For debug: How many times we had to reload cached photo for a fresh entry. Should be 0. */
- private final AtomicInteger mFreshCacheOverwrite = new AtomicInteger();
-
- public ContactPhotoManagerImpl(Context context) {
- mContext = context;
-
- final float cacheSizeAdjustment =
- (MemoryUtils.getTotalMemorySize() >= LARGE_RAM_THRESHOLD) ? 1.0f : 0.5f;
- final int bitmapCacheSize = (int) (cacheSizeAdjustment * BITMAP_CACHE_SIZE);
- mBitmapCache = new LruCache<Object, Bitmap>(bitmapCacheSize) {
- @Override protected int sizeOf(Object key, Bitmap value) {
- return value.getByteCount();
- }
-
- @Override protected void entryRemoved(
- boolean evicted, Object key, Bitmap oldValue, Bitmap newValue) {
- if (DEBUG) dumpStats();
- }
- };
- final int holderCacheSize = (int) (cacheSizeAdjustment * HOLDER_CACHE_SIZE);
- mBitmapHolderCache = new LruCache<Object, BitmapHolder>(holderCacheSize) {
- @Override protected int sizeOf(Object key, BitmapHolder value) {
- return value.bytes != null ? value.bytes.length : 0;
- }
-
- @Override protected void entryRemoved(
- boolean evicted, Object key, BitmapHolder oldValue, BitmapHolder newValue) {
- if (DEBUG) dumpStats();
- }
- };
- mBitmapHolderCacheRedZoneBytes = (int) (holderCacheSize * 0.75);
- Log.i(TAG, "Cache adj: " + cacheSizeAdjustment);
- if (DEBUG) {
- Log.d(TAG, "Cache size: " + btk(mBitmapHolderCache.maxSize())
- + " + " + btk(mBitmapCache.maxSize()));
- }
- }
-
- /** Converts bytes to K bytes, rounding up. Used only for debug log. */
- private static String btk(int bytes) {
- return ((bytes + 1023) / 1024) + "K";
- }
-
- private static final int safeDiv(int dividend, int divisor) {
- return (divisor == 0) ? 0 : (dividend / divisor);
- }
-
- /**
- * Dump cache stats on logcat.
- */
- private void dumpStats() {
- if (!DEBUG) return;
- {
- int numHolders = 0;
- int rawBytes = 0;
- int bitmapBytes = 0;
- int numBitmaps = 0;
- for (BitmapHolder h : mBitmapHolderCache.snapshot().values()) {
- numHolders++;
- if (h.bytes != null) {
- rawBytes += h.bytes.length;
- }
- Bitmap b = h.bitmapRef != null ? h.bitmapRef.get() : null;
- if (b != null) {
- numBitmaps++;
- bitmapBytes += b.getByteCount();
- }
- }
- Log.d(TAG, "L1: " + btk(rawBytes) + " + " + btk(bitmapBytes) + " = "
- + btk(rawBytes + bitmapBytes) + ", " + numHolders + " holders, "
- + numBitmaps + " bitmaps, avg: "
- + btk(safeDiv(rawBytes, numHolders))
- + "," + btk(safeDiv(bitmapBytes,numBitmaps)));
- Log.d(TAG, "L1 Stats: " + mBitmapHolderCache.toString()
- + ", overwrite: fresh=" + mFreshCacheOverwrite.get()
- + " stale=" + mStaleCacheOverwrite.get());
- }
-
- {
- int numBitmaps = 0;
- int bitmapBytes = 0;
- for (Bitmap b : mBitmapCache.snapshot().values()) {
- numBitmaps++;
- bitmapBytes += b.getByteCount();
- }
- Log.d(TAG, "L2: " + btk(bitmapBytes) + ", " + numBitmaps + " bitmaps"
- + ", avg: " + btk(safeDiv(bitmapBytes, numBitmaps)));
- // We don't get from L2 cache, so L2 stats is meaningless.
- }
- }
-
- @Override
- public void onTrimMemory(int level) {
- if (DEBUG) Log.d(TAG, "onTrimMemory: " + level);
- if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
- // Clear the caches. Note all pending requests will be removed too.
- clear();
- }
- }
-
- @Override
- public void preloadPhotosInBackground() {
- ensureLoaderThread();
- mLoaderThread.requestPreloading();
- }
-
- @Override
- public void loadThumbnail(ImageView view, long photoId, boolean darkTheme,
- DefaultImageProvider defaultProvider) {
- if (photoId == 0) {
- // No photo is needed
- defaultProvider.applyDefaultImage(view, -1, darkTheme);
- mPendingRequests.remove(view);
- } else {
- if (DEBUG) Log.d(TAG, "loadPhoto request: " + photoId);
- loadPhotoByIdOrUri(view, Request.createFromThumbnailId(photoId, darkTheme,
- defaultProvider));
- }
- }
-
- @Override
- public void loadPhoto(ImageView view, Uri photoUri, int requestedExtent, boolean darkTheme,
- DefaultImageProvider defaultProvider) {
- if (photoUri == null) {
- // No photo is needed
- defaultProvider.applyDefaultImage(view, requestedExtent, darkTheme);
- mPendingRequests.remove(view);
- } else {
- if (DEBUG) Log.d(TAG, "loadPhoto request: " + photoUri);
- loadPhotoByIdOrUri(view, Request.createFromUri(photoUri, requestedExtent, darkTheme,
- defaultProvider));
- }
- }
-
- private void loadPhotoByIdOrUri(ImageView view, Request request) {
- boolean loaded = loadCachedPhoto(view, request, false);
- if (loaded) {
- mPendingRequests.remove(view);
- } else {
- mPendingRequests.put(view, request);
- if (!mPaused) {
- // Send a request to start loading photos
- requestLoading();
- }
- }
- }
-
- @Override
- public void removePhoto(ImageView view) {
- view.setImageDrawable(null);
- mPendingRequests.remove(view);
- }
-
- @Override
- public void refreshCache() {
- if (mBitmapHolderCacheAllUnfresh) {
- if (DEBUG) Log.d(TAG, "refreshCache -- no fresh entries.");
- return;
- }
- if (DEBUG) Log.d(TAG, "refreshCache");
- mBitmapHolderCacheAllUnfresh = true;
- for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
- holder.fresh = false;
- }
- }
-
- /**
- * Checks if the photo is present in cache. If so, sets the photo on the view.
- *
- * @return false if the photo needs to be (re)loaded from the provider.
- */
- private boolean loadCachedPhoto(ImageView view, Request request, boolean fadeIn) {
- BitmapHolder holder = mBitmapHolderCache.get(request.getKey());
- if (holder == null) {
- // The bitmap has not been loaded ==> show default avatar
- request.applyDefaultImage(view);
- return false;
- }
-
- if (holder.bytes == null) {
- request.applyDefaultImage(view);
- return holder.fresh;
- }
-
- Bitmap cachedBitmap = holder.bitmapRef == null ? null : holder.bitmapRef.get();
- if (cachedBitmap == null) {
- if (holder.bytes.length < 8 * 1024) {
- // Small thumbnails are usually quick to inflate. Let's do that on the UI thread
- inflateBitmap(holder, request.getRequestedExtent());
- cachedBitmap = holder.bitmap;
- if (cachedBitmap == null) return false;
- } else {
- // This is bigger data. Let's send that back to the Loader so that we can
- // inflate this in the background
- request.applyDefaultImage(view);
- return false;
- }
- }
-
- final Drawable previousDrawable = view.getDrawable();
- if (fadeIn && previousDrawable != null) {
- final Drawable[] layers = new Drawable[2];
- // Prevent cascade of TransitionDrawables.
- if (previousDrawable instanceof TransitionDrawable) {
- final TransitionDrawable previousTransitionDrawable =
- (TransitionDrawable) previousDrawable;
- layers[0] = previousTransitionDrawable.getDrawable(
- previousTransitionDrawable.getNumberOfLayers() - 1);
- } else {
- layers[0] = previousDrawable;
- }
- layers[1] = new BitmapDrawable(mContext.getResources(), cachedBitmap);
- TransitionDrawable drawable = new TransitionDrawable(layers);
- view.setImageDrawable(drawable);
- drawable.startTransition(FADE_TRANSITION_DURATION);
- } else {
- view.setImageBitmap(cachedBitmap);
- }
-
- // Put the bitmap in the LRU cache. But only do this for images that are small enough
- // (we require that at least six of those can be cached at the same time)
- if (cachedBitmap.getByteCount() < mBitmapCache.maxSize() / 6) {
- mBitmapCache.put(request.getKey(), cachedBitmap);
- }
-
- // Soften the reference
- holder.bitmap = null;
-
- return holder.fresh;
- }
-
- /**
- * If necessary, decodes bytes stored in the holder to Bitmap. As long as the
- * bitmap is held either by {@link #mBitmapCache} or by a soft reference in
- * the holder, it will not be necessary to decode the bitmap.
- */
- private static void inflateBitmap(BitmapHolder holder, int requestedExtent) {
- final int sampleSize =
- BitmapUtil.findOptimalSampleSize(holder.originalSmallerExtent, requestedExtent);
- byte[] bytes = holder.bytes;
- if (bytes == null || bytes.length == 0) {
- return;
- }
-
- if (sampleSize == holder.decodedSampleSize) {
- // Check the soft reference. If will be retained if the bitmap is also
- // in the LRU cache, so we don't need to check the LRU cache explicitly.
- if (holder.bitmapRef != null) {
- holder.bitmap = holder.bitmapRef.get();
- if (holder.bitmap != null) {
- return;
- }
- }
- }
-
- try {
- Bitmap bitmap = BitmapUtil.decodeBitmapFromBytes(bytes, sampleSize);
-
- // make bitmap mutable and draw size onto it
- if (DEBUG_SIZES) {
- Bitmap original = bitmap;
- bitmap = bitmap.copy(bitmap.getConfig(), true);
- original.recycle();
- Canvas canvas = new Canvas(bitmap);
- Paint paint = new Paint();
- paint.setTextSize(16);
- paint.setColor(Color.BLUE);
- paint.setStyle(Style.FILL);
- canvas.drawRect(0.0f, 0.0f, 50.0f, 20.0f, paint);
- paint.setColor(Color.WHITE);
- paint.setAntiAlias(true);
- canvas.drawText(bitmap.getWidth() + "/" + sampleSize, 0, 15, paint);
- }
-
- holder.decodedSampleSize = sampleSize;
- holder.bitmap = bitmap;
- holder.bitmapRef = new SoftReference<Bitmap>(bitmap);
- if (DEBUG) {
- Log.d(TAG, "inflateBitmap " + btk(bytes.length) + " -> "
- + bitmap.getWidth() + "x" + bitmap.getHeight()
- + ", " + btk(bitmap.getByteCount()));
- }
- } catch (OutOfMemoryError e) {
- // Do nothing - the photo will appear to be missing
- }
- }
-
- public void clear() {
- if (DEBUG) Log.d(TAG, "clear");
- mPendingRequests.clear();
- mBitmapHolderCache.evictAll();
- mBitmapCache.evictAll();
- }
-
- @Override
- public void pause() {
- mPaused = true;
- }
-
- @Override
- public void resume() {
- mPaused = false;
- if (DEBUG) dumpStats();
- if (!mPendingRequests.isEmpty()) {
- requestLoading();
- }
- }
-
- /**
- * Sends a message to this thread itself to start loading images. If the current
- * view contains multiple image views, all of those image views will get a chance
- * to request their respective photos before any of those requests are executed.
- * This allows us to load images in bulk.
- */
- private void requestLoading() {
- if (!mLoadingRequested) {
- mLoadingRequested = true;
- mMainThreadHandler.sendEmptyMessage(MESSAGE_REQUEST_LOADING);
- }
- }
-
- /**
- * Processes requests on the main thread.
- */
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case MESSAGE_REQUEST_LOADING: {
- mLoadingRequested = false;
- if (!mPaused) {
- ensureLoaderThread();
- mLoaderThread.requestLoading();
- }
- return true;
- }
-
- case MESSAGE_PHOTOS_LOADED: {
- if (!mPaused) {
- processLoadedImages();
- }
- if (DEBUG) dumpStats();
- return true;
- }
- }
- return false;
- }
-
- public void ensureLoaderThread() {
- if (mLoaderThread == null) {
- mLoaderThread = new LoaderThread(mContext.getContentResolver());
- mLoaderThread.start();
- }
- }
-
- /**
- * Goes over pending loading requests and displays loaded photos. If some of the
- * photos still haven't been loaded, sends another request for image loading.
- */
- private void processLoadedImages() {
- Iterator<ImageView> iterator = mPendingRequests.keySet().iterator();
- while (iterator.hasNext()) {
- ImageView view = iterator.next();
- Request key = mPendingRequests.get(view);
- boolean loaded = loadCachedPhoto(view, key, true);
- if (loaded) {
- iterator.remove();
- }
- }
-
- softenCache();
-
- if (!mPendingRequests.isEmpty()) {
- requestLoading();
- }
- }
-
- /**
- * Removes strong references to loaded bitmaps to allow them to be garbage collected
- * if needed. Some of the bitmaps will still be retained by {@link #mBitmapCache}.
- */
- private void softenCache() {
- for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
- holder.bitmap = null;
- }
- }
-
- /**
- * Stores the supplied bitmap in cache.
- */
- private void cacheBitmap(Object key, byte[] bytes, boolean preloading, int requestedExtent) {
- if (DEBUG) {
- BitmapHolder prev = mBitmapHolderCache.get(key);
- if (prev != null && prev.bytes != null) {
- Log.d(TAG, "Overwriting cache: key=" + key + (prev.fresh ? " FRESH" : " stale"));
- if (prev.fresh) {
- mFreshCacheOverwrite.incrementAndGet();
- } else {
- mStaleCacheOverwrite.incrementAndGet();
- }
- }
- Log.d(TAG, "Caching data: key=" + key + ", " +
- (bytes == null ? "<null>" : btk(bytes.length)));
- }
- BitmapHolder holder = new BitmapHolder(bytes,
- bytes == null ? -1 : BitmapUtil.getSmallerExtentFromBytes(bytes));
-
- // Unless this image is being preloaded, decode it right away while
- // we are still on the background thread.
- if (!preloading) {
- inflateBitmap(holder, requestedExtent);
- }
-
- mBitmapHolderCache.put(key, holder);
- mBitmapHolderCacheAllUnfresh = false;
- }
-
- @Override
- public void cacheBitmap(Uri photoUri, Bitmap bitmap, byte[] photoBytes) {
- final int smallerExtent = Math.min(bitmap.getWidth(), bitmap.getHeight());
- // We can pretend here that the extent of the photo was the size that we originally
- // requested
- Request request = Request.createFromUri(photoUri, smallerExtent, false, DEFAULT_AVATAR);
- BitmapHolder holder = new BitmapHolder(photoBytes, smallerExtent);
- holder.bitmapRef = new SoftReference<Bitmap>(bitmap);
- mBitmapHolderCache.put(request.getKey(), holder);
- mBitmapHolderCacheAllUnfresh = false;
- mBitmapCache.put(request.getKey(), bitmap);
- }
-
- /**
- * Populates an array of photo IDs that need to be loaded. Also decodes bitmaps that we have
- * already loaded
- */
- private void obtainPhotoIdsAndUrisToLoad(Set<Long> photoIds,
- Set<String> photoIdsAsStrings, Set<Request> uris) {
- photoIds.clear();
- photoIdsAsStrings.clear();
- uris.clear();
-
- boolean jpegsDecoded = false;
-
- /*
- * Since the call is made from the loader thread, the map could be
- * changing during the iteration. That's not really a problem:
- * ConcurrentHashMap will allow those changes to happen without throwing
- * exceptions. Since we may miss some requests in the situation of
- * concurrent change, we will need to check the map again once loading
- * is complete.
- */
- Iterator<Request> iterator = mPendingRequests.values().iterator();
- while (iterator.hasNext()) {
- Request request = iterator.next();
- final BitmapHolder holder = mBitmapHolderCache.get(request.getKey());
- if (holder != null && holder.bytes != null && holder.fresh &&
- (holder.bitmapRef == null || holder.bitmapRef.get() == null)) {
- // This was previously loaded but we don't currently have the inflated Bitmap
- inflateBitmap(holder, request.getRequestedExtent());
- jpegsDecoded = true;
- } else {
- if (holder == null || !holder.fresh) {
- if (request.isUriRequest()) {
- uris.add(request);
- } else {
- photoIds.add(request.getId());
- photoIdsAsStrings.add(String.valueOf(request.mId));
- }
- }
- }
- }
-
- if (jpegsDecoded) mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
- }
-
- /**
- * The thread that performs loading of photos from the database.
- */
- private class LoaderThread extends HandlerThread implements Callback {
- private static final int BUFFER_SIZE = 1024*16;
- private static final int MESSAGE_PRELOAD_PHOTOS = 0;
- private static final int MESSAGE_LOAD_PHOTOS = 1;
-
- /**
- * A pause between preload batches that yields to the UI thread.
- */
- private static final int PHOTO_PRELOAD_DELAY = 1000;
-
- /**
- * Number of photos to preload per batch.
- */
- private static final int PRELOAD_BATCH = 25;
-
- /**
- * Maximum number of photos to preload. If the cache size is 2Mb and
- * the expected average size of a photo is 4kb, then this number should be 2Mb/4kb = 500.
- */
- private static final int MAX_PHOTOS_TO_PRELOAD = 100;
-
- private final ContentResolver mResolver;
- private final StringBuilder mStringBuilder = new StringBuilder();
- private final Set<Long> mPhotoIds = Sets.newHashSet();
- private final Set<String> mPhotoIdsAsStrings = Sets.newHashSet();
- private final Set<Request> mPhotoUris = Sets.newHashSet();
- private final List<Long> mPreloadPhotoIds = Lists.newArrayList();
-
- private Handler mLoaderThreadHandler;
- private byte mBuffer[];
-
- private static final int PRELOAD_STATUS_NOT_STARTED = 0;
- private static final int PRELOAD_STATUS_IN_PROGRESS = 1;
- private static final int PRELOAD_STATUS_DONE = 2;
-
- private int mPreloadStatus = PRELOAD_STATUS_NOT_STARTED;
-
- public LoaderThread(ContentResolver resolver) {
- super(LOADER_THREAD_NAME);
- mResolver = resolver;
- }
-
- public void ensureHandler() {
- if (mLoaderThreadHandler == null) {
- mLoaderThreadHandler = new Handler(getLooper(), this);
- }
- }
-
- /**
- * Kicks off preloading of the next batch of photos on the background thread.
- * Preloading will happen after a delay: we want to yield to the UI thread
- * as much as possible.
- * <p>
- * If preloading is already complete, does nothing.
- */
- public void requestPreloading() {
- if (mPreloadStatus == PRELOAD_STATUS_DONE) {
- return;
- }
-
- ensureHandler();
- if (mLoaderThreadHandler.hasMessages(MESSAGE_LOAD_PHOTOS)) {
- return;
- }
-
- mLoaderThreadHandler.sendEmptyMessageDelayed(
- MESSAGE_PRELOAD_PHOTOS, PHOTO_PRELOAD_DELAY);
- }
-
- /**
- * Sends a message to this thread to load requested photos. Cancels a preloading
- * request, if any: we don't want preloading to impede loading of the photos
- * we need to display now.
- */
- public void requestLoading() {
- ensureHandler();
- mLoaderThreadHandler.removeMessages(MESSAGE_PRELOAD_PHOTOS);
- mLoaderThreadHandler.sendEmptyMessage(MESSAGE_LOAD_PHOTOS);
- }
-
- /**
- * Receives the above message, loads photos and then sends a message
- * to the main thread to process them.
- */
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case MESSAGE_PRELOAD_PHOTOS:
- preloadPhotosInBackground();
- break;
- case MESSAGE_LOAD_PHOTOS:
- loadPhotosInBackground();
- break;
- }
- return true;
- }
-
- /**
- * The first time it is called, figures out which photos need to be preloaded.
- * Each subsequent call preloads the next batch of photos and requests
- * another cycle of preloading after a delay. The whole process ends when
- * we either run out of photos to preload or fill up cache.
- */
- private void preloadPhotosInBackground() {
- if (mPreloadStatus == PRELOAD_STATUS_DONE) {
- return;
- }
-
- if (mPreloadStatus == PRELOAD_STATUS_NOT_STARTED) {
- queryPhotosForPreload();
- if (mPreloadPhotoIds.isEmpty()) {
- mPreloadStatus = PRELOAD_STATUS_DONE;
- } else {
- mPreloadStatus = PRELOAD_STATUS_IN_PROGRESS;
- }
- requestPreloading();
- return;
- }
-
- if (mBitmapHolderCache.size() > mBitmapHolderCacheRedZoneBytes) {
- mPreloadStatus = PRELOAD_STATUS_DONE;
- return;
- }
-
- mPhotoIds.clear();
- mPhotoIdsAsStrings.clear();
-
- int count = 0;
- int preloadSize = mPreloadPhotoIds.size();
- while(preloadSize > 0 && mPhotoIds.size() < PRELOAD_BATCH) {
- preloadSize--;
- count++;
- Long photoId = mPreloadPhotoIds.get(preloadSize);
- mPhotoIds.add(photoId);
- mPhotoIdsAsStrings.add(photoId.toString());
- mPreloadPhotoIds.remove(preloadSize);
- }
-
- loadThumbnails(true);
-
- if (preloadSize == 0) {
- mPreloadStatus = PRELOAD_STATUS_DONE;
- }
-
- Log.v(TAG, "Preloaded " + count + " photos. Cached bytes: "
- + mBitmapHolderCache.size());
-
- requestPreloading();
- }
-
- private void queryPhotosForPreload() {
- Cursor cursor = null;
- try {
- Uri uri = Contacts.CONTENT_URI.buildUpon().appendQueryParameter(
- ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT))
- .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
- String.valueOf(MAX_PHOTOS_TO_PRELOAD))
- .build();
- cursor = mResolver.query(uri, new String[] { Contacts.PHOTO_ID },
- Contacts.PHOTO_ID + " NOT NULL AND " + Contacts.PHOTO_ID + "!=0",
- null,
- Contacts.STARRED + " DESC, " + Contacts.LAST_TIME_CONTACTED + " DESC");
-
- if (cursor != null) {
- while (cursor.moveToNext()) {
- // Insert them in reverse order, because we will be taking
- // them from the end of the list for loading.
- mPreloadPhotoIds.add(0, cursor.getLong(0));
- }
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- }
-
- private void loadPhotosInBackground() {
- obtainPhotoIdsAndUrisToLoad(mPhotoIds, mPhotoIdsAsStrings, mPhotoUris);
- loadThumbnails(false);
- loadUriBasedPhotos();
- requestPreloading();
- }
-
- /** Loads thumbnail photos with ids */
- private void loadThumbnails(boolean preloading) {
- if (mPhotoIds.isEmpty()) {
- return;
- }
-
- // Remove loaded photos from the preload queue: we don't want
- // the preloading process to load them again.
- if (!preloading && mPreloadStatus == PRELOAD_STATUS_IN_PROGRESS) {
- for (Long id : mPhotoIds) {
- mPreloadPhotoIds.remove(id);
- }
- if (mPreloadPhotoIds.isEmpty()) {
- mPreloadStatus = PRELOAD_STATUS_DONE;
- }
- }
-
- mStringBuilder.setLength(0);
- mStringBuilder.append(Photo._ID + " IN(");
- for (int i = 0; i < mPhotoIds.size(); i++) {
- if (i != 0) {
- mStringBuilder.append(',');
- }
- mStringBuilder.append('?');
- }
- mStringBuilder.append(')');
-
- Cursor cursor = null;
- try {
- if (DEBUG) Log.d(TAG, "Loading " + TextUtils.join(",", mPhotoIdsAsStrings));
- cursor = mResolver.query(Data.CONTENT_URI,
- COLUMNS,
- mStringBuilder.toString(),
- mPhotoIdsAsStrings.toArray(EMPTY_STRING_ARRAY),
- null);
-
- if (cursor != null) {
- while (cursor.moveToNext()) {
- Long id = cursor.getLong(0);
- byte[] bytes = cursor.getBlob(1);
- cacheBitmap(id, bytes, preloading, -1);
- mPhotoIds.remove(id);
- }
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
-
- // Remaining photos were not found in the contacts database (but might be in profile).
- for (Long id : mPhotoIds) {
- if (ContactsContract.isProfileId(id)) {
- Cursor profileCursor = null;
- try {
- profileCursor = mResolver.query(
- ContentUris.withAppendedId(Data.CONTENT_URI, id),
- COLUMNS, null, null, null);
- if (profileCursor != null && profileCursor.moveToFirst()) {
- cacheBitmap(profileCursor.getLong(0), profileCursor.getBlob(1),
- preloading, -1);
- } else {
- // Couldn't load a photo this way either.
- cacheBitmap(id, null, preloading, -1);
- }
- } finally {
- if (profileCursor != null) {
- profileCursor.close();
- }
- }
- } else {
- // Not a profile photo and not found - mark the cache accordingly
- cacheBitmap(id, null, preloading, -1);
- }
- }
-
- mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
- }
-
- /**
- * Loads photos referenced with Uris. Those can be remote thumbnails
- * (from directory searches), display photos etc
- */
- private void loadUriBasedPhotos() {
- for (Request uriRequest : mPhotoUris) {
- Uri uri = uriRequest.getUri();
- if (mBuffer == null) {
- mBuffer = new byte[BUFFER_SIZE];
- }
- try {
- if (DEBUG) Log.d(TAG, "Loading " + uri);
- InputStream is = mResolver.openInputStream(uri);
- if (is != null) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try {
- int size;
- while ((size = is.read(mBuffer)) != -1) {
- baos.write(mBuffer, 0, size);
- }
- } finally {
- is.close();
- }
- cacheBitmap(uri, baos.toByteArray(), false,
- uriRequest.getRequestedExtent());
- mMainThreadHandler.sendEmptyMessage(MESSAGE_PHOTOS_LOADED);
- } else {
- Log.v(TAG, "Cannot load photo " + uri);
- cacheBitmap(uri, null, false, uriRequest.getRequestedExtent());
- }
- } catch (Exception ex) {
- Log.v(TAG, "Cannot load photo " + uri, ex);
- cacheBitmap(uri, null, false, uriRequest.getRequestedExtent());
- }
- }
- }
- }
-
- /**
- * A holder for either a Uri or an id and a flag whether this was requested for the dark or
- * light theme
- */
- private static final class Request {
- private final long mId;
- private final Uri mUri;
- private final boolean mDarkTheme;
- private final int mRequestedExtent;
- private final DefaultImageProvider mDefaultProvider;
-
- private Request(long id, Uri uri, int requestedExtent, boolean darkTheme,
- DefaultImageProvider defaultProvider) {
- mId = id;
- mUri = uri;
- mDarkTheme = darkTheme;
- mRequestedExtent = requestedExtent;
- mDefaultProvider = defaultProvider;
- }
-
- public static Request createFromThumbnailId(long id, boolean darkTheme,
- DefaultImageProvider defaultProvider) {
- return new Request(id, null /* no URI */, -1, darkTheme, defaultProvider);
- }
-
- public static Request createFromUri(Uri uri, int requestedExtent, boolean darkTheme,
- DefaultImageProvider defaultProvider) {
- return new Request(0 /* no ID */, uri, requestedExtent, darkTheme, defaultProvider);
- }
-
- public boolean isUriRequest() {
- return mUri != null;
- }
-
- public Uri getUri() {
- return mUri;
- }
-
- public long getId() {
- return mId;
- }
-
- public int getRequestedExtent() {
- return mRequestedExtent;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (int) (mId ^ (mId >>> 32));
- result = prime * result + mRequestedExtent;
- result = prime * result + ((mUri == null) ? 0 : mUri.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (getClass() != obj.getClass()) return false;
- final Request that = (Request) obj;
- if (mId != that.mId) return false;
- if (mRequestedExtent != that.mRequestedExtent) return false;
- if (!UriUtils.areEqual(mUri, that.mUri)) return false;
- // Don't compare equality of mDarkTheme because it is only used in the default contact
- // photo case. When the contact does have a photo, the contact photo is the same
- // regardless of mDarkTheme, so we shouldn't need to put the photo request on the queue
- // twice.
- return true;
- }
-
- public Object getKey() {
- return mUri == null ? mId : mUri;
- }
-
- public void applyDefaultImage(ImageView view) {
- mDefaultProvider.applyDefaultImage(view, mRequestedExtent, mDarkTheme);
- }
- }
-}
diff --git a/src/com/android/contacts/ContactPresenceIconUtil.java b/src/com/android/contacts/ContactPresenceIconUtil.java
deleted file mode 100644
index 0cb5b93..0000000
--- a/src/com/android/contacts/ContactPresenceIconUtil.java
+++ /dev/null
@@ -1,48 +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;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.provider.ContactsContract.StatusUpdates;
-
-/**
- * Define the contact present show policy in Contacts
- */
-public class ContactPresenceIconUtil {
- /**
- * Get the presence icon resource according the status.
- *
- * @return null means don't show the status icon.
- */
- public static Drawable getPresenceIcon (Context context, int status) {
- // We don't show the offline status in Contacts
- switch(status) {
- case StatusUpdates.AVAILABLE:
- case StatusUpdates.IDLE:
- case StatusUpdates.AWAY:
- case StatusUpdates.DO_NOT_DISTURB:
- case StatusUpdates.INVISIBLE:
- return context.getResources().getDrawable(
- StatusUpdates.getPresenceIconResourceId(status));
- case StatusUpdates.OFFLINE:
- // The undefined status is treated as OFFLINE in getPresenceIconResourceId();
- default:
- return null;
- }
- }
-}
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 4333aa4..7c8782f 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -46,11 +46,12 @@
import android.util.Log;
import android.widget.Toast;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.RawContactModifier;
+import com.android.contacts.common.database.ContactUpdateUtils;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.RawContactDelta;
import com.android.contacts.model.RawContactDeltaList;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.model.RawContactModifier;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.util.CallerInfoCacheUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -903,13 +904,7 @@
return;
}
- // Update the primary values in the data record.
- ContentValues values = new ContentValues(1);
- values.put(Data.IS_SUPER_PRIMARY, 1);
- values.put(Data.IS_PRIMARY, 1);
-
- getContentResolver().update(ContentUris.withAppendedId(Data.CONTENT_URI, dataId),
- values, null, null);
+ ContactUpdateUtils.setSuperPrimary(this, dataId);
}
/**
@@ -1018,6 +1013,9 @@
long rawContactIds[];
long verifiedNameRawContactId = -1;
try {
+ if (c.getCount() == 0) {
+ return;
+ }
int maxDisplayNameSource = -1;
rawContactIds = new long[c.getCount()];
for (int i = 0; i < rawContactIds.length; i++) {
diff --git a/src/com/android/contacts/ContactStatusUtil.java b/src/com/android/contacts/ContactStatusUtil.java
deleted file mode 100644
index 4aa24b0..0000000
--- a/src/com/android/contacts/ContactStatusUtil.java
+++ /dev/null
@@ -1,47 +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;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.ContactsContract.StatusUpdates;
-
-/**
- * Provides static function to get default contact status message.
- */
-public class ContactStatusUtil {
-
- private static final String TAG = "ContactStatusUtil";
-
- public static String getStatusString(Context context, int presence) {
- Resources resources = context.getResources();
- switch (presence) {
- case StatusUpdates.AVAILABLE:
- return resources.getString(R.string.status_available);
- case StatusUpdates.IDLE:
- case StatusUpdates.AWAY:
- return resources.getString(R.string.status_away);
- case StatusUpdates.DO_NOT_DISTURB:
- return resources.getString(R.string.status_busy);
- case StatusUpdates.OFFLINE:
- case StatusUpdates.INVISIBLE:
- default:
- return null;
- }
- }
-
-}
diff --git a/src/com/android/contacts/ContactTileLoaderFactory.java b/src/com/android/contacts/ContactTileLoaderFactory.java
deleted file mode 100644
index 3a23400..0000000
--- a/src/com/android/contacts/ContactTileLoaderFactory.java
+++ /dev/null
@@ -1,92 +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;
-
-import android.content.Context;
-import android.content.CursorLoader;
-import android.net.Uri;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-
-import com.android.contacts.list.ContactTileView;
-
-/**
- * Used to create {@link CursorLoader}s to load different groups of {@link ContactTileView}s
- */
-public final class ContactTileLoaderFactory {
-
- public final static int CONTACT_ID = 0;
- public final static int DISPLAY_NAME = 1;
- public final static int STARRED = 2;
- public final static int PHOTO_URI = 3;
- public final static int LOOKUP_KEY = 4;
- public final static int CONTACT_PRESENCE = 5;
- public final static int CONTACT_STATUS = 6;
-
- // Only used for StrequentPhoneOnlyLoader
- public final static int PHONE_NUMBER = 5;
- public final static int PHONE_NUMBER_TYPE = 6;
- public final static int PHONE_NUMBER_LABEL = 7;
-
- private static final String[] COLUMNS = new String[] {
- Contacts._ID, // ..........................................0
- Contacts.DISPLAY_NAME, // .................................1
- Contacts.STARRED, // ......................................2
- Contacts.PHOTO_URI, // ....................................3
- Contacts.LOOKUP_KEY, // ...................................4
- Contacts.CONTACT_PRESENCE, // .............................5
- Contacts.CONTACT_STATUS, // ...............................6
- };
-
- /**
- * Projection used for the {@link Contacts#CONTENT_STREQUENT_URI}
- * query when {@link ContactsContract#STREQUENT_PHONE_ONLY} flag
- * is set to true. The main difference is the lack of presence
- * and status data and the addition of phone number and label.
- */
- private static final String[] COLUMNS_PHONE_ONLY = new String[] {
- Contacts._ID, // ..........................................0
- Contacts.DISPLAY_NAME, // .................................1
- Contacts.STARRED, // ......................................2
- Contacts.PHOTO_URI, // ....................................3
- Contacts.LOOKUP_KEY, // ...................................4
- Phone.NUMBER, // ..........................................5
- Phone.TYPE, // ............................................6
- Phone.LABEL // ............................................7
- };
-
- public static CursorLoader createStrequentLoader(Context context) {
- return new CursorLoader(context, Contacts.CONTENT_STREQUENT_URI, COLUMNS, null, null, null);
- }
-
- public static CursorLoader createStrequentPhoneOnlyLoader(Context context) {
- Uri uri = Contacts.CONTENT_STREQUENT_URI.buildUpon()
- .appendQueryParameter(ContactsContract.STREQUENT_PHONE_ONLY, "true").build();
-
- return new CursorLoader(context, uri, COLUMNS_PHONE_ONLY, null, null, null);
- }
-
- public static CursorLoader createStarredLoader(Context context) {
- return new CursorLoader(context, Contacts.CONTENT_URI, COLUMNS,
- Contacts.STARRED + "=?", new String[]{"1"}, Contacts.DISPLAY_NAME + " ASC");
- }
-
- public static CursorLoader createFrequentLoader(Context context) {
- return new CursorLoader(context, Contacts.CONTENT_FREQUENT_URI, COLUMNS,
- Contacts.STARRED + "=?", new String[]{"0"}, null);
- }
-}
diff --git a/src/com/android/contacts/ContactsActivity.java b/src/com/android/contacts/ContactsActivity.java
index 90900ce..f3ac147 100644
--- a/src/com/android/contacts/ContactsActivity.java
+++ b/src/com/android/contacts/ContactsActivity.java
@@ -25,7 +25,7 @@
import android.os.Bundle;
import android.view.View;
-import com.android.contacts.activities.TransactionSafeActivity;
+import com.android.contacts.common.activity.TransactionSafeActivity;
import com.android.contacts.test.InjectedServices;
/**
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java
index 3380553..82b2a25 100644
--- a/src/com/android/contacts/ContactsApplication.java
+++ b/src/com/android/contacts/ContactsApplication.java
@@ -29,10 +29,11 @@
import android.provider.ContactsContract.Contacts;
import android.util.Log;
-import com.android.contacts.list.ContactListFilterController;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.list.ContactListFilterController;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.test.InjectedServices;
-import com.android.contacts.util.Constants;
+import com.android.contacts.common.util.Constants;
import com.google.common.annotations.VisibleForTesting;
public final class ContactsApplication extends Application {
@@ -40,7 +41,11 @@
private static final boolean ENABLE_FRAGMENT_LOG = false; // Don't submit with true
private static InjectedServices sInjectedServices;
- private AccountTypeManager mAccountTypeManager;
+ /**
+ * Log tag for enabling/disabling StrictMode violation log.
+ * To enable: adb shell setprop log.tag.ContactsStrictMode DEBUG
+ */
+ public static final String STRICT_MODE_TAG = "ContactsStrictMode";
private ContactPhotoManager mContactPhotoManager;
private ContactListFilterController mContactListFilterController;
@@ -88,13 +93,6 @@
}
}
- if (AccountTypeManager.ACCOUNT_TYPE_SERVICE.equals(name)) {
- if (mAccountTypeManager == null) {
- mAccountTypeManager = AccountTypeManager.createAccountTypeManager(this);
- }
- return mAccountTypeManager;
- }
-
if (ContactPhotoManager.CONTACT_PHOTO_SERVICE.equals(name)) {
if (mContactPhotoManager == null) {
mContactPhotoManager = ContactPhotoManager.createContactPhotoManager(this);
@@ -104,14 +102,6 @@
return mContactPhotoManager;
}
- if (ContactListFilterController.CONTACT_LIST_FILTER_SERVICE.equals(name)) {
- if (mContactListFilterController == null) {
- mContactListFilterController =
- ContactListFilterController.createContactListFilterController(this);
- }
- return mContactListFilterController;
- }
-
return super.getSystemService(name);
}
@@ -126,7 +116,7 @@
if (ENABLE_FRAGMENT_LOG) FragmentManager.enableDebugLogging(true);
if (ENABLE_LOADER_LOG) LoaderManager.enableDebugLogging(true);
- if (Log.isLoggable(Constants.STRICT_MODE_TAG, Log.DEBUG)) {
+ if (Log.isLoggable(STRICT_MODE_TAG, Log.DEBUG)) {
StrictMode.setThreadPolicy(
new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
}
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index 1e51aae..6b7114c 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -16,39 +16,22 @@
package com.android.contacts;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Configuration;
import android.database.Cursor;
-import android.graphics.Rect;
-import android.location.CountryDetector;
-import android.net.Uri;
-import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Im;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.DisplayPhoto;
-import android.provider.ContactsContract.QuickContact;
import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
-import android.view.View;
-import android.widget.TextView;
-import com.android.contacts.activities.DialtactsActivity;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.test.NeededForTesting;
-import com.android.contacts.util.Constants;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.test.NeededForTesting;
+import com.android.contacts.common.model.AccountTypeManager;
import java.util.List;
public class ContactsUtils {
private static final String TAG = "ContactsUtils";
- private static final String WAIT_SYMBOL_AS_STRING = String.valueOf(PhoneNumberUtils.WAIT);
-
- private static final ComponentName CALL_INTENT_DESTINATION = new ComponentName(
- "com.android.phone", "com.android.phone.PrivilegedOutgoingCallBroadcaster");
private static int sThumbnailSize = -1;
@@ -114,63 +97,6 @@
}
/**
- * Returns true if two data with mimetypes which represent values in contact entries are
- * considered equal for collapsing in the GUI. For caller-id, use
- * {@link PhoneNumberUtils#compare(Context, String, String)} instead
- */
- public static final boolean shouldCollapse(CharSequence mimetype1, CharSequence data1,
- CharSequence mimetype2, CharSequence data2) {
- // different mimetypes? don't collapse
- if (!TextUtils.equals(mimetype1, mimetype2)) return false;
-
- // exact same string? good, bail out early
- if (TextUtils.equals(data1, data2)) return true;
-
- // so if either is null, these two must be different
- if (data1 == null || data2 == null) return false;
-
- // if this is not about phone numbers, we know this is not a match (of course, some
- // mimetypes could have more sophisticated matching is the future, e.g. addresses)
- if (!TextUtils.equals(Phone.CONTENT_ITEM_TYPE, mimetype1)) return false;
-
- return shouldCollapsePhoneNumbers(data1.toString(), data2.toString());
- }
-
- private static final boolean shouldCollapsePhoneNumbers(
- String number1WithLetters, String number2WithLetters) {
- final String number1 = PhoneNumberUtils.convertKeypadLettersToDigits(number1WithLetters);
- final String number2 = PhoneNumberUtils.convertKeypadLettersToDigits(number2WithLetters);
-
- int index1 = 0;
- int index2 = 0;
- for (;;) {
- // Skip formatting characters.
- while (index1 < number1.length() &&
- !PhoneNumberUtils.isNonSeparator(number1.charAt(index1))) {
- index1++;
- }
- while (index2 < number2.length() &&
- !PhoneNumberUtils.isNonSeparator(number2.charAt(index2))) {
- index2++;
- }
- // If both have finished, match. If only one has finished, not match.
- final boolean number1End = (index1 == number1.length());
- final boolean number2End = (index2 == number2.length());
- if (number1End) {
- return number2End;
- }
- if (number2End) return false;
-
- // If the non-formatting characters are different, not match.
- if (number1.charAt(index1) != number2.charAt(index2)) return false;
-
- // Go to the next characters.
- index1++;
- index2++;
- }
- }
-
- /**
* Returns true if two {@link Intent}s are both null, or have the same action.
*/
public static final boolean areIntentActionEqual(Intent a, Intent b) {
@@ -183,16 +109,6 @@
return TextUtils.equals(a.getAction(), b.getAction());
}
- /**
- * @return The ISO 3166-1 two letters country code of the country the user
- * is in.
- */
- public static final String getCurrentCountryIso(Context context) {
- CountryDetector detector =
- (CountryDetector) context.getSystemService(Context.COUNTRY_DETECTOR);
- return detector.detectCountry().getCountryIso();
- }
-
public static boolean areContactWritableAccountsAvailable(Context context) {
final List<AccountWithDataSet> accounts =
AccountTypeManager.getInstance(context).getAccounts(true /* writeable */);
@@ -206,121 +122,6 @@
}
/**
- * Returns the intent to launch for the given invitable account type and contact lookup URI.
- * This will return null if the account type is not invitable (i.e. there is no
- * {@link AccountType#getInviteContactActivityClassName()} or
- * {@link AccountType#syncAdapterPackageName}).
- */
- public static Intent getInvitableIntent(AccountType accountType, Uri lookupUri) {
- String syncAdapterPackageName = accountType.syncAdapterPackageName;
- String className = accountType.getInviteContactActivityClassName();
- if (TextUtils.isEmpty(syncAdapterPackageName) || TextUtils.isEmpty(className)) {
- return null;
- }
- Intent intent = new Intent();
- intent.setClassName(syncAdapterPackageName, className);
-
- intent.setAction(ContactsContract.Intents.INVITE_CONTACT);
-
- // Data is the lookup URI.
- intent.setData(lookupUri);
- return intent;
- }
-
- /**
- * Return Uri with an appropriate scheme, accepting Voicemail, SIP, and usual phone call
- * numbers.
- */
- public static Uri getCallUri(String number) {
- if (PhoneNumberUtils.isUriNumber(number)) {
- return Uri.fromParts(Constants.SCHEME_SIP, number, null);
- }
- return Uri.fromParts(Constants.SCHEME_TEL, number, null);
- }
-
- /**
- * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
- * automatically.
- */
- public static Intent getCallIntent(String number) {
- return getCallIntent(number, null);
- }
-
- /**
- * Return an Intent for making a phone call. A given Uri will be used as is (without any
- * sanity check).
- */
- public static Intent getCallIntent(Uri uri) {
- return getCallIntent(uri, null);
- }
-
- /**
- * A variant of {@link #getCallIntent(String)} but also accept a call origin. For more
- * information about call origin, see comments in Phone package (PhoneApp).
- */
- public static Intent getCallIntent(String number, String callOrigin) {
- return getCallIntent(getCallUri(number), callOrigin);
- }
-
- /**
- * A variant of {@link #getCallIntent(Uri)} but also accept a call origin. For more
- * information about call origin, see comments in Phone package (PhoneApp).
- */
- public static Intent getCallIntent(Uri uri, String callOrigin) {
- final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- if (callOrigin != null) {
- intent.putExtra(DialtactsActivity.EXTRA_CALL_ORIGIN, callOrigin);
- }
-
- // Set phone as an explicit component of CALL_PRIVILEGED intent.
- // Setting destination explicitly prevents other apps from capturing this Intent since,
- // unlike SendBroadcast, there is no API for specifying a permission on startActivity.
- intent.setComponent(CALL_INTENT_DESTINATION);
-
- return intent;
- }
-
- /**
- * Return an Intent for launching voicemail screen.
- */
- public static Intent getVoicemailIntent() {
- final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
- Uri.fromParts("voicemail", "", null));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- return intent;
- }
-
- /**
- * Returns a header view based on the R.layout.list_separator, where the
- * containing {@link TextView} is set using the given textResourceId.
- */
- public static View createHeaderView(Context context, int textResourceId) {
- View view = View.inflate(context, R.layout.list_separator, null);
- TextView textView = (TextView) view.findViewById(R.id.title);
- textView.setText(context.getString(textResourceId));
- return view;
- }
-
- /**
- * Returns the {@link Rect} with left, top, right, and bottom coordinates
- * that are equivalent to the given {@link View}'s bounds. This is equivalent to how the
- * target {@link Rect} is calculated in {@link QuickContact#showQuickContact}.
- */
- public static Rect getTargetRectFromView(Context context, View view) {
- final float appScale = context.getResources().getCompatibilityInfo().applicationScale;
- final int[] pos = new int[2];
- view.getLocationOnScreen(pos);
-
- final Rect rect = new Rect();
- rect.left = (int) (pos[0] * appScale + 0.5f);
- rect.top = (int) (pos[1] * appScale + 0.5f);
- rect.right = (int) ((pos[0] + view.getWidth()) * appScale + 0.5f);
- rect.bottom = (int) ((pos[1] + view.getHeight()) * appScale + 0.5f);
- return rect;
- }
-
- /**
* Returns the size (width and height) of thumbnail pictures as configured in the provider. This
* can safely be called from the UI thread, as the provider can serve this without performing
* a database access
@@ -340,11 +141,4 @@
return sThumbnailSize;
}
- /**
- * @return if the context is in landscape orientation.
- */
- public static boolean isLandscape(Context context) {
- return context.getResources().getConfiguration().orientation
- == Configuration.ORIENTATION_LANDSCAPE;
- }
}
diff --git a/src/com/android/contacts/GroupMemberLoader.java b/src/com/android/contacts/GroupMemberLoader.java
index 12e82ce..e52ddda 100644
--- a/src/com/android/contacts/GroupMemberLoader.java
+++ b/src/com/android/contacts/GroupMemberLoader.java
@@ -24,7 +24,7 @@
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
-import com.android.contacts.preference.ContactsPreferences;
+import com.android.contacts.common.preference.ContactsPreferences;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/contacts/NonPhoneActivity.java b/src/com/android/contacts/NonPhoneActivity.java
new file mode 100644
index 0000000..4f0696f
--- /dev/null
+++ b/src/com/android/contacts/NonPhoneActivity.java
@@ -0,0 +1,107 @@
+/*
+ * 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;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Intents.Insert;
+import android.text.TextUtils;
+
+import com.android.contacts.common.CallUtil;
+
+/**
+ * Activity that intercepts DIAL and VIEW intents for phone numbers for devices that can not
+ * be used as a phone. This allows the user to see the phone number
+ */
+public class NonPhoneActivity extends ContactsActivity {
+
+ private static final String PHONE_NUMBER_KEY = "PHONE_NUMBER";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ final String phoneNumber = getPhoneNumber();
+ if (TextUtils.isEmpty(phoneNumber)) {
+ finish();
+ return;
+ }
+
+ final NonPhoneDialogFragment fragment = new NonPhoneDialogFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString(PHONE_NUMBER_KEY, phoneNumber);
+ fragment.setArguments(bundle);
+ getFragmentManager().beginTransaction().add(fragment, "Fragment").commitAllowingStateLoss();
+ }
+
+ private String getPhoneNumber() {
+ if (getIntent() == null) return null;
+ final Uri data = getIntent().getData();
+ if (data == null) return null;
+ final String scheme = data.getScheme();
+ if (!CallUtil.SCHEME_TEL.equals(scheme)) return null;
+ return getIntent().getData().getSchemeSpecificPart();
+ }
+
+ public static final class NonPhoneDialogFragment extends DialogFragment
+ implements OnClickListener {
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final AlertDialog alertDialog;
+ alertDialog = new AlertDialog.Builder(getActivity(), R.style.NonPhoneDialogTheme)
+ .create();
+ alertDialog.setTitle(R.string.non_phone_caption);
+ alertDialog.setMessage(getArgumentPhoneNumber());
+ alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,
+ getActivity().getString(R.string.non_phone_add_to_contacts), this);
+ alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
+ getActivity().getString(R.string.non_phone_close), this);
+ return alertDialog;
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+ intent.setType(Contacts.CONTENT_ITEM_TYPE);
+ intent.putExtra(Insert.PHONE, getArgumentPhoneNumber());
+ startActivity(intent);
+ }
+ dismiss();
+ }
+
+ private String getArgumentPhoneNumber() {
+ return getArguments().getString(PHONE_NUMBER_KEY);
+ }
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ super.onDismiss(dialog);
+ // During screen rotation, getActivity returns null. In this case we do not
+ // want to close the Activity anyway
+ final Activity activity = getActivity();
+ if (activity != null) activity.finish();
+ }
+ }
+}
diff --git a/src/com/android/contacts/PhoneCallDetails.java b/src/com/android/contacts/PhoneCallDetails.java
deleted file mode 100644
index 547695c..0000000
--- a/src/com/android/contacts/PhoneCallDetails.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;
-
-import android.net.Uri;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-
-/**
- * The details of a phone call to be shown in the UI.
- */
-public class PhoneCallDetails {
- /** The number of the other party involved in the call. */
- public final CharSequence number;
- /** The formatted version of {@link #number}. */
- public final CharSequence formattedNumber;
- /** The country corresponding with the phone number. */
- public final String countryIso;
- /** The geocoded location for the phone number. */
- public final String geocode;
- /**
- * The type of calls, as defined in the call log table, e.g., {@link Calls#INCOMING_TYPE}.
- * <p>
- * There might be multiple types if this represents a set of entries grouped together.
- */
- public final int[] callTypes;
- /** The date of the call, in milliseconds since the epoch. */
- public final long date;
- /** The duration of the call in milliseconds, or 0 for missed calls. */
- public final long duration;
- /** The name of the contact, or the empty string. */
- public final CharSequence name;
- /** The type of phone, e.g., {@link Phone#TYPE_HOME}, 0 if not available. */
- public final int numberType;
- /** The custom label associated with the phone number in the contact, or the empty string. */
- public final CharSequence numberLabel;
- /** The URI of the contact associated with this phone call. */
- public final Uri contactUri;
- /**
- * The photo URI of the picture of the contact that is associated with this phone call or
- * null if there is none.
- * <p>
- * This is meant to store the high-res photo only.
- */
- public final Uri photoUri;
-
- /** Create the details for a call with a number not associated with a contact. */
- public PhoneCallDetails(CharSequence number, CharSequence formattedNumber,
- String countryIso, String geocode, int[] callTypes, long date, long duration) {
- this(number, formattedNumber, countryIso, geocode, callTypes, date, duration, "", 0, "",
- null, null);
- }
-
- /** Create the details for a call with a number associated with a contact. */
- public PhoneCallDetails(CharSequence number, CharSequence formattedNumber,
- String countryIso, String geocode, int[] callTypes, long date, long duration,
- CharSequence name, int numberType, CharSequence numberLabel, Uri contactUri,
- Uri photoUri) {
- this.number = number;
- this.formattedNumber = formattedNumber;
- this.countryIso = countryIso;
- this.geocode = geocode;
- this.callTypes = callTypes;
- this.date = date;
- this.duration = duration;
- this.name = name;
- this.numberType = numberType;
- this.numberLabel = numberLabel;
- this.contactUri = contactUri;
- this.photoUri = photoUri;
- }
-}
diff --git a/src/com/android/contacts/PhoneCallDetailsHelper.java b/src/com/android/contacts/PhoneCallDetailsHelper.java
deleted file mode 100644
index 8192975..0000000
--- a/src/com/android/contacts/PhoneCallDetailsHelper.java
+++ /dev/null
@@ -1,194 +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;
-
-import android.content.res.Resources;
-import android.graphics.Typeface;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.telephony.PhoneNumberUtils;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.StyleSpan;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.contacts.calllog.CallTypeHelper;
-import com.android.contacts.calllog.PhoneNumberHelper;
-import com.android.contacts.test.NeededForTesting;
-
-/**
- * Helper class to fill in the views in {@link PhoneCallDetailsViews}.
- */
-public class PhoneCallDetailsHelper {
- /** The maximum number of icons will be shown to represent the call types in a group. */
- private static final int MAX_CALL_TYPE_ICONS = 3;
-
- private final Resources mResources;
- /** The injected current time in milliseconds since the epoch. Used only by tests. */
- private Long mCurrentTimeMillisForTest;
- // Helper classes.
- private final CallTypeHelper mCallTypeHelper;
- private final PhoneNumberHelper mPhoneNumberHelper;
-
- /**
- * Creates a new instance of the helper.
- * <p>
- * Generally you should have a single instance of this helper in any context.
- *
- * @param resources used to look up strings
- */
- public PhoneCallDetailsHelper(Resources resources, CallTypeHelper callTypeHelper,
- PhoneNumberHelper phoneNumberHelper) {
- mResources = resources;
- mCallTypeHelper = callTypeHelper;
- mPhoneNumberHelper = phoneNumberHelper;
- }
-
- /** Fills the call details views with content. */
- public void setPhoneCallDetails(PhoneCallDetailsViews views, PhoneCallDetails details,
- boolean isHighlighted) {
- // Display up to a given number of icons.
- views.callTypeIcons.clear();
- int count = details.callTypes.length;
- for (int index = 0; index < count && index < MAX_CALL_TYPE_ICONS; ++index) {
- views.callTypeIcons.add(details.callTypes[index]);
- }
- views.callTypeIcons.setVisibility(View.VISIBLE);
-
- // Show the total call count only if there are more than the maximum number of icons.
- final Integer callCount;
- if (count > MAX_CALL_TYPE_ICONS) {
- callCount = count;
- } else {
- callCount = null;
- }
- // The color to highlight the count and date in, if any. This is based on the first call.
- Integer highlightColor =
- isHighlighted ? mCallTypeHelper.getHighlightedColor(details.callTypes[0]) : null;
-
- // The date of this call, relative to the current time.
- CharSequence dateText =
- DateUtils.getRelativeTimeSpanString(details.date,
- getCurrentTimeMillis(),
- DateUtils.MINUTE_IN_MILLIS,
- DateUtils.FORMAT_ABBREV_RELATIVE);
-
- // Set the call count and date.
- setCallCountAndDate(views, callCount, dateText, highlightColor);
-
- CharSequence numberFormattedLabel = null;
- // Only show a label if the number is shown and it is not a SIP address.
- if (!TextUtils.isEmpty(details.number)
- && !PhoneNumberUtils.isUriNumber(details.number.toString())) {
- numberFormattedLabel = Phone.getTypeLabel(mResources, details.numberType,
- details.numberLabel);
- }
-
- final CharSequence nameText;
- final CharSequence numberText;
- final CharSequence labelText;
- final CharSequence displayNumber =
- mPhoneNumberHelper.getDisplayNumber(details.number, details.formattedNumber);
- if (TextUtils.isEmpty(details.name)) {
- nameText = displayNumber;
- if (TextUtils.isEmpty(details.geocode)
- || mPhoneNumberHelper.isVoicemailNumber(details.number)) {
- numberText = mResources.getString(R.string.call_log_empty_gecode);
- } else {
- numberText = details.geocode;
- }
- labelText = null;
- } else {
- nameText = details.name;
- numberText = displayNumber;
- labelText = numberFormattedLabel;
- }
-
- views.nameView.setText(nameText);
- views.numberView.setText(numberText);
- views.labelView.setText(labelText);
- views.labelView.setVisibility(TextUtils.isEmpty(labelText) ? View.GONE : View.VISIBLE);
- }
-
- /** Sets the text of the header view for the details page of a phone call. */
- public void setCallDetailsHeader(TextView nameView, PhoneCallDetails details) {
- final CharSequence nameText;
- final CharSequence displayNumber =
- mPhoneNumberHelper.getDisplayNumber(details.number,
- mResources.getString(R.string.recentCalls_addToContact));
- if (TextUtils.isEmpty(details.name)) {
- nameText = displayNumber;
- } else {
- nameText = details.name;
- }
-
- nameView.setText(nameText);
- }
-
- @NeededForTesting
- public void setCurrentTimeForTest(long currentTimeMillis) {
- mCurrentTimeMillisForTest = currentTimeMillis;
- }
-
- /**
- * Returns the current time in milliseconds since the epoch.
- * <p>
- * It can be injected in tests using {@link #setCurrentTimeForTest(long)}.
- */
- private long getCurrentTimeMillis() {
- if (mCurrentTimeMillisForTest == null) {
- return System.currentTimeMillis();
- } else {
- return mCurrentTimeMillisForTest;
- }
- }
-
- /** Sets the call count and date. */
- private void setCallCountAndDate(PhoneCallDetailsViews views, Integer callCount,
- CharSequence dateText, Integer highlightColor) {
- // Combine the count (if present) and the date.
- final CharSequence text;
- if (callCount != null) {
- text = mResources.getString(
- R.string.call_log_item_count_and_date, callCount.intValue(), dateText);
- } else {
- text = dateText;
- }
-
- // Apply the highlight color if present.
- final CharSequence formattedText;
- if (highlightColor != null) {
- formattedText = addBoldAndColor(text, highlightColor);
- } else {
- formattedText = text;
- }
-
- views.callTypeAndDate.setText(formattedText);
- }
-
- /** Creates a SpannableString for the given text which is bold and in the given color. */
- private CharSequence addBoldAndColor(CharSequence text, int color) {
- int flags = Spanned.SPAN_INCLUSIVE_INCLUSIVE;
- SpannableString result = new SpannableString(text);
- result.setSpan(new StyleSpan(Typeface.BOLD), 0, text.length(), flags);
- result.setSpan(new ForegroundColorSpan(color), 0, text.length(), flags);
- return result;
- }
-}
diff --git a/src/com/android/contacts/PhoneCallDetailsViews.java b/src/com/android/contacts/PhoneCallDetailsViews.java
deleted file mode 100644
index 8be7f0c..0000000
--- a/src/com/android/contacts/PhoneCallDetailsViews.java
+++ /dev/null
@@ -1,72 +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;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.contacts.calllog.CallTypeIconsView;
-
-/**
- * Encapsulates the views that are used to display the details of a phone call in the call log.
- */
-public final class PhoneCallDetailsViews {
- public final TextView nameView;
- public final View callTypeView;
- public final CallTypeIconsView callTypeIcons;
- public final TextView callTypeAndDate;
- public final TextView numberView;
- public final TextView labelView;
-
- private PhoneCallDetailsViews(TextView nameView, View callTypeView,
- CallTypeIconsView callTypeIcons, TextView callTypeAndDate, TextView numberView,
- TextView labelView) {
- this.nameView = nameView;
- this.callTypeView = callTypeView;
- this.callTypeIcons = callTypeIcons;
- this.callTypeAndDate = callTypeAndDate;
- this.numberView = numberView;
- this.labelView = labelView;
- }
-
- /**
- * Create a new instance by extracting the elements from the given view.
- * <p>
- * The view should contain three text views with identifiers {@code R.id.name},
- * {@code R.id.date}, and {@code R.id.number}, and a linear layout with identifier
- * {@code R.id.call_types}.
- */
- public static PhoneCallDetailsViews fromView(View view) {
- return new PhoneCallDetailsViews((TextView) view.findViewById(R.id.name),
- view.findViewById(R.id.call_type),
- (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
- (TextView) view.findViewById(R.id.call_count_and_date),
- (TextView) view.findViewById(R.id.number),
- (TextView) view.findViewById(R.id.label));
- }
-
- public static PhoneCallDetailsViews createForTest(Context context) {
- return new PhoneCallDetailsViews(
- new TextView(context),
- new View(context),
- new CallTypeIconsView(context),
- new TextView(context),
- new TextView(context),
- new TextView(context));
- }
-}
diff --git a/src/com/android/contacts/ProximitySensorAware.java b/src/com/android/contacts/ProximitySensorAware.java
deleted file mode 100644
index 0fb233d..0000000
--- a/src/com/android/contacts/ProximitySensorAware.java
+++ /dev/null
@@ -1,33 +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;
-
-/**
- * An object that is aware of the state of the proximity sensor.
- */
-public interface ProximitySensorAware {
- /** Start tracking the state of the proximity sensor. */
- public void enableProximitySensor();
-
- /**
- * Stop tracking the state of the proximity sensor.
- *
- * @param waitForFarState if true and the sensor is currently in the near state, it will wait
- * until it is again in the far state before stopping to track its state.
- */
- public void disableProximitySensor(boolean waitForFarState);
-}
diff --git a/src/com/android/contacts/ProximitySensorManager.java b/src/com/android/contacts/ProximitySensorManager.java
deleted file mode 100644
index 69601bf..0000000
--- a/src/com/android/contacts/ProximitySensorManager.java
+++ /dev/null
@@ -1,237 +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;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-import javax.annotation.concurrent.GuardedBy;
-
-/**
- * Manages the proximity sensor and notifies a listener when enabled.
- */
-public class ProximitySensorManager {
- /**
- * Listener of the state of the proximity sensor.
- * <p>
- * This interface abstracts two possible states for the proximity sensor, near and far.
- * <p>
- * The actual meaning of these states depends on the actual sensor.
- */
- public interface Listener {
- /** Called when the proximity sensor transitions from the far to the near state. */
- public void onNear();
- /** Called when the proximity sensor transitions from the near to the far state. */
- public void onFar();
- }
-
- public static enum State {
- NEAR, FAR
- }
-
- private final ProximitySensorEventListener mProximitySensorListener;
-
- /**
- * The current state of the manager, i.e., whether it is currently tracking the state of the
- * sensor.
- */
- private boolean mManagerEnabled;
-
- /**
- * The listener to the state of the sensor.
- * <p>
- * Contains most of the logic concerning tracking of the sensor.
- * <p>
- * After creating an instance of this object, one should call {@link #register()} and
- * {@link #unregister()} to enable and disable the notifications.
- * <p>
- * Instead of calling unregister, one can call {@link #unregisterWhenFar()} to unregister the
- * listener the next time the sensor reaches the {@link State#FAR} state if currently in the
- * {@link State#NEAR} state.
- */
- private static class ProximitySensorEventListener implements SensorEventListener {
- private static final float FAR_THRESHOLD = 5.0f;
-
- private final SensorManager mSensorManager;
- private final Sensor mProximitySensor;
- private final float mMaxValue;
- private final Listener mListener;
-
- /**
- * The last state of the sensor.
- * <p>
- * Before registering and after unregistering we are always in the {@link State#FAR} state.
- */
- @GuardedBy("this") private State mLastState;
- /**
- * If this flag is set to true, we are waiting to reach the {@link State#FAR} state and
- * should notify the listener and unregister when that happens.
- */
- @GuardedBy("this") private boolean mWaitingForFarState;
-
- public ProximitySensorEventListener(SensorManager sensorManager, Sensor proximitySensor,
- Listener listener) {
- mSensorManager = sensorManager;
- mProximitySensor = proximitySensor;
- mMaxValue = proximitySensor.getMaximumRange();
- mListener = listener;
- // Initialize at far state.
- mLastState = State.FAR;
- mWaitingForFarState = false;
- }
-
- @Override
- public void onSensorChanged(SensorEvent event) {
- // Make sure we have a valid value.
- if (event.values == null) return;
- if (event.values.length == 0) return;
- float value = event.values[0];
- // Convert the sensor into a NEAR/FAR state.
- State state = getStateFromValue(value);
- synchronized (this) {
- // No change in state, do nothing.
- if (state == mLastState) return;
- // Keep track of the current state.
- mLastState = state;
- // If we are waiting to reach the far state and we are now in it, unregister.
- if (mWaitingForFarState && mLastState == State.FAR) {
- unregisterWithoutNotification();
- }
- }
- // Notify the listener of the state change.
- switch (state) {
- case NEAR:
- mListener.onNear();
- break;
-
- case FAR:
- mListener.onFar();
- break;
- }
- }
-
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- // Nothing to do here.
- }
-
- /** Returns the state of the sensor given its current value. */
- private State getStateFromValue(float value) {
- // Determine if the current value corresponds to the NEAR or FAR state.
- // Take case of the case where the proximity sensor is binary: if the current value is
- // equal to the maximum, we are always in the FAR state.
- return (value > FAR_THRESHOLD || value == mMaxValue) ? State.FAR : State.NEAR;
- }
-
- /**
- * Unregister the next time the sensor reaches the {@link State#FAR} state.
- */
- public synchronized void unregisterWhenFar() {
- if (mLastState == State.FAR) {
- // We are already in the far state, just unregister now.
- unregisterWithoutNotification();
- } else {
- mWaitingForFarState = true;
- }
- }
-
- /** Register the listener and call the listener as necessary. */
- public synchronized void register() {
- // It is okay to register multiple times.
- mSensorManager.registerListener(this, mProximitySensor, SensorManager.SENSOR_DELAY_UI);
- // We should no longer be waiting for the far state if we are registering again.
- mWaitingForFarState = false;
- }
-
- public void unregister() {
- State lastState;
- synchronized (this) {
- unregisterWithoutNotification();
- lastState = mLastState;
- // Always go back to the FAR state. That way, when we register again we will get a
- // transition when the sensor gets into the NEAR state.
- mLastState = State.FAR;
- }
- // Notify the listener if we changed the state to FAR while unregistering.
- if (lastState != State.FAR) {
- mListener.onFar();
- }
- }
-
- @GuardedBy("this")
- private void unregisterWithoutNotification() {
- mSensorManager.unregisterListener(this);
- mWaitingForFarState = false;
- }
- }
-
- public ProximitySensorManager(Context context, Listener listener) {
- SensorManager sensorManager =
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
- Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
- if (proximitySensor == null) {
- // If there is no sensor, we should not do anything.
- mProximitySensorListener = null;
- } else {
- mProximitySensorListener =
- new ProximitySensorEventListener(sensorManager, proximitySensor, listener);
- }
- }
-
- /**
- * Enables the proximity manager.
- * <p>
- * The listener will start getting notifications of events.
- * <p>
- * This method is idempotent.
- */
- public void enable() {
- if (mProximitySensorListener != null && !mManagerEnabled) {
- mProximitySensorListener.register();
- mManagerEnabled = true;
- }
- }
-
- /**
- * Disables the proximity manager.
- * <p>
- * The listener will stop receiving notifications of events, possibly after receiving a last
- * {@link Listener#onFar()} callback.
- * <p>
- * If {@code waitForFarState} is true, if the sensor is not currently in the {@link State#FAR}
- * state, the listener will receive a {@link Listener#onFar()} callback the next time the sensor
- * actually reaches the {@link State#FAR} state.
- * <p>
- * If {@code waitForFarState} is false, the listener will receive a {@link Listener#onFar()}
- * callback immediately if the sensor is currently not in the {@link State#FAR} state.
- * <p>
- * This method is idempotent.
- */
- public void disable(boolean waitForFarState) {
- if (mProximitySensorListener != null && mManagerEnabled) {
- if (waitForFarState) {
- mProximitySensorListener.unregisterWhenFar();
- } else {
- mProximitySensorListener.unregister();
- }
- mManagerEnabled = false;
- }
- }
-}
diff --git a/src/com/android/contacts/SpecialCharSequenceMgr.java b/src/com/android/contacts/SpecialCharSequenceMgr.java
deleted file mode 100644
index 4902fde..0000000
--- a/src/com/android/contacts/SpecialCharSequenceMgr.java
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts;
-
-import com.android.internal.telephony.ITelephony;
-import com.android.internal.telephony.TelephonyCapabilities;
-import com.android.internal.telephony.TelephonyIntents;
-
-import android.app.AlertDialog;
-import android.app.KeyguardManager;
-import android.app.ProgressDialog;
-import android.content.AsyncQueryHandler;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Looper;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-import android.view.WindowManager;
-import android.widget.EditText;
-import android.widget.Toast;
-
-/**
- * Helper class to listen for some magic character sequences
- * that are handled specially by the dialer.
- *
- * Note the Phone app also handles these sequences too (in a couple of
- * relativly obscure places in the UI), so there's a separate version of
- * this class under apps/Phone.
- *
- * TODO: there's lots of duplicated code between this class and the
- * corresponding class under apps/Phone. Let's figure out a way to
- * unify these two classes (in the framework? in a common shared library?)
- */
-public class SpecialCharSequenceMgr {
- private static final String TAG = "SpecialCharSequenceMgr";
- private static final String MMI_IMEI_DISPLAY = "*#06#";
-
- /**
- * Remembers the previous {@link QueryHandler} and cancel the operation when needed, to
- * prevent possible crash.
- *
- * QueryHandler may call {@link ProgressDialog#dismiss()} when the screen is already gone,
- * which will cause the app crash. This variable enables the class to prevent the crash
- * on {@link #cleanup()}.
- *
- * TODO: Remove this and replace it (and {@link #cleanup()}) with better implementation.
- * One complication is that we have SpecialCharSequencMgr in Phone package too, which has
- * *slightly* different implementation. Note that Phone package doesn't have this problem,
- * so the class on Phone side doesn't have this functionality.
- * Fundamental fix would be to have one shared implementation and resolve this corner case more
- * gracefully.
- */
- private static QueryHandler sPreviousAdnQueryHandler;
-
- /** This class is never instantiated. */
- private SpecialCharSequenceMgr() {
- }
-
- public static boolean handleChars(Context context, String input, EditText textField) {
- return handleChars(context, input, false, textField);
- }
-
- static boolean handleChars(Context context, String input) {
- return handleChars(context, input, false, null);
- }
-
- static boolean handleChars(Context context, String input, boolean useSystemWindow,
- EditText textField) {
-
- //get rid of the separators so that the string gets parsed correctly
- String dialString = PhoneNumberUtils.stripSeparators(input);
-
- if (handleIMEIDisplay(context, dialString, useSystemWindow)
- || handlePinEntry(context, dialString)
- || handleAdnEntry(context, dialString, textField)
- || handleSecretCode(context, dialString)) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Cleanup everything around this class. Must be run inside the main thread.
- *
- * This should be called when the screen becomes background.
- */
- public static void cleanup() {
- if (Looper.myLooper() != Looper.getMainLooper()) {
- Log.wtf(TAG, "cleanup() is called outside the main thread");
- return;
- }
-
- if (sPreviousAdnQueryHandler != null) {
- sPreviousAdnQueryHandler.cancel();
- sPreviousAdnQueryHandler = null;
- }
- }
-
- /**
- * Handles secret codes to launch arbitrary activities in the form of *#*#<code>#*#*.
- * If a secret code is encountered an Intent is started with the android_secret_code://<code>
- * URI.
- *
- * @param context the context to use
- * @param input the text to check for a secret code in
- * @return true if a secret code was encountered
- */
- static boolean handleSecretCode(Context context, String input) {
- // Secret codes are in the form *#*#<code>#*#*
- int len = input.length();
- if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {
- Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,
- Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
- context.sendBroadcast(intent);
- return true;
- }
-
- return false;
- }
-
- /**
- * Handle ADN requests by filling in the SIM contact number into the requested
- * EditText.
- *
- * This code works alongside the Asynchronous query handler {@link QueryHandler}
- * and query cancel handler implemented in {@link SimContactQueryCookie}.
- */
- static boolean handleAdnEntry(Context context, String input, EditText textField) {
- /* ADN entries are of the form "N(N)(N)#" */
-
- TelephonyManager telephonyManager =
- (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- if (telephonyManager == null
- || !TelephonyCapabilities.supportsAdn(telephonyManager.getCurrentPhoneType())) {
- return false;
- }
-
- // if the phone is keyguard-restricted, then just ignore this
- // input. We want to make sure that sim card contacts are NOT
- // exposed unless the phone is unlocked, and this code can be
- // accessed from the emergency dialer.
- KeyguardManager keyguardManager =
- (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
- if (keyguardManager.inKeyguardRestrictedInputMode()) {
- return false;
- }
-
- int len = input.length();
- if ((len > 1) && (len < 5) && (input.endsWith("#"))) {
- try {
- // get the ordinal number of the sim contact
- int index = Integer.parseInt(input.substring(0, len-1));
-
- // The original code that navigated to a SIM Contacts list view did not
- // highlight the requested contact correctly, a requirement for PTCRB
- // certification. This behaviour is consistent with the UI paradigm
- // for touch-enabled lists, so it does not make sense to try to work
- // around it. Instead we fill in the the requested phone number into
- // the dialer text field.
-
- // create the async query handler
- QueryHandler handler = new QueryHandler (context.getContentResolver());
-
- // create the cookie object
- SimContactQueryCookie sc = new SimContactQueryCookie(index - 1, handler,
- ADN_QUERY_TOKEN);
-
- // setup the cookie fields
- sc.contactNum = index - 1;
- sc.setTextField(textField);
-
- // create the progress dialog
- sc.progressDialog = new ProgressDialog(context);
- sc.progressDialog.setTitle(R.string.simContacts_title);
- sc.progressDialog.setMessage(context.getText(R.string.simContacts_emptyLoading));
- sc.progressDialog.setIndeterminate(true);
- sc.progressDialog.setCancelable(true);
- sc.progressDialog.setOnCancelListener(sc);
- sc.progressDialog.getWindow().addFlags(
- WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
-
- // display the progress dialog
- sc.progressDialog.show();
-
- // run the query.
- handler.startQuery(ADN_QUERY_TOKEN, sc, Uri.parse("content://icc/adn"),
- new String[]{ADN_PHONE_NUMBER_COLUMN_NAME}, null, null, null);
-
- if (sPreviousAdnQueryHandler != null) {
- // It is harmless to call cancel() even after the handler's gone.
- sPreviousAdnQueryHandler.cancel();
- }
- sPreviousAdnQueryHandler = handler;
- return true;
- } catch (NumberFormatException ex) {
- // Ignore
- }
- }
- return false;
- }
-
- static boolean handlePinEntry(Context context, String input) {
- if ((input.startsWith("**04") || input.startsWith("**05")) && input.endsWith("#")) {
- try {
- return ITelephony.Stub.asInterface(ServiceManager.getService("phone"))
- .handlePinMmi(input);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to handlePinMmi due to remote exception");
- return false;
- }
- }
- return false;
- }
-
- static boolean handleIMEIDisplay(Context context, String input, boolean useSystemWindow) {
- TelephonyManager telephonyManager =
- (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- if (telephonyManager != null && input.equals(MMI_IMEI_DISPLAY)) {
- int phoneType = telephonyManager.getCurrentPhoneType();
- if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
- showIMEIPanel(context, useSystemWindow, telephonyManager);
- return true;
- } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
- showMEIDPanel(context, useSystemWindow, telephonyManager);
- return true;
- }
- }
-
- return false;
- }
-
- // TODO: Combine showIMEIPanel() and showMEIDPanel() into a single
- // generic "showDeviceIdPanel()" method, like in the apps/Phone
- // version of SpecialCharSequenceMgr.java. (This will require moving
- // the phone app's TelephonyCapabilities.getDeviceIdLabel() method
- // into the telephony framework, though.)
-
- private static void showIMEIPanel(Context context, boolean useSystemWindow,
- TelephonyManager telephonyManager) {
- String imeiStr = telephonyManager.getDeviceId();
-
- AlertDialog alert = new AlertDialog.Builder(context)
- .setTitle(R.string.imei)
- .setMessage(imeiStr)
- .setPositiveButton(android.R.string.ok, null)
- .setCancelable(false)
- .show();
- }
-
- private static void showMEIDPanel(Context context, boolean useSystemWindow,
- TelephonyManager telephonyManager) {
- String meidStr = telephonyManager.getDeviceId();
-
- AlertDialog alert = new AlertDialog.Builder(context)
- .setTitle(R.string.meid)
- .setMessage(meidStr)
- .setPositiveButton(android.R.string.ok, null)
- .setCancelable(false)
- .show();
- }
-
- /*******
- * This code is used to handle SIM Contact queries
- *******/
- private static final String ADN_PHONE_NUMBER_COLUMN_NAME = "number";
- private static final String ADN_NAME_COLUMN_NAME = "name";
- private static final int ADN_QUERY_TOKEN = -1;
-
- /**
- * Cookie object that contains everything we need to communicate to the
- * handler's onQuery Complete, as well as what we need in order to cancel
- * the query (if requested).
- *
- * Note, access to the textField field is going to be synchronized, because
- * the user can request a cancel at any time through the UI.
- */
- private static class SimContactQueryCookie implements DialogInterface.OnCancelListener{
- public ProgressDialog progressDialog;
- public int contactNum;
-
- // Used to identify the query request.
- private int mToken;
- private QueryHandler mHandler;
-
- // The text field we're going to update
- private EditText textField;
-
- public SimContactQueryCookie(int number, QueryHandler handler, int token) {
- contactNum = number;
- mHandler = handler;
- mToken = token;
- }
-
- /**
- * Synchronized getter for the EditText.
- */
- public synchronized EditText getTextField() {
- return textField;
- }
-
- /**
- * Synchronized setter for the EditText.
- */
- public synchronized void setTextField(EditText text) {
- textField = text;
- }
-
- /**
- * Cancel the ADN query by stopping the operation and signaling
- * the cookie that a cancel request is made.
- */
- public synchronized void onCancel(DialogInterface dialog) {
- // close the progress dialog
- if (progressDialog != null) {
- progressDialog.dismiss();
- }
-
- // setting the textfield to null ensures that the UI does NOT get
- // updated.
- textField = null;
-
- // Cancel the operation if possible.
- mHandler.cancelOperation(mToken);
- }
- }
-
- /**
- * Asynchronous query handler that services requests to look up ADNs
- *
- * Queries originate from {@link handleAdnEntry}.
- */
- private static class QueryHandler extends AsyncQueryHandler {
-
- private boolean mCanceled;
-
- public QueryHandler(ContentResolver cr) {
- super(cr);
- }
-
- /**
- * Override basic onQueryComplete to fill in the textfield when
- * we're handed the ADN cursor.
- */
- @Override
- protected void onQueryComplete(int token, Object cookie, Cursor c) {
- sPreviousAdnQueryHandler = null;
- if (mCanceled) {
- return;
- }
-
- SimContactQueryCookie sc = (SimContactQueryCookie) cookie;
-
- // close the progress dialog.
- sc.progressDialog.dismiss();
-
- // get the EditText to update or see if the request was cancelled.
- EditText text = sc.getTextField();
-
- // if the textview is valid, and the cursor is valid and postionable
- // on the Nth number, then we update the text field and display a
- // toast indicating the caller name.
- if ((c != null) && (text != null) && (c.moveToPosition(sc.contactNum))) {
- String name = c.getString(c.getColumnIndexOrThrow(ADN_NAME_COLUMN_NAME));
- String number = c.getString(c.getColumnIndexOrThrow(ADN_PHONE_NUMBER_COLUMN_NAME));
-
- // fill the text in.
- text.getText().replace(0, 0, number);
-
- // display the name as a toast
- Context context = sc.progressDialog.getContext();
- name = context.getString(R.string.menu_callNumber, name);
- Toast.makeText(context, name, Toast.LENGTH_SHORT)
- .show();
- }
- }
-
- public void cancel() {
- mCanceled = true;
- // Ask AsyncQueryHandler to cancel the whole request. This will fails when the
- // query already started.
- cancelOperation(ADN_QUERY_TOKEN);
- }
- }
-}
diff --git a/src/com/android/contacts/SplitAggregateView.java b/src/com/android/contacts/SplitAggregateView.java
index 1b42ca3..6e38549 100644
--- a/src/com/android/contacts/SplitAggregateView.java
+++ b/src/com/android/contacts/SplitAggregateView.java
@@ -35,8 +35,8 @@
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/com/android/contacts/TypePrecedence.java b/src/com/android/contacts/TypePrecedence.java
index b2d8a8f..53b8343 100644
--- a/src/com/android/contacts/TypePrecedence.java
+++ b/src/com/android/contacts/TypePrecedence.java
@@ -24,7 +24,6 @@
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.util.Constants;
/**
* This class contains utility functions for determining the precedence of
@@ -36,6 +35,8 @@
@Deprecated
public final class TypePrecedence {
+ public static final String MIME_TYPE_VIDEO_CHAT = "vnd.android.cursor.item/video-chat-address";
+
/* This utility class has cannot be instantiated.*/
private TypePrecedence() {}
@@ -106,7 +107,7 @@
return TYPE_PRECEDENCE_POSTAL;
} else if (mimetype.equals(Im.CONTENT_ITEM_TYPE)) {
return TYPE_PRECEDENCE_IM;
- } else if (mimetype.equals(Constants.MIME_TYPE_VIDEO_CHAT)) {
+ } else if (mimetype.equals(MIME_TYPE_VIDEO_CHAT)) {
return TYPE_PRECEDENCE_IM;
} else if (mimetype.equals(Organization.CONTENT_ITEM_TYPE)) {
return TYPE_PRECEDENCE_ORG;
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index d50c240..c22f058 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -416,7 +416,11 @@
// 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();
+ if (!TextUtils.isEmpty(queryText)) {
+ mSearchView.setQuery(queryText, false);
+ }
}
if (mActionBar.getNavigationMode() != ActionBar.NAVIGATION_MODE_STANDARD) {
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index 2f7651f..c0a751c 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -35,10 +35,11 @@
import com.android.contacts.ContactsUtils;
import com.android.contacts.model.Contact;
import com.android.contacts.model.ContactLoader;
-import com.android.contacts.model.RawContactModifier;
import com.android.contacts.model.RawContactDelta;
import com.android.contacts.model.RawContactDeltaList;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.model.RawContactModifier;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.util.ContactPhotoUtils;
import java.io.File;
@@ -195,7 +196,7 @@
// the ContactSaveService would not create the new contact, and the
// full-res photo would fail to be saved to the non-existent contact.
AccountType account = raw.getRawContactAccountType(this);
- RawContactDelta.ValuesDelta values =
+ ValuesDelta values =
RawContactModifier.ensureKindExists(raw, account, Photo.CONTENT_ITEM_TYPE);
if (values == null) {
Log.w(TAG, "cannot attach photo to this account type");
diff --git a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
index c8adf95..fd12d7f 100644
--- a/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
+++ b/src/com/android/contacts/activities/ConfirmAddDetailActivity.java
@@ -60,18 +60,19 @@
import com.android.contacts.R;
import com.android.contacts.editor.Editor;
+import com.android.contacts.editor.EditorUiUtils;
import com.android.contacts.editor.ViewIdGenerator;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.util.DialogManager;
-import com.android.contacts.util.EmptyService;
+import com.android.contacts.common.util.EmptyService;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -630,7 +631,7 @@
editableAccount.type, editableAccount.dataSet);
// Create a new RawContactDelta for the new raw_contact.
- final RawContact rawContact = new RawContact(context);
+ final RawContact rawContact = new RawContact();
rawContact.setAccount(editableAccount);
final RawContactDelta entityDelta = new RawContactDelta(ValuesDelta.fromAfter(
@@ -700,7 +701,8 @@
* to the end of mEditors
*/
private void inflateEditorView(DataKind dataKind, ValuesDelta valuesDelta, RawContactDelta state) {
- final View view = mInflater.inflate(dataKind.editorLayoutResourceId, mEditorContainerView,
+ final int layoutResId = EditorUiUtils.getLayoutResourceId(dataKind.mimeType);
+ final View view = mInflater.inflate(layoutResId, mEditorContainerView,
false);
if (view instanceof Editor) {
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index b03a976..86f638c 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -47,7 +47,7 @@
import com.android.contacts.detail.ContactLoaderFragment.ContactLoaderFragmentListener;
import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.model.Contact;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.util.PhoneCapabilityTester;
import java.util.ArrayList;
@@ -260,12 +260,23 @@
actionBar.setTitle(displayName);
actionBar.setSubtitle(company);
+ final StringBuilder talkback = new StringBuilder();
if (!TextUtils.isEmpty(displayName)) {
+ talkback.append(displayName);
+ }
+ if (!TextUtils.isEmpty(company)) {
+ if (talkback.length() != 0) {
+ talkback.append(", ");
+ }
+ talkback.append(company);
+ }
+
+ if (talkback.length() != 0) {
AccessibilityManager accessibilityManager =
(AccessibilityManager) this.getSystemService(Context.ACCESSIBILITY_SERVICE);
if (accessibilityManager.isEnabled()) {
View decorView = getWindow().getDecorView();
- decorView.setContentDescription(displayName);
+ decorView.setContentDescription(talkback);
decorView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
}
diff --git a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
index f5852e5..bf3b1c1 100644
--- a/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorAccountsChangedActivity.java
@@ -30,10 +30,10 @@
import com.android.contacts.R;
import com.android.contacts.editor.ContactEditorUtils;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountsListAdapter;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.AccountsListAdapter;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import java.util.List;
@@ -189,4 +189,4 @@
setResult(RESULT_OK, intent);
finish();
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 77ed857..d12da85 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -36,9 +36,9 @@
import com.android.contacts.R;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.editor.ContactEditorFragment.SaveMode;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
+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.util.DialogManager;
import java.util.ArrayList;
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index a874f45..915c6e1 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -42,19 +42,19 @@
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
-import com.android.contacts.list.ContactEntryListFragment;
+import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.list.ContactPickerFragment;
import com.android.contacts.list.ContactsIntentResolver;
import com.android.contacts.list.ContactsRequest;
-import com.android.contacts.list.DirectoryListLoader;
+import com.android.contacts.common.list.DirectoryListLoader;
import com.android.contacts.list.EmailAddressPickerFragment;
+import com.android.contacts.list.LegacyPhoneNumberPickerFragment;
import com.android.contacts.list.OnContactPickerActionListener;
import com.android.contacts.list.OnEmailAddressPickerActionListener;
-import com.android.contacts.list.OnPhoneNumberPickerActionListener;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.contacts.list.OnPostalAddressPickerActionListener;
-import com.android.contacts.list.PhoneNumberPickerFragment;
+import com.android.contacts.common.list.PhoneNumberPickerFragment;
import com.android.contacts.list.PostalAddressPickerFragment;
-import com.android.contacts.widget.ContextMenuAdapter;
import com.google.common.collect.Sets;
import java.util.Set;
@@ -338,7 +338,7 @@
}
case ContactsRequest.ACTION_PICK_PHONE: {
- PhoneNumberPickerFragment fragment = new PhoneNumberPickerFragment();
+ PhoneNumberPickerFragment fragment = getPhoneNumberPickerFragment(mRequest);
mListFragment = fragment;
break;
}
@@ -349,7 +349,7 @@
}
case ContactsRequest.ACTION_CREATE_SHORTCUT_CALL: {
- PhoneNumberPickerFragment fragment = new PhoneNumberPickerFragment();
+ PhoneNumberPickerFragment fragment = getPhoneNumberPickerFragment(mRequest);
fragment.setShortcutAction(Intent.ACTION_CALL);
mListFragment = fragment;
@@ -357,7 +357,7 @@
}
case ContactsRequest.ACTION_CREATE_SHORTCUT_SMS: {
- PhoneNumberPickerFragment fragment = new PhoneNumberPickerFragment();
+ PhoneNumberPickerFragment fragment = getPhoneNumberPickerFragment(mRequest);
fragment.setShortcutAction(Intent.ACTION_SENDTO);
mListFragment = fragment;
@@ -374,6 +374,9 @@
throw new IllegalStateException("Invalid action code: " + mActionCode);
}
+ // Setting compatibility is no longer needed for PhoneNumberPickerFragment since that logic
+ // has been separated into LegacyPhoneNumberPickerFragment. But we still need to set
+ // compatibility for other fragments.
mListFragment.setLegacyCompatibilityMode(mRequest.isLegacyCompatibilityMode());
mListFragment.setDirectoryResultLimit(DEFAULT_DIRECTORY_RESULT_LIMIT);
@@ -382,6 +385,14 @@
.commitAllowingStateLoss();
}
+ private PhoneNumberPickerFragment getPhoneNumberPickerFragment(ContactsRequest request) {
+ if (mRequest.isLegacyCompatibilityMode()) {
+ return new LegacyPhoneNumberPickerFragment();
+ } else {
+ return new PhoneNumberPickerFragment();
+ }
+ }
+
public void setupActionListener() {
if (mListFragment instanceof ContactPickerFragment) {
((ContactPickerFragment) mListFragment).setOnContactPickerActionListener(
@@ -527,16 +538,6 @@
}
@Override
- public boolean onContextItemSelected(MenuItem item) {
- ContextMenuAdapter menuAdapter = mListFragment.getContextMenuAdapter();
- if (menuAdapter != null) {
- return menuAdapter.onContextItemSelected(item);
- }
-
- return super.onContextItemSelected(item);
- }
-
- @Override
public boolean onQueryTextChange(String newText) {
mListFragment.setQueryString(newText, true);
return false;
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
deleted file mode 100644
index f26a5d4..0000000
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ /dev/null
@@ -1,1270 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.activities;
-
-import android.app.ActionBar;
-import android.app.ActionBar.LayoutParams;
-import android.app.ActionBar.Tab;
-import android.app.ActionBar.TabListener;
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.preference.PreferenceManager;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Intents.UI;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MenuItem.OnMenuItemClickListener;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.PopupMenu;
-import android.widget.SearchView;
-import android.widget.SearchView.OnCloseListener;
-import android.widget.SearchView.OnQueryTextListener;
-
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.R;
-import com.android.contacts.calllog.CallLogFragment;
-import com.android.contacts.dialpad.DialpadFragment;
-import com.android.contacts.interactions.PhoneNumberInteraction;
-import com.android.contacts.list.ContactListFilterController;
-import com.android.contacts.list.ContactListFilterController.ContactListFilterListener;
-import com.android.contacts.list.ContactListItemView;
-import com.android.contacts.list.OnPhoneNumberPickerActionListener;
-import com.android.contacts.list.PhoneFavoriteFragment;
-import com.android.contacts.list.PhoneNumberPickerFragment;
-import com.android.contacts.util.AccountFilterUtil;
-import com.android.contacts.util.Constants;
-import com.android.internal.telephony.ITelephony;
-
-/**
- * The dialer activity that has one tab with the virtual 12key
- * dialer, a tab with recent calls in it, a tab with the contacts and
- * a tab with the favorite. This is the container and the tabs are
- * embedded using intents.
- * The dialer tab's title is 'phone', a more common name (see strings.xml).
- */
-public class DialtactsActivity extends TransactionSafeActivity
- implements View.OnClickListener {
- private static final String TAG = "DialtactsActivity";
-
- public static final boolean DEBUG = false;
-
- /** Used to open Call Setting */
- private static final String PHONE_PACKAGE = "com.android.phone";
- private static final String CALL_SETTINGS_CLASS_NAME =
- "com.android.phone.CallFeaturesSetting";
-
- /**
- * Copied from PhoneApp. See comments in Phone app for more detail.
- */
- public static final String EXTRA_CALL_ORIGIN = "com.android.phone.CALL_ORIGIN";
- /** @see #getCallOrigin() */
- private static final String CALL_ORIGIN_DIALTACTS =
- "com.android.contacts.activities.DialtactsActivity";
-
- /**
- * Just for backward compatibility. Should behave as same as {@link Intent#ACTION_DIAL}.
- */
- private static final String ACTION_TOUCH_DIALER = "com.android.phone.action.TOUCH_DIALER";
-
- /** Used both by {@link ActionBar} and {@link ViewPagerAdapter} */
- private static final int TAB_INDEX_DIALER = 0;
- private static final int TAB_INDEX_CALL_LOG = 1;
- private static final int TAB_INDEX_FAVORITES = 2;
-
- private static final int TAB_INDEX_COUNT = 3;
-
- private SharedPreferences mPrefs;
-
- /** Last manually selected tab index */
- private static final String PREF_LAST_MANUALLY_SELECTED_TAB =
- "DialtactsActivity_last_manually_selected_tab";
- private static final int PREF_LAST_MANUALLY_SELECTED_TAB_DEFAULT = TAB_INDEX_DIALER;
-
- private static final int SUBACTIVITY_ACCOUNT_FILTER = 1;
-
- public class ViewPagerAdapter extends FragmentPagerAdapter {
- public ViewPagerAdapter(FragmentManager fm) {
- super(fm);
- }
-
- @Override
- public Fragment getItem(int position) {
- switch (position) {
- case TAB_INDEX_DIALER:
- return new DialpadFragment();
- case TAB_INDEX_CALL_LOG:
- return new CallLogFragment();
- case TAB_INDEX_FAVORITES:
- return new PhoneFavoriteFragment();
- }
- throw new IllegalStateException("No fragment at position " + position);
- }
-
- @Override
- public void setPrimaryItem(ViewGroup container, int position, Object object) {
- // The parent's setPrimaryItem() also calls setMenuVisibility(), so we want to know
- // when it happens.
- if (DEBUG) {
- Log.d(TAG, "FragmentPagerAdapter#setPrimaryItem(), position: " + position);
- }
- super.setPrimaryItem(container, position, object);
- }
-
- @Override
- public int getCount() {
- return TAB_INDEX_COUNT;
- }
- }
-
- /**
- * True when the app detects user's drag event. This variable should not become true when
- * mUserTabClick is true.
- *
- * During user's drag or tab click, we shouldn't show fake buttons but just show real
- * ActionBar at the bottom of the screen, for transition animation.
- */
- boolean mDuringSwipe = false;
- /**
- * True when the app detects user's tab click (at the top of the screen). This variable should
- * not become true when mDuringSwipe is true.
- *
- * During user's drag or tab click, we shouldn't show fake buttons but just show real
- * ActionBar at the bottom of the screen, for transition animation.
- */
- boolean mUserTabClick = false;
-
- private class PageChangeListener implements OnPageChangeListener {
- private int mCurrentPosition = -1;
- /**
- * Used during page migration, to remember the next position {@link #onPageSelected(int)}
- * specified.
- */
- private int mNextPosition = -1;
-
- @Override
- public void onPageScrolled(
- int position, float positionOffset, int positionOffsetPixels) {
- }
-
- @Override
- public void onPageSelected(int position) {
- if (DEBUG) Log.d(TAG, "onPageSelected: position: " + position);
- final ActionBar actionBar = getActionBar();
- if (mDialpadFragment != null) {
- if (mDuringSwipe && position == TAB_INDEX_DIALER) {
- // TODO: Figure out if we want this or not. Right now
- // - with this call, both fake buttons and real action bar overlap
- // - without this call, there's tiny flicker happening to search/menu buttons.
- // If we can reduce the flicker without this call, it would be much better.
- // updateFakeMenuButtonsVisibility(true);
- }
- }
-
- if (mCurrentPosition == position) {
- Log.w(TAG, "Previous position and next position became same (" + position + ")");
- }
-
- actionBar.selectTab(actionBar.getTabAt(position));
- mNextPosition = position;
- }
-
- public void setCurrentPosition(int position) {
- mCurrentPosition = position;
- }
-
- public int getCurrentPosition() {
- return mCurrentPosition;
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- switch (state) {
- case ViewPager.SCROLL_STATE_IDLE: {
- if (mNextPosition == -1) {
- // This happens when the user drags the screen just after launching the
- // application, and settle down the same screen without actually swiping it.
- // At that moment mNextPosition is apparently -1 yet, and we expect it
- // being updated by onPageSelected(), which is *not* called if the user
- // settle down the exact same tab after the dragging.
- if (DEBUG) {
- Log.d(TAG, "Next position is not specified correctly. Use current tab ("
- + mViewPager.getCurrentItem() + ")");
- }
- mNextPosition = mViewPager.getCurrentItem();
- }
- if (DEBUG) {
- Log.d(TAG, "onPageScrollStateChanged() with SCROLL_STATE_IDLE. "
- + "mCurrentPosition: " + mCurrentPosition
- + ", mNextPosition: " + mNextPosition);
- }
- // Interpret IDLE as the end of migration (both swipe and tab click)
- mDuringSwipe = false;
- mUserTabClick = false;
-
- updateFakeMenuButtonsVisibility(mNextPosition == TAB_INDEX_DIALER);
- sendFragmentVisibilityChange(mCurrentPosition, false);
- sendFragmentVisibilityChange(mNextPosition, true);
-
- invalidateOptionsMenu();
-
- mCurrentPosition = mNextPosition;
- break;
- }
- case ViewPager.SCROLL_STATE_DRAGGING: {
- if (DEBUG) Log.d(TAG, "onPageScrollStateChanged() with SCROLL_STATE_DRAGGING");
- mDuringSwipe = true;
- mUserTabClick = false;
- break;
- }
- case ViewPager.SCROLL_STATE_SETTLING: {
- if (DEBUG) Log.d(TAG, "onPageScrollStateChanged() with SCROLL_STATE_SETTLING");
- mDuringSwipe = true;
- mUserTabClick = false;
- break;
- }
- default:
- break;
- }
- }
- }
-
- private String mFilterText;
-
- /** Enables horizontal swipe between Fragments. */
- private ViewPager mViewPager;
- private final PageChangeListener mPageChangeListener = new PageChangeListener();
- private DialpadFragment mDialpadFragment;
- private CallLogFragment mCallLogFragment;
- private PhoneFavoriteFragment mPhoneFavoriteFragment;
-
- private View mSearchButton;
- private View mMenuButton;
-
- private final ContactListFilterListener mContactListFilterListener =
- new ContactListFilterListener() {
- @Override
- public void onContactListFilterChanged() {
- boolean doInvalidateOptionsMenu = false;
-
- if (mPhoneFavoriteFragment != null && mPhoneFavoriteFragment.isAdded()) {
- mPhoneFavoriteFragment.setFilter(mContactListFilterController.getFilter());
- doInvalidateOptionsMenu = true;
- }
-
- if (mSearchFragment != null && mSearchFragment.isAdded()) {
- mSearchFragment.setFilter(mContactListFilterController.getFilter());
- doInvalidateOptionsMenu = true;
- } else {
- Log.w(TAG, "Search Fragment isn't available when ContactListFilter is changed");
- }
-
- if (doInvalidateOptionsMenu) {
- invalidateOptionsMenu();
- }
- }
- };
-
- private final TabListener mTabListener = new TabListener() {
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- if (DEBUG) Log.d(TAG, "onTabUnselected(). tab: " + tab);
- }
-
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- if (DEBUG) {
- Log.d(TAG, "onTabSelected(). tab: " + tab + ", mDuringSwipe: " + mDuringSwipe);
- }
- // When the user swipes the screen horizontally, this method will be called after
- // ViewPager.SCROLL_STATE_DRAGGING and ViewPager.SCROLL_STATE_SETTLING events, while
- // when the user clicks a tab at the ActionBar at the top, this will be called before
- // them. This logic interprets the order difference as a difference of the user action.
- if (!mDuringSwipe) {
- if (DEBUG) {
- Log.d(TAG, "Tab select. from: " + mPageChangeListener.getCurrentPosition()
- + ", to: " + tab.getPosition());
- }
- if (mDialpadFragment != null) {
- updateFakeMenuButtonsVisibility(tab.getPosition() == TAB_INDEX_DIALER);
- }
- mUserTabClick = true;
- }
-
- if (mViewPager.getCurrentItem() != tab.getPosition()) {
- mViewPager.setCurrentItem(tab.getPosition(), true);
- }
-
- // During the call, we don't remember the tab position.
- if (!DialpadFragment.phoneIsInUse()) {
- // Remember this tab index. This function is also called, if the tab is set
- // automatically in which case the setter (setCurrentTab) has to set this to its old
- // value afterwards
- mLastManuallySelectedFragment = tab.getPosition();
- }
- }
-
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- if (DEBUG) Log.d(TAG, "onTabReselected");
- }
- };
-
- /**
- * Fragment for searching phone numbers. Unlike the other Fragments, this doesn't correspond
- * to tab but is shown by a search action.
- */
- private PhoneNumberPickerFragment mSearchFragment;
- /**
- * True when this Activity is in its search UI (with a {@link SearchView} and
- * {@link PhoneNumberPickerFragment}).
- */
- private boolean mInSearchUi;
- private SearchView mSearchView;
-
- private final OnClickListener mFilterOptionClickListener = new OnClickListener() {
- @Override
- public void onClick(View view) {
- final PopupMenu popupMenu = new PopupMenu(DialtactsActivity.this, view);
- final Menu menu = popupMenu.getMenu();
- popupMenu.inflate(R.menu.dialtacts_search_options);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- filterOptionMenuItem.setOnMenuItemClickListener(mFilterOptionsMenuItemClickListener);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
- addContactOptionMenuItem.setIntent(
- new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
- popupMenu.show();
- }
- };
-
- /**
- * The index of the Fragment (or, the tab) that has last been manually selected.
- * This value does not keep track of programmatically set Tabs (e.g. Call Log after a Call)
- */
- private int mLastManuallySelectedFragment;
-
- private ContactListFilterController mContactListFilterController;
- private OnMenuItemClickListener mFilterOptionsMenuItemClickListener =
- new OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- AccountFilterUtil.startAccountFilterActivityForResult(
- DialtactsActivity.this, SUBACTIVITY_ACCOUNT_FILTER,
- mContactListFilterController.getFilter());
- return true;
- }
- };
-
- private OnMenuItemClickListener mSearchMenuItemClickListener =
- new OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- enterSearchUi();
- return true;
- }
- };
-
- /**
- * Listener used when one of phone numbers in search UI is selected. This will initiate a
- * phone call using the phone number.
- */
- private final OnPhoneNumberPickerActionListener mPhoneNumberPickerActionListener =
- new OnPhoneNumberPickerActionListener() {
- @Override
- public void onPickPhoneNumberAction(Uri dataUri) {
- // Specify call-origin so that users will see the previous tab instead of
- // CallLog screen (search UI will be automatically exited).
- PhoneNumberInteraction.startInteractionForPhoneCall(
- DialtactsActivity.this, dataUri, getCallOrigin());
- }
-
- @Override
- public void onShortcutIntentCreated(Intent intent) {
- Log.w(TAG, "Unsupported intent has come (" + intent + "). Ignoring.");
- }
-
- @Override
- public void onHomeInActionBarSelected() {
- exitSearchUi();
- }
- };
-
- /**
- * Listener used to send search queries to the phone search fragment.
- */
- private final OnQueryTextListener mPhoneSearchQueryTextListener =
- new OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String query) {
- View view = getCurrentFocus();
- if (view != null) {
- hideInputMethod(view);
- view.clearFocus();
- }
- return true;
- }
-
- @Override
- public boolean onQueryTextChange(String newText) {
- // Show search result with non-empty text. Show a bare list otherwise.
- if (mSearchFragment != null) {
- mSearchFragment.setQueryString(newText, true);
- }
- return true;
- }
- };
-
- /**
- * Listener used to handle the "close" button on the right side of {@link SearchView}.
- * If some text is in the search view, this will clean it up. Otherwise this will exit
- * the search UI and let users go back to usual Phone UI.
- *
- * This does _not_ handle back button.
- */
- private final OnCloseListener mPhoneSearchCloseListener =
- new OnCloseListener() {
- @Override
- public boolean onClose() {
- if (!TextUtils.isEmpty(mSearchView.getQuery())) {
- mSearchView.setQuery(null, true);
- }
- return true;
- }
- };
-
- private final View.OnLayoutChangeListener mFirstLayoutListener
- = new View.OnLayoutChangeListener() {
- @Override
- public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
- int oldTop, int oldRight, int oldBottom) {
- v.removeOnLayoutChangeListener(this); // Unregister self.
- addSearchFragment();
- }
- };
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- final Intent intent = getIntent();
- fixIntent(intent);
-
- setContentView(R.layout.dialtacts_activity);
-
- mContactListFilterController = ContactListFilterController.getInstance(this);
- mContactListFilterController.addListener(mContactListFilterListener);
-
- findViewById(R.id.dialtacts_frame).addOnLayoutChangeListener(mFirstLayoutListener);
-
- mViewPager = (ViewPager) findViewById(R.id.pager);
- mViewPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
- mViewPager.setOnPageChangeListener(mPageChangeListener);
- mViewPager.setOffscreenPageLimit(2);
-
- // Do same width calculation as ActionBar does
- DisplayMetrics dm = getResources().getDisplayMetrics();
- int minCellSize = getResources().getDimensionPixelSize(R.dimen.fake_menu_button_min_width);
- int cellCount = dm.widthPixels / minCellSize;
- int fakeMenuItemWidth = dm.widthPixels / cellCount;
- if (DEBUG) Log.d(TAG, "The size of fake menu buttons (in pixel): " + fakeMenuItemWidth);
-
- // Soft menu button should appear only when there's no hardware menu button.
- mMenuButton = findViewById(R.id.overflow_menu);
- if (mMenuButton != null) {
- mMenuButton.setMinimumWidth(fakeMenuItemWidth);
- if (ViewConfiguration.get(this).hasPermanentMenuKey()) {
- // This is required for dialpad button's layout, so must not use GONE here.
- mMenuButton.setVisibility(View.INVISIBLE);
- } else {
- mMenuButton.setOnClickListener(this);
- }
- }
- mSearchButton = findViewById(R.id.searchButton);
- if (mSearchButton != null) {
- mSearchButton.setMinimumWidth(fakeMenuItemWidth);
- mSearchButton.setOnClickListener(this);
- }
-
- // Setup the ActionBar tabs (the order matches the tab-index contants TAB_INDEX_*)
- setupDialer();
- setupCallLog();
- setupFavorites();
- getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- getActionBar().setDisplayShowTitleEnabled(false);
- getActionBar().setDisplayShowHomeEnabled(false);
-
- // Load the last manually loaded tab
- mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- mLastManuallySelectedFragment = mPrefs.getInt(PREF_LAST_MANUALLY_SELECTED_TAB,
- PREF_LAST_MANUALLY_SELECTED_TAB_DEFAULT);
- if (mLastManuallySelectedFragment >= TAB_INDEX_COUNT) {
- // Stored value may have exceeded the number of current tabs. Reset it.
- mLastManuallySelectedFragment = PREF_LAST_MANUALLY_SELECTED_TAB_DEFAULT;
- }
-
- setCurrentTab(intent);
-
- if (UI.FILTER_CONTACTS_ACTION.equals(intent.getAction())
- && icicle == null) {
- setupFilterText(intent);
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
- if (mPhoneFavoriteFragment != null) {
- mPhoneFavoriteFragment.setFilter(mContactListFilterController.getFilter());
- }
- if (mSearchFragment != null) {
- mSearchFragment.setFilter(mContactListFilterController.getFilter());
- }
-
- if (mDuringSwipe || mUserTabClick) {
- if (DEBUG) Log.d(TAG, "reset buggy flag state..");
- mDuringSwipe = false;
- mUserTabClick = false;
- }
-
- final int currentPosition = mPageChangeListener.getCurrentPosition();
- if (DEBUG) {
- Log.d(TAG, "onStart(). current position: " + mPageChangeListener.getCurrentPosition()
- + ". Reset all menu visibility state.");
- }
- updateFakeMenuButtonsVisibility(currentPosition == TAB_INDEX_DIALER && !mInSearchUi);
- for (int i = 0; i < TAB_INDEX_COUNT; i++) {
- sendFragmentVisibilityChange(i, i == currentPosition);
- }
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- mContactListFilterController.removeListener(mContactListFilterListener);
- }
-
- @Override
- public void onClick(View view) {
- switch (view.getId()) {
- case R.id.searchButton: {
- enterSearchUi();
- break;
- }
- case R.id.overflow_menu: {
- if (mDialpadFragment != null) {
- PopupMenu popup = mDialpadFragment.constructPopupMenu(view);
- if (popup != null) {
- popup.show();
- }
- } else {
- Log.w(TAG, "DialpadFragment is null during onClick() event for " + view);
- }
- break;
- }
- default: {
- Log.wtf(TAG, "Unexpected onClick event from " + view);
- break;
- }
- }
- }
-
- /**
- * Add search fragment. Note this is called during onLayout, so there's some restrictions,
- * such as executePendingTransaction can't be used in it.
- */
- private void addSearchFragment() {
- // In order to take full advantage of "fragment deferred start", we need to create the
- // search fragment after all other fragments are created.
- // The other fragments are created by the ViewPager on the first onMeasure().
- // We use the first onLayout call, which is after onMeasure().
-
- // Just return if the fragment is already created, which happens after configuration
- // changes.
- if (mSearchFragment != null) return;
-
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- final Fragment searchFragment = new PhoneNumberPickerFragment();
-
- searchFragment.setUserVisibleHint(false);
- ft.add(R.id.dialtacts_frame, searchFragment);
- ft.hide(searchFragment);
- ft.commitAllowingStateLoss();
- }
-
- private void prepareSearchView() {
- final View searchViewLayout =
- getLayoutInflater().inflate(R.layout.dialtacts_custom_action_bar, null);
- mSearchView = (SearchView) searchViewLayout.findViewById(R.id.search_view);
- mSearchView.setOnQueryTextListener(mPhoneSearchQueryTextListener);
- mSearchView.setOnCloseListener(mPhoneSearchCloseListener);
- // Since we're using a custom layout for showing SearchView instead of letting the
- // search menu icon do that job, we need to manually configure the View so it looks
- // "shown via search menu".
- // - it should be iconified by default
- // - it should not be iconified at this time
- // See also comments for onActionViewExpanded()/onActionViewCollapsed()
- mSearchView.setIconifiedByDefault(true);
- mSearchView.setQueryHint(getString(R.string.hint_findContacts));
- mSearchView.setIconified(false);
- mSearchView.setOnQueryTextFocusChangeListener(new OnFocusChangeListener() {
- @Override
- public void onFocusChange(View view, boolean hasFocus) {
- if (hasFocus) {
- showInputMethod(view.findFocus());
- }
- }
- });
-
- if (!ViewConfiguration.get(this).hasPermanentMenuKey()) {
- // Filter option menu should be shown on the right side of SearchView.
- final View filterOptionView = searchViewLayout.findViewById(R.id.search_option);
- filterOptionView.setVisibility(View.VISIBLE);
- filterOptionView.setOnClickListener(mFilterOptionClickListener);
- }
-
- getActionBar().setCustomView(searchViewLayout,
- new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
- }
-
- @Override
- public void onAttachFragment(Fragment fragment) {
- // This method can be called before onCreate(), at which point we cannot rely on ViewPager.
- // In that case, we will setup the "current position" soon after the ViewPager is ready.
- final int currentPosition = mViewPager != null ? mViewPager.getCurrentItem() : -1;
-
- if (fragment instanceof DialpadFragment) {
- mDialpadFragment = (DialpadFragment) fragment;
- } else if (fragment instanceof CallLogFragment) {
- mCallLogFragment = (CallLogFragment) fragment;
- } else if (fragment instanceof PhoneFavoriteFragment) {
- mPhoneFavoriteFragment = (PhoneFavoriteFragment) fragment;
- mPhoneFavoriteFragment.setListener(mPhoneFavoriteListener);
- if (mContactListFilterController != null
- && mContactListFilterController.getFilter() != null) {
- mPhoneFavoriteFragment.setFilter(mContactListFilterController.getFilter());
- }
- } else if (fragment instanceof PhoneNumberPickerFragment) {
- mSearchFragment = (PhoneNumberPickerFragment) fragment;
- mSearchFragment.setOnPhoneNumberPickerActionListener(mPhoneNumberPickerActionListener);
- mSearchFragment.setQuickContactEnabled(true);
- mSearchFragment.setDarkTheme(true);
- mSearchFragment.setPhotoPosition(ContactListItemView.PhotoPosition.LEFT);
- mSearchFragment.setUseCallableUri(true);
- if (mContactListFilterController != null
- && mContactListFilterController.getFilter() != null) {
- mSearchFragment.setFilter(mContactListFilterController.getFilter());
- }
- // Here we assume that we're not on the search mode, so let's hide the fragment.
- //
- // We get here either when the fragment is created (normal case), or after configuration
- // changes. In the former case, we're not in search mode because we can only
- // enter search mode if the fragment is created. (see enterSearchUi())
- // In the latter case we're not in search mode either because we don't retain
- // mInSearchUi -- ideally we should but at this point it's not supported.
- mSearchFragment.setUserVisibleHint(false);
- // After configuration changes fragments will forget their "hidden" state, so make
- // sure to hide it.
- if (!mSearchFragment.isHidden()) {
- final FragmentTransaction transaction = getFragmentManager().beginTransaction();
- transaction.hide(mSearchFragment);
- transaction.commitAllowingStateLoss();
- }
- }
- }
-
- @Override
- protected void onPause() {
- super.onPause();
-
- mPrefs.edit().putInt(PREF_LAST_MANUALLY_SELECTED_TAB, mLastManuallySelectedFragment)
- .apply();
- }
-
- private void fixIntent(Intent intent) {
- // This should be cleaned up: the call key used to send an Intent
- // that just said to go to the recent calls list. It now sends this
- // abstract action, but this class hasn't been rewritten to deal with it.
- if (Intent.ACTION_CALL_BUTTON.equals(intent.getAction())) {
- intent.setDataAndType(Calls.CONTENT_URI, Calls.CONTENT_TYPE);
- intent.putExtra("call_key", true);
- setIntent(intent);
- }
- }
-
- private void setupDialer() {
- final Tab tab = getActionBar().newTab();
- tab.setContentDescription(R.string.dialerIconLabel);
- tab.setTabListener(mTabListener);
- tab.setIcon(R.drawable.ic_tab_dialer);
- getActionBar().addTab(tab);
- }
-
- private void setupCallLog() {
- final Tab tab = getActionBar().newTab();
- tab.setContentDescription(R.string.recentCallsIconLabel);
- tab.setIcon(R.drawable.ic_tab_recent);
- tab.setTabListener(mTabListener);
- getActionBar().addTab(tab);
- }
-
- private void setupFavorites() {
- final Tab tab = getActionBar().newTab();
- tab.setContentDescription(R.string.dialerAllContactsLabel);
- tab.setIcon(R.drawable.ic_tab_all);
- tab.setTabListener(mTabListener);
- getActionBar().addTab(tab);
- }
-
- /**
- * Returns true if the intent is due to hitting the green send key (hardware call button:
- * KEYCODE_CALL) while in a call.
- *
- * @param intent the intent that launched this activity
- * @param recentCallsRequest true if the intent is requesting to view recent calls
- * @return true if the intent is due to hitting the green send key while in a call
- */
- private boolean isSendKeyWhileInCall(final Intent intent,
- final boolean recentCallsRequest) {
- // If there is a call in progress go to the call screen
- if (recentCallsRequest) {
- final boolean callKey = intent.getBooleanExtra("call_key", false);
-
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (callKey && phone != null && phone.showCallScreen()) {
- return true;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to handle send while in call", e);
- }
- }
-
- return false;
- }
-
- /**
- * Sets the current tab based on the intent's request type
- *
- * @param intent Intent that contains information about which tab should be selected
- */
- private void setCurrentTab(Intent intent) {
- // If we got here by hitting send and we're in call forward along to the in-call activity
- boolean recentCallsRequest = Calls.CONTENT_TYPE.equals(intent.resolveType(
- getContentResolver()));
- if (isSendKeyWhileInCall(intent, recentCallsRequest)) {
- finish();
- return;
- }
-
- // Remember the old manually selected tab index so that it can be restored if it is
- // overwritten by one of the programmatic tab selections
- final int savedTabIndex = mLastManuallySelectedFragment;
-
- final int tabIndex;
- if (DialpadFragment.phoneIsInUse() || isDialIntent(intent)) {
- tabIndex = TAB_INDEX_DIALER;
- } else if (recentCallsRequest) {
- tabIndex = TAB_INDEX_CALL_LOG;
- } else {
- tabIndex = mLastManuallySelectedFragment;
- }
-
- final int previousItemIndex = mViewPager.getCurrentItem();
- mViewPager.setCurrentItem(tabIndex, false /* smoothScroll */);
- if (previousItemIndex != tabIndex) {
- sendFragmentVisibilityChange(previousItemIndex, false /* not visible */ );
- }
- mPageChangeListener.setCurrentPosition(tabIndex);
- sendFragmentVisibilityChange(tabIndex, true /* visible */ );
-
- // Restore to the previous manual selection
- mLastManuallySelectedFragment = savedTabIndex;
- mDuringSwipe = false;
- mUserTabClick = false;
- }
-
- @Override
- public void onNewIntent(Intent newIntent) {
- setIntent(newIntent);
- fixIntent(newIntent);
- setCurrentTab(newIntent);
- final String action = newIntent.getAction();
- if (UI.FILTER_CONTACTS_ACTION.equals(action)) {
- setupFilterText(newIntent);
- }
- if (mInSearchUi || (mSearchFragment != null && mSearchFragment.isVisible())) {
- exitSearchUi();
- }
-
- if (mViewPager.getCurrentItem() == TAB_INDEX_DIALER) {
- if (mDialpadFragment != null) {
- mDialpadFragment.setStartedFromNewIntent(true);
- } else {
- Log.e(TAG, "DialpadFragment isn't ready yet when the tab is already selected.");
- }
- } else if (mViewPager.getCurrentItem() == TAB_INDEX_CALL_LOG) {
- if (mCallLogFragment != null) {
- mCallLogFragment.configureScreenFromIntent(newIntent);
- } else {
- Log.e(TAG, "CallLogFragment isn't ready yet when the tab is already selected.");
- }
- }
- invalidateOptionsMenu();
- }
-
- /** Returns true if the given intent contains a phone number to populate the dialer with */
- private boolean isDialIntent(Intent intent) {
- final String action = intent.getAction();
- if (Intent.ACTION_DIAL.equals(action) || ACTION_TOUCH_DIALER.equals(action)) {
- return true;
- }
- if (Intent.ACTION_VIEW.equals(action)) {
- final Uri data = intent.getData();
- if (data != null && Constants.SCHEME_TEL.equals(data.getScheme())) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns an appropriate call origin for this Activity. May return null when no call origin
- * should be used (e.g. when some 3rd party application launched the screen. Call origin is
- * for remembering the tab in which the user made a phone call, so the external app's DIAL
- * request should not be counted.)
- */
- public String getCallOrigin() {
- return !isDialIntent(getIntent()) ? CALL_ORIGIN_DIALTACTS : null;
- }
-
- /**
- * Retrieves the filter text stored in {@link #setupFilterText(Intent)}.
- * This text originally came from a FILTER_CONTACTS_ACTION intent received
- * by this activity. The stored text will then be cleared after after this
- * method returns.
- *
- * @return The stored filter text
- */
- public String getAndClearFilterText() {
- String filterText = mFilterText;
- mFilterText = null;
- return filterText;
- }
-
- /**
- * Stores the filter text associated with a FILTER_CONTACTS_ACTION intent.
- * This is so child activities can check if they are supposed to display a filter.
- *
- * @param intent The intent received in {@link #onNewIntent(Intent)}
- */
- private void setupFilterText(Intent intent) {
- // If the intent was relaunched from history, don't apply the filter text.
- if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
- return;
- }
- String filter = intent.getStringExtra(UI.FILTER_TEXT_EXTRA_KEY);
- if (filter != null && filter.length() > 0) {
- mFilterText = filter;
- }
- }
-
- @Override
- public void onBackPressed() {
- if (mInSearchUi) {
- // We should let the user go back to usual screens with tabs.
- exitSearchUi();
- } else if (isTaskRoot()) {
- // Instead of stopping, simply push this to the back of the stack.
- // This is only done when running at the top of the stack;
- // otherwise, we have been launched by someone else so need to
- // allow the user to go back to the caller.
- moveTaskToBack(false);
- } else {
- super.onBackPressed();
- }
- }
-
- private final PhoneFavoriteFragment.Listener mPhoneFavoriteListener =
- new PhoneFavoriteFragment.Listener() {
- @Override
- public void onContactSelected(Uri contactUri) {
- PhoneNumberInteraction.startInteractionForPhoneCall(
- DialtactsActivity.this, contactUri, getCallOrigin());
- }
-
- @Override
- public void onCallNumberDirectly(String phoneNumber) {
- Intent intent = ContactsUtils.getCallIntent(phoneNumber, getCallOrigin());
- startActivity(intent);
- }
- };
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.dialtacts_options, menu);
-
- // set up intents and onClick listeners
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
- final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
-
- callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent());
- searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener);
- filterOptionMenuItem.setOnMenuItemClickListener(mFilterOptionsMenuItemClickListener);
- addContactOptionMenuItem.setIntent(
- new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
-
- return true;
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- if (mInSearchUi) {
- prepareOptionsMenuInSearchMode(menu);
- } else {
- // get reference to the currently selected tab
- final Tab tab = getActionBar().getSelectedTab();
- if (tab != null) {
- switch(tab.getPosition()) {
- case TAB_INDEX_DIALER:
- prepareOptionsMenuForDialerTab(menu);
- break;
- case TAB_INDEX_CALL_LOG:
- prepareOptionsMenuForCallLogTab(menu);
- break;
- case TAB_INDEX_FAVORITES:
- prepareOptionsMenuForFavoritesTab(menu);
- break;
- }
- }
- }
- return true;
- }
-
- private void prepareOptionsMenuInSearchMode(Menu menu) {
- // get references to menu items
- final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
- final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item);
-
- // prepare the menu items
- searchMenuItem.setVisible(false);
- filterOptionMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey());
- addContactOptionMenuItem.setVisible(false);
- callSettingsMenuItem.setVisible(false);
- emptyRightMenuItem.setVisible(false);
- }
-
- private void prepareOptionsMenuForDialerTab(Menu menu) {
- if (DEBUG) {
- Log.d(TAG, "onPrepareOptionsMenu(dialer). swipe: " + mDuringSwipe
- + ", user tab click: " + mUserTabClick);
- }
-
- // get references to menu items
- final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
- final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item);
-
- // prepare the menu items
- filterOptionMenuItem.setVisible(false);
- addContactOptionMenuItem.setVisible(false);
- if (mDuringSwipe || mUserTabClick) {
- // During horizontal movement, the real ActionBar menu items are shown
- searchMenuItem.setVisible(true);
- callSettingsMenuItem.setVisible(true);
- // When there is a permanent menu key, there is no overflow icon on the right of
- // the action bar which would force the search menu item (if it is visible) to the
- // left. This is the purpose of showing the emptyRightMenuItem.
- emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey());
- } else {
- // This is when the user is looking at the dialer pad. In this case, the real
- // ActionBar is hidden and fake menu items are shown.
- // Except in landscape, in which case the real search menu item is shown.
- searchMenuItem.setVisible(ContactsUtils.isLandscape(this));
- // If a permanent menu key is available, then we need to show the call settings item
- // so that the call settings item can be invoked by the permanent menu key.
- callSettingsMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey());
- emptyRightMenuItem.setVisible(false);
- }
- }
-
- private void prepareOptionsMenuForCallLogTab(Menu menu) {
- // get references to menu items
- final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
- final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item);
-
- // prepare the menu items
- searchMenuItem.setVisible(true);
- filterOptionMenuItem.setVisible(false);
- addContactOptionMenuItem.setVisible(false);
- callSettingsMenuItem.setVisible(true);
- emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey());
- }
-
- private void prepareOptionsMenuForFavoritesTab(Menu menu) {
- // get references to menu items
- final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar);
- final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option);
- final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact);
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings);
- final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item);
-
- // prepare the menu items
- searchMenuItem.setVisible(true);
- filterOptionMenuItem.setVisible(true);
- addContactOptionMenuItem.setVisible(true);
- callSettingsMenuItem.setVisible(true);
- emptyRightMenuItem.setVisible(false);
- }
-
- @Override
- public void startSearch(String initialQuery, boolean selectInitialQuery,
- Bundle appSearchData, boolean globalSearch) {
- if (mSearchFragment != null && mSearchFragment.isAdded() && !globalSearch) {
- if (mInSearchUi) {
- if (mSearchView.hasFocus()) {
- showInputMethod(mSearchView.findFocus());
- } else {
- mSearchView.requestFocus();
- }
- } else {
- enterSearchUi();
- }
- } else {
- super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
- }
- }
-
- /**
- * Hides every tab and shows search UI for phone lookup.
- */
- private void enterSearchUi() {
- if (mSearchFragment == null) {
- // We add the search fragment dynamically in the first onLayoutChange() and
- // mSearchFragment is set sometime later when the fragment transaction is actually
- // executed, which means there's a window when users are able to hit the (physical)
- // search key but mSearchFragment is still null.
- // It's quite hard to handle this case right, so let's just ignore the search key
- // in this case. Users can just hit it again and it will work this time.
- return;
- }
- if (mSearchView == null) {
- prepareSearchView();
- }
-
- final ActionBar actionBar = getActionBar();
-
- final Tab tab = actionBar.getSelectedTab();
-
- // User can search during the call, but we don't want to remember the status.
- if (tab != null && !DialpadFragment.phoneIsInUse()) {
- mLastManuallySelectedFragment = tab.getPosition();
- }
-
- mSearchView.setQuery(null, true);
-
- actionBar.setDisplayShowCustomEnabled(true);
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- actionBar.setDisplayShowHomeEnabled(true);
- actionBar.setDisplayHomeAsUpEnabled(true);
-
- updateFakeMenuButtonsVisibility(false);
-
- for (int i = 0; i < TAB_INDEX_COUNT; i++) {
- sendFragmentVisibilityChange(i, false /* not visible */ );
- }
-
- // Show the search fragment and hide everything else.
- mSearchFragment.setUserVisibleHint(true);
- final FragmentTransaction transaction = getFragmentManager().beginTransaction();
- transaction.show(mSearchFragment);
- transaction.commitAllowingStateLoss();
- mViewPager.setVisibility(View.GONE);
-
- // We need to call this and onActionViewCollapsed() manually, since we are using a custom
- // layout instead of asking the search menu item to take care of SearchView.
- mSearchView.onActionViewExpanded();
- mInSearchUi = true;
- }
-
- private void showInputMethod(View view) {
- InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
- if (imm != null) {
- if (!imm.showSoftInput(view, 0)) {
- Log.w(TAG, "Failed to show soft input method.");
- }
- }
- }
-
- private void hideInputMethod(View view) {
- InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
- if (imm != null && view != null) {
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- }
- }
-
- /**
- * Goes back to usual Phone UI with tags. Previously selected Tag and associated Fragment
- * should be automatically focused again.
- */
- private void exitSearchUi() {
- final ActionBar actionBar = getActionBar();
-
- // Hide the search fragment, if exists.
- if (mSearchFragment != null) {
- mSearchFragment.setUserVisibleHint(false);
-
- final FragmentTransaction transaction = getFragmentManager().beginTransaction();
- transaction.hide(mSearchFragment);
- transaction.commitAllowingStateLoss();
- }
-
- // We want to hide SearchView and show Tabs. Also focus on previously selected one.
- actionBar.setDisplayShowCustomEnabled(false);
- actionBar.setDisplayShowHomeEnabled(false);
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
-
- for (int i = 0; i < TAB_INDEX_COUNT; i++) {
- sendFragmentVisibilityChange(i, i == mViewPager.getCurrentItem());
- }
-
- // Before exiting the search screen, reset swipe state.
- mDuringSwipe = false;
- mUserTabClick = false;
-
- mViewPager.setVisibility(View.VISIBLE);
-
- hideInputMethod(getCurrentFocus());
-
- // Request to update option menu.
- invalidateOptionsMenu();
-
- // See comments in onActionViewExpanded()
- mSearchView.onActionViewCollapsed();
- mInSearchUi = false;
- }
-
- private Fragment getFragmentAt(int position) {
- switch (position) {
- case TAB_INDEX_DIALER:
- return mDialpadFragment;
- case TAB_INDEX_CALL_LOG:
- return mCallLogFragment;
- case TAB_INDEX_FAVORITES:
- return mPhoneFavoriteFragment;
- default:
- throw new IllegalStateException("Unknown fragment index: " + position);
- }
- }
-
- private void sendFragmentVisibilityChange(int position, boolean visibility) {
- if (DEBUG) {
- Log.d(TAG, "sendFragmentVisibiltyChange(). position: " + position
- + ", visibility: " + visibility);
- }
- // Position can be -1 initially. See PageChangeListener.
- if (position >= 0) {
- final Fragment fragment = getFragmentAt(position);
- if (fragment != null) {
- fragment.setMenuVisibility(visibility);
- fragment.setUserVisibleHint(visibility);
- }
- }
- }
-
- /**
- * Update visibility of the search button and menu button at the bottom.
- * They should be invisible when bottom ActionBar's real items are available, and be visible
- * otherwise.
- *
- * @param visible True when visible.
- */
- private void updateFakeMenuButtonsVisibility(boolean visible) {
- // Note: Landscape mode does not have the fake menu and search buttons.
- if (DEBUG) {
- Log.d(TAG, "updateFakeMenuButtonVisibility(" + visible + ")");
- }
-
- if (mSearchButton != null) {
- if (visible) {
- mSearchButton.setVisibility(View.VISIBLE);
- } else {
- mSearchButton.setVisibility(View.INVISIBLE);
- }
- }
- if (mMenuButton != null) {
- if (visible && !ViewConfiguration.get(this).hasPermanentMenuKey()) {
- mMenuButton.setVisibility(View.VISIBLE);
- } else {
- mMenuButton.setVisibility(View.INVISIBLE);
- }
- }
- }
-
- /** Returns an Intent to launch Call Settings screen */
- public static Intent getCallSettingsIntent() {
- final Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setClassName(PHONE_PACKAGE, CALL_SETTINGS_CLASS_NAME);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- return intent;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode != Activity.RESULT_OK) {
- return;
- }
- switch (requestCode) {
- case SUBACTIVITY_ACCOUNT_FILTER: {
- AccountFilterUtil.handleAccountFilterResult(
- mContactListFilterController, resultCode, data);
- }
- break;
- }
- }
-}
diff --git a/src/com/android/contacts/activities/GroupBrowserActivity.java b/src/com/android/contacts/activities/GroupBrowserActivity.java
deleted file mode 100644
index 3d3af3f..0000000
--- a/src/com/android/contacts/activities/GroupBrowserActivity.java
+++ /dev/null
@@ -1,55 +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.activities;
-
-import android.content.Intent;
-import android.os.Bundle;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-
-/**
- * Displays a list to browse groups.
- */
-public class GroupBrowserActivity extends ContactsActivity {
-
- private static final String TAG = "GroupBrowserActivity";
-
- public GroupBrowserActivity() {
- }
-
- @Override
- protected void onCreate(Bundle savedState) {
- super.onCreate(savedState);
- configureContentView(true, savedState);
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- setIntent(intent);
- configureContentView(false, null);
- }
-
- private void configureContentView(boolean createContentView, Bundle savedState) {
- // TODO: Create Intent Resolver to handle the different ways users can get to this list.
- // TODO: Use savedState if necessary
- // TODO: Setup action bar
- if (createContentView) {
- setContentView(R.layout.group_browser_activity);
- }
- }
-}
diff --git a/src/com/android/contacts/activities/GroupDetailActivity.java b/src/com/android/contacts/activities/GroupDetailActivity.java
index 492a2ff..c24a42f 100644
--- a/src/com/android/contacts/activities/GroupDetailActivity.java
+++ b/src/com/android/contacts/activities/GroupDetailActivity.java
@@ -33,8 +33,8 @@
import com.android.contacts.R;
import com.android.contacts.group.GroupDetailDisplayUtils;
import com.android.contacts.group.GroupDetailFragment;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
public class GroupDetailActivity extends ContactsActivity {
diff --git a/src/com/android/contacts/activities/JoinContactActivity.java b/src/com/android/contacts/activities/JoinContactActivity.java
index a580165..c345a01 100644
--- a/src/com/android/contacts/activities/JoinContactActivity.java
+++ b/src/com/android/contacts/activities/JoinContactActivity.java
@@ -38,7 +38,7 @@
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
-import com.android.contacts.list.ContactEntryListFragment;
+import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.list.JoinContactListFragment;
import com.android.contacts.list.OnContactPickerActionListener;
diff --git a/src/com/android/contacts/activities/NonPhoneActivity.java b/src/com/android/contacts/activities/NonPhoneActivity.java
deleted file mode 100644
index fc22146..0000000
--- a/src/com/android/contacts/activities/NonPhoneActivity.java
+++ /dev/null
@@ -1,109 +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.activities;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Intents.Insert;
-import android.text.TextUtils;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-import com.android.contacts.util.Constants;
-
-/**
- * Activity that intercepts DIAL and VIEW intents for phone numbers for devices that can not
- * be used as a phone. This allows the user to see the phone number
- */
-public class NonPhoneActivity extends ContactsActivity {
-
- private static final String PHONE_NUMBER_KEY = "PHONE_NUMBER";
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- final String phoneNumber = getPhoneNumber();
- if (TextUtils.isEmpty(phoneNumber)) {
- finish();
- return;
- }
-
- final NonPhoneDialogFragment fragment = new NonPhoneDialogFragment();
- Bundle bundle = new Bundle();
- bundle.putString(PHONE_NUMBER_KEY, phoneNumber);
- fragment.setArguments(bundle);
- getFragmentManager().beginTransaction().add(fragment, "Fragment").commitAllowingStateLoss();
- }
-
- private String getPhoneNumber() {
- if (getIntent() == null) return null;
- final Uri data = getIntent().getData();
- if (data == null) return null;
- final String scheme = data.getScheme();
- if (!Constants.SCHEME_TEL.equals(scheme)) return null;
- return getIntent().getData().getSchemeSpecificPart();
- }
-
- public static final class NonPhoneDialogFragment extends DialogFragment
- implements OnClickListener {
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final AlertDialog alertDialog;
- alertDialog = new AlertDialog.Builder(getActivity(), R.style.NonPhoneDialogTheme)
- .create();
- alertDialog.setTitle(R.string.non_phone_caption);
- alertDialog.setMessage(getArgumentPhoneNumber());
- alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,
- getActivity().getString(R.string.non_phone_add_to_contacts), this);
- alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
- getActivity().getString(R.string.non_phone_close), this);
- return alertDialog;
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(Contacts.CONTENT_ITEM_TYPE);
- intent.putExtra(Insert.PHONE, getArgumentPhoneNumber());
- startActivity(intent);
- }
- dismiss();
- }
-
- private String getArgumentPhoneNumber() {
- return getArguments().getString(PHONE_NUMBER_KEY);
- }
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- // During screen rotation, getActivity returns null. In this case we do not
- // want to close the Activity anyway
- final Activity activity = getActivity();
- if (activity != null) activity.finish();
- }
- }
-}
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 12819dc..639cc3a 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -27,6 +27,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
+import android.os.UserManager;
import android.preference.PreferenceActivity;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
@@ -36,6 +37,7 @@
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
+import android.text.TextUtils;
import android.util.Log;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
@@ -57,43 +59,43 @@
import com.android.contacts.detail.ContactDetailUpdatesFragment;
import com.android.contacts.detail.ContactLoaderFragment;
import com.android.contacts.detail.ContactLoaderFragment.ContactLoaderFragmentListener;
-import com.android.contacts.dialog.ClearFrequentsDialog;
+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.interactions.ImportExportDialogFragment;
-import com.android.contacts.interactions.PhoneNumberInteraction;
+import com.android.contacts.common.interactions.ImportExportDialogFragment;
import com.android.contacts.list.ContactBrowseListFragment;
-import com.android.contacts.list.ContactEntryListFragment;
-import com.android.contacts.list.ContactListFilter;
-import com.android.contacts.list.ContactListFilterController;
-import com.android.contacts.list.ContactTileAdapter.DisplayType;
+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;
import com.android.contacts.list.ContactsUnavailableFragment;
import com.android.contacts.list.DefaultContactBrowseListFragment;
-import com.android.contacts.list.DirectoryListLoader;
+import com.android.contacts.common.list.DirectoryListLoader;
import com.android.contacts.list.OnContactBrowserActionListener;
import com.android.contacts.list.OnContactsUnavailableActionListener;
import com.android.contacts.list.ProviderStatusWatcher;
import com.android.contacts.list.ProviderStatusWatcher.ProviderStatusListener;
import com.android.contacts.model.Contact;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.preference.ContactsPreferenceActivity;
import com.android.contacts.preference.DisplayOptionsPreferenceFragment;
-import com.android.contacts.util.AccountFilterUtil;
+import com.android.contacts.common.util.AccountFilterUtil;
import com.android.contacts.util.AccountPromptUtils;
-import com.android.contacts.util.Constants;
+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.util.UriUtils;
+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;
/**
@@ -110,6 +112,8 @@
/** Shows a toogle button for hiding/showing updates. Don't submit with true */
private static final boolean DEBUG_TRANSITIONS = false;
+ 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}.
@@ -157,6 +161,7 @@
private View mFavoritesView;
private View mBrowserView;
+ private TransitionAnimationView mPeopleActivityView;
private TransitionAnimationView mContactDetailsView;
private TransitionAnimationView mGroupDetailsView;
@@ -257,7 +262,6 @@
finish();
return;
}
-
mContactListFilterController = ContactListFilterController.getInstance(this);
mContactListFilterController.checkFilterValidity(false);
mContactListFilterController.addListener(this);
@@ -266,6 +270,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");
}
@@ -391,6 +396,7 @@
// 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);
@@ -610,7 +616,7 @@
// 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);
+ mGroupDetailsView.startMaskTransition(false, -1);
}
mGroupDetailFragment.loadGroup(groupUri);
invalidateOptionsMenuIfNeeded();
@@ -689,6 +695,7 @@
if (mActionBarAdapter.isSearchMode()) {
tab = TabState.ALL;
}
+
switch (tab) {
case TabState.FAVORITES:
mFavoritesView.setVisibility(View.VISIBLE);
@@ -710,6 +717,7 @@
mGroupDetailsView.setVisibility(View.GONE);
break;
}
+ mPeopleActivityView.startMaskTransition(false, TAB_FADE_IN_DURATION);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
@@ -986,10 +994,16 @@
mAllFragment.setFilter(mContactListFilterController.getFilter());
final boolean useTwoPane = PhoneCapabilityTester.isUsingTwoPanes(this);
- mAllFragment.setVerticalScrollbarPosition(
- useTwoPane
- ? View.SCROLLBAR_POSITION_LEFT
- : View.SCROLLBAR_POSITION_RIGHT);
+ final Locale locale = Locale.getDefault();
+ final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale);
+ final boolean isLayoutRtl = (layoutDirection == View.LAYOUT_DIRECTION_RTL);
+ 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;
+ }
+ mAllFragment.setVerticalScrollbarPosition(position);
mAllFragment.setSelectionVisible(useTwoPane);
mAllFragment.setQuickContactEnabled(!useTwoPane);
}
@@ -1034,7 +1048,13 @@
// If there are no accounts on the device and we should show the "no account" prompt
// (based on {@link SharedPreferences}), then launch the account setup activity so the
// user can sign-in or create an account.
- if (!areContactWritableAccountsAvailable() &&
+ //
+ // Also check for ability to modify accounts. In limited user mode, you can't modify
+ // accounts so there is no point sending users to account setup activity.
+ final UserManager userManager = UserManager.get(this);
+ final boolean disallowModifyAccounts = userManager.getUserRestrictions().getBoolean(
+ UserManager.DISALLOW_MODIFY_ACCOUNTS);
+ if (!disallowModifyAccounts && !areContactWritableAccountsAvailable() &&
AccountPromptUtils.shouldShowAccountPrompt(this)) {
AccountPromptUtils.launchAccountPrompt(this);
return;
@@ -1129,16 +1149,6 @@
}
@Override
- public void onCallContactAction(Uri contactUri) {
- PhoneNumberInteraction.startInteractionForPhoneCall(PeopleActivity.this, contactUri);
- }
-
- @Override
- public void onSmsContactAction(Uri contactUri) {
- PhoneNumberInteraction.startInteractionForTextMessage(PeopleActivity.this, contactUri);
- }
-
- @Override
public void onDeleteContactAction(Uri contactUri) {
ContactDeletionInteraction.start(PeopleActivity.this, contactUri, false);
}
@@ -1255,7 +1265,8 @@
@Override
public void onImportContactsFromFileAction() {
- ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable());
+ ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable(),
+ PeopleActivity.class);
}
@Override
@@ -1509,7 +1520,7 @@
intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
DisplayOptionsPreferenceFragment.class.getName());
intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_TITLE,
- R.string.preference_displayOptions);
+ R.string.activity_title_settings);
}
startActivity(intent);
return true;
@@ -1545,7 +1556,8 @@
return true;
}
case R.id.menu_import_export: {
- ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable());
+ ImportExportDialogFragment.show(getFragmentManager(), areContactsAvailable(),
+ PeopleActivity.class);
return true;
}
case R.id.menu_clear_frequents: {
diff --git a/src/com/android/contacts/activities/PhotoSelectionActivity.java b/src/com/android/contacts/activities/PhotoSelectionActivity.java
index 6f3da00..3b1032f 100644
--- a/src/com/android/contacts/activities/PhotoSelectionActivity.java
+++ b/src/com/android/contacts/activities/PhotoSelectionActivity.java
@@ -33,7 +33,7 @@
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.ContactSaveService;
import com.android.contacts.R;
import com.android.contacts.detail.PhotoSelectionHandler;
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index 1dc0197..a8077cb 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -32,9 +32,9 @@
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
+import com.android.contacts.common.CallUtil;
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
-import com.android.contacts.util.Constants;
import com.android.contacts.util.NotifyingAsyncQueryHandler;
/**
@@ -119,13 +119,13 @@
mCreateForce = intent.getBooleanExtra(Intents.EXTRA_FORCE_CREATE, false);
// Handle specific query request
- if (Constants.SCHEME_MAILTO.equals(scheme)) {
+ if (CallUtil.SCHEME_MAILTO.equals(scheme)) {
mCreateExtras.putString(Intents.Insert.EMAIL, ssp);
Uri uri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, Uri.encode(ssp));
mQueryHandler.startQuery(QUERY_TOKEN, null, uri, CONTACTS_PROJECTION, null, null, null);
- } else if (Constants.SCHEME_TEL.equals(scheme)) {
+ } else if (CallUtil.SCHEME_TEL.equals(scheme)) {
mCreateExtras.putString(Intents.Insert.PHONE, ssp);
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, ssp);
diff --git a/src/com/android/contacts/activities/TransactionSafeActivity.java b/src/com/android/contacts/activities/TransactionSafeActivity.java
deleted file mode 100644
index b177665..0000000
--- a/src/com/android/contacts/activities/TransactionSafeActivity.java
+++ /dev/null
@@ -1,65 +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.activities;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-/**
- * A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
- * not.
- */
-public abstract class TransactionSafeActivity extends Activity {
-
- private boolean mIsSafeToCommitTransactions;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mIsSafeToCommitTransactions = true;
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- mIsSafeToCommitTransactions = true;
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- mIsSafeToCommitTransactions = true;
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- mIsSafeToCommitTransactions = false;
- }
-
- /**
- * Returns true if it is safe to commit {@link FragmentTransaction}s at this time, based on
- * whether {@link Activity#onSaveInstanceState} has been called or not.
- *
- * Make sure that the current activity calls into
- * {@link super.onSaveInstanceState(Bundle outState)} (if that method is overridden),
- * so the flag is properly set.
- */
- public boolean isSafeToCommitTransactions() {
- return mIsSafeToCommitTransactions;
- }
-}
diff --git a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java b/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
deleted file mode 100644
index 9183208..0000000
--- a/src/com/android/contacts/calllog/CallDetailHistoryAdapter.java
+++ /dev/null
@@ -1,175 +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.calllog;
-
-import android.content.Context;
-import android.provider.CallLog.Calls;
-import android.text.format.DateUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import com.android.contacts.PhoneCallDetails;
-import com.android.contacts.R;
-
-/**
- * Adapter for a ListView containing history items from the details of a call.
- */
-public class CallDetailHistoryAdapter extends BaseAdapter {
- /** The top element is a blank header, which is hidden under the rest of the UI. */
- private static final int VIEW_TYPE_HEADER = 0;
- /** Each history item shows the detail of a call. */
- private static final int VIEW_TYPE_HISTORY_ITEM = 1;
-
- private final Context mContext;
- private final LayoutInflater mLayoutInflater;
- private final CallTypeHelper mCallTypeHelper;
- private final PhoneCallDetails[] mPhoneCallDetails;
- /** Whether the voicemail controls are shown. */
- private final boolean mShowVoicemail;
- /** Whether the call and SMS controls are shown. */
- private final boolean mShowCallAndSms;
- /** The controls that are shown on top of the history list. */
- private final View mControls;
- /** The listener to changes of focus of the header. */
- private View.OnFocusChangeListener mHeaderFocusChangeListener =
- new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- // When the header is focused, focus the controls above it instead.
- if (hasFocus) {
- mControls.requestFocus();
- }
- }
- };
-
- public CallDetailHistoryAdapter(Context context, LayoutInflater layoutInflater,
- CallTypeHelper callTypeHelper, PhoneCallDetails[] phoneCallDetails,
- boolean showVoicemail, boolean showCallAndSms, View controls) {
- mContext = context;
- mLayoutInflater = layoutInflater;
- mCallTypeHelper = callTypeHelper;
- mPhoneCallDetails = phoneCallDetails;
- mShowVoicemail = showVoicemail;
- mShowCallAndSms = showCallAndSms;
- mControls = controls;
- }
-
- @Override
- public boolean isEnabled(int position) {
- // None of history will be clickable.
- return false;
- }
-
- @Override
- public int getCount() {
- return mPhoneCallDetails.length + 1;
- }
-
- @Override
- public Object getItem(int position) {
- if (position == 0) {
- return null;
- }
- return mPhoneCallDetails[position - 1];
- }
-
- @Override
- public long getItemId(int position) {
- if (position == 0) {
- return -1;
- }
- return position - 1;
- }
-
- @Override
- public int getViewTypeCount() {
- return 2;
- }
-
- @Override
- public int getItemViewType(int position) {
- if (position == 0) {
- return VIEW_TYPE_HEADER;
- }
- return VIEW_TYPE_HISTORY_ITEM;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (position == 0) {
- final View header = convertView == null
- ? mLayoutInflater.inflate(R.layout.call_detail_history_header, parent, false)
- : convertView;
- // Voicemail controls are only shown in the main UI if there is a voicemail.
- View voicemailContainer = header.findViewById(R.id.header_voicemail_container);
- voicemailContainer.setVisibility(mShowVoicemail ? View.VISIBLE : View.GONE);
- // Call and SMS controls are only shown in the main UI if there is a known number.
- View callAndSmsContainer = header.findViewById(R.id.header_call_and_sms_container);
- callAndSmsContainer.setVisibility(mShowCallAndSms ? View.VISIBLE : View.GONE);
- header.setFocusable(true);
- header.setOnFocusChangeListener(mHeaderFocusChangeListener);
- return header;
- }
-
- // Make sure we have a valid convertView to start with
- final View result = convertView == null
- ? mLayoutInflater.inflate(R.layout.call_detail_history_item, parent, false)
- : convertView;
-
- PhoneCallDetails details = mPhoneCallDetails[position - 1];
- CallTypeIconsView callTypeIconView =
- (CallTypeIconsView) result.findViewById(R.id.call_type_icon);
- TextView callTypeTextView = (TextView) result.findViewById(R.id.call_type_text);
- TextView dateView = (TextView) result.findViewById(R.id.date);
- TextView durationView = (TextView) result.findViewById(R.id.duration);
-
- int callType = details.callTypes[0];
- callTypeIconView.clear();
- callTypeIconView.add(callType);
- callTypeTextView.setText(mCallTypeHelper.getCallTypeText(callType));
- // Set the date.
- CharSequence dateValue = DateUtils.formatDateRange(mContext, details.date, details.date,
- DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE |
- DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_YEAR);
- dateView.setText(dateValue);
- // Set the duration
- if (callType == Calls.MISSED_TYPE || callType == Calls.VOICEMAIL_TYPE) {
- durationView.setVisibility(View.GONE);
- } else {
- durationView.setVisibility(View.VISIBLE);
- durationView.setText(formatDuration(details.duration));
- }
-
- return result;
- }
-
- private String formatDuration(long elapsedSeconds) {
- long minutes = 0;
- long seconds = 0;
-
- if (elapsedSeconds >= 60) {
- minutes = elapsedSeconds / 60;
- elapsedSeconds -= minutes * 60;
- }
- seconds = elapsedSeconds;
-
- return mContext.getString(R.string.callDetailsDurationFormat, minutes, seconds);
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogAdapter.java b/src/com/android/contacts/calllog/CallLogAdapter.java
deleted file mode 100644
index 3688dca..0000000
--- a/src/com/android/contacts/calllog/CallLogAdapter.java
+++ /dev/null
@@ -1,802 +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.calllog;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.PhoneLookup;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-
-import com.android.common.widget.GroupingListAdapter;
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.PhoneCallDetails;
-import com.android.contacts.PhoneCallDetailsHelper;
-import com.android.contacts.R;
-import com.android.contacts.util.ExpirableCache;
-import com.android.contacts.util.UriUtils;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Objects;
-
-import java.util.LinkedList;
-
-/**
- * Adapter class to fill in data for the Call Log.
- */
-/*package*/ class CallLogAdapter extends GroupingListAdapter
- implements ViewTreeObserver.OnPreDrawListener, CallLogGroupBuilder.GroupCreator {
- /** Interface used to initiate a refresh of the content. */
- public interface CallFetcher {
- public void fetchCalls();
- }
-
- /**
- * Stores a phone number of a call with the country code where it originally occurred.
- * <p>
- * Note the country does not necessarily specifies the country of the phone number itself, but
- * it is the country in which the user was in when the call was placed or received.
- */
- private static final class NumberWithCountryIso {
- public final String number;
- public final String countryIso;
-
- public NumberWithCountryIso(String number, String countryIso) {
- this.number = number;
- this.countryIso = countryIso;
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == null) return false;
- if (!(o instanceof NumberWithCountryIso)) return false;
- NumberWithCountryIso other = (NumberWithCountryIso) o;
- return TextUtils.equals(number, other.number)
- && TextUtils.equals(countryIso, other.countryIso);
- }
-
- @Override
- public int hashCode() {
- return (number == null ? 0 : number.hashCode())
- ^ (countryIso == null ? 0 : countryIso.hashCode());
- }
- }
-
- /** The time in millis to delay starting the thread processing requests. */
- private static final int START_PROCESSING_REQUESTS_DELAY_MILLIS = 1000;
-
- /** The size of the cache of contact info. */
- private static final int CONTACT_INFO_CACHE_SIZE = 100;
-
- private final Context mContext;
- private final ContactInfoHelper mContactInfoHelper;
- private final CallFetcher mCallFetcher;
- private ViewTreeObserver mViewTreeObserver = null;
-
- /**
- * A cache of the contact details for the phone numbers in the call log.
- * <p>
- * The content of the cache is expired (but not purged) whenever the application comes to
- * the foreground.
- * <p>
- * The key is number with the country in which the call was placed or received.
- */
- private ExpirableCache<NumberWithCountryIso, ContactInfo> mContactInfoCache;
-
- /**
- * A request for contact details for the given number.
- */
- private static final class ContactInfoRequest {
- /** The number to look-up. */
- public final String number;
- /** The country in which a call to or from this number was placed or received. */
- public final String countryIso;
- /** The cached contact information stored in the call log. */
- public final ContactInfo callLogInfo;
-
- public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
- this.number = number;
- this.countryIso = countryIso;
- this.callLogInfo = callLogInfo;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (!(obj instanceof ContactInfoRequest)) return false;
-
- ContactInfoRequest other = (ContactInfoRequest) obj;
-
- if (!TextUtils.equals(number, other.number)) return false;
- if (!TextUtils.equals(countryIso, other.countryIso)) return false;
- if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
- result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
- result = prime * result + ((number == null) ? 0 : number.hashCode());
- return result;
- }
- }
-
- /**
- * List of requests to update contact details.
- * <p>
- * Each request is made of a phone number to look up, and the contact info currently stored in
- * the call log for this number.
- * <p>
- * The requests are added when displaying the contacts and are processed by a background
- * thread.
- */
- private final LinkedList<ContactInfoRequest> mRequests;
-
- private boolean mLoading = true;
- private static final int REDRAW = 1;
- private static final int START_THREAD = 2;
-
- private QueryThread mCallerIdThread;
-
- /** Instance of helper class for managing views. */
- private final CallLogListItemHelper mCallLogViewsHelper;
-
- /** Helper to set up contact photos. */
- private final ContactPhotoManager mContactPhotoManager;
- /** Helper to parse and process phone numbers. */
- private PhoneNumberHelper mPhoneNumberHelper;
- /** Helper to group call log entries. */
- private final CallLogGroupBuilder mCallLogGroupBuilder;
-
- /** Can be set to true by tests to disable processing of requests. */
- private volatile boolean mRequestProcessingDisabled = false;
-
- /** Listener for the primary action in the list, opens the call details. */
- private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- IntentProvider intentProvider = (IntentProvider) view.getTag();
- if (intentProvider != null) {
- mContext.startActivity(intentProvider.getIntent(mContext));
- }
- }
- };
- /** Listener for the secondary action in the list, either call or play. */
- private final View.OnClickListener mSecondaryActionListener = new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- IntentProvider intentProvider = (IntentProvider) view.getTag();
- if (intentProvider != null) {
- mContext.startActivity(intentProvider.getIntent(mContext));
- }
- }
- };
-
- @Override
- public boolean onPreDraw() {
- // We only wanted to listen for the first draw (and this is it).
- unregisterPreDrawListener();
-
- // Only schedule a thread-creation message if the thread hasn't been
- // created yet. This is purely an optimization, to queue fewer messages.
- if (mCallerIdThread == null) {
- mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MILLIS);
- }
-
- return true;
- }
-
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case REDRAW:
- notifyDataSetChanged();
- break;
- case START_THREAD:
- startRequestProcessing();
- break;
- }
- }
- };
-
- CallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper) {
- super(context);
-
- mContext = context;
- mCallFetcher = callFetcher;
- mContactInfoHelper = contactInfoHelper;
-
- mContactInfoCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
- mRequests = new LinkedList<ContactInfoRequest>();
-
- Resources resources = mContext.getResources();
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
-
- mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
- mPhoneNumberHelper = new PhoneNumberHelper(resources);
- PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
- resources, callTypeHelper, mPhoneNumberHelper);
- mCallLogViewsHelper =
- new CallLogListItemHelper(
- phoneCallDetailsHelper, mPhoneNumberHelper, resources);
- mCallLogGroupBuilder = new CallLogGroupBuilder(this);
- }
-
- /**
- * Requery on background thread when {@link Cursor} changes.
- */
- @Override
- protected void onContentChanged() {
- mCallFetcher.fetchCalls();
- }
-
- void setLoading(boolean loading) {
- mLoading = loading;
- }
-
- @Override
- public boolean isEmpty() {
- if (mLoading) {
- // We don't want the empty state to show when loading.
- return false;
- } else {
- return super.isEmpty();
- }
- }
-
- /**
- * Starts a background thread to process contact-lookup requests, unless one
- * has already been started.
- */
- private synchronized void startRequestProcessing() {
- // For unit-testing.
- if (mRequestProcessingDisabled) return;
-
- // Idempotence... if a thread is already started, don't start another.
- if (mCallerIdThread != null) return;
-
- mCallerIdThread = new QueryThread();
- mCallerIdThread.setPriority(Thread.MIN_PRIORITY);
- mCallerIdThread.start();
- }
-
- /**
- * Stops the background thread that processes updates and cancels any
- * pending requests to start it.
- */
- public synchronized void stopRequestProcessing() {
- // Remove any pending requests to start the processing thread.
- mHandler.removeMessages(START_THREAD);
- if (mCallerIdThread != null) {
- // Stop the thread; we are finished with it.
- mCallerIdThread.stopProcessing();
- mCallerIdThread.interrupt();
- mCallerIdThread = null;
- }
- }
-
- /**
- * Stop receiving onPreDraw() notifications.
- */
- private void unregisterPreDrawListener() {
- if (mViewTreeObserver != null && mViewTreeObserver.isAlive()) {
- mViewTreeObserver.removeOnPreDrawListener(this);
- }
- mViewTreeObserver = null;
- }
-
- public void invalidateCache() {
- mContactInfoCache.expireAll();
-
- // Restart the request-processing thread after the next draw.
- stopRequestProcessing();
- unregisterPreDrawListener();
- }
-
- /**
- * Enqueues a request to look up the contact details for the given phone number.
- * <p>
- * It also provides the current contact info stored in the call log for this number.
- * <p>
- * If the {@code immediate} parameter is true, it will start immediately the thread that looks
- * up the contact information (if it has not been already started). Otherwise, it will be
- * started with a delay. See {@link #START_PROCESSING_REQUESTS_DELAY_MILLIS}.
- */
- @VisibleForTesting
- void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
- synchronized (mRequests) {
- if (!mRequests.contains(request)) {
- mRequests.add(request);
- mRequests.notifyAll();
- }
- }
- if (immediate) startRequestProcessing();
- }
-
- /**
- * Queries the appropriate content provider for the contact associated with the number.
- * <p>
- * Upon completion it also updates the cache in the call log, if it is different from
- * {@code callLogInfo}.
- * <p>
- * The number might be either a SIP address or a phone number.
- * <p>
- * It returns true if it updated the content of the cache and we should therefore tell the
- * view to update its content.
- */
- private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
- final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
-
- if (info == null) {
- // The lookup failed, just return without requesting to update the view.
- return false;
- }
-
- // Check the existing entry in the cache: only if it has changed we should update the
- // view.
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ContactInfo existingInfo = mContactInfoCache.getPossiblyExpired(numberCountryIso);
- boolean updated = (existingInfo != ContactInfo.EMPTY) && !info.equals(existingInfo);
-
- // Store the data in the cache so that the UI thread can use to display it. Store it
- // even if it has not changed so that it is marked as not expired.
- mContactInfoCache.put(numberCountryIso, info);
- // Update the call log even if the cache it is up-to-date: it is possible that the cache
- // contains the value from a different call log entry.
- updateCallLogContactInfoCache(number, countryIso, info, callLogInfo);
- return updated;
- }
-
- /*
- * Handles requests for contact name and number type.
- */
- private class QueryThread extends Thread {
- private volatile boolean mDone = false;
-
- public QueryThread() {
- super("CallLogAdapter.QueryThread");
- }
-
- public void stopProcessing() {
- mDone = true;
- }
-
- @Override
- public void run() {
- boolean needRedraw = false;
- while (true) {
- // Check if thread is finished, and if so return immediately.
- if (mDone) return;
-
- // Obtain next request, if any is available.
- // Keep synchronized section small.
- ContactInfoRequest req = null;
- synchronized (mRequests) {
- if (!mRequests.isEmpty()) {
- req = mRequests.removeFirst();
- }
- }
-
- if (req != null) {
- // Process the request. If the lookup succeeds, schedule a
- // redraw.
- needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
- } else {
- // Throttle redraw rate by only sending them when there are
- // more requests.
- if (needRedraw) {
- needRedraw = false;
- mHandler.sendEmptyMessage(REDRAW);
- }
-
- // Wait until another request is available, or until this
- // thread is no longer needed (as indicated by being
- // interrupted).
- try {
- synchronized (mRequests) {
- mRequests.wait(1000);
- }
- } catch (InterruptedException ie) {
- // Ignore, and attempt to continue processing requests.
- }
- }
- }
- }
- }
-
- @Override
- protected void addGroups(Cursor cursor) {
- mCallLogGroupBuilder.addGroups(cursor);
- }
-
- @Override
- protected View newStandAloneView(Context context, ViewGroup parent) {
- LayoutInflater inflater =
- (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
- findAndCacheViews(view);
- return view;
- }
-
- @Override
- protected void bindStandAloneView(View view, Context context, Cursor cursor) {
- bindView(view, cursor, 1);
- }
-
- @Override
- protected View newChildView(Context context, ViewGroup parent) {
- LayoutInflater inflater =
- (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
- findAndCacheViews(view);
- return view;
- }
-
- @Override
- protected void bindChildView(View view, Context context, Cursor cursor) {
- bindView(view, cursor, 1);
- }
-
- @Override
- protected View newGroupView(Context context, ViewGroup parent) {
- LayoutInflater inflater =
- (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
- findAndCacheViews(view);
- return view;
- }
-
- @Override
- protected void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
- boolean expanded) {
- bindView(view, cursor, groupSize);
- }
-
- private void findAndCacheViews(View view) {
- // Get the views to bind to.
- CallLogListItemViews views = CallLogListItemViews.fromView(view);
- views.primaryActionView.setOnClickListener(mPrimaryActionListener);
- views.secondaryActionView.setOnClickListener(mSecondaryActionListener);
- view.setTag(views);
- }
-
- /**
- * Binds the views in the entry to the data in the call log.
- *
- * @param view the view corresponding to this entry
- * @param c the cursor pointing to the entry in the call log
- * @param count the number of entries in the current item, greater than 1 if it is a group
- */
- private void bindView(View view, Cursor c, int count) {
- final CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- final int section = c.getInt(CallLogQuery.SECTION);
-
- // This might be a header: check the value of the section column in the cursor.
- if (section == CallLogQuery.SECTION_NEW_HEADER
- || section == CallLogQuery.SECTION_OLD_HEADER) {
- views.primaryActionView.setVisibility(View.GONE);
- views.bottomDivider.setVisibility(View.GONE);
- views.listHeaderTextView.setVisibility(View.VISIBLE);
- views.listHeaderTextView.setText(
- section == CallLogQuery.SECTION_NEW_HEADER
- ? R.string.call_log_new_header
- : R.string.call_log_old_header);
- // Nothing else to set up for a header.
- return;
- }
- // Default case: an item in the call log.
- views.primaryActionView.setVisibility(View.VISIBLE);
- views.bottomDivider.setVisibility(isLastOfSection(c) ? View.GONE : View.VISIBLE);
- views.listHeaderTextView.setVisibility(View.GONE);
-
- final String number = c.getString(CallLogQuery.NUMBER);
- final long date = c.getLong(CallLogQuery.DATE);
- final long duration = c.getLong(CallLogQuery.DURATION);
- final int callType = c.getInt(CallLogQuery.CALL_TYPE);
- final String countryIso = c.getString(CallLogQuery.COUNTRY_ISO);
-
- final ContactInfo cachedContactInfo = getContactInfoFromCallLog(c);
-
- views.primaryActionView.setTag(
- IntentProvider.getCallDetailIntentProvider(
- this, c.getPosition(), c.getLong(CallLogQuery.ID), count));
- // Store away the voicemail information so we can play it directly.
- if (callType == Calls.VOICEMAIL_TYPE) {
- String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
- final long rowId = c.getLong(CallLogQuery.ID);
- views.secondaryActionView.setTag(
- IntentProvider.getPlayVoicemailIntentProvider(rowId, voicemailUri));
- } else if (!TextUtils.isEmpty(number)) {
- // Store away the number so we can call it directly if you click on the call icon.
- views.secondaryActionView.setTag(
- IntentProvider.getReturnCallIntentProvider(number));
- } else {
- // No action enabled.
- views.secondaryActionView.setTag(null);
- }
-
- // Lookup contacts with this number
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ExpirableCache.CachedValue<ContactInfo> cachedInfo =
- mContactInfoCache.getCachedValue(numberCountryIso);
- ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
- if (!mPhoneNumberHelper.canPlaceCallsTo(number)
- || mPhoneNumberHelper.isVoicemailNumber(number)) {
- // If this is a number that cannot be dialed, there is no point in looking up a contact
- // for it.
- info = ContactInfo.EMPTY;
- } else if (cachedInfo == null) {
- mContactInfoCache.put(numberCountryIso, ContactInfo.EMPTY);
- // Use the cached contact info from the call log.
- info = cachedContactInfo;
- // The db request should happen on a non-UI thread.
- // Request the contact details immediately since they are currently missing.
- enqueueRequest(number, countryIso, cachedContactInfo, true);
- // We will format the phone number when we make the background request.
- } else {
- if (cachedInfo.isExpired()) {
- // The contact info is no longer up to date, we should request it. However, we
- // do not need to request them immediately.
- enqueueRequest(number, countryIso, cachedContactInfo, false);
- } else if (!callLogInfoMatches(cachedContactInfo, info)) {
- // The call log information does not match the one we have, look it up again.
- // We could simply update the call log directly, but that needs to be done in a
- // background thread, so it is easier to simply request a new lookup, which will, as
- // a side-effect, update the call log.
- enqueueRequest(number, countryIso, cachedContactInfo, false);
- }
-
- if (info == ContactInfo.EMPTY) {
- // Use the cached contact info from the call log.
- info = cachedContactInfo;
- }
- }
-
- final Uri lookupUri = info.lookupUri;
- final String name = info.name;
- final int ntype = info.type;
- final String label = info.label;
- final long photoId = info.photoId;
- CharSequence formattedNumber = info.formattedNumber;
- final int[] callTypes = getCallTypes(c, count);
- final String geocode = c.getString(CallLogQuery.GEOCODED_LOCATION);
- final PhoneCallDetails details;
- if (TextUtils.isEmpty(name)) {
- details = new PhoneCallDetails(number, formattedNumber, countryIso, geocode,
- callTypes, date, duration);
- } else {
- // We do not pass a photo id since we do not need the high-res picture.
- details = new PhoneCallDetails(number, formattedNumber, countryIso, geocode,
- callTypes, date, duration, name, ntype, label, lookupUri, null);
- }
-
- final boolean isNew = c.getInt(CallLogQuery.IS_READ) == 0;
- // New items also use the highlighted version of the text.
- final boolean isHighlighted = isNew;
- mCallLogViewsHelper.setPhoneCallDetails(views, details, isHighlighted);
- setPhoto(views, photoId, lookupUri);
-
- // Listen for the first draw
- if (mViewTreeObserver == null) {
- mViewTreeObserver = view.getViewTreeObserver();
- mViewTreeObserver.addOnPreDrawListener(this);
- }
- }
-
- /** Returns true if this is the last item of a section. */
- private boolean isLastOfSection(Cursor c) {
- if (c.isLast()) return true;
- final int section = c.getInt(CallLogQuery.SECTION);
- if (!c.moveToNext()) return true;
- final int nextSection = c.getInt(CallLogQuery.SECTION);
- c.moveToPrevious();
- return section != nextSection;
- }
-
- /** Checks whether the contact info from the call log matches the one from the contacts db. */
- private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
- // The call log only contains a subset of the fields in the contacts db.
- // Only check those.
- return TextUtils.equals(callLogInfo.name, info.name)
- && callLogInfo.type == info.type
- && TextUtils.equals(callLogInfo.label, info.label);
- }
-
- /** Stores the updated contact info in the call log if it is different from the current one. */
- private void updateCallLogContactInfoCache(String number, String countryIso,
- ContactInfo updatedInfo, ContactInfo callLogInfo) {
- final ContentValues values = new ContentValues();
- boolean needsUpdate = false;
-
- if (callLogInfo != null) {
- if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
- values.put(Calls.CACHED_NAME, updatedInfo.name);
- needsUpdate = true;
- }
-
- if (updatedInfo.type != callLogInfo.type) {
- values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
- needsUpdate = true;
- }
-
- if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
- values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
- needsUpdate = true;
- }
- if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
- values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
- needsUpdate = true;
- }
- if (!TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
- values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
- needsUpdate = true;
- }
- if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
- values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
- needsUpdate = true;
- }
- if (updatedInfo.photoId != callLogInfo.photoId) {
- values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
- needsUpdate = true;
- }
- if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
- values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
- needsUpdate = true;
- }
- } else {
- // No previous values, store all of them.
- values.put(Calls.CACHED_NAME, updatedInfo.name);
- values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
- values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
- values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
- values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
- values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
- values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
- values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
- needsUpdate = true;
- }
-
- if (!needsUpdate) return;
-
- if (countryIso == null) {
- mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
- Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
- new String[]{ number });
- } else {
- mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
- Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
- new String[]{ number, countryIso });
- }
- }
-
- /** Returns the contact information as stored in the call log. */
- private ContactInfo getContactInfoFromCallLog(Cursor c) {
- ContactInfo info = new ContactInfo();
- info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
- info.name = c.getString(CallLogQuery.CACHED_NAME);
- info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
- info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
- String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
- info.number = matchedNumber == null ? c.getString(CallLogQuery.NUMBER) : matchedNumber;
- info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
- info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
- info.photoUri = null; // We do not cache the photo URI.
- info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
- return info;
- }
-
- /**
- * Returns the call types for the given number of items in the cursor.
- * <p>
- * It uses the next {@code count} rows in the cursor to extract the types.
- * <p>
- * It position in the cursor is unchanged by this function.
- */
- private int[] getCallTypes(Cursor cursor, int count) {
- int position = cursor.getPosition();
- int[] callTypes = new int[count];
- for (int index = 0; index < count; ++index) {
- callTypes[index] = cursor.getInt(CallLogQuery.CALL_TYPE);
- cursor.moveToNext();
- }
- cursor.moveToPosition(position);
- return callTypes;
- }
-
- private void setPhoto(CallLogListItemViews views, long photoId, Uri contactUri) {
- views.quickContactView.assignContactUri(contactUri);
- mContactPhotoManager.loadThumbnail(views.quickContactView, photoId, true);
- }
-
- /**
- * Sets whether processing of requests for contact details should be enabled.
- * <p>
- * This method should be called in tests to disable such processing of requests when not
- * needed.
- */
- @VisibleForTesting
- void disableRequestProcessingForTest() {
- mRequestProcessingDisabled = true;
- }
-
- @VisibleForTesting
- void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- mContactInfoCache.put(numberCountryIso, contactInfo);
- }
-
- @Override
- public void addGroup(int cursorPosition, int size, boolean expanded) {
- super.addGroup(cursorPosition, size, expanded);
- }
-
- /*
- * Get the number from the Contacts, if available, since sometimes
- * the number provided by caller id may not be formatted properly
- * depending on the carrier (roaming) in use at the time of the
- * incoming call.
- * Logic : If the caller-id number starts with a "+", use it
- * Else if the number in the contacts starts with a "+", use that one
- * Else if the number in the contacts is longer, use that one
- */
- public String getBetterNumberFromContacts(String number, String countryIso) {
- String matchingNumber = null;
- // Look in the cache first. If it's not found then query the Phones db
- NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
- ContactInfo ci = mContactInfoCache.getPossiblyExpired(numberCountryIso);
- if (ci != null && ci != ContactInfo.EMPTY) {
- matchingNumber = ci.number;
- } else {
- try {
- Cursor phonesCursor = mContext.getContentResolver().query(
- Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, number),
- PhoneQuery._PROJECTION, null, null, null);
- if (phonesCursor != null) {
- if (phonesCursor.moveToFirst()) {
- matchingNumber = phonesCursor.getString(PhoneQuery.MATCHED_NUMBER);
- }
- phonesCursor.close();
- }
- } catch (Exception e) {
- // Use the number from the call log
- }
- }
- if (!TextUtils.isEmpty(matchingNumber) &&
- (matchingNumber.startsWith("+")
- || matchingNumber.length() > number.length())) {
- number = matchingNumber;
- }
- return number;
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
deleted file mode 100644
index 9d8066c..0000000
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ /dev/null
@@ -1,615 +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.calllog;
-
-import android.app.Activity;
-import android.app.KeyguardManager;
-import android.app.ListFragment;
-import android.content.Context;
-import android.content.Intent;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.android.common.io.MoreCloseables;
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.R;
-import com.android.contacts.util.Constants;
-import com.android.contacts.util.EmptyLoader;
-import com.android.contacts.voicemail.VoicemailStatusHelper;
-import com.android.contacts.voicemail.VoicemailStatusHelper.StatusMessage;
-import com.android.contacts.voicemail.VoicemailStatusHelperImpl;
-import com.android.internal.telephony.CallerInfo;
-import com.android.internal.telephony.ITelephony;
-import com.google.common.annotations.VisibleForTesting;
-
-import java.util.List;
-
-/**
- * Displays a list of call log entries.
- */
-public class CallLogFragment extends ListFragment
- implements CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher {
- private static final String TAG = "CallLogFragment";
-
- /**
- * ID of the empty loader to defer other fragments.
- */
- private static final int EMPTY_LOADER_ID = 0;
-
- private CallLogAdapter mAdapter;
- private CallLogQueryHandler mCallLogQueryHandler;
- private boolean mScrollToTop;
-
- /** Whether there is at least one voicemail source installed. */
- private boolean mVoicemailSourcesAvailable = false;
-
- private VoicemailStatusHelper mVoicemailStatusHelper;
- private View mStatusMessageView;
- private TextView mStatusMessageText;
- private TextView mStatusMessageAction;
- private TextView mFilterStatusView;
- private KeyguardManager mKeyguardManager;
-
- private boolean mEmptyLoaderRunning;
- private boolean mCallLogFetched;
- private boolean mVoicemailStatusFetched;
-
- private final Handler mHandler = new Handler();
-
- private TelephonyManager mTelephonyManager;
- private PhoneStateListener mPhoneStateListener;
-
- private class CustomContentObserver extends ContentObserver {
- public CustomContentObserver() {
- super(mHandler);
- }
- @Override
- public void onChange(boolean selfChange) {
- mRefreshDataRequired = true;
- }
- }
-
- // See issue 6363009
- private final ContentObserver mCallLogObserver = new CustomContentObserver();
- private final ContentObserver mContactsObserver = new CustomContentObserver();
- private boolean mRefreshDataRequired = true;
-
- // Exactly same variable is in Fragment as a package private.
- private boolean mMenuVisible = true;
-
- // Default to all calls.
- private int mCallTypeFilter = CallLogQueryHandler.CALL_TYPE_ALL;
-
- @Override
- public void onCreate(Bundle state) {
- super.onCreate(state);
-
- mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(), this);
- mKeyguardManager =
- (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
- getActivity().getContentResolver().registerContentObserver(
- CallLog.CONTENT_URI, true, mCallLogObserver);
- getActivity().getContentResolver().registerContentObserver(
- ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
- setHasOptionsMenu(true);
- }
-
- /** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
- @Override
- public void onCallsFetched(Cursor cursor) {
- if (getActivity() == null || getActivity().isFinishing()) {
- return;
- }
- mAdapter.setLoading(false);
- mAdapter.changeCursor(cursor);
- // This will update the state of the "Clear call log" menu item.
- getActivity().invalidateOptionsMenu();
- if (mScrollToTop) {
- final ListView listView = getListView();
- // The smooth-scroll animation happens over a fixed time period.
- // As a result, if it scrolls through a large portion of the list,
- // each frame will jump so far from the previous one that the user
- // will not experience the illusion of downward motion. Instead,
- // if we're not already near the top of the list, we instantly jump
- // near the top, and animate from there.
- if (listView.getFirstVisiblePosition() > 5) {
- listView.setSelection(5);
- }
- // Workaround for framework issue: the smooth-scroll doesn't
- // occur if setSelection() is called immediately before.
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- if (getActivity() == null || getActivity().isFinishing()) {
- return;
- }
- listView.smoothScrollToPosition(0);
- }
- });
-
- mScrollToTop = false;
- }
- mCallLogFetched = true;
- destroyEmptyLoaderIfAllDataFetched();
- }
-
- /**
- * Called by {@link CallLogQueryHandler} after a successful query to voicemail status provider.
- */
- @Override
- public void onVoicemailStatusFetched(Cursor statusCursor) {
- if (getActivity() == null || getActivity().isFinishing()) {
- return;
- }
- updateVoicemailStatusMessage(statusCursor);
-
- int activeSources = mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor);
- setVoicemailSourcesAvailable(activeSources != 0);
- MoreCloseables.closeQuietly(statusCursor);
- mVoicemailStatusFetched = true;
- destroyEmptyLoaderIfAllDataFetched();
- }
-
- private void destroyEmptyLoaderIfAllDataFetched() {
- if (mCallLogFetched && mVoicemailStatusFetched && mEmptyLoaderRunning) {
- mEmptyLoaderRunning = false;
- getLoaderManager().destroyLoader(EMPTY_LOADER_ID);
- }
- }
-
- /** Sets whether there are any voicemail sources available in the platform. */
- private void setVoicemailSourcesAvailable(boolean voicemailSourcesAvailable) {
- if (mVoicemailSourcesAvailable == voicemailSourcesAvailable) return;
- mVoicemailSourcesAvailable = voicemailSourcesAvailable;
-
- Activity activity = getActivity();
- if (activity != null) {
- // This is so that the options menu content is updated.
- activity.invalidateOptionsMenu();
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- View view = inflater.inflate(R.layout.call_log_fragment, container, false);
- mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
- mStatusMessageView = view.findViewById(R.id.voicemail_status);
- mStatusMessageText = (TextView) view.findViewById(R.id.voicemail_status_message);
- mStatusMessageAction = (TextView) view.findViewById(R.id.voicemail_status_action);
- mFilterStatusView = (TextView) view.findViewById(R.id.filter_status);
- return view;
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- String currentCountryIso = ContactsUtils.getCurrentCountryIso(getActivity());
- mAdapter = new CallLogAdapter(getActivity(), this,
- new ContactInfoHelper(getActivity(), currentCountryIso));
- setListAdapter(mAdapter);
- getListView().setItemsCanFocus(true);
- }
-
- /**
- * Based on the new intent, decide whether the list should be configured
- * to scroll up to display the first item.
- */
- public void configureScreenFromIntent(Intent newIntent) {
- // Typically, when switching to the call-log we want to show the user
- // the same section of the list that they were most recently looking
- // at. However, under some circumstances, we want to automatically
- // scroll to the top of the list to present the newest call items.
- // For example, immediately after a call is finished, we want to
- // display information about that call.
- mScrollToTop = Calls.CONTENT_TYPE.equals(newIntent.getType());
- }
-
- @Override
- public void onStart() {
- // Start the empty loader now to defer other fragments. We destroy it when both calllog
- // and the voicemail status are fetched.
- getLoaderManager().initLoader(EMPTY_LOADER_ID, null,
- new EmptyLoader.Callback(getActivity()));
- mEmptyLoaderRunning = true;
- super.onStart();
- }
-
- @Override
- public void onResume() {
- super.onResume();
- refreshData();
- }
-
- private void updateVoicemailStatusMessage(Cursor statusCursor) {
- List<StatusMessage> messages = mVoicemailStatusHelper.getStatusMessages(statusCursor);
- if (messages.size() == 0) {
- mStatusMessageView.setVisibility(View.GONE);
- } else {
- mStatusMessageView.setVisibility(View.VISIBLE);
- // TODO: Change the code to show all messages. For now just pick the first message.
- final StatusMessage message = messages.get(0);
- if (message.showInCallLog()) {
- mStatusMessageText.setText(message.callLogMessageId);
- }
- if (message.actionMessageId != -1) {
- mStatusMessageAction.setText(message.actionMessageId);
- }
- if (message.actionUri != null) {
- mStatusMessageAction.setVisibility(View.VISIBLE);
- mStatusMessageAction.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- getActivity().startActivity(
- new Intent(Intent.ACTION_VIEW, message.actionUri));
- }
- });
- } else {
- mStatusMessageAction.setVisibility(View.GONE);
- }
- }
- }
-
- @Override
- public void onPause() {
- super.onPause();
- // Kill the requests thread
- mAdapter.stopRequestProcessing();
- }
-
- @Override
- public void onStop() {
- super.onStop();
- updateOnExit();
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- mAdapter.stopRequestProcessing();
- mAdapter.changeCursor(null);
- getActivity().getContentResolver().unregisterContentObserver(mCallLogObserver);
- getActivity().getContentResolver().unregisterContentObserver(mContactsObserver);
- unregisterPhoneCallReceiver();
- }
-
- @Override
- public void fetchCalls() {
- mCallLogQueryHandler.fetchCalls(mCallTypeFilter);
- }
-
- public void startCallsQuery() {
- mAdapter.setLoading(true);
- mCallLogQueryHandler.fetchCalls(mCallTypeFilter);
- }
-
- private void startVoicemailStatusQuery() {
- mCallLogQueryHandler.fetchVoicemailStatus();
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.call_log_options, menu);
- }
-
- @Override
- public void onPrepareOptionsMenu(Menu menu) {
- final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
- // Check if all the menu items are inflated correctly. As a shortcut, we assume all
- // menu items are ready if the first item is non-null.
- if (itemDeleteAll != null) {
- itemDeleteAll.setEnabled(mAdapter != null && !mAdapter.isEmpty());
-
- showAllFilterMenuOptions(menu);
- hideCurrentFilterMenuOption(menu);
-
- // Only hide if not available. Let the above calls handle showing.
- if (!mVoicemailSourcesAvailable) {
- menu.findItem(R.id.show_voicemails_only).setVisible(false);
- }
- }
- }
-
- private void hideCurrentFilterMenuOption(Menu menu) {
- MenuItem item = null;
- switch (mCallTypeFilter) {
- case CallLogQueryHandler.CALL_TYPE_ALL:
- item = menu.findItem(R.id.show_all_calls);
- break;
- case Calls.INCOMING_TYPE:
- item = menu.findItem(R.id.show_incoming_only);
- break;
- case Calls.OUTGOING_TYPE:
- item = menu.findItem(R.id.show_outgoing_only);
- break;
- case Calls.MISSED_TYPE:
- item = menu.findItem(R.id.show_missed_only);
- break;
- case Calls.VOICEMAIL_TYPE:
- menu.findItem(R.id.show_voicemails_only);
- break;
- }
- if (item != null) {
- item.setVisible(false);
- }
- }
-
- private void showAllFilterMenuOptions(Menu menu) {
- menu.findItem(R.id.show_all_calls).setVisible(true);
- menu.findItem(R.id.show_incoming_only).setVisible(true);
- menu.findItem(R.id.show_outgoing_only).setVisible(true);
- menu.findItem(R.id.show_missed_only).setVisible(true);
- menu.findItem(R.id.show_voicemails_only).setVisible(true);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.delete_all:
- ClearCallLogDialog.show(getFragmentManager());
- return true;
-
- case R.id.show_outgoing_only:
- // We only need the phone call receiver when there is an active call type filter.
- // Not many people may use the filters so don't register the receiver until now .
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.OUTGOING_TYPE);
- updateFilterTypeAndHeader(Calls.OUTGOING_TYPE);
- return true;
-
- case R.id.show_incoming_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.INCOMING_TYPE);
- updateFilterTypeAndHeader(Calls.INCOMING_TYPE);
- return true;
-
- case R.id.show_missed_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.MISSED_TYPE);
- updateFilterTypeAndHeader(Calls.MISSED_TYPE);
- return true;
-
- case R.id.show_voicemails_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.VOICEMAIL_TYPE);
- updateFilterTypeAndHeader(Calls.VOICEMAIL_TYPE);
- return true;
-
- case R.id.show_all_calls:
- // Filter is being turned off, receiver no longer needed.
- unregisterPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL);
- updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL);
- return true;
-
- default:
- return false;
- }
- }
-
- private void updateFilterTypeAndHeader(int filterType) {
- mCallTypeFilter = filterType;
-
- switch (filterType) {
- case CallLogQueryHandler.CALL_TYPE_ALL:
- mFilterStatusView.setVisibility(View.GONE);
- break;
- case Calls.INCOMING_TYPE:
- showFilterStatus(R.string.call_log_incoming_header);
- break;
- case Calls.OUTGOING_TYPE:
- showFilterStatus(R.string.call_log_outgoing_header);
- break;
- case Calls.MISSED_TYPE:
- showFilterStatus(R.string.call_log_missed_header);
- break;
- case Calls.VOICEMAIL_TYPE:
- showFilterStatus(R.string.call_log_voicemail_header);
- break;
- }
- }
-
- private void showFilterStatus(int resId) {
- mFilterStatusView.setText(resId);
- mFilterStatusView.setVisibility(View.VISIBLE);
- }
-
- public void callSelectedEntry() {
- int position = getListView().getSelectedItemPosition();
- if (position < 0) {
- // In touch mode you may often not have something selected, so
- // just call the first entry to make sure that [send] [send] calls the
- // most recent entry.
- position = 0;
- }
- final Cursor cursor = (Cursor)mAdapter.getItem(position);
- if (cursor != null) {
- String number = cursor.getString(CallLogQuery.NUMBER);
- if (TextUtils.isEmpty(number)
- || number.equals(CallerInfo.UNKNOWN_NUMBER)
- || number.equals(CallerInfo.PRIVATE_NUMBER)
- || number.equals(CallerInfo.PAYPHONE_NUMBER)) {
- // This number can't be called, do nothing
- return;
- }
- Intent intent;
- // If "number" is really a SIP address, construct a sip: URI.
- if (PhoneNumberUtils.isUriNumber(number)) {
- intent = ContactsUtils.getCallIntent(
- Uri.fromParts(Constants.SCHEME_SIP, number, null));
- } else {
- // We're calling a regular PSTN phone number.
- // Construct a tel: URI, but do some other possible cleanup first.
- int callType = cursor.getInt(CallLogQuery.CALL_TYPE);
- if (!number.startsWith("+") &&
- (callType == Calls.INCOMING_TYPE
- || callType == Calls.MISSED_TYPE)) {
- // If the caller-id matches a contact with a better qualified number, use it
- String countryIso = cursor.getString(CallLogQuery.COUNTRY_ISO);
- number = mAdapter.getBetterNumberFromContacts(number, countryIso);
- }
- intent = ContactsUtils.getCallIntent(
- Uri.fromParts(Constants.SCHEME_TEL, number, null));
- }
- intent.setFlags(
- Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- startActivity(intent);
- }
- }
-
- @VisibleForTesting
- CallLogAdapter getAdapter() {
- return mAdapter;
- }
-
- @Override
- public void setMenuVisibility(boolean menuVisible) {
- super.setMenuVisibility(menuVisible);
- if (mMenuVisible != menuVisible) {
- mMenuVisible = menuVisible;
- if (!menuVisible) {
- updateOnExit();
- } else if (isResumed()) {
- refreshData();
- }
- }
- }
-
- /** Requests updates to the data to be shown. */
- private void refreshData() {
- // Prevent unnecessary refresh.
- if (mRefreshDataRequired) {
- // Mark all entries in the contact info cache as out of date, so they will be looked up
- // again once being shown.
- mAdapter.invalidateCache();
- startCallsQuery();
- startVoicemailStatusQuery();
- updateOnEntry();
- mRefreshDataRequired = false;
- }
- }
-
- /** Removes the missed call notifications. */
- private void removeMissedCallNotifications() {
- try {
- ITelephony telephony =
- ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
- if (telephony != null) {
- telephony.cancelMissedCallsNotification();
- } else {
- Log.w(TAG, "Telephony service is null, can't call " +
- "cancelMissedCallsNotification");
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to clear missed calls notification due to remote exception");
- }
- }
-
- /** Updates call data and notification state while leaving the call log tab. */
- private void updateOnExit() {
- updateOnTransition(false);
- }
-
- /** Updates call data and notification state while entering the call log tab. */
- private void updateOnEntry() {
- updateOnTransition(true);
- }
-
- private void updateOnTransition(boolean onEntry) {
- // We don't want to update any call data when keyguard is on because the user has likely not
- // seen the new calls yet.
- // This might be called before onCreate() and thus we need to check null explicitly.
- if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode()) {
- // On either of the transitions we reset the new flag and update the notifications.
- // While exiting we additionally consume all missed calls (by marking them as read).
- // This will ensure that they no more appear in the "new" section when we return back.
- mCallLogQueryHandler.markNewCallsAsOld();
- if (!onEntry) {
- mCallLogQueryHandler.markMissedCallsAsRead();
- }
- removeMissedCallNotifications();
- updateVoicemailNotifications();
- }
- }
-
- private void updateVoicemailNotifications() {
- Intent serviceIntent = new Intent(getActivity(), CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
- getActivity().startService(serviceIntent);
- }
-
- /**
- * Register a phone call filter to reset the call type when a phone call is place.
- */
- private void registerPhoneCallReceiver() {
- if (mPhoneStateListener != null) {
- return; // Already registered.
- }
- mTelephonyManager = (TelephonyManager) getActivity().getSystemService(
- Context.TELEPHONY_SERVICE);
- mPhoneStateListener = new PhoneStateListener() {
- @Override
- public void onCallStateChanged(int state, String incomingNumber) {
- if (state != TelephonyManager.CALL_STATE_OFFHOOK &&
- state != TelephonyManager.CALL_STATE_RINGING) {
- return;
- }
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- if (getActivity() == null || getActivity().isFinishing()) {
- return;
- }
- updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL);
- }
- });
- }
- };
- mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
- }
-
- /**
- * Un-registers the phone call receiver.
- */
- private void unregisterPhoneCallReceiver() {
- if (mPhoneStateListener != null) {
- mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
- mPhoneStateListener = null;
- }
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogGroupBuilder.java b/src/com/android/contacts/calllog/CallLogGroupBuilder.java
deleted file mode 100644
index 5c7d3ee..0000000
--- a/src/com/android/contacts/calllog/CallLogGroupBuilder.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.calllog;
-
-import android.database.Cursor;
-import android.provider.CallLog.Calls;
-import android.telephony.PhoneNumberUtils;
-
-import com.android.common.widget.GroupingListAdapter;
-import com.google.common.annotations.VisibleForTesting;
-
-/**
- * Groups together calls in the call log.
- * <p>
- * This class is meant to be used in conjunction with {@link GroupingListAdapter}.
- */
-public class CallLogGroupBuilder {
- public interface GroupCreator {
- public void addGroup(int cursorPosition, int size, boolean expanded);
- }
-
- /** The object on which the groups are created. */
- private final GroupCreator mGroupCreator;
-
- public CallLogGroupBuilder(GroupCreator groupCreator) {
- mGroupCreator = groupCreator;
- }
-
- /**
- * Finds all groups of adjacent entries in the call log which should be grouped together and
- * calls {@link GroupCreator#addGroup(int, int, boolean)} on {@link #mGroupCreator} for each of
- * them.
- * <p>
- * For entries that are not grouped with others, we do not need to create a group of size one.
- * <p>
- * It assumes that the cursor will not change during its execution.
- *
- * @see GroupingListAdapter#addGroups(Cursor)
- */
- public void addGroups(Cursor cursor) {
- final int count = cursor.getCount();
- if (count == 0) {
- return;
- }
-
- int currentGroupSize = 1;
- cursor.moveToFirst();
- // The number of the first entry in the group.
- String firstNumber = cursor.getString(CallLogQuery.NUMBER);
- // This is the type of the first call in the group.
- int firstCallType = cursor.getInt(CallLogQuery.CALL_TYPE);
- while (cursor.moveToNext()) {
- // The number of the current row in the cursor.
- final String currentNumber = cursor.getString(CallLogQuery.NUMBER);
- final int callType = cursor.getInt(CallLogQuery.CALL_TYPE);
- final boolean sameNumber = equalNumbers(firstNumber, currentNumber);
- final boolean shouldGroup;
-
- if (CallLogQuery.isSectionHeader(cursor)) {
- // Cannot group headers.
- shouldGroup = false;
- } else if (!sameNumber) {
- // Should only group with calls from the same number.
- shouldGroup = false;
- } else if (firstCallType == Calls.VOICEMAIL_TYPE) {
- // never group voicemail.
- shouldGroup = false;
- } else {
- // Incoming, outgoing, and missed calls group together.
- shouldGroup = (callType == Calls.INCOMING_TYPE || callType == Calls.OUTGOING_TYPE ||
- callType == Calls.MISSED_TYPE);
- }
-
- if (shouldGroup) {
- // Increment the size of the group to include the current call, but do not create
- // the group until we find a call that does not match.
- currentGroupSize++;
- } else {
- // Create a group for the previous set of calls, excluding the current one, but do
- // not create a group for a single call.
- if (currentGroupSize > 1) {
- addGroup(cursor.getPosition() - currentGroupSize, currentGroupSize);
- }
- // Start a new group; it will include at least the current call.
- currentGroupSize = 1;
- // The current entry is now the first in the group.
- firstNumber = currentNumber;
- firstCallType = callType;
- }
- }
- // If the last set of calls at the end of the call log was itself a group, create it now.
- if (currentGroupSize > 1) {
- addGroup(count - currentGroupSize, currentGroupSize);
- }
- }
-
- /**
- * Creates a group of items in the cursor.
- * <p>
- * The group is always unexpanded.
- *
- * @see CallLogAdapter#addGroup(int, int, boolean)
- */
- private void addGroup(int cursorPosition, int size) {
- mGroupCreator.addGroup(cursorPosition, size, false);
- }
-
- @VisibleForTesting
- boolean equalNumbers(String number1, String number2) {
- if (PhoneNumberUtils.isUriNumber(number1) || PhoneNumberUtils.isUriNumber(number2)) {
- return compareSipAddresses(number1, number2);
- } else {
- return PhoneNumberUtils.compare(number1, number2);
- }
- }
-
- @VisibleForTesting
- boolean compareSipAddresses(String number1, String number2) {
- if (number1 == null || number2 == null) return number1 == number2;
-
- int index1 = number1.indexOf('@');
- final String userinfo1;
- final String rest1;
- if (index1 != -1) {
- userinfo1 = number1.substring(0, index1);
- rest1 = number1.substring(index1);
- } else {
- userinfo1 = number1;
- rest1 = "";
- }
-
- int index2 = number2.indexOf('@');
- final String userinfo2;
- final String rest2;
- if (index2 != -1) {
- userinfo2 = number2.substring(0, index2);
- rest2 = number2.substring(index2);
- } else {
- userinfo2 = number2;
- rest2 = "";
- }
-
- return userinfo1.equals(userinfo2) && rest1.equalsIgnoreCase(rest2);
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogListItemHelper.java b/src/com/android/contacts/calllog/CallLogListItemHelper.java
deleted file mode 100644
index eb30c81..0000000
--- a/src/com/android/contacts/calllog/CallLogListItemHelper.java
+++ /dev/null
@@ -1,109 +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.calllog;
-
-import android.content.res.Resources;
-import android.provider.CallLog.Calls;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.android.contacts.PhoneCallDetails;
-import com.android.contacts.PhoneCallDetailsHelper;
-import com.android.contacts.R;
-
-/**
- * Helper class to fill in the views of a call log entry.
- */
-/*package*/ class CallLogListItemHelper {
- /** Helper for populating the details of a phone call. */
- private final PhoneCallDetailsHelper mPhoneCallDetailsHelper;
- /** Helper for handling phone numbers. */
- private final PhoneNumberHelper mPhoneNumberHelper;
- /** Resources to look up strings. */
- private final Resources mResources;
-
- /**
- * Creates a new helper instance.
- *
- * @param phoneCallDetailsHelper used to set the details of a phone call
- * @param phoneNumberHelper used to process phone number
- */
- public CallLogListItemHelper(PhoneCallDetailsHelper phoneCallDetailsHelper,
- PhoneNumberHelper phoneNumberHelper, Resources resources) {
- mPhoneCallDetailsHelper = phoneCallDetailsHelper;
- mPhoneNumberHelper = phoneNumberHelper;
- mResources = resources;
- }
-
- /**
- * Sets the name, label, and number for a contact.
- *
- * @param views the views to populate
- * @param details the details of a phone call needed to fill in the data
- * @param isHighlighted whether to use the highlight text for the call
- */
- public void setPhoneCallDetails(CallLogListItemViews views, PhoneCallDetails details,
- boolean isHighlighted) {
- mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details,
- isHighlighted);
- boolean canCall = mPhoneNumberHelper.canPlaceCallsTo(details.number);
- boolean canPlay = details.callTypes[0] == Calls.VOICEMAIL_TYPE;
-
- if (canPlay) {
- // Playback action takes preference.
- configurePlaySecondaryAction(views, isHighlighted);
- views.dividerView.setVisibility(View.VISIBLE);
- } else if (canCall) {
- // Call is the secondary action.
- configureCallSecondaryAction(views, details);
- views.dividerView.setVisibility(View.VISIBLE);
- } else {
- // No action available.
- views.secondaryActionView.setVisibility(View.GONE);
- views.dividerView.setVisibility(View.GONE);
- }
- }
-
- /** Sets the secondary action to correspond to the call button. */
- private void configureCallSecondaryAction(CallLogListItemViews views,
- PhoneCallDetails details) {
- views.secondaryActionView.setVisibility(View.VISIBLE);
- views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_dark);
- views.secondaryActionView.setContentDescription(getCallActionDescription(details));
- }
-
- /** Returns the description used by the call action for this phone call. */
- private CharSequence getCallActionDescription(PhoneCallDetails details) {
- final CharSequence recipient;
- if (!TextUtils.isEmpty(details.name)) {
- recipient = details.name;
- } else {
- recipient = mPhoneNumberHelper.getDisplayNumber(
- details.number, details.formattedNumber);
- }
- return mResources.getString(R.string.description_call, recipient);
- }
-
- /** Sets the secondary action to correspond to the play button. */
- private void configurePlaySecondaryAction(CallLogListItemViews views, boolean isHighlighted) {
- views.secondaryActionView.setVisibility(View.VISIBLE);
- views.secondaryActionView.setImageResource(
- isHighlighted ? R.drawable.ic_play_active_holo_dark : R.drawable.ic_play_holo_dark);
- views.secondaryActionView.setContentDescription(
- mResources.getString(R.string.description_call_log_play_button));
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogListItemView.java b/src/com/android/contacts/calllog/CallLogListItemView.java
deleted file mode 100644
index 584a7f2..0000000
--- a/src/com/android/contacts/calllog/CallLogListItemView.java
+++ /dev/null
@@ -1,46 +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.calllog;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.LinearLayout;
-
-/**
- * An entry in the call log.
- */
-public class CallLogListItemView extends LinearLayout {
- public CallLogListItemView(Context context) {
- super(context);
- }
-
- public CallLogListItemView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public CallLogListItemView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- public void requestLayout() {
- // We will assume that once measured this will not need to resize
- // itself, so there is no need to pass the layout request to the parent
- // view (ListView).
- forceLayout();
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
deleted file mode 100644
index 348cd2f..0000000
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ /dev/null
@@ -1,83 +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.calllog;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.QuickContactBadge;
-import android.widget.TextView;
-
-import com.android.contacts.PhoneCallDetailsViews;
-import com.android.contacts.R;
-import com.android.contacts.test.NeededForTesting;
-
-/**
- * Simple value object containing the various views within a call log entry.
- */
-public final class CallLogListItemViews {
- /** The quick contact badge for the contact. */
- public final QuickContactBadge quickContactView;
- /** The primary action view of the entry. */
- public final View primaryActionView;
- /** The secondary action button on the entry. */
- public final ImageView secondaryActionView;
- /** The divider between the primary and secondary actions. */
- public final View dividerView;
- /** The details of the phone call. */
- public final PhoneCallDetailsViews phoneCallDetailsViews;
- /** The text of the header of a section. */
- public final TextView listHeaderTextView;
- /** The divider to be shown below items. */
- public final View bottomDivider;
-
- private CallLogListItemViews(QuickContactBadge quickContactView, View primaryActionView,
- ImageView secondaryActionView, View dividerView,
- PhoneCallDetailsViews phoneCallDetailsViews,
- TextView listHeaderTextView, View bottomDivider) {
- this.quickContactView = quickContactView;
- this.primaryActionView = primaryActionView;
- this.secondaryActionView = secondaryActionView;
- this.dividerView = dividerView;
- this.phoneCallDetailsViews = phoneCallDetailsViews;
- this.listHeaderTextView = listHeaderTextView;
- this.bottomDivider = bottomDivider;
- }
-
- public static CallLogListItemViews fromView(View view) {
- return new CallLogListItemViews(
- (QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
- view.findViewById(R.id.primary_action_view),
- (ImageView) view.findViewById(R.id.secondary_action_icon),
- view.findViewById(R.id.divider),
- PhoneCallDetailsViews.fromView(view),
- (TextView) view.findViewById(R.id.call_log_header),
- view.findViewById(R.id.call_log_divider));
- }
-
- @NeededForTesting
- public static CallLogListItemViews createForTest(Context context) {
- return new CallLogListItemViews(
- new QuickContactBadge(context),
- new View(context),
- new ImageView(context),
- new View(context),
- PhoneCallDetailsViews.createForTest(context),
- new TextView(context),
- new View(context));
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogNotificationsService.java b/src/com/android/contacts/calllog/CallLogNotificationsService.java
deleted file mode 100644
index be540ad..0000000
--- a/src/com/android/contacts/calllog/CallLogNotificationsService.java
+++ /dev/null
@@ -1,82 +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.calllog;
-
-import android.app.IntentService;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.Log;
-
-/**
- * Provides operations for managing notifications.
- * <p>
- * It handles the following actions:
- * <ul>
- * <li>{@link #ACTION_MARK_NEW_VOICEMAILS_AS_OLD}: marks all the new voicemails in the call log as
- * old; this is called when a notification is dismissed.</li>
- * <li>{@link #ACTION_UPDATE_NOTIFICATIONS}: updates the content of the new items notification; it
- * may include an optional extra {@link #EXTRA_NEW_VOICEMAIL_URI}, containing the URI of the new
- * voicemail that has triggered this update (if any).</li>
- * </ul>
- */
-public class CallLogNotificationsService extends IntentService {
- private static final String TAG = "CallLogNotificationsService";
-
- /** Action to mark all the new voicemails as old. */
- public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD =
- "com.android.contacts.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD";
-
- /**
- * Action to update the notifications.
- * <p>
- * May include an optional extra {@link #EXTRA_NEW_VOICEMAIL_URI}.
- */
- public static final String ACTION_UPDATE_NOTIFICATIONS =
- "com.android.contacts.calllog.UPDATE_NOTIFICATIONS";
-
- /**
- * Extra to included with {@link #ACTION_UPDATE_NOTIFICATIONS} to identify the new voicemail
- * that triggered an update.
- * <p>
- * It must be a {@link Uri}.
- */
- public static final String EXTRA_NEW_VOICEMAIL_URI = "NEW_VOICEMAIL_URI";
-
- private CallLogQueryHandler mCallLogQueryHandler;
-
- public CallLogNotificationsService() {
- super("CallLogNotificationsService");
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
- mCallLogQueryHandler = new CallLogQueryHandler(getContentResolver(), null /*listener*/);
- }
-
- @Override
- protected void onHandleIntent(Intent intent) {
- if (ACTION_MARK_NEW_VOICEMAILS_AS_OLD.equals(intent.getAction())) {
- mCallLogQueryHandler.markNewVoicemailsAsOld();
- } else if (ACTION_UPDATE_NOTIFICATIONS.equals(intent.getAction())) {
- Uri voicemailUri = (Uri) intent.getParcelableExtra(EXTRA_NEW_VOICEMAIL_URI);
- DefaultVoicemailNotifier.getInstance(this).updateNotification(voicemailUri);
- } else {
- Log.d(TAG, "onHandleIntent: could not handle: " + intent);
- }
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogQuery.java b/src/com/android/contacts/calllog/CallLogQuery.java
deleted file mode 100644
index 90017b7..0000000
--- a/src/com/android/contacts/calllog/CallLogQuery.java
+++ /dev/null
@@ -1,103 +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.calllog;
-
-import android.database.Cursor;
-import android.provider.CallLog.Calls;
-
-/**
- * The query for the call log table.
- */
-public final class CallLogQuery {
- // If you alter this, you must also alter the method that inserts a fake row to the headers
- // in the CallLogQueryHandler class called createHeaderCursorFor().
- public static final String[] _PROJECTION = new String[] {
- Calls._ID, // 0
- Calls.NUMBER, // 1
- Calls.DATE, // 2
- Calls.DURATION, // 3
- Calls.TYPE, // 4
- Calls.COUNTRY_ISO, // 5
- Calls.VOICEMAIL_URI, // 6
- Calls.GEOCODED_LOCATION, // 7
- Calls.CACHED_NAME, // 8
- Calls.CACHED_NUMBER_TYPE, // 9
- Calls.CACHED_NUMBER_LABEL, // 10
- Calls.CACHED_LOOKUP_URI, // 11
- Calls.CACHED_MATCHED_NUMBER, // 12
- Calls.CACHED_NORMALIZED_NUMBER, // 13
- Calls.CACHED_PHOTO_ID, // 14
- Calls.CACHED_FORMATTED_NUMBER, // 15
- Calls.IS_READ, // 16
- };
-
- public static final int ID = 0;
- public static final int NUMBER = 1;
- public static final int DATE = 2;
- public static final int DURATION = 3;
- public static final int CALL_TYPE = 4;
- public static final int COUNTRY_ISO = 5;
- public static final int VOICEMAIL_URI = 6;
- public static final int GEOCODED_LOCATION = 7;
- public static final int CACHED_NAME = 8;
- public static final int CACHED_NUMBER_TYPE = 9;
- public static final int CACHED_NUMBER_LABEL = 10;
- public static final int CACHED_LOOKUP_URI = 11;
- public static final int CACHED_MATCHED_NUMBER = 12;
- public static final int CACHED_NORMALIZED_NUMBER = 13;
- public static final int CACHED_PHOTO_ID = 14;
- public static final int CACHED_FORMATTED_NUMBER = 15;
- public static final int IS_READ = 16;
- /** The index of the synthetic "section" column in the extended projection. */
- public static final int SECTION = 17;
-
- /**
- * The name of the synthetic "section" column.
- * <p>
- * This column identifies whether a row is a header or an actual item, and whether it is
- * part of the new or old calls.
- */
- public static final String SECTION_NAME = "section";
- /** The value of the "section" column for the header of the new section. */
- public static final int SECTION_NEW_HEADER = 0;
- /** The value of the "section" column for the items of the new section. */
- public static final int SECTION_NEW_ITEM = 1;
- /** The value of the "section" column for the header of the old section. */
- public static final int SECTION_OLD_HEADER = 2;
- /** The value of the "section" column for the items of the old section. */
- public static final int SECTION_OLD_ITEM = 3;
-
- /** The call log projection including the section name. */
- public static final String[] EXTENDED_PROJECTION;
- static {
- EXTENDED_PROJECTION = new String[_PROJECTION.length + 1];
- System.arraycopy(_PROJECTION, 0, EXTENDED_PROJECTION, 0, _PROJECTION.length);
- EXTENDED_PROJECTION[_PROJECTION.length] = SECTION_NAME;
- }
-
- public static boolean isSectionHeader(Cursor cursor) {
- int section = cursor.getInt(CallLogQuery.SECTION);
- return section == CallLogQuery.SECTION_NEW_HEADER
- || section == CallLogQuery.SECTION_OLD_HEADER;
- }
-
- public static boolean isNewSection(Cursor cursor) {
- int section = cursor.getInt(CallLogQuery.SECTION);
- return section == CallLogQuery.SECTION_NEW_ITEM
- || section == CallLogQuery.SECTION_NEW_HEADER;
- }
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/calllog/CallLogQueryHandler.java b/src/com/android/contacts/calllog/CallLogQueryHandler.java
deleted file mode 100644
index a6382b6..0000000
--- a/src/com/android/contacts/calllog/CallLogQueryHandler.java
+++ /dev/null
@@ -1,365 +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.calllog;
-
-import android.content.AsyncQueryHandler;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
-import android.database.sqlite.SQLiteDatabaseCorruptException;
-import android.database.sqlite.SQLiteDiskIOException;
-import android.database.sqlite.SQLiteException;
-import android.database.sqlite.SQLiteFullException;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
-import android.provider.VoicemailContract.Status;
-import android.util.Log;
-
-import com.android.common.io.MoreCloseables;
-import com.android.contacts.voicemail.VoicemailStatusHelperImpl;
-import com.google.common.collect.Lists;
-
-import java.lang.ref.WeakReference;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.concurrent.GuardedBy;
-
-/** Handles asynchronous queries to the call log. */
-/*package*/ class CallLogQueryHandler extends AsyncQueryHandler {
- private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
- private static final String TAG = "CallLogQueryHandler";
- private static final int NUM_LOGS_TO_DISPLAY = 1000;
-
- /** The token for the query to fetch the new entries from the call log. */
- private static final int QUERY_NEW_CALLS_TOKEN = 53;
- /** The token for the query to fetch the old entries from the call log. */
- private static final int QUERY_OLD_CALLS_TOKEN = 54;
- /** The token for the query to mark all missed calls as old after seeing the call log. */
- private static final int UPDATE_MARK_AS_OLD_TOKEN = 55;
- /** The token for the query to mark all new voicemails as old. */
- private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 56;
- /** The token for the query to mark all missed calls as read after seeing the call log. */
- private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 57;
- /** The token for the query to fetch voicemail status messages. */
- private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 58;
-
- /**
- * Call type similar to Calls.INCOMING_TYPE used to specify all types instead of one particular
- * type.
- */
- public static final int CALL_TYPE_ALL = -1;
-
- /**
- * The time window from the current time within which an unread entry will be added to the new
- * section.
- */
- private static final long NEW_SECTION_TIME_WINDOW = TimeUnit.DAYS.toMillis(7);
-
- private final WeakReference<Listener> mListener;
-
- /** The cursor containing the new calls, or null if they have not yet been fetched. */
- @GuardedBy("this") private Cursor mNewCallsCursor;
- /** The cursor containing the old calls, or null if they have not yet been fetched. */
- @GuardedBy("this") private Cursor mOldCallsCursor;
- /**
- * The identifier of the latest calls request.
- * <p>
- * A request for the list of calls requires two queries and hence the two cursor
- * {@link #mNewCallsCursor} and {@link #mOldCallsCursor} above, corresponding to
- * {@link #QUERY_NEW_CALLS_TOKEN} and {@link #QUERY_OLD_CALLS_TOKEN}.
- * <p>
- * When a new request is about to be started, existing cursors are closed. However, it is
- * possible that one of the queries completes after the new request has started. This means that
- * we might merge two cursors that do not correspond to the same request. Moreover, this may
- * lead to a resource leak if the same query completes and we override the cursor without
- * closing it first.
- * <p>
- * To make sure we only join two cursors from the same request, we use this variable to store
- * the request id of the latest request and make sure we only process cursors corresponding to
- * the this request.
- */
- @GuardedBy("this") private int mCallsRequestId;
-
- /**
- * Simple handler that wraps background calls to catch
- * {@link SQLiteException}, such as when the disk is full.
- */
- protected class CatchingWorkerHandler extends AsyncQueryHandler.WorkerHandler {
- public CatchingWorkerHandler(Looper looper) {
- super(looper);
- }
-
- @Override
- public void handleMessage(Message msg) {
- try {
- // Perform same query while catching any exceptions
- super.handleMessage(msg);
- } catch (SQLiteDiskIOException e) {
- Log.w(TAG, "Exception on background worker thread", e);
- } catch (SQLiteFullException e) {
- Log.w(TAG, "Exception on background worker thread", e);
- } catch (SQLiteDatabaseCorruptException e) {
- Log.w(TAG, "Exception on background worker thread", e);
- }
- }
- }
-
- @Override
- protected Handler createHandler(Looper looper) {
- // Provide our special handler that catches exceptions
- return new CatchingWorkerHandler(looper);
- }
-
- public CallLogQueryHandler(ContentResolver contentResolver, Listener listener) {
- super(contentResolver);
- mListener = new WeakReference<Listener>(listener);
- }
-
- /** Creates a cursor that contains a single row and maps the section to the given value. */
- private Cursor createHeaderCursorFor(int section) {
- MatrixCursor matrixCursor =
- new MatrixCursor(CallLogQuery.EXTENDED_PROJECTION);
- // The values in this row correspond to default values for _PROJECTION from CallLogQuery
- // plus the section value.
- matrixCursor.addRow(new Object[]{
- 0L, "", 0L, 0L, 0, "", "", "", null, 0, null, null, null, null, 0L, null, 0,
- section
- });
- return matrixCursor;
- }
-
- /** Returns a cursor for the old calls header. */
- private Cursor createOldCallsHeaderCursor() {
- return createHeaderCursorFor(CallLogQuery.SECTION_OLD_HEADER);
- }
-
- /** Returns a cursor for the new calls header. */
- private Cursor createNewCallsHeaderCursor() {
- return createHeaderCursorFor(CallLogQuery.SECTION_NEW_HEADER);
- }
-
- /**
- * Fetches the list of calls from the call log for a given type.
- * <p>
- * It will asynchronously update the content of the list view when the fetch completes.
- */
- public void fetchCalls(int callType) {
- cancelFetch();
- int requestId = newCallsRequest();
- fetchCalls(QUERY_NEW_CALLS_TOKEN, requestId, true /*isNew*/, callType);
- fetchCalls(QUERY_OLD_CALLS_TOKEN, requestId, false /*isNew*/, callType);
- }
-
- public void fetchVoicemailStatus() {
- startQuery(QUERY_VOICEMAIL_STATUS_TOKEN, null, Status.CONTENT_URI,
- VoicemailStatusHelperImpl.PROJECTION, null, null, null);
- }
-
- /** Fetches the list of calls in the call log, either the new one or the old ones. */
- private void fetchCalls(int token, int requestId, boolean isNew, int callType) {
- // We need to check for NULL explicitly otherwise entries with where READ is NULL
- // may not match either the query or its negation.
- // We consider the calls that are not yet consumed (i.e. IS_READ = 0) as "new".
- String selection = String.format("%s IS NOT NULL AND %s = 0 AND %s > ?",
- Calls.IS_READ, Calls.IS_READ, Calls.DATE);
- List<String> selectionArgs = Lists.newArrayList(
- Long.toString(System.currentTimeMillis() - NEW_SECTION_TIME_WINDOW));
- if (!isNew) {
- // Negate the query.
- selection = String.format("NOT (%s)", selection);
- }
- if (callType > CALL_TYPE_ALL) {
- // Add a clause to fetch only items of type voicemail.
- selection = String.format("(%s) AND (%s = ?)", selection, Calls.TYPE);
- selectionArgs.add(Integer.toString(callType));
- }
- Uri uri = Calls.CONTENT_URI_WITH_VOICEMAIL.buildUpon()
- .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(NUM_LOGS_TO_DISPLAY))
- .build();
- startQuery(token, requestId, uri,
- CallLogQuery._PROJECTION, selection, selectionArgs.toArray(EMPTY_STRING_ARRAY),
- Calls.DEFAULT_SORT_ORDER);
- }
-
- /** Cancel any pending fetch request. */
- private void cancelFetch() {
- cancelOperation(QUERY_NEW_CALLS_TOKEN);
- cancelOperation(QUERY_OLD_CALLS_TOKEN);
- }
-
- /** Updates all new calls to mark them as old. */
- public void markNewCallsAsOld() {
- // Mark all "new" calls as not new anymore.
- StringBuilder where = new StringBuilder();
- where.append(Calls.NEW);
- where.append(" = 1");
-
- ContentValues values = new ContentValues(1);
- values.put(Calls.NEW, "0");
-
- startUpdate(UPDATE_MARK_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
- values, where.toString(), null);
- }
-
- /** Updates all new voicemails to mark them as old. */
- public void markNewVoicemailsAsOld() {
- // Mark all "new" voicemails as not new anymore.
- StringBuilder where = new StringBuilder();
- where.append(Calls.NEW);
- where.append(" = 1 AND ");
- where.append(Calls.TYPE);
- where.append(" = ?");
-
- ContentValues values = new ContentValues(1);
- values.put(Calls.NEW, "0");
-
- startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
- values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
- }
-
- /** Updates all missed calls to mark them as read. */
- public void markMissedCallsAsRead() {
- // Mark all "new" calls as not new anymore.
- StringBuilder where = new StringBuilder();
- where.append(Calls.IS_READ).append(" = 0");
- where.append(" AND ");
- where.append(Calls.TYPE).append(" = ").append(Calls.MISSED_TYPE);
-
- ContentValues values = new ContentValues(1);
- values.put(Calls.IS_READ, "1");
-
- startUpdate(UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN, null, Calls.CONTENT_URI, values,
- where.toString(), null);
- }
-
- /**
- * Start a new request and return its id. The request id will be used as the cookie for the
- * background request.
- * <p>
- * Closes any open cursor that has not yet been sent to the requester.
- */
- private synchronized int newCallsRequest() {
- MoreCloseables.closeQuietly(mNewCallsCursor);
- MoreCloseables.closeQuietly(mOldCallsCursor);
- mNewCallsCursor = null;
- mOldCallsCursor = null;
- return ++mCallsRequestId;
- }
-
- @Override
- protected synchronized void onQueryComplete(int token, Object cookie, Cursor cursor) {
- if (token == QUERY_NEW_CALLS_TOKEN) {
- int requestId = ((Integer) cookie).intValue();
- if (requestId != mCallsRequestId) {
- // Ignore this query since it does not correspond to the latest request.
- return;
- }
-
- // Store the returned cursor.
- MoreCloseables.closeQuietly(mNewCallsCursor);
- mNewCallsCursor = new ExtendedCursor(
- cursor, CallLogQuery.SECTION_NAME, CallLogQuery.SECTION_NEW_ITEM);
- } else if (token == QUERY_OLD_CALLS_TOKEN) {
- int requestId = ((Integer) cookie).intValue();
- if (requestId != mCallsRequestId) {
- // Ignore this query since it does not correspond to the latest request.
- return;
- }
-
- // Store the returned cursor.
- MoreCloseables.closeQuietly(mOldCallsCursor);
- mOldCallsCursor = new ExtendedCursor(
- cursor, CallLogQuery.SECTION_NAME, CallLogQuery.SECTION_OLD_ITEM);
- } else if (token == QUERY_VOICEMAIL_STATUS_TOKEN) {
- updateVoicemailStatus(cursor);
- return;
- } else {
- Log.w(TAG, "Unknown query completed: ignoring: " + token);
- return;
- }
-
- if (mNewCallsCursor != null && mOldCallsCursor != null) {
- updateAdapterData(createMergedCursor());
- }
- }
-
- /** Creates the merged cursor representing the data to show in the call log. */
- @GuardedBy("this")
- private Cursor createMergedCursor() {
- try {
- final boolean hasNewCalls = mNewCallsCursor.getCount() != 0;
- final boolean hasOldCalls = mOldCallsCursor.getCount() != 0;
-
- if (!hasNewCalls) {
- // Return only the old calls, without the header.
- MoreCloseables.closeQuietly(mNewCallsCursor);
- return mOldCallsCursor;
- }
-
- if (!hasOldCalls) {
- // Return only the new calls.
- MoreCloseables.closeQuietly(mOldCallsCursor);
- return new MergeCursor(
- new Cursor[]{ createNewCallsHeaderCursor(), mNewCallsCursor });
- }
-
- return new MergeCursor(new Cursor[]{
- createNewCallsHeaderCursor(), mNewCallsCursor,
- createOldCallsHeaderCursor(), mOldCallsCursor});
- } finally {
- // Any cursor still open is now owned, directly or indirectly, by the caller.
- mNewCallsCursor = null;
- mOldCallsCursor = null;
- }
- }
-
- /**
- * Updates the adapter in the call log fragment to show the new cursor data.
- */
- private void updateAdapterData(Cursor combinedCursor) {
- final Listener listener = mListener.get();
- if (listener != null) {
- listener.onCallsFetched(combinedCursor);
- }
- }
-
- private void updateVoicemailStatus(Cursor statusCursor) {
- final Listener listener = mListener.get();
- if (listener != null) {
- listener.onVoicemailStatusFetched(statusCursor);
- }
- }
-
- /** Listener to completion of various queries. */
- public interface Listener {
- /** Called when {@link CallLogQueryHandler#fetchVoicemailStatus()} completes. */
- void onVoicemailStatusFetched(Cursor statusCursor);
-
- /**
- * Called when {@link CallLogQueryHandler#fetchCalls(int)}complete.
- */
- void onCallsFetched(Cursor combinedCursor);
- }
-}
diff --git a/src/com/android/contacts/calllog/CallLogReceiver.java b/src/com/android/contacts/calllog/CallLogReceiver.java
deleted file mode 100644
index 14bfa64..0000000
--- a/src/com/android/contacts/calllog/CallLogReceiver.java
+++ /dev/null
@@ -1,50 +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.calllog;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.VoicemailContract;
-import android.util.Log;
-
-/**
- * Receiver for call log events.
- * <p>
- * It is currently used to handle {@link VoicemailContract#ACTION_NEW_VOICEMAIL} and
- * {@link Intent#ACTION_BOOT_COMPLETED}.
- */
-public class CallLogReceiver extends BroadcastReceiver {
- private static final String TAG = "CallLogReceiver";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) {
- Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
- serviceIntent.putExtra(
- CallLogNotificationsService.EXTRA_NEW_VOICEMAIL_URI, intent.getData());
- context.startService(serviceIntent);
- } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
- Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
- serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
- context.startService(serviceIntent);
- } else {
- Log.w(TAG, "onReceive: could not handle: " + intent);
- }
- }
-}
diff --git a/src/com/android/contacts/calllog/CallTypeHelper.java b/src/com/android/contacts/calllog/CallTypeHelper.java
deleted file mode 100644
index 2ca0db0..0000000
--- a/src/com/android/contacts/calllog/CallTypeHelper.java
+++ /dev/null
@@ -1,92 +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.calllog;
-
-import android.content.res.Resources;
-import android.provider.CallLog.Calls;
-
-import com.android.contacts.R;
-
-/**
- * Helper class to perform operations related to call types.
- */
-public class CallTypeHelper {
- /** Name used to identify incoming calls. */
- private final CharSequence mIncomingName;
- /** Name used to identify outgoing calls. */
- private final CharSequence mOutgoingName;
- /** Name used to identify missed calls. */
- private final CharSequence mMissedName;
- /** Name used to identify voicemail calls. */
- private final CharSequence mVoicemailName;
- /** Color used to identify new missed calls. */
- private final int mNewMissedColor;
- /** Color used to identify new voicemail calls. */
- private final int mNewVoicemailColor;
-
- public CallTypeHelper(Resources resources) {
- // Cache these values so that we do not need to look them up each time.
- mIncomingName = resources.getString(R.string.type_incoming);
- mOutgoingName = resources.getString(R.string.type_outgoing);
- mMissedName = resources.getString(R.string.type_missed);
- mVoicemailName = resources.getString(R.string.type_voicemail);
- mNewMissedColor = resources.getColor(R.color.call_log_missed_call_highlight_color);
- mNewVoicemailColor = resources.getColor(R.color.call_log_voicemail_highlight_color);
- }
-
- /** Returns the text used to represent the given call type. */
- public CharSequence getCallTypeText(int callType) {
- switch (callType) {
- case Calls.INCOMING_TYPE:
- return mIncomingName;
-
- case Calls.OUTGOING_TYPE:
- return mOutgoingName;
-
- case Calls.MISSED_TYPE:
- return mMissedName;
-
- case Calls.VOICEMAIL_TYPE:
- return mVoicemailName;
-
- default:
- throw new IllegalArgumentException("invalid call type: " + callType);
- }
- }
-
- /** Returns the color used to highlight the given call type, null if not highlight is needed. */
- public Integer getHighlightedColor(int callType) {
- switch (callType) {
- case Calls.INCOMING_TYPE:
- // New incoming calls are not highlighted.
- return null;
-
- case Calls.OUTGOING_TYPE:
- // New outgoing calls are not highlighted.
- return null;
-
- case Calls.MISSED_TYPE:
- return mNewMissedColor;
-
- case Calls.VOICEMAIL_TYPE:
- return mNewVoicemailColor;
-
- default:
- throw new IllegalArgumentException("invalid call type: " + callType);
- }
- }
-}
diff --git a/src/com/android/contacts/calllog/CallTypeIconsView.java b/src/com/android/contacts/calllog/CallTypeIconsView.java
deleted file mode 100644
index 384b597..0000000
--- a/src/com/android/contacts/calllog/CallTypeIconsView.java
+++ /dev/null
@@ -1,126 +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.calllog;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.provider.CallLog.Calls;
-import android.util.AttributeSet;
-import android.view.View;
-
-import com.android.contacts.R;
-import com.android.contacts.test.NeededForTesting;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * View that draws one or more symbols for different types of calls (missed calls, outgoing etc).
- * The symbols are set up horizontally. As this view doesn't create subviews, it is better suited
- * for ListView-recycling that a regular LinearLayout using ImageViews.
- */
-public class CallTypeIconsView extends View {
- private List<Integer> mCallTypes = Lists.newArrayListWithCapacity(3);
- private Resources mResources;
- private int mWidth;
- private int mHeight;
-
- public CallTypeIconsView(Context context) {
- this(context, null);
- }
-
- public CallTypeIconsView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mResources = new Resources(context);
- }
-
- public void clear() {
- mCallTypes.clear();
- mWidth = 0;
- mHeight = 0;
- invalidate();
- }
-
- public void add(int callType) {
- mCallTypes.add(callType);
-
- final Drawable drawable = getCallTypeDrawable(callType);
- mWidth += drawable.getIntrinsicWidth() + mResources.iconMargin;
- mHeight = Math.max(mHeight, drawable.getIntrinsicHeight());
- invalidate();
- }
-
- @NeededForTesting
- public int getCount() {
- return mCallTypes.size();
- }
-
- @NeededForTesting
- public int getCallType(int index) {
- return mCallTypes.get(index);
- }
-
- private Drawable getCallTypeDrawable(int callType) {
- switch (callType) {
- case Calls.INCOMING_TYPE:
- return mResources.incoming;
- case Calls.OUTGOING_TYPE:
- return mResources.outgoing;
- case Calls.MISSED_TYPE:
- return mResources.missed;
- case Calls.VOICEMAIL_TYPE:
- return mResources.voicemail;
- default:
- throw new IllegalArgumentException("invalid call type: " + callType);
- }
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(mWidth, mHeight);
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- int left = 0;
- for (Integer callType : mCallTypes) {
- final Drawable drawable = getCallTypeDrawable(callType);
- final int right = left + drawable.getIntrinsicWidth();
- drawable.setBounds(left, 0, right, drawable.getIntrinsicHeight());
- drawable.draw(canvas);
- left = right + mResources.iconMargin;
- }
- }
-
- private static class Resources {
- public final Drawable incoming;
- public final Drawable outgoing;
- public final Drawable missed;
- public final Drawable voicemail;
- public final int iconMargin;
-
- public Resources(Context context) {
- final android.content.res.Resources r = context.getResources();
- incoming = r.getDrawable(R.drawable.ic_call_incoming_holo_dark);
- outgoing = r.getDrawable(R.drawable.ic_call_outgoing_holo_dark);
- missed = r.getDrawable(R.drawable.ic_call_missed_holo_dark);
- voicemail = r.getDrawable(R.drawable.ic_call_voicemail_holo_dark);
- iconMargin = r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
- }
- }
-}
diff --git a/src/com/android/contacts/calllog/ClearCallLogDialog.java b/src/com/android/contacts/calllog/ClearCallLogDialog.java
deleted file mode 100644
index c4dbb7e..0000000
--- a/src/com/android/contacts/calllog/ClearCallLogDialog.java
+++ /dev/null
@@ -1,78 +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.calllog;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.CallLog.Calls;
-
-import com.android.contacts.R;
-
-/**
- * Dialog that clears the call log after confirming with the user
- */
-public class ClearCallLogDialog extends DialogFragment {
- /** Preferred way to show this dialog */
- public static void show(FragmentManager fragmentManager) {
- ClearCallLogDialog dialog = new ClearCallLogDialog();
- dialog.show(fragmentManager, "deleteCallLog");
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final ContentResolver resolver = getActivity().getContentResolver();
- final OnClickListener okListener = new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- final ProgressDialog progressDialog = ProgressDialog.show(getActivity(),
- getString(R.string.clearCallLogProgress_title),
- "", true, false);
- final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- resolver.delete(Calls.CONTENT_URI, null, null);
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- progressDialog.dismiss();
- }
- };
- // TODO: Once we have the API, we should configure this ProgressDialog
- // to only show up after a certain time (e.g. 150ms)
- progressDialog.show();
- task.execute();
- }
- };
- return new AlertDialog.Builder(getActivity())
- .setTitle(R.string.clearCallLogConfirmation_title)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(R.string.clearCallLogConfirmation)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(android.R.string.ok, okListener)
- .setCancelable(true)
- .create();
- }
-}
diff --git a/src/com/android/contacts/calllog/ContactInfo.java b/src/com/android/contacts/calllog/ContactInfo.java
deleted file mode 100644
index 30e7e71..0000000
--- a/src/com/android/contacts/calllog/ContactInfo.java
+++ /dev/null
@@ -1,71 +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.calllog;
-
-import android.net.Uri;
-import android.text.TextUtils;
-
-import com.android.contacts.util.UriUtils;
-
-/**
- * Information for a contact as needed by the Call Log.
- */
-public final class ContactInfo {
- public Uri lookupUri;
- public String name;
- public int type;
- public String label;
- public String number;
- public String formattedNumber;
- public String normalizedNumber;
- /** The photo for the contact, if available. */
- public long photoId;
- /** The high-res photo for the contact, if available. */
- public Uri photoUri;
-
- public static ContactInfo EMPTY = new ContactInfo();
-
- @Override
- public int hashCode() {
- // Uses only name and contactUri to determine hashcode.
- // This should be sufficient to have a reasonable distribution of hash codes.
- // Moreover, there should be no two people with the same lookupUri.
- final int prime = 31;
- int result = 1;
- result = prime * result + ((lookupUri == null) ? 0 : lookupUri.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (getClass() != obj.getClass()) return false;
- ContactInfo other = (ContactInfo) obj;
- if (!UriUtils.areEqual(lookupUri, other.lookupUri)) return false;
- if (!TextUtils.equals(name, other.name)) return false;
- if (type != other.type) return false;
- if (!TextUtils.equals(label, other.label)) return false;
- if (!TextUtils.equals(number, other.number)) return false;
- if (!TextUtils.equals(formattedNumber, other.formattedNumber)) return false;
- if (!TextUtils.equals(normalizedNumber, other.normalizedNumber)) return false;
- if (photoId != other.photoId) return false;
- if (!UriUtils.areEqual(photoUri, other.photoUri)) return false;
- return true;
- }
-}
diff --git a/src/com/android/contacts/calllog/ContactInfoHelper.java b/src/com/android/contacts/calllog/ContactInfoHelper.java
deleted file mode 100644
index edca00c..0000000
--- a/src/com/android/contacts/calllog/ContactInfoHelper.java
+++ /dev/null
@@ -1,215 +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.calllog;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.PhoneLookup;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-
-import com.android.contacts.util.UriUtils;
-
-/**
- * Utility class to look up the contact information for a given number.
- */
-public class ContactInfoHelper {
- private final Context mContext;
- private final String mCurrentCountryIso;
-
- public ContactInfoHelper(Context context, String currentCountryIso) {
- mContext = context;
- mCurrentCountryIso = currentCountryIso;
- }
-
- /**
- * Returns the contact information for the given number.
- * <p>
- * If the number does not match any contact, returns a contact info containing only the number
- * and the formatted number.
- * <p>
- * If an error occurs during the lookup, it returns null.
- *
- * @param number the number to look up
- * @param countryIso the country associated with this number
- */
- public ContactInfo lookupNumber(String number, String countryIso) {
- final ContactInfo info;
-
- // Determine the contact info.
- if (PhoneNumberUtils.isUriNumber(number)) {
- // This "number" is really a SIP address.
- ContactInfo sipInfo = queryContactInfoForSipAddress(number);
- if (sipInfo == null || sipInfo == ContactInfo.EMPTY) {
- // Check whether the "username" part of the SIP address is
- // actually the phone number of a contact.
- String username = PhoneNumberUtils.getUsernameFromUriNumber(number);
- if (PhoneNumberUtils.isGlobalPhoneNumber(username)) {
- sipInfo = queryContactInfoForPhoneNumber(username, countryIso);
- }
- }
- info = sipInfo;
- } else {
- // Look for a contact that has the given phone number.
- ContactInfo phoneInfo = queryContactInfoForPhoneNumber(number, countryIso);
-
- if (phoneInfo == null || phoneInfo == ContactInfo.EMPTY) {
- // Check whether the phone number has been saved as an "Internet call" number.
- phoneInfo = queryContactInfoForSipAddress(number);
- }
- info = phoneInfo;
- }
-
- final ContactInfo updatedInfo;
- if (info == null) {
- // The lookup failed.
- updatedInfo = null;
- } else {
- // If we did not find a matching contact, generate an empty contact info for the number.
- if (info == ContactInfo.EMPTY) {
- // Did not find a matching contact.
- updatedInfo = new ContactInfo();
- updatedInfo.number = number;
- updatedInfo.formattedNumber = formatPhoneNumber(number, null, countryIso);
- } else {
- updatedInfo = info;
- }
- }
- return updatedInfo;
- }
-
- /**
- * Looks up a contact using the given URI.
- * <p>
- * It returns null if an error occurs, {@link ContactInfo#EMPTY} if no matching contact is
- * found, or the {@link ContactInfo} for the given contact.
- * <p>
- * The {@link ContactInfo#formattedNumber} field is always set to {@code null} in the returned
- * value.
- */
- private ContactInfo lookupContactFromUri(Uri uri) {
- final ContactInfo info;
- Cursor phonesCursor =
- mContext.getContentResolver().query(
- uri, PhoneQuery._PROJECTION, null, null, null);
-
- if (phonesCursor != null) {
- try {
- if (phonesCursor.moveToFirst()) {
- info = new ContactInfo();
- long contactId = phonesCursor.getLong(PhoneQuery.PERSON_ID);
- String lookupKey = phonesCursor.getString(PhoneQuery.LOOKUP_KEY);
- info.lookupUri = Contacts.getLookupUri(contactId, lookupKey);
- info.name = phonesCursor.getString(PhoneQuery.NAME);
- info.type = phonesCursor.getInt(PhoneQuery.PHONE_TYPE);
- info.label = phonesCursor.getString(PhoneQuery.LABEL);
- info.number = phonesCursor.getString(PhoneQuery.MATCHED_NUMBER);
- info.normalizedNumber = phonesCursor.getString(PhoneQuery.NORMALIZED_NUMBER);
- info.photoId = phonesCursor.getLong(PhoneQuery.PHOTO_ID);
- info.photoUri =
- UriUtils.parseUriOrNull(phonesCursor.getString(PhoneQuery.PHOTO_URI));
- info.formattedNumber = null;
- } else {
- info = ContactInfo.EMPTY;
- }
- } finally {
- phonesCursor.close();
- }
- } else {
- // Failed to fetch the data, ignore this request.
- info = null;
- }
- return info;
- }
-
- /**
- * Determines the contact information for the given SIP address.
- * <p>
- * It returns the contact info if found.
- * <p>
- * If no contact corresponds to the given SIP address, returns {@link ContactInfo#EMPTY}.
- * <p>
- * If the lookup fails for some other reason, it returns null.
- */
- private ContactInfo queryContactInfoForSipAddress(String sipAddress) {
- final ContactInfo info;
-
- // "contactNumber" is a SIP address, so use the PhoneLookup table with the SIP parameter.
- Uri.Builder uriBuilder = PhoneLookup.CONTENT_FILTER_URI.buildUpon();
- uriBuilder.appendPath(Uri.encode(sipAddress));
- uriBuilder.appendQueryParameter(PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, "1");
- return lookupContactFromUri(uriBuilder.build());
- }
-
- /**
- * Determines the contact information for the given phone number.
- * <p>
- * It returns the contact info if found.
- * <p>
- * If no contact corresponds to the given phone number, returns {@link ContactInfo#EMPTY}.
- * <p>
- * If the lookup fails for some other reason, it returns null.
- */
- private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso) {
- String contactNumber = number;
- if (!TextUtils.isEmpty(countryIso)) {
- // Normalize the number: this is needed because the PhoneLookup query below does not
- // accept a country code as an input.
- String numberE164 = PhoneNumberUtils.formatNumberToE164(number, countryIso);
- if (!TextUtils.isEmpty(numberE164)) {
- // Only use it if the number could be formatted to E164.
- contactNumber = numberE164;
- }
- }
-
- // The "contactNumber" is a regular phone number, so use the PhoneLookup table.
- Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(contactNumber));
- ContactInfo info = lookupContactFromUri(uri);
- if (info != null && info != ContactInfo.EMPTY) {
- info.formattedNumber = formatPhoneNumber(number, null, countryIso);
- }
- return info;
- }
-
- /**
- * Format the given phone number
- *
- * @param number the number to be formatted.
- * @param normalizedNumber the normalized number of the given number.
- * @param countryIso the ISO 3166-1 two letters country code, the country's
- * convention will be used to format the number if the normalized
- * phone is null.
- *
- * @return the formatted number, or the given number if it was formatted.
- */
- private String formatPhoneNumber(String number, String normalizedNumber,
- String countryIso) {
- if (TextUtils.isEmpty(number)) {
- return "";
- }
- // If "number" is really a SIP address, don't try to do any formatting at all.
- if (PhoneNumberUtils.isUriNumber(number)) {
- return number;
- }
- if (TextUtils.isEmpty(countryIso)) {
- countryIso = mCurrentCountryIso;
- }
- return PhoneNumberUtils.formatNumber(number, normalizedNumber, countryIso);
- }
-}
diff --git a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java b/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
deleted file mode 100644
index cfac1de..0000000
--- a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
+++ /dev/null
@@ -1,340 +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.calllog;
-
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.PhoneLookup;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.common.io.MoreCloseables;
-import com.android.contacts.CallDetailActivity;
-import com.android.contacts.R;
-import com.google.common.collect.Maps;
-
-import java.util.Map;
-
-/**
- * Implementation of {@link VoicemailNotifier} that shows a notification in the
- * status bar.
- */
-public class DefaultVoicemailNotifier implements VoicemailNotifier {
- public static final String TAG = "DefaultVoicemailNotifier";
-
- /** The tag used to identify notifications from this class. */
- private static final String NOTIFICATION_TAG = "DefaultVoicemailNotifier";
- /** The identifier of the notification of new voicemails. */
- private static final int NOTIFICATION_ID = 1;
-
- /** The singleton instance of {@link DefaultVoicemailNotifier}. */
- private static DefaultVoicemailNotifier sInstance;
-
- private final Context mContext;
- private final NotificationManager mNotificationManager;
- private final NewCallsQuery mNewCallsQuery;
- private final NameLookupQuery mNameLookupQuery;
- private final PhoneNumberHelper mPhoneNumberHelper;
-
- /** Returns the singleton instance of the {@link DefaultVoicemailNotifier}. */
- public static synchronized DefaultVoicemailNotifier getInstance(Context context) {
- if (sInstance == null) {
- NotificationManager notificationManager =
- (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- ContentResolver contentResolver = context.getContentResolver();
- sInstance = new DefaultVoicemailNotifier(context, notificationManager,
- createNewCallsQuery(contentResolver),
- createNameLookupQuery(contentResolver),
- createPhoneNumberHelper(context));
- }
- return sInstance;
- }
-
- private DefaultVoicemailNotifier(Context context,
- NotificationManager notificationManager, NewCallsQuery newCallsQuery,
- NameLookupQuery nameLookupQuery, PhoneNumberHelper phoneNumberHelper) {
- mContext = context;
- mNotificationManager = notificationManager;
- mNewCallsQuery = newCallsQuery;
- mNameLookupQuery = nameLookupQuery;
- mPhoneNumberHelper = phoneNumberHelper;
- }
-
- /** Updates the notification and notifies of the call with the given URI. */
- @Override
- public void updateNotification(Uri newCallUri) {
- // Lookup the list of new voicemails to include in the notification.
- // TODO: Move this into a service, to avoid holding the receiver up.
- final NewCall[] newCalls = mNewCallsQuery.query();
-
- if (newCalls == null) {
- // Query failed, just return.
- return;
- }
-
- if (newCalls.length == 0) {
- // No voicemails to notify about: clear the notification.
- clearNotification();
- return;
- }
-
- Resources resources = mContext.getResources();
-
- // This represents a list of names to include in the notification.
- String callers = null;
-
- // Maps each number into a name: if a number is in the map, it has already left a more
- // recent voicemail.
- final Map<String, String> names = Maps.newHashMap();
-
- // Determine the call corresponding to the new voicemail we have to notify about.
- NewCall callToNotify = null;
-
- // Iterate over the new voicemails to determine all the information above.
- for (NewCall newCall : newCalls) {
- // Check if we already know the name associated with this number.
- String name = names.get(newCall.number);
- if (name == null) {
- // Look it up in the database.
- name = mNameLookupQuery.query(newCall.number);
- // If we cannot lookup the contact, use the number instead.
- if (name == null) {
- name = mPhoneNumberHelper.getDisplayNumber(newCall.number, "").toString();
- if (TextUtils.isEmpty(name)) {
- name = newCall.number;
- }
- }
- names.put(newCall.number, name);
- // This is a new caller. Add it to the back of the list of callers.
- if (TextUtils.isEmpty(callers)) {
- callers = name;
- } else {
- callers = resources.getString(
- R.string.notification_voicemail_callers_list, callers, name);
- }
- }
- // Check if this is the new call we need to notify about.
- if (newCallUri != null && newCallUri.equals(newCall.voicemailUri)) {
- callToNotify = newCall;
- }
- }
-
- if (newCallUri != null && callToNotify == null) {
- Log.e(TAG, "The new call could not be found in the call log: " + newCallUri);
- }
-
- // Determine the title of the notification and the icon for it.
- final String title = resources.getQuantityString(
- R.plurals.notification_voicemail_title, newCalls.length, newCalls.length);
- // TODO: Use the photo of contact if all calls are from the same person.
- final int icon = android.R.drawable.stat_notify_voicemail;
-
- Notification.Builder notificationBuilder = new Notification.Builder(mContext)
- .setSmallIcon(icon)
- .setContentTitle(title)
- .setContentText(callers)
- .setDefaults(callToNotify != null ? Notification.DEFAULT_ALL : 0)
- .setDeleteIntent(createMarkNewVoicemailsAsOldIntent())
- .setAutoCancel(true);
-
- // Determine the intent to fire when the notification is clicked on.
- final Intent contentIntent;
- if (newCalls.length == 1) {
- // Open the voicemail directly.
- contentIntent = new Intent(mContext, CallDetailActivity.class);
- contentIntent.setData(newCalls[0].callsUri);
- contentIntent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI,
- newCalls[0].voicemailUri);
- Intent playIntent = new Intent(mContext, CallDetailActivity.class);
- playIntent.setData(newCalls[0].callsUri);
- playIntent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI,
- newCalls[0].voicemailUri);
- playIntent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_START_PLAYBACK, true);
- playIntent.putExtra(CallDetailActivity.EXTRA_FROM_NOTIFICATION, true);
- notificationBuilder.addAction(R.drawable.ic_play_holo_dark,
- resources.getString(R.string.notification_action_voicemail_play),
- PendingIntent.getActivity(mContext, 0, playIntent, 0));
- } else {
- // Open the call log.
- contentIntent = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
- }
- notificationBuilder.setContentIntent(
- PendingIntent.getActivity(mContext, 0, contentIntent, 0));
-
- // The text to show in the ticker, describing the new event.
- if (callToNotify != null) {
- notificationBuilder.setTicker(resources.getString(
- R.string.notification_new_voicemail_ticker, names.get(callToNotify.number)));
- }
-
- mNotificationManager.notify(NOTIFICATION_TAG, NOTIFICATION_ID, notificationBuilder.build());
- }
-
- /** Creates a pending intent that marks all new voicemails as old. */
- private PendingIntent createMarkNewVoicemailsAsOldIntent() {
- Intent intent = new Intent(mContext, CallLogNotificationsService.class);
- intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
- return PendingIntent.getService(mContext, 0, intent, 0);
- }
-
- @Override
- public void clearNotification() {
- mNotificationManager.cancel(NOTIFICATION_TAG, NOTIFICATION_ID);
- }
-
- /** Information about a new voicemail. */
- private static final class NewCall {
- public final Uri callsUri;
- public final Uri voicemailUri;
- public final String number;
-
- public NewCall(Uri callsUri, Uri voicemailUri, String number) {
- this.callsUri = callsUri;
- this.voicemailUri = voicemailUri;
- this.number = number;
- }
- }
-
- /** Allows determining the new calls for which a notification should be generated. */
- public interface NewCallsQuery {
- /**
- * Returns the new calls for which a notification should be generated.
- */
- public NewCall[] query();
- }
-
- /** Create a new instance of {@link NewCallsQuery}. */
- public static NewCallsQuery createNewCallsQuery(ContentResolver contentResolver) {
- return new DefaultNewCallsQuery(contentResolver);
- }
-
- /**
- * Default implementation of {@link NewCallsQuery} that looks up the list of new calls to
- * notify about in the call log.
- */
- private static final class DefaultNewCallsQuery implements NewCallsQuery {
- private static final String[] PROJECTION = {
- Calls._ID, Calls.NUMBER, Calls.VOICEMAIL_URI
- };
- private static final int ID_COLUMN_INDEX = 0;
- private static final int NUMBER_COLUMN_INDEX = 1;
- private static final int VOICEMAIL_URI_COLUMN_INDEX = 2;
-
- private final ContentResolver mContentResolver;
-
- private DefaultNewCallsQuery(ContentResolver contentResolver) {
- mContentResolver = contentResolver;
- }
-
- @Override
- public NewCall[] query() {
- final String selection = String.format("%s = 1 AND %s = ?", Calls.NEW, Calls.TYPE);
- final String[] selectionArgs = new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) };
- Cursor cursor = null;
- try {
- cursor = mContentResolver.query(Calls.CONTENT_URI_WITH_VOICEMAIL, PROJECTION,
- selection, selectionArgs, Calls.DEFAULT_SORT_ORDER);
- if (cursor == null) {
- return null;
- }
- NewCall[] newCalls = new NewCall[cursor.getCount()];
- while (cursor.moveToNext()) {
- newCalls[cursor.getPosition()] = createNewCallsFromCursor(cursor);
- }
- return newCalls;
- } finally {
- MoreCloseables.closeQuietly(cursor);
- }
- }
-
- /** Returns an instance of {@link NewCall} created by using the values of the cursor. */
- private NewCall createNewCallsFromCursor(Cursor cursor) {
- String voicemailUriString = cursor.getString(VOICEMAIL_URI_COLUMN_INDEX);
- Uri callsUri = ContentUris.withAppendedId(
- Calls.CONTENT_URI_WITH_VOICEMAIL, cursor.getLong(ID_COLUMN_INDEX));
- Uri voicemailUri = voicemailUriString == null ? null : Uri.parse(voicemailUriString);
- return new NewCall(callsUri, voicemailUri, cursor.getString(NUMBER_COLUMN_INDEX));
- }
- }
-
- /** Allows determining the name associated with a given phone number. */
- public interface NameLookupQuery {
- /**
- * Returns the name associated with the given number in the contacts database, or null if
- * the number does not correspond to any of the contacts.
- * <p>
- * If there are multiple contacts with the same phone number, it will return the name of one
- * of the matching contacts.
- */
- public String query(String number);
- }
-
- /** Create a new instance of {@link NameLookupQuery}. */
- public static NameLookupQuery createNameLookupQuery(ContentResolver contentResolver) {
- return new DefaultNameLookupQuery(contentResolver);
- }
-
- /**
- * Default implementation of {@link NameLookupQuery} that looks up the name of a contact in the
- * contacts database.
- */
- private static final class DefaultNameLookupQuery implements NameLookupQuery {
- private static final String[] PROJECTION = { PhoneLookup.DISPLAY_NAME };
- private static final int DISPLAY_NAME_COLUMN_INDEX = 0;
-
- private final ContentResolver mContentResolver;
-
- private DefaultNameLookupQuery(ContentResolver contentResolver) {
- mContentResolver = contentResolver;
- }
-
- @Override
- public String query(String number) {
- Cursor cursor = null;
- try {
- cursor = mContentResolver.query(
- Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)),
- PROJECTION, null, null, null);
- if (cursor == null || !cursor.moveToFirst()) return null;
- return cursor.getString(DISPLAY_NAME_COLUMN_INDEX);
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- }
- }
-
- /**
- * Create a new PhoneNumberHelper.
- * <p>
- * This will cause some Disk I/O, at least the first time it is created, so it should not be
- * called from the main thread.
- */
- public static PhoneNumberHelper createPhoneNumberHelper(Context context) {
- return new PhoneNumberHelper(context.getResources());
- }
-}
diff --git a/src/com/android/contacts/calllog/ExtendedCursor.java b/src/com/android/contacts/calllog/ExtendedCursor.java
deleted file mode 100644
index 3894192..0000000
--- a/src/com/android/contacts/calllog/ExtendedCursor.java
+++ /dev/null
@@ -1,154 +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.calllog;
-
-import android.database.AbstractCursor;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.database.DataSetObserver;
-
-import com.android.common.io.MoreCloseables;
-
-/**
- * Wraps a cursor to add an additional column with the same value for all rows.
- * <p>
- * The number of rows in the cursor and the set of columns is determined by the cursor being
- * wrapped.
- */
-public class ExtendedCursor extends AbstractCursor {
- /** The cursor to wrap. */
- private final Cursor mCursor;
- /** The name of the additional column. */
- private final String mColumnName;
- /** The value to be assigned to the additional column. */
- private final Object mValue;
-
- /**
- * Creates a new cursor which extends the given cursor by adding a column with a constant value.
- *
- * @param cursor the cursor to extend
- * @param columnName the name of the additional column
- * @param value the value to be assigned to the additional column
- */
- public ExtendedCursor(Cursor cursor, String columnName, Object value) {
- mCursor = cursor;
- mColumnName = columnName;
- mValue = value;
- }
-
- @Override
- public int getCount() {
- return mCursor.getCount();
- }
-
- @Override
- public String[] getColumnNames() {
- String[] columnNames = mCursor.getColumnNames();
- int length = columnNames.length;
- String[] extendedColumnNames = new String[length + 1];
- System.arraycopy(columnNames, 0, extendedColumnNames, 0, length);
- extendedColumnNames[length] = mColumnName;
- return extendedColumnNames;
- }
-
- @Override
- public String getString(int column) {
- if (column == mCursor.getColumnCount()) {
- return (String) mValue;
- }
- return mCursor.getString(column);
- }
-
- @Override
- public short getShort(int column) {
- if (column == mCursor.getColumnCount()) {
- return (Short) mValue;
- }
- return mCursor.getShort(column);
- }
-
- @Override
- public int getInt(int column) {
- if (column == mCursor.getColumnCount()) {
- return (Integer) mValue;
- }
- return mCursor.getInt(column);
- }
-
- @Override
- public long getLong(int column) {
- if (column == mCursor.getColumnCount()) {
- return (Long) mValue;
- }
- return mCursor.getLong(column);
- }
-
- @Override
- public float getFloat(int column) {
- if (column == mCursor.getColumnCount()) {
- return (Float) mValue;
- }
- return mCursor.getFloat(column);
- }
-
- @Override
- public double getDouble(int column) {
- if (column == mCursor.getColumnCount()) {
- return (Double) mValue;
- }
- return mCursor.getDouble(column);
- }
-
- @Override
- public boolean isNull(int column) {
- if (column == mCursor.getColumnCount()) {
- return mValue == null;
- }
- return mCursor.isNull(column);
- }
-
- @Override
- public boolean onMove(int oldPosition, int newPosition) {
- return mCursor.moveToPosition(newPosition);
- }
-
- @Override
- public void close() {
- MoreCloseables.closeQuietly(mCursor);
- super.close();
- }
-
- @Override
- public void registerContentObserver(ContentObserver observer) {
- mCursor.registerContentObserver(observer);
- }
-
- @Override
- public void unregisterContentObserver(ContentObserver observer) {
- mCursor.unregisterContentObserver(observer);
- }
-
- @Override
- public void registerDataSetObserver(DataSetObserver observer) {
- mCursor.registerDataSetObserver(observer);
- }
-
- @Override
- public void unregisterDataSetObserver(DataSetObserver observer) {
- mCursor.unregisterDataSetObserver(observer);
- }
-}
diff --git a/src/com/android/contacts/calllog/IntentProvider.java b/src/com/android/contacts/calllog/IntentProvider.java
deleted file mode 100644
index 487799c..0000000
--- a/src/com/android/contacts/calllog/IntentProvider.java
+++ /dev/null
@@ -1,102 +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.calllog;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.CallLog.Calls;
-
-import com.android.contacts.CallDetailActivity;
-import com.android.contacts.ContactsUtils;
-
-/**
- * Used to create an intent to attach to an action in the call log.
- * <p>
- * The intent is constructed lazily with the given information.
- */
-public abstract class IntentProvider {
- public abstract Intent getIntent(Context context);
-
- public static IntentProvider getReturnCallIntentProvider(final String number) {
- return new IntentProvider() {
- @Override
- public Intent getIntent(Context context) {
- return ContactsUtils.getCallIntent(number);
- }
- };
- }
-
- public static IntentProvider getPlayVoicemailIntentProvider(final long rowId,
- final String voicemailUri) {
- return new IntentProvider() {
- @Override
- public Intent getIntent(Context context) {
- Intent intent = new Intent(context, CallDetailActivity.class);
- intent.setData(ContentUris.withAppendedId(
- Calls.CONTENT_URI_WITH_VOICEMAIL, rowId));
- if (voicemailUri != null) {
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI,
- Uri.parse(voicemailUri));
- }
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_START_PLAYBACK, true);
- return intent;
- }
- };
- }
-
- public static IntentProvider getCallDetailIntentProvider(
- final CallLogAdapter adapter, final int position, final long id, final int groupSize) {
- return new IntentProvider() {
- @Override
- public Intent getIntent(Context context) {
- Cursor cursor = adapter.getCursor();
- cursor.moveToPosition(position);
- if (CallLogQuery.isSectionHeader(cursor)) {
- // Do nothing when a header is clicked.
- return null;
- }
- Intent intent = new Intent(context, CallDetailActivity.class);
- // Check if the first item is a voicemail.
- String voicemailUri = cursor.getString(CallLogQuery.VOICEMAIL_URI);
- if (voicemailUri != null) {
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI,
- Uri.parse(voicemailUri));
- }
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_START_PLAYBACK, false);
-
- if (groupSize > 1) {
- // We want to restore the position in the cursor at the end.
- long[] ids = new long[groupSize];
- // Copy the ids of the rows in the group.
- for (int index = 0; index < groupSize; ++index) {
- ids[index] = cursor.getLong(CallLogQuery.ID);
- cursor.moveToNext();
- }
- intent.putExtra(CallDetailActivity.EXTRA_CALL_LOG_IDS, ids);
- } else {
- // If there is a single item, use the direct URI for it.
- intent.setData(ContentUris.withAppendedId(
- Calls.CONTENT_URI_WITH_VOICEMAIL, id));
- }
- return intent;
- }
- };
- }
-}
diff --git a/src/com/android/contacts/calllog/PhoneNumberHelper.java b/src/com/android/contacts/calllog/PhoneNumberHelper.java
deleted file mode 100644
index e24d0ae..0000000
--- a/src/com/android/contacts/calllog/PhoneNumberHelper.java
+++ /dev/null
@@ -1,93 +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.calllog;
-
-import android.content.res.Resources;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-
-import com.android.contacts.R;
-import com.android.internal.telephony.CallerInfo;
-
-/**
- * Helper for formatting and managing phone numbers.
- */
-public class PhoneNumberHelper {
- private final Resources mResources;
-
- public PhoneNumberHelper(Resources resources) {
- mResources = resources;
- }
-
- /** Returns true if it is possible to place a call to the given number. */
- public boolean canPlaceCallsTo(CharSequence number) {
- return !(TextUtils.isEmpty(number)
- || number.equals(CallerInfo.UNKNOWN_NUMBER)
- || number.equals(CallerInfo.PRIVATE_NUMBER)
- || number.equals(CallerInfo.PAYPHONE_NUMBER));
- }
-
- /** Returns true if it is possible to send an SMS to the given number. */
- public boolean canSendSmsTo(CharSequence number) {
- return canPlaceCallsTo(number) && !isVoicemailNumber(number) && !isSipNumber(number);
- }
-
- /**
- * Returns the string to display for the given phone number.
- *
- * @param number the number to display
- * @param formattedNumber the formatted number if available, may be null
- */
- public CharSequence getDisplayNumber(CharSequence number, CharSequence formattedNumber) {
- if (TextUtils.isEmpty(number)) {
- return "";
- }
- if (number.equals(CallerInfo.UNKNOWN_NUMBER)) {
- return mResources.getString(R.string.unknown);
- }
- if (number.equals(CallerInfo.PRIVATE_NUMBER)) {
- return mResources.getString(R.string.private_num);
- }
- if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
- return mResources.getString(R.string.payphone);
- }
- if (isVoicemailNumber(number)) {
- return mResources.getString(R.string.voicemail);
- }
- if (TextUtils.isEmpty(formattedNumber)) {
- return number;
- } else {
- return formattedNumber;
- }
- }
-
- /**
- * Returns true if the given number is the number of the configured voicemail.
- * To be able to mock-out this, it is not a static method.
- */
- public boolean isVoicemailNumber(CharSequence number) {
- return PhoneNumberUtils.isVoiceMailNumber(number.toString());
- }
-
- /**
- * Returns true if the given number is a SIP address.
- * To be able to mock-out this, it is not a static method.
- */
- public boolean isSipNumber(CharSequence number) {
- return PhoneNumberUtils.isUriNumber(number.toString());
- }
-}
diff --git a/src/com/android/contacts/calllog/PhoneQuery.java b/src/com/android/contacts/calllog/PhoneQuery.java
deleted file mode 100644
index af44add..0000000
--- a/src/com/android/contacts/calllog/PhoneQuery.java
+++ /dev/null
@@ -1,45 +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.calllog;
-
-import android.provider.ContactsContract.PhoneLookup;
-
-/**
- * The query to look up the {@link ContactInfo} for a given number in the Call Log.
- */
-final class PhoneQuery {
- public static final String[] _PROJECTION = new String[] {
- PhoneLookup._ID,
- PhoneLookup.DISPLAY_NAME,
- PhoneLookup.TYPE,
- PhoneLookup.LABEL,
- PhoneLookup.NUMBER,
- PhoneLookup.NORMALIZED_NUMBER,
- PhoneLookup.PHOTO_ID,
- PhoneLookup.LOOKUP_KEY,
- PhoneLookup.PHOTO_URI};
-
- public static final int PERSON_ID = 0;
- public static final int NAME = 1;
- public static final int PHONE_TYPE = 2;
- public static final int LABEL = 3;
- public static final int MATCHED_NUMBER = 4;
- public static final int NORMALIZED_NUMBER = 5;
- public static final int PHOTO_ID = 6;
- public static final int LOOKUP_KEY = 7;
- public static final int PHOTO_URI = 8;
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/calllog/VoicemailNotifier.java b/src/com/android/contacts/calllog/VoicemailNotifier.java
deleted file mode 100644
index 8d45486..0000000
--- a/src/com/android/contacts/calllog/VoicemailNotifier.java
+++ /dev/null
@@ -1,38 +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.calllog;
-
-import android.net.Uri;
-
-/**
- * Handles notifications for voicemails.
- */
-public interface VoicemailNotifier {
- /**
- * Updates the notification and clears it if there are no new voicemails.
- * <p>
- * If the given URI corresponds to a new voicemail, also notifies about it.
- * <p>
- * It is not safe to call this method from the main thread.
- *
- * @param newCallUri URI of the new call, may be null
- */
- public void updateNotification(Uri newCallUri);
-
- /** Clears the new voicemail notification. */
- public void clearNotification();
-}
diff --git a/src/com/android/contacts/datepicker/DatePickerDialog.java b/src/com/android/contacts/datepicker/DatePickerDialog.java
index 14ebd3b..7681898 100644
--- a/src/com/android/contacts/datepicker/DatePickerDialog.java
+++ b/src/com/android/contacts/datepicker/DatePickerDialog.java
@@ -35,7 +35,6 @@
import com.android.contacts.util.DateUtils;
import java.text.DateFormat;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
@@ -158,8 +157,7 @@
mInitialDay = dayOfMonth;
mTitleDateFormat = DateFormat.getDateInstance(DateFormat.FULL);
- mTitleNoYearDateFormat = new SimpleDateFormat(
- DateUtils.isMonthBeforeDay(getContext()) ? "MMMM dd" : "dd MMMM");
+ mTitleNoYearDateFormat = DateUtils.getLocalizedDateFormatWithoutYear(getContext());
updateTitle(mInitialYear, mInitialMonth, mInitialDay);
setButton(BUTTON_POSITIVE, context.getText(com.android.internal.R.string.date_time_set),
diff --git a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
index 1908e96..12b63c7 100644
--- a/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
+++ b/src/com/android/contacts/detail/ContactDetailDisplayUtils.java
@@ -39,13 +39,13 @@
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.R;
import com.android.contacts.model.Contact;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.dataitem.DataItem;
import com.android.contacts.model.dataitem.OrganizationDataItem;
-import com.android.contacts.preference.ContactsPreferences;
+import com.android.contacts.common.preference.ContactsPreferences;
import com.android.contacts.util.ContactBadgeUtil;
import com.android.contacts.util.HtmlUtils;
import com.android.contacts.util.MoreMath;
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 3773bda..40a96ff 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -32,6 +32,7 @@
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.provider.CalendarContract;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -68,28 +69,33 @@
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.Collapser;
-import com.android.contacts.Collapser.Collapsible;
-import com.android.contacts.ContactPresenceIconUtil;
import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsUtils;
import com.android.contacts.GroupMetaData;
import com.android.contacts.R;
import com.android.contacts.TypePrecedence;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
-import com.android.contacts.editor.SelectAccountDialogFragment;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ClipboardUtils;
+import com.android.contacts.common.Collapser;
+import com.android.contacts.common.Collapser.Collapsible;
+import com.android.contacts.common.ContactPresenceIconUtil;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.model.Contact;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.account.AccountWithDataSet;
import com.android.contacts.model.dataitem.DataItem;
-import com.android.contacts.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.EmailDataItem;
import com.android.contacts.model.dataitem.EventDataItem;
import com.android.contacts.model.dataitem.GroupMembershipDataItem;
@@ -103,19 +109,20 @@
import com.android.contacts.model.dataitem.StructuredNameDataItem;
import com.android.contacts.model.dataitem.StructuredPostalDataItem;
import com.android.contacts.model.dataitem.WebsiteDataItem;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.util.ClipboardUtils;
-import com.android.contacts.util.Constants;
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.DateUtils;
import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.util.StructuredPostalUtils;
+import com.android.contacts.util.UiClosables;
import com.android.internal.telephony.ITelephony;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Objects;
import com.google.common.collect.Iterables;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -125,6 +132,8 @@
private static final String TAG = "ContactDetailFragment";
+ private static final int TEXT_DIRECTION_UNDEFINED = -1;
+
private interface ContextMenuIds {
static final int COPY_TEXT = 0;
static final int CLEAR_DEFAULT = 1;
@@ -281,7 +290,7 @@
public void onAttach(Activity activity) {
super.onAttach(activity);
mContext = activity;
- mDefaultCountryIso = ContactsUtils.getCurrentCountryIso(mContext);
+ mDefaultCountryIso = GeoUtil.getCurrentCountryIso(mContext);
mViewEntryDimensions = new ViewEntryDimensions(mContext.getResources());
}
@@ -459,6 +468,7 @@
Collapser.collapseList(mPostalEntries);
Collapser.collapseList(mImEntries);
Collapser.collapseList(mEventEntries);
+ Collapser.collapseList(mWebsiteEntries);
mIsUniqueNumber = mPhoneEntries.size() == 1;
mIsUniqueEmail = mEmailEntries.size() == 1;
@@ -543,6 +553,7 @@
ArrayList<String> groups = new ArrayList<String>();
for (RawContact rawContact: mContactData.getRawContacts()) {
final long rawContactId = rawContact.getId();
+ final AccountType accountType = rawContact.getAccountType(mContext);
for (DataItem dataItem : rawContact.getDataItems()) {
dataItem.setRawContactId(rawContactId);
@@ -558,11 +569,12 @@
continue;
}
- final DataKind kind = dataItem.getDataKind();
+ final DataKind kind = AccountTypeManager.getInstance(mContext)
+ .getKindOrFallback(accountType, dataItem.getMimeType());
if (kind == null) continue;
final DetailViewEntry entry = DetailViewEntry.fromValues(mContext, dataItem,
- mContactData.isDirectoryEntry(), mContactData.getDirectoryId());
+ mContactData.isDirectoryEntry(), mContactData.getDirectoryId(), kind);
entry.maxLines = kind.maxLinesForDisplay;
final boolean hasData = !TextUtils.isEmpty(entry.data);
@@ -575,9 +587,9 @@
// Build phone entries
entry.data = phone.getFormattedPhoneNumber();
final Intent phoneIntent = mHasPhone ?
- ContactsUtils.getCallIntent(entry.data) : null;
+ CallUtil.getCallIntent(entry.data) : null;
final Intent smsIntent = mHasSms ? new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts(Constants.SCHEME_SMSTO, entry.data, null)) : null;
+ Uri.fromParts(CallUtil.SCHEME_SMSTO, entry.data, null)) : null;
// Configure Icons and Intents.
if (mHasPhone && mHasSms) {
@@ -606,10 +618,14 @@
// add to end of list
mPhoneEntries.add(entry);
}
+
+ // Configure the text direction. Phone numbers should be displayed LTR
+ // regardless of what locale the device is in.
+ entry.textDirection = View.TEXT_DIRECTION_LTR;
} else if (dataItem instanceof EmailDataItem && hasData) {
// Build email entries
entry.intent = new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts(Constants.SCHEME_MAILTO, entry.data, null));
+ Uri.fromParts(CallUtil.SCHEME_MAILTO, entry.data, null));
entry.isPrimary = isSuperPrimary;
// If entry is a primary entry, then render it first in the view.
if (entry.isPrimary) {
@@ -625,7 +641,8 @@
ImDataItem im = ImDataItem.createFromEmail(email);
final DetailViewEntry imEntry = DetailViewEntry.fromValues(mContext, im,
- mContactData.isDirectoryEntry(), mContactData.getDirectoryId());
+ mContactData.isDirectoryEntry(), mContactData.getDirectoryId(),
+ kind);
buildImActions(mContext, imEntry, im);
imEntry.setPresence(status.getPresence());
imEntry.maxLines = kind.maxLinesForDisplay;
@@ -680,8 +697,8 @@
// Build SipAddress entries
entry.uri = null;
if (mHasSip) {
- entry.intent = ContactsUtils.getCallIntent(
- Uri.fromParts(Constants.SCHEME_SIP, entry.data, null));
+ entry.intent = CallUtil.getCallIntent(
+ Uri.fromParts(CallUtil.SCHEME_SIP, entry.data, null));
} else {
entry.intent = null;
}
@@ -693,6 +710,15 @@
// secondary=false for this field, and tweak the weight
// of its DataKind.)
} else if (dataItem instanceof EventDataItem && hasData) {
+ final Calendar cal = DateUtils.parseDate(entry.data, false);
+ if (cal != null) {
+ final Date nextAnniversary =
+ DateUtils.getNextAnnualDate(cal);
+ final Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+ builder.appendPath("time");
+ ContentUris.appendId(builder, nextAnniversary.getTime());
+ entry.intent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
+ }
entry.data = DateUtils.formatDate(mContext, entry.data);
entry.uri = null;
mEventEntries.add(entry);
@@ -706,20 +732,19 @@
entry.intent = new Intent(Intent.ACTION_VIEW);
entry.intent.setDataAndType(entry.uri, entry.mimetype);
- entry.data = dataItem.buildDataString();
+ entry.data = dataItem.buildDataString(getContext(), kind);
if (!TextUtils.isEmpty(entry.data)) {
// If the account type exists in the hash map, add it as another entry for
// that account type
- AccountType type = dataItem.getAccountType();
- if (mOtherEntriesMap.containsKey(type)) {
- List<DetailViewEntry> listEntries = mOtherEntriesMap.get(type);
+ if (mOtherEntriesMap.containsKey(accountType)) {
+ List<DetailViewEntry> listEntries = mOtherEntriesMap.get(accountType);
listEntries.add(entry);
} else {
// Otherwise create a new list with the entry and add it to the hash map
List<DetailViewEntry> listEntries = new ArrayList<DetailViewEntry>();
listEntries.add(entry);
- mOtherEntriesMap.put(type, listEntries);
+ mOtherEntriesMap.put(accountType, listEntries);
}
}
}
@@ -871,7 +896,7 @@
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if (mListener != null && mContactData != null) {
- mListener.onItemClicked(ContactsUtils.getInvitableIntent(
+ mListener.onItemClicked(MoreContactUtils.getInvitableIntent(
popupAdapter.getItem(position) /* account type */,
mContactData.getLookupUri()));
}
@@ -981,22 +1006,35 @@
}
} else {
// Build an IM Intent
- String host = im.getCustomProtocol();
-
- if (protocol != Im.PROTOCOL_CUSTOM) {
- // Try bringing in a well-known host for specific protocols
- host = ContactsUtils.lookupProviderNameFromId(protocol);
- }
-
- if (!TextUtils.isEmpty(host)) {
- final String authority = host.toLowerCase();
- final Uri imUri = new Uri.Builder().scheme(Constants.SCHEME_IMTO).authority(
- authority).appendPath(data).build();
- entry.intent = new Intent(Intent.ACTION_SENDTO, imUri);
+ final Intent imIntent = getCustomIMIntent(im, protocol);
+ if (imIntent != null &&
+ PhoneCapabilityTester.isIntentRegistered(context, imIntent)) {
+ entry.intent = imIntent;
}
}
}
+ @VisibleForTesting
+ public static Intent getCustomIMIntent(ImDataItem im, int protocol) {
+ String host = im.getCustomProtocol();
+ final String data = im.getData();
+ if (TextUtils.isEmpty(data)) {
+ return null;
+ }
+ if (protocol != Im.PROTOCOL_CUSTOM) {
+ // Try bringing in a well-known host for specific protocols
+ host = ContactsUtils.lookupProviderNameFromId(protocol);
+ }
+ if (TextUtils.isEmpty(host)) {
+ return null;
+ }
+ final String authority = host.toLowerCase();
+ final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
+ authority).appendPath(data).build();
+ final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri);
+ return intent;
+ }
+
/**
* Show a list popup. Used for "popup-able" entry, such as "More networks".
*/
@@ -1023,9 +1061,7 @@
}
private void dismissPopupIfShown() {
- if (mPopup != null && mPopup.isShowing()) {
- mPopup.dismiss();
- }
+ UiClosables.closeQuietly(mPopup);
mPopup = null;
}
@@ -1187,6 +1223,7 @@
public String data;
public Uri uri;
public int maxLines = 1;
+ public int textDirection = TEXT_DIRECTION_UNDEFINED;
public String mimetype;
public Context context = null;
@@ -1205,34 +1242,26 @@
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("== DetailViewEntry ==\n");
- sb.append(" type: " + type + "\n");
- sb.append(" kind: " + kind + "\n");
- sb.append(" typeString: " + typeString + "\n");
- sb.append(" data: " + data + "\n");
- sb.append(" uri: " + uri.toString() + "\n");
- sb.append(" maxLines: " + maxLines + "\n");
- sb.append(" mimetype: " + mimetype + "\n");
- sb.append(" isPrimary: " + (isPrimary ? "true" : "false") + "\n");
- sb.append(" secondaryActionIcon: " + secondaryActionIcon + "\n");
- sb.append(" secondaryActionDescription: " + secondaryActionDescription + "\n");
- if (intent == null) {
- sb.append(" intent: " + intent.toString() + "\n");
- } else {
- sb.append(" intent: " + intent.toString() + "\n");
- }
- if (secondaryIntent == null) {
- sb.append(" secondaryIntent: (null)\n");
- } else {
- sb.append(" secondaryIntent: " + secondaryIntent.toString() + "\n");
- }
- sb.append(" ids: " + Iterables.toString(ids) + "\n");
- sb.append(" collapseCount: " + collapseCount + "\n");
- sb.append(" presence: " + presence + "\n");
- sb.append(" chatCapability: " + chatCapability + "\n");
- sb.append(" mIsInSubsection: " + (mIsInSubSection ? "true" : "false") + "\n");
- return sb.toString();
+ return Objects.toStringHelper(this)
+ .add("type", type)
+ .add("kind", kind)
+ .add("typeString", typeString)
+ .add("data", data)
+ .add("uri", uri)
+ .add("maxLines", maxLines)
+ .add("mimetype", mimetype)
+ .add("context", context)
+ .add("isPrimary", isPrimary)
+ .add("secondaryActionIcon", secondaryActionIcon)
+ .add("secondaryActionDescription", secondaryActionDescription)
+ .add("intent", intent)
+ .add("secondaryIntent", secondaryIntent)
+ .add("ids", ids)
+ .add("collapseCount", collapseCount)
+ .add("presence", presence)
+ .add("chatCapability", chatCapability)
+ .add("mIsInSubSection", mIsInSubSection)
+ .toString();
}
DetailViewEntry() {
@@ -1244,7 +1273,7 @@
* Build new {@link DetailViewEntry} and populate from the given values.
*/
public static DetailViewEntry fromValues(Context context, DataItem item,
- boolean isDirectoryEntry, long directoryId) {
+ boolean isDirectoryEntry, long directoryId, DataKind dataKind) {
final DetailViewEntry entry = new DetailViewEntry();
entry.id = item.getId();
entry.context = context;
@@ -1254,15 +1283,15 @@
ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
}
entry.mimetype = item.getMimeType();
- entry.kind = item.getKindString();
- entry.data = item.buildDataString();
+ entry.kind = dataKind.getKindString(context);
+ entry.data = item.buildDataString(context, dataKind);
- if (item.hasKindTypeColumn()) {
- entry.type = item.getKindTypeColumn();
+ if (item.hasKindTypeColumn(dataKind)) {
+ entry.type = item.getKindTypeColumn(dataKind);
// get type string
entry.typeString = "";
- for (EditType type : item.getDataKind().typeList) {
+ for (EditType type : dataKind.typeList) {
if (type.rawValue == entry.type) {
if (type.customColumn == null) {
// Non-custom type. Get its description from the resource
@@ -1295,12 +1324,7 @@
}
@Override
- public boolean collapseWith(DetailViewEntry entry) {
- // assert equal collapse keys
- if (!shouldCollapseWith(entry)) {
- return false;
- }
-
+ public void collapseWith(DetailViewEntry entry) {
// Choose the label associated with the highest type precedence.
if (TypePrecedence.getTypePrecedence(mimetype, type)
> TypePrecedence.getTypePrecedence(entry.mimetype, entry.type)) {
@@ -1326,7 +1350,6 @@
// Keep track of all the ids that have been collapsed with this one.
ids.add(entry.getId());
collapseCount++;
- return true;
}
@Override
@@ -1335,7 +1358,7 @@
return false;
}
- if (!ContactsUtils.shouldCollapse(mimetype, data, entry.mimetype, entry.data)) {
+ if (!MoreContactUtils.shouldCollapse(mimetype, data, entry.mimetype, entry.data)) {
return false;
}
@@ -1676,6 +1699,13 @@
views.data.setText(entry.data);
setMaxLines(views.data, entry.maxLines);
+ // Gray out the data item if it does not perform an action when clicked
+ // Set primary_text_color even if it might have been set by default to avoid
+ // views being gray sometimes when they are not supposed to, due to view reuse
+ ((TextView) view.findViewById(R.id.data)).setTextColor(
+ getResources().getColor((entry.intent == null) ?
+ R.color.secondary_text_color : R.color.primary_text_color));
+
// Set the default contact method
views.primaryIndicator.setVisibility(entry.isPrimary ? View.VISIBLE : View.GONE);
@@ -1743,6 +1773,11 @@
mViewEntryDimensions.getPaddingTop(),
secondaryActionViewContainer.getPaddingRight(),
mViewEntryDimensions.getPaddingBottom());
+
+ // Set the text direction
+ if (entry.textDirection != TEXT_DIRECTION_UNDEFINED) {
+ views.data.setTextDirection(entry.textDirection);
+ }
}
private void setMaxLines(TextView textView, int maxLines) {
@@ -1960,7 +1995,7 @@
}
} else if (mPrimaryPhoneUri != null) {
// There isn't anything selected, call the default number
- mContext.startActivity(ContactsUtils.getCallIntent(mPrimaryPhoneUri));
+ mContext.startActivity(CallUtil.getCallIntent(mPrimaryPhoneUri));
return true;
}
return false;
@@ -2003,7 +2038,7 @@
if (defaultGroupId == -1) return false;
final RawContact rawContact = (RawContact) mContactData.getRawContacts().get(0);
- final AccountType type = rawContact.getAccountType();
+ final AccountType type = rawContact.getAccountType(getContext());
// Offline or non-writeable account? Nothing to fix
if (type == null || !type.areContactsWritable()) return false;
diff --git a/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java b/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
index a66baa5..f85bd23 100644
--- a/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
@@ -116,7 +116,9 @@
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.
- if (mEnableSwipe) {
+ // 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 != 0) {
child.measure(MeasureSpec.makeMeasureSpec(
mMinFragmentWidth * MAX_FRAGMENT_VIEW_COUNT, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(screenHeight, MeasureSpec.EXACTLY));
@@ -163,11 +165,7 @@
mEnableSwipe = enable;
if (mUpdatesFragment != null) {
mUpdatesFragment.setVisibility(enable ? View.VISIBLE : View.GONE);
- if (mCurrentPage == ABOUT_PAGE) {
- mAboutFragment.requestFocus();
- } else {
- mUpdatesFragment.requestFocus();
- }
+ snapToEdge();
updateTouchInterceptors();
}
}
@@ -179,7 +177,7 @@
public void reset() {
if (mCurrentPage != ABOUT_PAGE) {
mCurrentPage = ABOUT_PAGE;
- snapToEdge();
+ snapToEdgeSmooth();
}
}
@@ -191,7 +189,7 @@
@Override
public void onClick(View v) {
mCurrentPage = ABOUT_PAGE;
- snapToEdge();
+ snapToEdgeSmooth();
}
};
@@ -199,7 +197,7 @@
@Override
public void onClick(View v) {
mCurrentPage = UPDATES_PAGE;
- snapToEdge();
+ snapToEdgeSmooth();
}
};
@@ -222,13 +220,27 @@
mLastScrollPosition = l;
}
+ /**
+ * Used to set initial scroll offset. Not smooth.
+ */
private void snapToEdge() {
- final int x = mCurrentPage == ABOUT_PAGE ? 0 : mAllowedHorizontalScrollLength;
- smoothScrollTo(x,0);
+ setScrollX(calculateHorizontalOffset());
updateTouchInterceptors();
}
/**
+ * Smooth version of snapToEdge().
+ */
+ private void snapToEdgeSmooth() {
+ smoothScrollTo(calculateHorizontalOffset(), 0);
+ updateTouchInterceptors();
+ }
+
+ private int calculateHorizontalOffset() {
+ return mCurrentPage == ABOUT_PAGE ? 0 : mAllowedHorizontalScrollLength;
+ }
+
+ /**
* Returns the desired page we should scroll to based on the current X scroll position and the
* current page.
*/
@@ -253,7 +265,7 @@
}
if (event.getAction() == MotionEvent.ACTION_UP) {
mCurrentPage = getDesiredPage();
- snapToEdge();
+ snapToEdgeSmooth();
return true;
}
return false;
diff --git a/src/com/android/contacts/detail/ContactDetailLayoutController.java b/src/com/android/contacts/detail/ContactDetailLayoutController.java
index fca426c..3c359ba 100644
--- a/src/com/android/contacts/detail/ContactDetailLayoutController.java
+++ b/src/com/android/contacts/detail/ContactDetailLayoutController.java
@@ -39,7 +39,7 @@
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
import com.android.contacts.model.Contact;
import com.android.contacts.util.PhoneCapabilityTester;
-import com.android.contacts.util.UriUtils;
+import com.android.contacts.common.util.UriUtils;
import com.android.contacts.widget.FrameLayoutWithOverlay;
import com.android.contacts.widget.TransitionAnimationView;
@@ -290,7 +290,7 @@
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);
+ mTransitionAnimationView.startMaskTransition(mContactData == null, -1);
}
} else {
// Small screen: We are on our own screen. Fade the data in, but only the first time
@@ -365,7 +365,7 @@
// 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);
+ mTransitionAnimationView.startMaskTransition(false, -1);
}
// Set the contact data (hide the static photo because the photo will already be in
diff --git a/src/com/android/contacts/detail/ContactDetailPhotoSetter.java b/src/com/android/contacts/detail/ContactDetailPhotoSetter.java
index eb832e9..2c4c2c9 100644
--- a/src/com/android/contacts/detail/ContactDetailPhotoSetter.java
+++ b/src/com/android/contacts/detail/ContactDetailPhotoSetter.java
@@ -25,7 +25,7 @@
import android.view.View.OnClickListener;
import android.widget.ImageView;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.activities.PhotoSelectionActivity;
import com.android.contacts.model.Contact;
import com.android.contacts.model.RawContactDeltaList;
diff --git a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java b/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
index 88c30c2..b578d28 100644
--- a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
@@ -31,9 +31,9 @@
import com.android.contacts.R;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
import com.android.contacts.detail.ContactDetailDisplayUtils.StreamPhotoTag;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.Contact;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.util.StreamItemEntry;
public class ContactDetailUpdatesFragment extends ListFragment implements FragmentKeyListener {
diff --git a/src/com/android/contacts/detail/ContactLoaderFragment.java b/src/com/android/contacts/detail/ContactLoaderFragment.java
index b3f1264..4ceebc6 100644
--- a/src/com/android/contacts/detail/ContactLoaderFragment.java
+++ b/src/com/android/contacts/detail/ContactLoaderFragment.java
@@ -42,12 +42,12 @@
import com.android.contacts.ContactSaveService;
import com.android.contacts.R;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
-import com.android.contacts.list.ShortcutIntentBuilder;
-import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
+import com.android.contacts.common.list.ShortcutIntentBuilder;
+import com.android.contacts.common.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
import com.android.contacts.model.Contact;
import com.android.contacts.model.ContactLoader;
import com.android.contacts.util.PhoneCapabilityTester;
-import com.android.internal.util.Objects;
+import com.google.common.base.Objects;
/**
* This is an invisible worker {@link Fragment} that loads the contact details for the contact card.
@@ -416,8 +416,8 @@
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
// Show only ringtones
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
- // Don't show 'Silent'
- intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
+ // Allow the user to pick a silent ringtone
+ intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
Uri ringtoneUri;
if (mCustomRingtone != null) {
diff --git a/src/com/android/contacts/detail/PhotoSelectionHandler.java b/src/com/android/contacts/detail/PhotoSelectionHandler.java
index b5e406a..9689acc 100644
--- a/src/com/android/contacts/detail/PhotoSelectionHandler.java
+++ b/src/com/android/contacts/detail/PhotoSelectionHandler.java
@@ -39,13 +39,14 @@
import com.android.contacts.R;
import com.android.contacts.editor.PhotoActionPopup;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.RawContactModifier;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.util.ContactPhotoUtils;
+import com.android.contacts.util.UiClosables;
import java.io.File;
@@ -79,9 +80,7 @@
}
public void destroy() {
- if (mPopup != null) {
- mPopup.dismiss();
- }
+ UiClosables.closeQuietly(mPopup);
}
public abstract PhotoActionListener getListener();
diff --git a/src/com/android/contacts/detail/StreamItemAdapter.java b/src/com/android/contacts/detail/StreamItemAdapter.java
index 15219cd..5c827dc 100644
--- a/src/com/android/contacts/detail/StreamItemAdapter.java
+++ b/src/com/android/contacts/detail/StreamItemAdapter.java
@@ -23,8 +23,8 @@
import android.widget.BaseAdapter;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+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;
diff --git a/src/com/android/contacts/dialog/ClearFrequentsDialog.java b/src/com/android/contacts/dialog/ClearFrequentsDialog.java
deleted file mode 100644
index 800ba9d..0000000
--- a/src/com/android/contacts/dialog/ClearFrequentsDialog.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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
- */
-
-package com.android.contacts.dialog;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.ContactsContract;
-
-import com.android.contacts.R;
-
-/**
- * Dialog that clears the frequently contacted list after confirming with the user.
- */
-public class ClearFrequentsDialog extends DialogFragment {
- /** Preferred way to show this dialog */
- public static void show(FragmentManager fragmentManager) {
- ClearFrequentsDialog dialog = new ClearFrequentsDialog();
- dialog.show(fragmentManager, "clearFrequents");
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final ContentResolver resolver = getActivity().getContentResolver();
- final OnClickListener okListener = new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- final IndeterminateProgressDialog progressDialog = IndeterminateProgressDialog.show(
- getFragmentManager(), getString(R.string.clearFrequentsProgress_title),
- null, 500);
- final AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- resolver.delete(ContactsContract.DataUsageFeedback.DELETE_USAGE_URI,
- null, null);
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- progressDialog.dismiss();
- }
- };
- task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
- };
- return new AlertDialog.Builder(getActivity())
- .setTitle(R.string.clearFrequentsConfirmation_title)
- .setMessage(R.string.clearFrequentsConfirmation)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(android.R.string.ok, okListener)
- .setCancelable(true)
- .create();
- }
-}
diff --git a/src/com/android/contacts/dialog/IndeterminateProgressDialog.java b/src/com/android/contacts/dialog/IndeterminateProgressDialog.java
deleted file mode 100644
index 21cd4bb..0000000
--- a/src/com/android/contacts/dialog/IndeterminateProgressDialog.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * 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
- */
-
-package com.android.contacts.dialog;
-
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.os.Handler;
-
-/**
- * Indeterminate progress dialog wrapped up in a DialogFragment to work even when the device
- * orientation is changed. Currently, only supports adding a title and/or message to the progress
- * dialog. There is an additional parameter of the minimum amount of time to display the progress
- * dialog even after a call to dismiss the dialog {@link #dismiss()} or
- * {@link #dismissAllowingStateLoss()}.
- * <p>
- * To create and show the progress dialog, use
- * {@link #show(FragmentManager, CharSequence, CharSequence, long)} and retain the reference to the
- * IndeterminateProgressDialog instance.
- * <p>
- * To dismiss the dialog, use {@link #dismiss()} or {@link #dismissAllowingStateLoss()} on the
- * instance. The instance returned by
- * {@link #show(FragmentManager, CharSequence, CharSequence, long)} is guaranteed to be valid
- * after a device orientation change because the {@link #setRetainInstance(boolean)} is called
- * internally with true.
- */
-public class IndeterminateProgressDialog extends DialogFragment {
- private static final String TAG = IndeterminateProgressDialog.class.getSimpleName();
-
- private CharSequence mTitle;
- private CharSequence mMessage;
- private long mMinDisplayTime;
- private long mShowTime = 0;
- private boolean mActivityReady = false;
- private Dialog mOldDialog;
- private final Handler mHandler = new Handler();
- private boolean mCalledSuperDismiss = false;
- private boolean mAllowStateLoss;
- private final Runnable mDismisser = new Runnable() {
- @Override
- public void run() {
- superDismiss();
- }
- };
-
- /**
- * Creates and shows an indeterminate progress dialog. Once the progress dialog is shown, it
- * will be shown for at least the minDisplayTime (in milliseconds), so that the progress dialog
- * does not flash in and out to quickly.
- */
- public static IndeterminateProgressDialog show(FragmentManager fragmentManager,
- CharSequence title, CharSequence message, long minDisplayTime) {
- IndeterminateProgressDialog dialogFragment = new IndeterminateProgressDialog();
- dialogFragment.mTitle = title;
- dialogFragment.mMessage = message;
- dialogFragment.mMinDisplayTime = minDisplayTime;
- dialogFragment.show(fragmentManager, TAG);
- dialogFragment.mShowTime = System.currentTimeMillis();
- dialogFragment.setCancelable(false);
-
- return dialogFragment;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setRetainInstance(true);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Create the progress dialog and set its properties
- final ProgressDialog dialog = new ProgressDialog(getActivity());
- dialog.setIndeterminate(true);
- dialog.setIndeterminateDrawable(null);
- dialog.setTitle(mTitle);
- dialog.setMessage(mMessage);
-
- return dialog;
- }
-
- @Override
- public void onStart() {
- super.onStart();
- mActivityReady = true;
-
- // Check if superDismiss() had been called before. This can happen if in a long
- // running operation, the user hits the home button and closes this fragment's activity.
- // Upon returning, we want to dismiss this progress dialog fragment.
- if (mCalledSuperDismiss) {
- superDismiss();
- }
- }
-
- @Override
- public void onStop() {
- super.onStop();
- mActivityReady = false;
- }
-
- /**
- * There is a race condition that is not handled properly by the DialogFragment class.
- * If we don't check that this onDismiss callback isn't for the old progress dialog from before
- * the device orientation change, then this will cause the newly created dialog after the
- * orientation change to be dismissed immediately.
- */
- @Override
- public void onDismiss(DialogInterface dialog) {
- if (mOldDialog != null && mOldDialog == dialog) {
- // This is the callback from the old progress dialog that was already dismissed before
- // the device orientation change, so just ignore it.
- return;
- }
- super.onDismiss(dialog);
- }
-
- /**
- * Save the old dialog that is about to get destroyed in case this is due to a change
- * in device orientation. This will allow us to intercept the callback to
- * {@link #onDismiss(DialogInterface)} in case the callback happens after a new progress dialog
- * instance was created.
- */
- @Override
- public void onDestroyView() {
- mOldDialog = getDialog();
- super.onDestroyView();
- }
-
- /**
- * This tells the progress dialog to dismiss itself after guaranteeing to be shown for the
- * specified time in {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
- */
- @Override
- public void dismiss() {
- mAllowStateLoss = false;
- dismissWhenReady();
- }
-
- /**
- * This tells the progress dialog to dismiss itself (with state loss) after guaranteeing to be
- * shown for the specified time in
- * {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
- */
- @Override
- public void dismissAllowingStateLoss() {
- mAllowStateLoss = true;
- dismissWhenReady();
- }
-
- /**
- * Tells the progress dialog to dismiss itself after guaranteeing that the dialog had been
- * showing for at least the minimum display time as set in
- * {@link #show(FragmentManager, CharSequence, CharSequence, long)}.
- */
- private void dismissWhenReady() {
- // Compute how long the dialog has been showing
- final long shownTime = System.currentTimeMillis() - mShowTime;
- if (shownTime >= mMinDisplayTime) {
- // dismiss immediately
- mHandler.post(mDismisser);
- } else {
- // Need to wait some more, so compute the amount of time to sleep.
- final long sleepTime = mMinDisplayTime - shownTime;
- mHandler.postDelayed(mDismisser, sleepTime);
- }
- }
-
- /**
- * Actually dismiss the dialog fragment.
- */
- private void superDismiss() {
- mCalledSuperDismiss = true;
- if (mActivityReady) {
- // The fragment is either in onStart or past it, but has not gotten to onStop yet.
- // It is safe to dismiss this dialog fragment.
- if (mAllowStateLoss) {
- super.dismissAllowingStateLoss();
- } else {
- super.dismiss();
- }
- }
- // If mActivityReady is false, then this dialog fragment has already passed the onStop
- // state. This can happen if the user hit the 'home' button before this dialog fragment was
- // dismissed or if there is a configuration change.
- // In the event that this dialog fragment is re-attached and reaches onStart (e.g.,
- // because the user returns to this fragment's activity or the device configuration change
- // has re-attached this dialog fragment), because the mCalledSuperDismiss flag was set to
- // true, this dialog fragment will be dismissed within onStart. So, there's nothing else
- // that needs to be done.
- }
-}
diff --git a/src/com/android/contacts/dialpad/DialpadFragment.java b/src/com/android/contacts/dialpad/DialpadFragment.java
deleted file mode 100644
index 13ebfef..0000000
--- a/src/com/android/contacts/dialpad/DialpadFragment.java
+++ /dev/null
@@ -1,1623 +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.dialpad;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.media.AudioManager;
-import android.media.ToneGenerator;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.SystemProperties;
-import android.provider.Contacts.Intents.Insert;
-import android.provider.Contacts.People;
-import android.provider.Contacts.Phones;
-import android.provider.Contacts.PhonesColumns;
-import android.provider.Settings;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-import android.text.Editable;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.method.DialerKeyListener;
-import android.text.style.RelativeSizeSpan;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.PopupMenu;
-import android.widget.TextView;
-
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.R;
-import com.android.contacts.SpecialCharSequenceMgr;
-import com.android.contacts.activities.DialtactsActivity;
-import com.android.contacts.util.Constants;
-import com.android.contacts.util.PhoneNumberFormatter;
-import com.android.contacts.util.StopWatch;
-import com.android.internal.telephony.ITelephony;
-import com.android.phone.CallLogAsync;
-import com.android.phone.HapticFeedback;
-
-/**
- * Fragment that displays a twelve-key phone dialpad.
- */
-public class DialpadFragment extends Fragment
- implements View.OnClickListener,
- View.OnLongClickListener, View.OnKeyListener,
- AdapterView.OnItemClickListener, TextWatcher,
- PopupMenu.OnMenuItemClickListener,
- DialpadImageButton.OnPressedListener {
- private static final String TAG = DialpadFragment.class.getSimpleName();
-
- private static final boolean DEBUG = DialtactsActivity.DEBUG;
-
- private static final String EMPTY_NUMBER = "";
-
- /** The length of DTMF tones in milliseconds */
- private static final int TONE_LENGTH_MS = 150;
- private static final int TONE_LENGTH_INFINITE = -1;
-
- /** The DTMF tone volume relative to other sounds in the stream */
- private static final int TONE_RELATIVE_VOLUME = 80;
-
- /** Stream type used to play the DTMF tones off call, and mapped to the volume control keys */
- private static final int DIAL_TONE_STREAM_TYPE = AudioManager.STREAM_DTMF;
-
- /**
- * View (usually FrameLayout) containing mDigits field. This can be null, in which mDigits
- * isn't enclosed by the container.
- */
- private View mDigitsContainer;
- private EditText mDigits;
-
- /** Remembers if we need to clear digits field when the screen is completely gone. */
- private boolean mClearDigitsOnStop;
-
- private View mDelete;
- private ToneGenerator mToneGenerator;
- private final Object mToneGeneratorLock = new Object();
- private View mDialpad;
- /**
- * Remembers the number of dialpad buttons which are pressed at this moment.
- * If it becomes 0, meaning no buttons are pressed, we'll call
- * {@link ToneGenerator#stopTone()}; the method shouldn't be called unless the last key is
- * released.
- */
- private int mDialpadPressCount;
-
- private View mDialButtonContainer;
- private View mDialButton;
- private ListView mDialpadChooser;
- private DialpadChooserAdapter mDialpadChooserAdapter;
-
- /**
- * Regular expression prohibiting manual phone call. Can be empty, which means "no rule".
- */
- private String mProhibitedPhoneNumberRegexp;
-
-
- // Last number dialed, retrieved asynchronously from the call DB
- // in onCreate. This number is displayed when the user hits the
- // send key and cleared in onPause.
- private final CallLogAsync mCallLog = new CallLogAsync();
- private String mLastNumberDialed = EMPTY_NUMBER;
-
- // determines if we want to playback local DTMF tones.
- private boolean mDTMFToneEnabled;
-
- // Vibration (haptic feedback) for dialer key presses.
- private final HapticFeedback mHaptic = new HapticFeedback();
-
- /** Identifier for the "Add Call" intent extra. */
- private static final String ADD_CALL_MODE_KEY = "add_call_mode";
-
- /**
- * Identifier for intent extra for sending an empty Flash message for
- * CDMA networks. This message is used by the network to simulate a
- * press/depress of the "hookswitch" of a landline phone. Aka "empty flash".
- *
- * TODO: Using an intent extra to tell the phone to send this flash is a
- * temporary measure. To be replaced with an ITelephony call in the future.
- * TODO: Keep in sync with the string defined in OutgoingCallBroadcaster.java
- * in Phone app until this is replaced with the ITelephony API.
- */
- private static final String EXTRA_SEND_EMPTY_FLASH
- = "com.android.phone.extra.SEND_EMPTY_FLASH";
-
- private String mCurrentCountryIso;
-
- private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
- /**
- * Listen for phone state changes so that we can take down the
- * "dialpad chooser" if the phone becomes idle while the
- * chooser UI is visible.
- */
- @Override
- public void onCallStateChanged(int state, String incomingNumber) {
- // Log.i(TAG, "PhoneStateListener.onCallStateChanged: "
- // + state + ", '" + incomingNumber + "'");
- if ((state == TelephonyManager.CALL_STATE_IDLE) && dialpadChooserVisible()) {
- // Log.i(TAG, "Call ended with dialpad chooser visible! Taking it down...");
- // Note there's a race condition in the UI here: the
- // dialpad chooser could conceivably disappear (on its
- // own) at the exact moment the user was trying to select
- // one of the choices, which would be confusing. (But at
- // least that's better than leaving the dialpad chooser
- // onscreen, but useless...)
- showDialpadChooser(false);
- }
- }
- };
-
- private boolean mWasEmptyBeforeTextChange;
-
- /**
- * This field is set to true while processing an incoming DIAL intent, in order to make sure
- * that SpecialCharSequenceMgr actions can be triggered by user input but *not* by a
- * tel: URI passed by some other app. It will be set to false when all digits are cleared.
- */
- private boolean mDigitsFilledByIntent;
-
- private boolean mStartedFromNewIntent = false;
-
- private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent";
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- mWasEmptyBeforeTextChange = TextUtils.isEmpty(s);
- }
-
- @Override
- public void onTextChanged(CharSequence input, int start, int before, int changeCount) {
- if (mWasEmptyBeforeTextChange != TextUtils.isEmpty(input)) {
- final Activity activity = getActivity();
- if (activity != null) {
- activity.invalidateOptionsMenu();
- }
- }
-
- // DTMF Tones do not need to be played here any longer -
- // the DTMF dialer handles that functionality now.
- }
-
- @Override
- public void afterTextChanged(Editable input) {
- // When DTMF dialpad buttons are being pressed, we delay SpecialCharSequencMgr sequence,
- // since some of SpecialCharSequenceMgr's behavior is too abrupt for the "touch-down"
- // behavior.
- if (!mDigitsFilledByIntent &&
- SpecialCharSequenceMgr.handleChars(getActivity(), input.toString(), mDigits)) {
- // A special sequence was entered, clear the digits
- mDigits.getText().clear();
- }
-
- if (isDigitsEmpty()) {
- mDigitsFilledByIntent = false;
- mDigits.setCursorVisible(false);
- }
-
- updateDialAndDeleteButtonEnabledState();
- }
-
- @Override
- public void onCreate(Bundle state) {
- super.onCreate(state);
-
- mCurrentCountryIso = ContactsUtils.getCurrentCountryIso(getActivity());
-
- try {
- mHaptic.init(getActivity(),
- getResources().getBoolean(R.bool.config_enable_dialer_key_vibration));
- } catch (Resources.NotFoundException nfe) {
- Log.e(TAG, "Vibrate control bool missing.", nfe);
- }
-
- setHasOptionsMenu(true);
-
- mProhibitedPhoneNumberRegexp = getResources().getString(
- R.string.config_prohibited_phone_number_regexp);
-
- if (state != null) {
- mDigitsFilledByIntent = state.getBoolean(PREF_DIGITS_FILLED_BY_INTENT);
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- View fragmentView = inflater.inflate(R.layout.dialpad_fragment, container, false);
-
- // Load up the resources for the text field.
- Resources r = getResources();
-
- mDigitsContainer = fragmentView.findViewById(R.id.digits_container);
- mDigits = (EditText) fragmentView.findViewById(R.id.digits);
- mDigits.setKeyListener(UnicodeDialerKeyListener.INSTANCE);
- mDigits.setOnClickListener(this);
- mDigits.setOnKeyListener(this);
- mDigits.setOnLongClickListener(this);
- mDigits.addTextChangedListener(this);
- PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(getActivity(), mDigits);
- // Check for the presence of the keypad
- View oneButton = fragmentView.findViewById(R.id.one);
- if (oneButton != null) {
- setupKeypad(fragmentView);
- }
-
- DisplayMetrics dm = getResources().getDisplayMetrics();
- int minCellSize = (int) (56 * dm.density); // 56dip == minimum size of menu buttons
- int cellCount = dm.widthPixels / minCellSize;
- int fakeMenuItemWidth = dm.widthPixels / cellCount;
- mDialButtonContainer = fragmentView.findViewById(R.id.dialButtonContainer);
- // If in portrait, add padding to the dial button since we need space for the
- // search and menu/overflow buttons.
- if (mDialButtonContainer != null && !ContactsUtils.isLandscape(this.getActivity())) {
- mDialButtonContainer.setPadding(
- fakeMenuItemWidth, mDialButtonContainer.getPaddingTop(),
- fakeMenuItemWidth, mDialButtonContainer.getPaddingBottom());
- }
- mDialButton = fragmentView.findViewById(R.id.dialButton);
- if (r.getBoolean(R.bool.config_show_onscreen_dial_button)) {
- mDialButton.setOnClickListener(this);
- mDialButton.setOnLongClickListener(this);
- } else {
- mDialButton.setVisibility(View.GONE); // It's VISIBLE by default
- mDialButton = null;
- }
-
- mDelete = fragmentView.findViewById(R.id.deleteButton);
- if (mDelete != null) {
- mDelete.setOnClickListener(this);
- mDelete.setOnLongClickListener(this);
- }
-
- mDialpad = fragmentView.findViewById(R.id.dialpad); // This is null in landscape mode.
-
- // In landscape we put the keyboard in phone mode.
- if (null == mDialpad) {
- mDigits.setInputType(android.text.InputType.TYPE_CLASS_PHONE);
- } else {
- mDigits.setCursorVisible(false);
- }
-
- // Set up the "dialpad chooser" UI; see showDialpadChooser().
- mDialpadChooser = (ListView) fragmentView.findViewById(R.id.dialpadChooser);
- mDialpadChooser.setOnItemClickListener(this);
-
- return fragmentView;
- }
-
- private boolean isLayoutReady() {
- return mDigits != null;
- }
-
- public EditText getDigitsWidget() {
- return mDigits;
- }
-
- /**
- * @return true when {@link #mDigits} is actually filled by the Intent.
- */
- private boolean fillDigitsIfNecessary(Intent intent) {
- final String action = intent.getAction();
- if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)) {
- Uri uri = intent.getData();
- if (uri != null) {
- if (Constants.SCHEME_TEL.equals(uri.getScheme())) {
- // Put the requested number into the input area
- String data = uri.getSchemeSpecificPart();
- // Remember it is filled via Intent.
- mDigitsFilledByIntent = true;
- final String converted = PhoneNumberUtils.convertKeypadLettersToDigits(
- PhoneNumberUtils.replaceUnicodeDigits(data));
- setFormattedDigits(converted, null);
- return true;
- } else {
- String type = intent.getType();
- if (People.CONTENT_ITEM_TYPE.equals(type)
- || Phones.CONTENT_ITEM_TYPE.equals(type)) {
- // Query the phone number
- Cursor c = getActivity().getContentResolver().query(intent.getData(),
- new String[] {PhonesColumns.NUMBER, PhonesColumns.NUMBER_KEY},
- null, null, null);
- if (c != null) {
- try {
- if (c.moveToFirst()) {
- // Remember it is filled via Intent.
- mDigitsFilledByIntent = true;
- // Put the number into the input area
- setFormattedDigits(c.getString(0), c.getString(1));
- return true;
- }
- } finally {
- c.close();
- }
- }
- }
- }
- }
- }
-
- return false;
- }
-
- /**
- * Determines whether an add call operation is requested.
- *
- * @param intent The intent.
- * @return {@literal true} if add call operation was requested. {@literal false} otherwise.
- */
- private static boolean isAddCallMode(Intent intent) {
- final String action = intent.getAction();
- if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)) {
- // see if we are "adding a call" from the InCallScreen; false by default.
- return intent.getBooleanExtra(ADD_CALL_MODE_KEY, false);
- } else {
- return false;
- }
- }
-
- /**
- * Checks the given Intent and changes dialpad's UI state. For example, if the Intent requires
- * the screen to enter "Add Call" mode, this method will show correct UI for the mode.
- */
- private void configureScreenFromIntent(Intent intent) {
- if (!isLayoutReady()) {
- // This happens typically when parent's Activity#onNewIntent() is called while
- // Fragment#onCreateView() isn't called yet, and thus we cannot configure Views at
- // this point. onViewCreate() should call this method after preparing layouts, so
- // just ignore this call now.
- Log.i(TAG,
- "Screen configuration is requested before onCreateView() is called. Ignored");
- return;
- }
-
- boolean needToShowDialpadChooser = false;
-
- // Be sure *not* to show the dialpad chooser if this is an
- // explicit "Add call" action, though.
- final boolean isAddCallMode = isAddCallMode(intent);
- if (!isAddCallMode) {
-
- // Don't show the chooser when called via onNewIntent() and phone number is present.
- // i.e. User clicks a telephone link from gmail for example.
- // In this case, we want to show the dialpad with the phone number.
- final boolean digitsFilled = fillDigitsIfNecessary(intent);
- if (!(mStartedFromNewIntent && digitsFilled)) {
-
- final String action = intent.getAction();
- if (Intent.ACTION_DIAL.equals(action) || Intent.ACTION_VIEW.equals(action)
- || Intent.ACTION_MAIN.equals(action)) {
- // If there's already an active call, bring up an intermediate UI to
- // make the user confirm what they really want to do.
- if (phoneIsInUse()) {
- needToShowDialpadChooser = true;
- }
- }
-
- }
- }
-
- showDialpadChooser(needToShowDialpadChooser);
- }
-
- public void setStartedFromNewIntent(boolean value) {
- mStartedFromNewIntent = value;
- }
-
- /**
- * Sets formatted digits to digits field.
- */
- private void setFormattedDigits(String data, String normalizedNumber) {
- // strip the non-dialable numbers out of the data string.
- String dialString = PhoneNumberUtils.extractNetworkPortion(data);
- dialString =
- PhoneNumberUtils.formatNumber(dialString, normalizedNumber, mCurrentCountryIso);
- if (!TextUtils.isEmpty(dialString)) {
- Editable digits = mDigits.getText();
- digits.replace(0, digits.length(), dialString);
- // for some reason this isn't getting called in the digits.replace call above..
- // but in any case, this will make sure the background drawable looks right
- afterTextChanged(digits);
- }
- }
-
- private void setupKeypad(View fragmentView) {
- int[] buttonIds = new int[] { R.id.one, R.id.two, R.id.three, R.id.four, R.id.five,
- R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.zero, R.id.star, R.id.pound};
- for (int id : buttonIds) {
- ((DialpadImageButton) fragmentView.findViewById(id)).setOnPressedListener(this);
- }
-
- // Long-pressing one button will initiate Voicemail.
- fragmentView.findViewById(R.id.one).setOnLongClickListener(this);
-
- // Long-pressing zero button will enter '+' instead.
- fragmentView.findViewById(R.id.zero).setOnLongClickListener(this);
-
- }
-
- @Override
- public void onStart() {
- super.onStart();
- configureScreenFromIntent(getActivity().getIntent());
- setStartedFromNewIntent(false);
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- final StopWatch stopWatch = StopWatch.start("Dialpad.onResume");
-
- // Query the last dialed number. Do it first because hitting
- // the DB is 'slow'. This call is asynchronous.
- queryLastOutgoingCall();
-
- stopWatch.lap("qloc");
-
- // retrieve the DTMF tone play back setting.
- mDTMFToneEnabled = Settings.System.getInt(getActivity().getContentResolver(),
- Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
-
- stopWatch.lap("dtwd");
-
- // Retrieve the haptic feedback setting.
- mHaptic.checkSystemSetting();
-
- stopWatch.lap("hptc");
-
- // if the mToneGenerator creation fails, just continue without it. It is
- // a local audio signal, and is not as important as the dtmf tone itself.
- synchronized (mToneGeneratorLock) {
- if (mToneGenerator == null) {
- try {
- mToneGenerator = new ToneGenerator(DIAL_TONE_STREAM_TYPE, TONE_RELATIVE_VOLUME);
- } catch (RuntimeException e) {
- Log.w(TAG, "Exception caught while creating local tone generator: " + e);
- mToneGenerator = null;
- }
- }
- }
- stopWatch.lap("tg");
- // Prevent unnecessary confusion. Reset the press count anyway.
- mDialpadPressCount = 0;
-
- Activity parent = getActivity();
- if (parent instanceof DialtactsActivity) {
- // See if we were invoked with a DIAL intent. If we were, fill in the appropriate
- // digits in the dialer field.
- fillDigitsIfNecessary(parent.getIntent());
- }
-
- stopWatch.lap("fdin");
-
- // While we're in the foreground, listen for phone state changes,
- // purely so that we can take down the "dialpad chooser" if the
- // phone becomes idle while the chooser UI is visible.
- TelephonyManager telephonyManager =
- (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
- telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
-
- stopWatch.lap("tm");
-
- // Potentially show hint text in the mDigits field when the user
- // hasn't typed any digits yet. (If there's already an active call,
- // this hint text will remind the user that he's about to add a new
- // call.)
- //
- // TODO: consider adding better UI for the case where *both* lines
- // are currently in use. (Right now we let the user try to add
- // another call, but that call is guaranteed to fail. Perhaps the
- // entire dialer UI should be disabled instead.)
- if (phoneIsInUse()) {
- final SpannableString hint = new SpannableString(
- getActivity().getString(R.string.dialerDialpadHintText));
- hint.setSpan(new RelativeSizeSpan(0.8f), 0, hint.length(), 0);
- mDigits.setHint(hint);
- } else {
- // Common case; no hint necessary.
- mDigits.setHint(null);
-
- // Also, a sanity-check: the "dialpad chooser" UI should NEVER
- // be visible if the phone is idle!
- showDialpadChooser(false);
- }
-
- stopWatch.lap("hnt");
-
- updateDialAndDeleteButtonEnabledState();
-
- stopWatch.lap("bes");
-
- stopWatch.stopAndLog(TAG, 50);
- }
-
- @Override
- public void onPause() {
- super.onPause();
-
- // Stop listening for phone state changes.
- TelephonyManager telephonyManager =
- (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
- telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
-
- // Make sure we don't leave this activity with a tone still playing.
- stopTone();
- // Just in case reset the counter too.
- mDialpadPressCount = 0;
-
- synchronized (mToneGeneratorLock) {
- if (mToneGenerator != null) {
- mToneGenerator.release();
- mToneGenerator = null;
- }
- }
- // TODO: I wonder if we should not check if the AsyncTask that
- // lookup the last dialed number has completed.
- mLastNumberDialed = EMPTY_NUMBER; // Since we are going to query again, free stale number.
-
- SpecialCharSequenceMgr.cleanup();
- }
-
- @Override
- public void onStop() {
- super.onStop();
- if (mClearDigitsOnStop) {
- mClearDigitsOnStop = false;
- mDigits.getText().clear();
- }
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putBoolean(PREF_DIGITS_FILLED_BY_INTENT, mDigitsFilledByIntent);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- // Landscape dialer uses the real actionbar menu, whereas portrait uses a fake one
- // that is created using constructPopupMenu()
- if (ContactsUtils.isLandscape(this.getActivity()) ||
- ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
- isLayoutReady() && mDialpadChooser != null) {
- inflater.inflate(R.menu.dialpad_options, menu);
- }
- }
-
- @Override
- public void onPrepareOptionsMenu(Menu menu) {
- // Hardware menu key should be available and Views should already be ready.
- if (ContactsUtils.isLandscape(this.getActivity()) ||
- ViewConfiguration.get(getActivity()).hasPermanentMenuKey() &&
- isLayoutReady() && mDialpadChooser != null) {
- setupMenuItems(menu);
- }
- }
-
- private void setupMenuItems(Menu menu) {
- final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings_dialpad);
- final MenuItem addToContactMenuItem = menu.findItem(R.id.menu_add_contacts);
- final MenuItem twoSecPauseMenuItem = menu.findItem(R.id.menu_2s_pause);
- final MenuItem waitMenuItem = menu.findItem(R.id.menu_add_wait);
-
- // Check if all the menu items are inflated correctly. As a shortcut, we assume all menu
- // items are ready if the first item is non-null.
- if (callSettingsMenuItem == null) {
- return;
- }
-
- final Activity activity = getActivity();
- if (activity != null && ViewConfiguration.get(activity).hasPermanentMenuKey()) {
- // Call settings should be available via its parent Activity.
- callSettingsMenuItem.setVisible(false);
- } else {
- callSettingsMenuItem.setVisible(true);
- callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent());
- }
-
- // We show "add to contacts", "2sec pause", and "add wait" menus only when the user is
- // seeing usual dialpads and has typed at least one digit.
- // We never show a menu if the "choose dialpad" UI is up.
- if (dialpadChooserVisible() || isDigitsEmpty()) {
- addToContactMenuItem.setVisible(false);
- twoSecPauseMenuItem.setVisible(false);
- waitMenuItem.setVisible(false);
- } else {
- final CharSequence digits = mDigits.getText();
-
- // Put the current digits string into an intent
- addToContactMenuItem.setIntent(getAddToContactIntent(digits));
- addToContactMenuItem.setVisible(true);
-
- // Check out whether to show Pause & Wait option menu items
- int selectionStart;
- int selectionEnd;
- String strDigits = digits.toString();
-
- selectionStart = mDigits.getSelectionStart();
- selectionEnd = mDigits.getSelectionEnd();
-
- if (selectionStart != -1) {
- if (selectionStart > selectionEnd) {
- // swap it as we want start to be less then end
- int tmp = selectionStart;
- selectionStart = selectionEnd;
- selectionEnd = tmp;
- }
-
- if (selectionStart != 0) {
- // Pause can be visible if cursor is not in the begining
- twoSecPauseMenuItem.setVisible(true);
-
- // For Wait to be visible set of condition to meet
- waitMenuItem.setVisible(showWait(selectionStart, selectionEnd, strDigits));
- } else {
- // cursor in the beginning both pause and wait to be invisible
- twoSecPauseMenuItem.setVisible(false);
- waitMenuItem.setVisible(false);
- }
- } else {
- twoSecPauseMenuItem.setVisible(true);
-
- // cursor is not selected so assume new digit is added to the end
- int strLength = strDigits.length();
- waitMenuItem.setVisible(showWait(strLength, strLength, strDigits));
- }
- }
- }
-
- private static Intent getAddToContactIntent(CharSequence digits) {
- final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.putExtra(Insert.PHONE, digits);
- intent.setType(People.CONTENT_ITEM_TYPE);
- return intent;
- }
-
- private void keyPressed(int keyCode) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_1:
- playTone(ToneGenerator.TONE_DTMF_1, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_2:
- playTone(ToneGenerator.TONE_DTMF_2, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_3:
- playTone(ToneGenerator.TONE_DTMF_3, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_4:
- playTone(ToneGenerator.TONE_DTMF_4, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_5:
- playTone(ToneGenerator.TONE_DTMF_5, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_6:
- playTone(ToneGenerator.TONE_DTMF_6, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_7:
- playTone(ToneGenerator.TONE_DTMF_7, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_8:
- playTone(ToneGenerator.TONE_DTMF_8, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_9:
- playTone(ToneGenerator.TONE_DTMF_9, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_0:
- playTone(ToneGenerator.TONE_DTMF_0, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_POUND:
- playTone(ToneGenerator.TONE_DTMF_P, TONE_LENGTH_INFINITE);
- break;
- case KeyEvent.KEYCODE_STAR:
- playTone(ToneGenerator.TONE_DTMF_S, TONE_LENGTH_INFINITE);
- break;
- default:
- break;
- }
-
- mHaptic.vibrate();
- KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
- mDigits.onKeyDown(keyCode, event);
-
- // If the cursor is at the end of the text we hide it.
- final int length = mDigits.length();
- if (length == mDigits.getSelectionStart() && length == mDigits.getSelectionEnd()) {
- mDigits.setCursorVisible(false);
- }
- }
-
- @Override
- public boolean onKey(View view, int keyCode, KeyEvent event) {
- switch (view.getId()) {
- case R.id.digits:
- if (keyCode == KeyEvent.KEYCODE_ENTER) {
- dialButtonPressed();
- return true;
- }
- break;
- }
- return false;
- }
-
- /**
- * When a key is pressed, we start playing DTMF tone, do vibration, and enter the digit
- * immediately. When a key is released, we stop the tone. Note that the "key press" event will
- * be delivered by the system with certain amount of delay, it won't be synced with user's
- * actual "touch-down" behavior.
- */
- @Override
- public void onPressed(View view, boolean pressed) {
- if (DEBUG) Log.d(TAG, "onPressed(). view: " + view + ", pressed: " + pressed);
- if (pressed) {
- switch (view.getId()) {
- case R.id.one: {
- keyPressed(KeyEvent.KEYCODE_1);
- break;
- }
- case R.id.two: {
- keyPressed(KeyEvent.KEYCODE_2);
- break;
- }
- case R.id.three: {
- keyPressed(KeyEvent.KEYCODE_3);
- break;
- }
- case R.id.four: {
- keyPressed(KeyEvent.KEYCODE_4);
- break;
- }
- case R.id.five: {
- keyPressed(KeyEvent.KEYCODE_5);
- break;
- }
- case R.id.six: {
- keyPressed(KeyEvent.KEYCODE_6);
- break;
- }
- case R.id.seven: {
- keyPressed(KeyEvent.KEYCODE_7);
- break;
- }
- case R.id.eight: {
- keyPressed(KeyEvent.KEYCODE_8);
- break;
- }
- case R.id.nine: {
- keyPressed(KeyEvent.KEYCODE_9);
- break;
- }
- case R.id.zero: {
- keyPressed(KeyEvent.KEYCODE_0);
- break;
- }
- case R.id.pound: {
- keyPressed(KeyEvent.KEYCODE_POUND);
- break;
- }
- case R.id.star: {
- keyPressed(KeyEvent.KEYCODE_STAR);
- break;
- }
- default: {
- Log.wtf(TAG, "Unexpected onTouch(ACTION_DOWN) event from: " + view);
- break;
- }
- }
- mDialpadPressCount++;
- } else {
- view.jumpDrawablesToCurrentState();
- mDialpadPressCount--;
- if (mDialpadPressCount < 0) {
- // e.g.
- // - when the user action is detected as horizontal swipe, at which only
- // "up" event is thrown.
- // - when the user long-press '0' button, at which dialpad will decrease this count
- // while it still gets press-up event here.
- if (DEBUG) Log.d(TAG, "mKeyPressCount become negative.");
- stopTone();
- mDialpadPressCount = 0;
- } else if (mDialpadPressCount == 0) {
- stopTone();
- }
- }
- }
-
- @Override
- public void onClick(View view) {
- switch (view.getId()) {
- case R.id.deleteButton: {
- keyPressed(KeyEvent.KEYCODE_DEL);
- return;
- }
- case R.id.dialButton: {
- mHaptic.vibrate(); // Vibrate here too, just like we do for the regular keys
- dialButtonPressed();
- return;
- }
- case R.id.digits: {
- if (!isDigitsEmpty()) {
- mDigits.setCursorVisible(true);
- }
- return;
- }
- default: {
- Log.wtf(TAG, "Unexpected onClick() event from: " + view);
- return;
- }
- }
- }
-
- public PopupMenu constructPopupMenu(View anchorView) {
- final Context context = getActivity();
- if (context == null) {
- return null;
- }
- final PopupMenu popupMenu = new PopupMenu(context, anchorView);
- final Menu menu = popupMenu.getMenu();
- popupMenu.inflate(R.menu.dialpad_options);
- popupMenu.setOnMenuItemClickListener(this);
- setupMenuItems(menu);
- return popupMenu;
- }
-
- @Override
- public boolean onLongClick(View view) {
- final Editable digits = mDigits.getText();
- final int id = view.getId();
- switch (id) {
- case R.id.deleteButton: {
- digits.clear();
- // TODO: The framework forgets to clear the pressed
- // status of disabled button. Until this is fixed,
- // clear manually the pressed status. b/2133127
- mDelete.setPressed(false);
- return true;
- }
- case R.id.one: {
- // '1' may be already entered since we rely on onTouch() event for numeric buttons.
- // Just for safety we also check if the digits field is empty or not.
- if (isDigitsEmpty() || TextUtils.equals(mDigits.getText(), "1")) {
- // We'll try to initiate voicemail and thus we want to remove irrelevant string.
- removePreviousDigitIfPossible();
-
- if (isVoicemailAvailable()) {
- callVoicemail();
- } else if (getActivity() != null) {
- // Voicemail is unavailable maybe because Airplane mode is turned on.
- // Check the current status and show the most appropriate error message.
- final boolean isAirplaneModeOn =
- Settings.System.getInt(getActivity().getContentResolver(),
- Settings.System.AIRPLANE_MODE_ON, 0) != 0;
- if (isAirplaneModeOn) {
- DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
- R.string.dialog_voicemail_airplane_mode_message);
- dialogFragment.show(getFragmentManager(),
- "voicemail_request_during_airplane_mode");
- } else {
- DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
- R.string.dialog_voicemail_not_ready_message);
- dialogFragment.show(getFragmentManager(), "voicemail_not_ready");
- }
- }
- return true;
- }
- return false;
- }
- case R.id.zero: {
- // Remove tentative input ('0') done by onTouch().
- removePreviousDigitIfPossible();
- keyPressed(KeyEvent.KEYCODE_PLUS);
-
- // Stop tone immediately and decrease the press count, so that possible subsequent
- // dial button presses won't honor the 0 click any more.
- // Note: this *will* make mDialpadPressCount negative when the 0 key is released,
- // which should be handled appropriately.
- stopTone();
- if (mDialpadPressCount > 0) mDialpadPressCount--;
-
- return true;
- }
- case R.id.digits: {
- // Right now EditText does not show the "paste" option when cursor is not visible.
- // To show that, make the cursor visible, and return false, letting the EditText
- // show the option by itself.
- mDigits.setCursorVisible(true);
- return false;
- }
- case R.id.dialButton: {
- if (isDigitsEmpty()) {
- handleDialButtonClickWithEmptyDigits();
- // This event should be consumed so that onClick() won't do the exactly same
- // thing.
- return true;
- } else {
- return false;
- }
- }
- }
- return false;
- }
-
- /**
- * Remove the digit just before the current position. This can be used if we want to replace
- * the previous digit or cancel previously entered character.
- */
- private void removePreviousDigitIfPossible() {
- final Editable editable = mDigits.getText();
- final int currentPosition = mDigits.getSelectionStart();
- if (currentPosition > 0) {
- mDigits.setSelection(currentPosition);
- mDigits.getText().delete(currentPosition - 1, currentPosition);
- }
- }
-
- public void callVoicemail() {
- startActivity(ContactsUtils.getVoicemailIntent());
- mClearDigitsOnStop = true;
- getActivity().finish();
- }
-
- public static class ErrorDialogFragment extends DialogFragment {
- private int mTitleResId;
- private int mMessageResId;
-
- private static final String ARG_TITLE_RES_ID = "argTitleResId";
- private static final String ARG_MESSAGE_RES_ID = "argMessageResId";
-
- public static ErrorDialogFragment newInstance(int messageResId) {
- return newInstance(0, messageResId);
- }
-
- public static ErrorDialogFragment newInstance(int titleResId, int messageResId) {
- final ErrorDialogFragment fragment = new ErrorDialogFragment();
- final Bundle args = new Bundle();
- args.putInt(ARG_TITLE_RES_ID, titleResId);
- args.putInt(ARG_MESSAGE_RES_ID, messageResId);
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mTitleResId = getArguments().getInt(ARG_TITLE_RES_ID);
- mMessageResId = getArguments().getInt(ARG_MESSAGE_RES_ID);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- if (mTitleResId != 0) {
- builder.setTitle(mTitleResId);
- }
- if (mMessageResId != 0) {
- builder.setMessage(mMessageResId);
- }
- builder.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dismiss();
- }
- });
- return builder.create();
- }
- }
-
- /**
- * In most cases, when the dial button is pressed, there is a
- * number in digits area. Pack it in the intent, start the
- * outgoing call broadcast as a separate task and finish this
- * activity.
- *
- * When there is no digit and the phone is CDMA and off hook,
- * we're sending a blank flash for CDMA. CDMA networks use Flash
- * messages when special processing needs to be done, mainly for
- * 3-way or call waiting scenarios. Presumably, here we're in a
- * special 3-way scenario where the network needs a blank flash
- * before being able to add the new participant. (This is not the
- * case with all 3-way calls, just certain CDMA infrastructures.)
- *
- * Otherwise, there is no digit, display the last dialed
- * number. Don't finish since the user may want to edit it. The
- * user needs to press the dial button again, to dial it (general
- * case described above).
- */
- public void dialButtonPressed() {
- if (isDigitsEmpty()) { // No number entered.
- handleDialButtonClickWithEmptyDigits();
- } else {
- final String number = mDigits.getText().toString();
-
- // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
- // test equipment.
- // TODO: clean it up.
- if (number != null
- && !TextUtils.isEmpty(mProhibitedPhoneNumberRegexp)
- && number.matches(mProhibitedPhoneNumberRegexp)
- && (SystemProperties.getInt("persist.radio.otaspdial", 0) != 1)) {
- Log.i(TAG, "The phone number is prohibited explicitly by a rule.");
- if (getActivity() != null) {
- DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
- R.string.dialog_phone_call_prohibited_message);
- dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
- }
-
- // Clear the digits just in case.
- mDigits.getText().clear();
- } else {
- final Intent intent = ContactsUtils.getCallIntent(number,
- (getActivity() instanceof DialtactsActivity ?
- ((DialtactsActivity)getActivity()).getCallOrigin() : null));
- startActivity(intent);
- mClearDigitsOnStop = true;
- getActivity().finish();
- }
- }
- }
-
- private void handleDialButtonClickWithEmptyDigits() {
- if (phoneIsCdma() && phoneIsOffhook()) {
- // This is really CDMA specific. On GSM is it possible
- // to be off hook and wanted to add a 3rd party using
- // the redial feature.
- startActivity(newFlashIntent());
- } else {
- if (!TextUtils.isEmpty(mLastNumberDialed)) {
- // Recall the last number dialed.
- mDigits.setText(mLastNumberDialed);
-
- // ...and move the cursor to the end of the digits string,
- // so you'll be able to delete digits using the Delete
- // button (just as if you had typed the number manually.)
- //
- // Note we use mDigits.getText().length() here, not
- // mLastNumberDialed.length(), since the EditText widget now
- // contains a *formatted* version of mLastNumberDialed (due to
- // mTextWatcher) and its length may have changed.
- mDigits.setSelection(mDigits.getText().length());
- } else {
- // There's no "last number dialed" or the
- // background query is still running. There's
- // nothing useful for the Dial button to do in
- // this case. Note: with a soft dial button, this
- // can never happens since the dial button is
- // disabled under these conditons.
- playTone(ToneGenerator.TONE_PROP_NACK);
- }
- }
- }
-
- /**
- * Plays the specified tone for TONE_LENGTH_MS milliseconds.
- */
- private void playTone(int tone) {
- playTone(tone, TONE_LENGTH_MS);
- }
-
- /**
- * Play the specified tone for the specified milliseconds
- *
- * The tone is played locally, using the audio stream for phone calls.
- * Tones are played only if the "Audible touch tones" user preference
- * is checked, and are NOT played if the device is in silent mode.
- *
- * The tone length can be -1, meaning "keep playing the tone." If the caller does so, it should
- * call stopTone() afterward.
- *
- * @param tone a tone code from {@link ToneGenerator}
- * @param durationMs tone length.
- */
- private void playTone(int tone, int durationMs) {
- // if local tone playback is disabled, just return.
- if (!mDTMFToneEnabled) {
- return;
- }
-
- // Also do nothing if the phone is in silent mode.
- // We need to re-check the ringer mode for *every* playTone()
- // call, rather than keeping a local flag that's updated in
- // onResume(), since it's possible to toggle silent mode without
- // leaving the current activity (via the ENDCALL-longpress menu.)
- AudioManager audioManager =
- (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
- int ringerMode = audioManager.getRingerMode();
- if ((ringerMode == AudioManager.RINGER_MODE_SILENT)
- || (ringerMode == AudioManager.RINGER_MODE_VIBRATE)) {
- return;
- }
-
- synchronized (mToneGeneratorLock) {
- if (mToneGenerator == null) {
- Log.w(TAG, "playTone: mToneGenerator == null, tone: " + tone);
- return;
- }
-
- // Start the new tone (will stop any playing tone)
- mToneGenerator.startTone(tone, durationMs);
- }
- }
-
- /**
- * Stop the tone if it is played.
- */
- private void stopTone() {
- // if local tone playback is disabled, just return.
- if (!mDTMFToneEnabled) {
- return;
- }
- synchronized (mToneGeneratorLock) {
- if (mToneGenerator == null) {
- Log.w(TAG, "stopTone: mToneGenerator == null");
- return;
- }
- mToneGenerator.stopTone();
- }
- }
-
- /**
- * Brings up the "dialpad chooser" UI in place of the usual Dialer
- * elements (the textfield/button and the dialpad underneath).
- *
- * We show this UI if the user brings up the Dialer while a call is
- * already in progress, since there's a good chance we got here
- * accidentally (and the user really wanted the in-call dialpad instead).
- * So in this situation we display an intermediate UI that lets the user
- * explicitly choose between the in-call dialpad ("Use touch tone
- * keypad") and the regular Dialer ("Add call"). (Or, the option "Return
- * to call in progress" just goes back to the in-call UI with no dialpad
- * at all.)
- *
- * @param enabled If true, show the "dialpad chooser" instead
- * of the regular Dialer UI
- */
- private void showDialpadChooser(boolean enabled) {
- // Check if onCreateView() is already called by checking one of View objects.
- if (!isLayoutReady()) {
- return;
- }
-
- if (enabled) {
- // Log.i(TAG, "Showing dialpad chooser!");
- if (mDigitsContainer != null) {
- mDigitsContainer.setVisibility(View.GONE);
- } else {
- // mDigits is not enclosed by the container. Make the digits field itself gone.
- mDigits.setVisibility(View.GONE);
- }
- if (mDialpad != null) mDialpad.setVisibility(View.GONE);
- if (mDialButtonContainer != null) mDialButtonContainer.setVisibility(View.GONE);
-
- mDialpadChooser.setVisibility(View.VISIBLE);
-
- // Instantiate the DialpadChooserAdapter and hook it up to the
- // ListView. We do this only once.
- if (mDialpadChooserAdapter == null) {
- mDialpadChooserAdapter = new DialpadChooserAdapter(getActivity());
- }
- mDialpadChooser.setAdapter(mDialpadChooserAdapter);
- } else {
- // Log.i(TAG, "Displaying normal Dialer UI.");
- if (mDigitsContainer != null) {
- mDigitsContainer.setVisibility(View.VISIBLE);
- } else {
- mDigits.setVisibility(View.VISIBLE);
- }
- if (mDialpad != null) mDialpad.setVisibility(View.VISIBLE);
- if (mDialButtonContainer != null) mDialButtonContainer.setVisibility(View.VISIBLE);
- mDialpadChooser.setVisibility(View.GONE);
- }
- }
-
- /**
- * @return true if we're currently showing the "dialpad chooser" UI.
- */
- private boolean dialpadChooserVisible() {
- return mDialpadChooser.getVisibility() == View.VISIBLE;
- }
-
- /**
- * Simple list adapter, binding to an icon + text label
- * for each item in the "dialpad chooser" list.
- */
- private static class DialpadChooserAdapter extends BaseAdapter {
- private LayoutInflater mInflater;
-
- // Simple struct for a single "choice" item.
- static class ChoiceItem {
- String text;
- Bitmap icon;
- int id;
-
- public ChoiceItem(String s, Bitmap b, int i) {
- text = s;
- icon = b;
- id = i;
- }
- }
-
- // IDs for the possible "choices":
- static final int DIALPAD_CHOICE_USE_DTMF_DIALPAD = 101;
- static final int DIALPAD_CHOICE_RETURN_TO_CALL = 102;
- static final int DIALPAD_CHOICE_ADD_NEW_CALL = 103;
-
- private static final int NUM_ITEMS = 3;
- private ChoiceItem mChoiceItems[] = new ChoiceItem[NUM_ITEMS];
-
- public DialpadChooserAdapter(Context context) {
- // Cache the LayoutInflate to avoid asking for a new one each time.
- mInflater = LayoutInflater.from(context);
-
- // Initialize the possible choices.
- // TODO: could this be specified entirely in XML?
-
- // - "Use touch tone keypad"
- mChoiceItems[0] = new ChoiceItem(
- context.getString(R.string.dialer_useDtmfDialpad),
- BitmapFactory.decodeResource(context.getResources(),
- R.drawable.ic_dialer_fork_tt_keypad),
- DIALPAD_CHOICE_USE_DTMF_DIALPAD);
-
- // - "Return to call in progress"
- mChoiceItems[1] = new ChoiceItem(
- context.getString(R.string.dialer_returnToInCallScreen),
- BitmapFactory.decodeResource(context.getResources(),
- R.drawable.ic_dialer_fork_current_call),
- DIALPAD_CHOICE_RETURN_TO_CALL);
-
- // - "Add call"
- mChoiceItems[2] = new ChoiceItem(
- context.getString(R.string.dialer_addAnotherCall),
- BitmapFactory.decodeResource(context.getResources(),
- R.drawable.ic_dialer_fork_add_call),
- DIALPAD_CHOICE_ADD_NEW_CALL);
- }
-
- @Override
- public int getCount() {
- return NUM_ITEMS;
- }
-
- /**
- * Return the ChoiceItem for a given position.
- */
- @Override
- public Object getItem(int position) {
- return mChoiceItems[position];
- }
-
- /**
- * Return a unique ID for each possible choice.
- */
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- /**
- * Make a view for each row.
- */
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // When convertView is non-null, we can reuse it (there's no need
- // to reinflate it.)
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.dialpad_chooser_list_item, null);
- }
-
- TextView text = (TextView) convertView.findViewById(R.id.text);
- text.setText(mChoiceItems[position].text);
-
- ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
- icon.setImageBitmap(mChoiceItems[position].icon);
-
- return convertView;
- }
- }
-
- /**
- * Handle clicks from the dialpad chooser.
- */
- @Override
- public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
- DialpadChooserAdapter.ChoiceItem item =
- (DialpadChooserAdapter.ChoiceItem) parent.getItemAtPosition(position);
- int itemId = item.id;
- switch (itemId) {
- case DialpadChooserAdapter.DIALPAD_CHOICE_USE_DTMF_DIALPAD:
- // Log.i(TAG, "DIALPAD_CHOICE_USE_DTMF_DIALPAD");
- // Fire off an intent to go back to the in-call UI
- // with the dialpad visible.
- returnToInCallScreen(true);
- break;
-
- case DialpadChooserAdapter.DIALPAD_CHOICE_RETURN_TO_CALL:
- // Log.i(TAG, "DIALPAD_CHOICE_RETURN_TO_CALL");
- // Fire off an intent to go back to the in-call UI
- // (with the dialpad hidden).
- returnToInCallScreen(false);
- break;
-
- case DialpadChooserAdapter.DIALPAD_CHOICE_ADD_NEW_CALL:
- // Log.i(TAG, "DIALPAD_CHOICE_ADD_NEW_CALL");
- // Ok, guess the user really did want to be here (in the
- // regular Dialer) after all. Bring back the normal Dialer UI.
- showDialpadChooser(false);
- break;
-
- default:
- Log.w(TAG, "onItemClick: unexpected itemId: " + itemId);
- break;
- }
- }
-
- /**
- * Returns to the in-call UI (where there's presumably a call in
- * progress) in response to the user selecting "use touch tone keypad"
- * or "return to call" from the dialpad chooser.
- */
- private void returnToInCallScreen(boolean showDialpad) {
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) phone.showCallScreenWithDialpad(showDialpad);
- } catch (RemoteException e) {
- Log.w(TAG, "phone.showCallScreenWithDialpad() failed", e);
- }
-
- // Finally, finish() ourselves so that we don't stay on the
- // activity stack.
- // Note that we do this whether or not the showCallScreenWithDialpad()
- // call above had any effect or not! (That call is a no-op if the
- // phone is idle, which can happen if the current call ends while
- // the dialpad chooser is up. In this case we can't show the
- // InCallScreen, and there's no point staying here in the Dialer,
- // so we just take the user back where he came from...)
- getActivity().finish();
- }
-
- /**
- * @return true if the phone is "in use", meaning that at least one line
- * is active (ie. off hook or ringing or dialing).
- */
- public static boolean phoneIsInUse() {
- boolean phoneInUse = false;
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) phoneInUse = !phone.isIdle();
- } catch (RemoteException e) {
- Log.w(TAG, "phone.isIdle() failed", e);
- }
- return phoneInUse;
- }
-
- /**
- * @return true if the phone is a CDMA phone type
- */
- private boolean phoneIsCdma() {
- boolean isCdma = false;
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) {
- isCdma = (phone.getActivePhoneType() == TelephonyManager.PHONE_TYPE_CDMA);
- }
- } catch (RemoteException e) {
- Log.w(TAG, "phone.getActivePhoneType() failed", e);
- }
- return isCdma;
- }
-
- /**
- * @return true if the phone state is OFFHOOK
- */
- private boolean phoneIsOffhook() {
- boolean phoneOffhook = false;
- try {
- ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
- if (phone != null) phoneOffhook = phone.isOffhook();
- } catch (RemoteException e) {
- Log.w(TAG, "phone.isOffhook() failed", e);
- }
- return phoneOffhook;
- }
-
- /**
- * Returns true whenever any one of the options from the menu is selected.
- * Code changes to support dialpad options
- */
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_2s_pause:
- updateDialString(",");
- return true;
- case R.id.menu_add_wait:
- updateDialString(";");
- return true;
- default:
- return false;
- }
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- return onOptionsItemSelected(item);
- }
-
- /**
- * Updates the dial string (mDigits) after inserting a Pause character (,)
- * or Wait character (;).
- */
- private void updateDialString(String newDigits) {
- int selectionStart;
- int selectionEnd;
-
- // SpannableStringBuilder editable_text = new SpannableStringBuilder(mDigits.getText());
- int anchor = mDigits.getSelectionStart();
- int point = mDigits.getSelectionEnd();
-
- selectionStart = Math.min(anchor, point);
- selectionEnd = Math.max(anchor, point);
-
- Editable digits = mDigits.getText();
- if (selectionStart != -1) {
- if (selectionStart == selectionEnd) {
- // then there is no selection. So insert the pause at this
- // position and update the mDigits.
- digits.replace(selectionStart, selectionStart, newDigits);
- } else {
- digits.replace(selectionStart, selectionEnd, newDigits);
- // Unselect: back to a regular cursor, just pass the character inserted.
- mDigits.setSelection(selectionStart + 1);
- }
- } else {
- int len = mDigits.length();
- digits.replace(len, len, newDigits);
- }
- }
-
- /**
- * Update the enabledness of the "Dial" and "Backspace" buttons if applicable.
- */
- private void updateDialAndDeleteButtonEnabledState() {
- final boolean digitsNotEmpty = !isDigitsEmpty();
-
- if (mDialButton != null) {
- // On CDMA phones, if we're already on a call, we *always*
- // enable the Dial button (since you can press it without
- // entering any digits to send an empty flash.)
- if (phoneIsCdma() && phoneIsOffhook()) {
- mDialButton.setEnabled(true);
- } else {
- // Common case: GSM, or CDMA but not on a call.
- // Enable the Dial button if some digits have
- // been entered, or if there is a last dialed number
- // that could be redialed.
- mDialButton.setEnabled(digitsNotEmpty ||
- !TextUtils.isEmpty(mLastNumberDialed));
- }
- }
- mDelete.setEnabled(digitsNotEmpty);
- }
-
- /**
- * Check if voicemail is enabled/accessible.
- *
- * @return true if voicemail is enabled and accessibly. Note that this can be false
- * "temporarily" after the app boot.
- * @see TelephonyManager#getVoiceMailNumber()
- */
- private boolean isVoicemailAvailable() {
- try {
- return (TelephonyManager.getDefault().getVoiceMailNumber() != null);
- } catch (SecurityException se) {
- // Possibly no READ_PHONE_STATE privilege.
- Log.w(TAG, "SecurityException is thrown. Maybe privilege isn't sufficient.");
- }
- return false;
- }
-
- /**
- * This function return true if Wait menu item can be shown
- * otherwise returns false. Assumes the passed string is non-empty
- * and the 0th index check is not required.
- */
- private static boolean showWait(int start, int end, String digits) {
- if (start == end) {
- // visible false in this case
- if (start > digits.length()) return false;
-
- // preceding char is ';', so visible should be false
- if (digits.charAt(start - 1) == ';') return false;
-
- // next char is ';', so visible should be false
- if ((digits.length() > start) && (digits.charAt(start) == ';')) return false;
- } else {
- // visible false in this case
- if (start > digits.length() || end > digits.length()) return false;
-
- // In this case we need to just check for ';' preceding to start
- // or next to end
- if (digits.charAt(start - 1) == ';') return false;
- }
- return true;
- }
-
- /**
- * @return true if the widget with the phone number digits is empty.
- */
- private boolean isDigitsEmpty() {
- return mDigits.length() == 0;
- }
-
- /**
- * Starts the asyn query to get the last dialed/outgoing
- * number. When the background query finishes, mLastNumberDialed
- * is set to the last dialed number or an empty string if none
- * exists yet.
- */
- private void queryLastOutgoingCall() {
- mLastNumberDialed = EMPTY_NUMBER;
- CallLogAsync.GetLastOutgoingCallArgs lastCallArgs =
- new CallLogAsync.GetLastOutgoingCallArgs(
- getActivity(),
- new CallLogAsync.OnLastOutgoingCallComplete() {
- @Override
- public void lastOutgoingCall(String number) {
- // TODO: Filter out emergency numbers if
- // the carrier does not want redial for
- // these.
- mLastNumberDialed = number;
- updateDialAndDeleteButtonEnabledState();
- }
- });
- mCallLog.getLastOutgoingCall(lastCallArgs);
- }
-
- private Intent newFlashIntent() {
- final Intent intent = ContactsUtils.getCallIntent(EMPTY_NUMBER);
- intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
- return intent;
- }
-}
diff --git a/src/com/android/contacts/dialpad/DialpadImageButton.java b/src/com/android/contacts/dialpad/DialpadImageButton.java
deleted file mode 100644
index 040eeb4..0000000
--- a/src/com/android/contacts/dialpad/DialpadImageButton.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.dialpad;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.accessibility.AccessibilityManager;
-import android.widget.ImageButton;
-
-/**
- * Custom {@link ImageButton} for dialpad buttons.
- * <p>
- * This class implements lift-to-type interaction when touch exploration is
- * enabled.
- */
-public class DialpadImageButton extends ImageButton {
- /** Accessibility manager instance used to check touch exploration state. */
- private AccessibilityManager mAccessibilityManager;
-
- /** Bounds used to filter HOVER_EXIT events. */
- private Rect mHoverBounds = new Rect();
-
- public interface OnPressedListener {
- public void onPressed(View view, boolean pressed);
- }
-
- private OnPressedListener mOnPressedListener;
-
- public void setOnPressedListener(OnPressedListener onPressedListener) {
- mOnPressedListener = onPressedListener;
- }
-
- public DialpadImageButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- initForAccessibility(context);
- }
-
- public DialpadImageButton(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- initForAccessibility(context);
- }
-
- private void initForAccessibility(Context context) {
- mAccessibilityManager = (AccessibilityManager) context.getSystemService(
- Context.ACCESSIBILITY_SERVICE);
- }
-
- @Override
- public void setPressed(boolean pressed) {
- super.setPressed(pressed);
- if (mOnPressedListener != null) {
- mOnPressedListener.onPressed(this, pressed);
- }
- }
-
- @Override
- public void onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
-
- mHoverBounds.left = getPaddingLeft();
- mHoverBounds.right = w - getPaddingRight();
- mHoverBounds.top = getPaddingTop();
- mHoverBounds.bottom = h - getPaddingBottom();
- }
-
- @Override
- public boolean performClick() {
- // When accessibility is on, simulate press and release to preserve the
- // semantic meaning of performClick(). Required for Braille support.
- if (mAccessibilityManager.isEnabled()) {
- // Checking the press state prevents double activation.
- if (!isPressed()) {
- setPressed(true);
- setPressed(false);
- }
-
- return true;
- }
-
- return super.performClick();
- }
-
- @Override
- public boolean onHoverEvent(MotionEvent event) {
- // When touch exploration is turned on, lifting a finger while inside
- // the button's hover target bounds should perform a click action.
- if (mAccessibilityManager.isEnabled()
- && mAccessibilityManager.isTouchExplorationEnabled()) {
- switch (event.getActionMasked()) {
- case MotionEvent.ACTION_HOVER_ENTER:
- // Lift-to-type temporarily disables double-tap activation.
- setClickable(false);
- break;
- case MotionEvent.ACTION_HOVER_EXIT:
- if (mHoverBounds.contains((int) event.getX(), (int) event.getY())) {
- performClick();
- }
- setClickable(true);
- break;
- }
- }
-
- return super.onHoverEvent(event);
- }
-}
diff --git a/src/com/android/contacts/dialpad/DigitsEditText.java b/src/com/android/contacts/dialpad/DigitsEditText.java
deleted file mode 100644
index 7b3e8b2..0000000
--- a/src/com/android/contacts/dialpad/DigitsEditText.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.dialpad;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.text.InputType;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
-
-/**
- * EditText which suppresses IME show up.
- */
-public class DigitsEditText extends EditText {
- public DigitsEditText(Context context, AttributeSet attrs) {
- super(context, attrs);
- setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
- setShowSoftInputOnFocus(false);
- }
-
- @Override
- protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
- super.onFocusChanged(focused, direction, previouslyFocusedRect);
- final InputMethodManager imm = ((InputMethodManager) getContext()
- .getSystemService(Context.INPUT_METHOD_SERVICE));
- if (imm != null && imm.isActive(this)) {
- imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- final boolean ret = super.onTouchEvent(event);
- // Must be done after super.onTouchEvent()
- final InputMethodManager imm = ((InputMethodManager) getContext()
- .getSystemService(Context.INPUT_METHOD_SERVICE));
- if (imm != null && imm.isActive(this)) {
- imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);
- }
- return ret;
- }
-
- @Override
- public void sendAccessibilityEventUnchecked(AccessibilityEvent event) {
- if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) {
- // Since we're replacing the text every time we add or remove a
- // character, only read the difference. (issue 5337550)
- final int added = event.getAddedCount();
- final int removed = event.getRemovedCount();
- final int length = event.getBeforeText().length();
- if (added > removed) {
- event.setRemovedCount(0);
- event.setAddedCount(1);
- event.setFromIndex(length);
- } else if (removed > added) {
- event.setRemovedCount(1);
- event.setAddedCount(0);
- event.setFromIndex(length - 1);
- } else {
- return;
- }
- } else if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_FOCUSED) {
- // The parent EditText class lets tts read "edit box" when this View has a focus, which
- // confuses users on app launch (issue 5275935).
- return;
- }
- super.sendAccessibilityEventUnchecked(event);
- }
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/dialpad/UnicodeDialerKeyListener.java b/src/com/android/contacts/dialpad/UnicodeDialerKeyListener.java
deleted file mode 100644
index 8c2f3e7..0000000
--- a/src/com/android/contacts/dialpad/UnicodeDialerKeyListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.dialpad;
-
-import android.telephony.PhoneNumberUtils;
-import android.text.Spanned;
-import android.text.method.DialerKeyListener;
-
-/**
- * {@link DialerKeyListener} with Unicode support. Converts any Unicode(e.g. Arabic) characters
- * that represent digits into digits before filtering the results so that we can support
- * pasted digits from Unicode languages.
- */
-public class UnicodeDialerKeyListener extends DialerKeyListener {
- public static final UnicodeDialerKeyListener INSTANCE = new UnicodeDialerKeyListener();
-
- @Override
- public CharSequence filter(CharSequence source, int start, int end,
- Spanned dest, int dstart, int dend) {
- final String converted = PhoneNumberUtils.convertKeypadLettersToDigits(
- PhoneNumberUtils.replaceUnicodeDigits(source.toString()));
- // PhoneNumberUtils.replaceUnicodeDigits performs a character for character replacement,
- // so we can assume that start and end positions should remain unchanged.
- CharSequence result = super.filter(converted, start, end, dest, dstart, dend);
- if (result == null) {
- if (source.equals(converted)) {
- // There was no conversion or filtering performed. Just return null according to
- // the behavior of DialerKeyListener.
- return null;
- } else {
- // filter returns null if the charsequence is to be returned unchanged/unfiltered.
- // But in this case we do want to return a modified character string (even if
- // none of the characters in the modified string are filtered). So if
- // result == null we return the unfiltered but converted numeric string instead.
- return converted.subSequence(start, end);
- }
- }
- return result;
- }
-}
diff --git a/src/com/android/contacts/editor/AggregationSuggestionEngine.java b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
index 0da05e8..2f77858 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionEngine.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
@@ -37,7 +37,7 @@
import android.provider.ContactsContract.RawContacts;
import android.text.TextUtils;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.google.common.collect.Lists;
import java.util.ArrayList;
diff --git a/src/com/android/contacts/editor/AggregationSuggestionView.java b/src/com/android/contacts/editor/AggregationSuggestionView.java
index 7327a4c..439b1df 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionView.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionView.java
@@ -28,8 +28,8 @@
import com.android.contacts.R;
import com.android.contacts.editor.AggregationSuggestionEngine.RawContact;
import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
import com.google.common.collect.Lists;
import java.util.ArrayList;
diff --git a/src/com/android/contacts/editor/BaseRawContactEditorView.java b/src/com/android/contacts/editor/BaseRawContactEditorView.java
index 66fc864..c39d472 100644
--- a/src/com/android/contacts/editor/BaseRawContactEditorView.java
+++ b/src/com/android/contacts/editor/BaseRawContactEditorView.java
@@ -29,10 +29,10 @@
import com.android.contacts.R;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
/**
* Base view that provides common code for the editor interaction for a specific
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 028c01f..27c1498 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -47,6 +47,7 @@
import android.provider.ContactsContract.Groups;
import android.provider.ContactsContract.Intents;
import android.provider.ContactsContract.RawContacts;
+import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -67,25 +68,27 @@
import com.android.contacts.activities.ContactEditorAccountsChangedActivity;
import com.android.contacts.activities.ContactEditorActivity;
import com.android.contacts.activities.JoinContactActivity;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.util.AccountsListAdapter;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.detail.PhotoSelectionHandler;
import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion;
import com.android.contacts.editor.Editor.EditorListener;
-import com.android.contacts.model.AccountTypeManager;
import com.android.contacts.model.Contact;
import com.android.contacts.model.ContactLoader;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.GoogleAccountType;
-import com.android.contacts.util.AccountsListAdapter;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.util.ContactPhotoUtils;
import com.android.contacts.util.HelpUtils;
+import com.android.contacts.util.UiClosables;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
import java.io.File;
import java.util.ArrayList;
@@ -117,6 +120,11 @@
private static final String KEY_NEW_LOCAL_PROFILE = "newLocalProfile";
private static final String KEY_IS_USER_PROFILE = "isUserProfile";
private static final String KEY_UPDATED_PHOTOS = "updatedPhotos";
+ private static final String KEY_IS_EDIT = "isEdit";
+ private static final String KEY_HAS_NEW_CONTACT = "hasNewContact";
+ private static final String KEY_NEW_CONTACT_READY = "newContactDataReady";
+ private static final String KEY_EXISTING_CONTACT_READY = "existingContactDataReady";
+ private static final String KEY_RAW_CONTACTS = "rawContacts";
public static final String SAVE_MODE_EXTRA_KEY = "saveMode";
@@ -235,6 +243,21 @@
private int mStatus;
+ // Whether to show the new contact blank form and if it's corresponding delta is ready.
+ private boolean mHasNewContact = false;
+ private boolean mNewContactDataReady = false;
+
+ // Whether it's an edit of existing contact and if it's corresponding delta is ready.
+ private boolean mIsEdit = false;
+ private boolean mExistingContactDataReady = false;
+
+ // This is used to pre-populate the editor with a display name when a user edits a read-only
+ // contact.
+ private String mDefaultDisplayName;
+
+ // Used to temporarily store existing contact data during a rebind call (i.e. account switch)
+ private ImmutableList<RawContact> mRawContacts;
+
private AggregationSuggestionEngine mAggregationSuggestionEngine;
private long mAggregationSuggestionsRawContactId;
private View mAggregationSuggestionView;
@@ -290,7 +313,7 @@
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final AggregationSuggestionView suggestionView = (AggregationSuggestionView) view;
suggestionView.handleItemClickEvent();
- mAggregationSuggestionPopup.dismiss();
+ UiClosables.closeQuietly(mAggregationSuggestionPopup);
mAggregationSuggestionPopup = null;
}
};
@@ -330,9 +353,8 @@
@Override
public void onStop() {
super.onStop();
- if (mAggregationSuggestionEngine != null) {
- mAggregationSuggestionEngine.quit();
- }
+
+ UiClosables.closeQuietly(mAggregationSuggestionPopup);
// If anything was left unsaved, save it now but keep the editor open.
if (!getActivity().isChangingConfigurations() && mStatus == Status.EDITING) {
@@ -341,6 +363,14 @@
}
@Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (mAggregationSuggestionEngine != null) {
+ mAggregationSuggestionEngine.quit();
+ }
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
final View view = inflater.inflate(R.layout.contact_editor_fragment, container, false);
@@ -357,10 +387,7 @@
validateAction(mAction);
- // Handle initial actions only when existing state missing
- final boolean hasIncomingState = savedInstanceState != null;
-
- if (mState == null) {
+ if (mState.isEmpty()) {
// The delta list may not have finished loading before orientation change happens.
// In this case, there will be a saved state but deltas will be missing. Reload from
// database.
@@ -376,8 +403,12 @@
bindEditors();
}
- if (!hasIncomingState) {
- if (Intent.ACTION_INSERT.equals(mAction)) {
+ // Handle initial actions only when existing state missing
+ if (savedInstanceState == null) {
+ if (Intent.ACTION_EDIT.equals(mAction)) {
+ mIsEdit = true;
+ } else if (Intent.ACTION_INSERT.equals(mAction)) {
+ mHasNewContact = true;
final Account account = mIntentExtras == null ? null :
(Account) mIntentExtras.getParcelable(Intents.Insert.ACCOUNT);
final String dataSet = mIntentExtras == null ? null :
@@ -460,23 +491,37 @@
mNewLocalProfile = savedState.getBoolean(KEY_NEW_LOCAL_PROFILE);
mIsUserProfile = savedState.getBoolean(KEY_IS_USER_PROFILE);
mUpdatedPhotos = savedState.getParcelable(KEY_UPDATED_PHOTOS);
+ mIsEdit = savedState.getBoolean(KEY_IS_EDIT);
+ mHasNewContact = savedState.getBoolean(KEY_HAS_NEW_CONTACT);
+ mNewContactDataReady = savedState.getBoolean(KEY_NEW_CONTACT_READY);
+ mExistingContactDataReady = savedState.getBoolean(KEY_EXISTING_CONTACT_READY);
+ mRawContacts = ImmutableList.copyOf(savedState.<RawContact>getParcelableArrayList(
+ KEY_RAW_CONTACTS));
+
+ }
+
+ // mState can still be null because it may not have have finished loading before
+ // onSaveInstanceState was called.
+ if (mState == null) {
+ mState = new RawContactDeltaList();
}
}
- public void setData(Contact data) {
+ public void setData(Contact contact) {
+
// If we have already loaded data, we do not want to change it here to not confuse the user
- if (mState != null) {
+ if (!mState.isEmpty()) {
Log.v(TAG, "Ignoring background change. This will have to be rebased later");
return;
}
// See if this edit operation needs to be redirected to a custom editor
- ImmutableList<RawContact> rawContacts = data.getRawContacts();
- if (rawContacts.size() == 1) {
- RawContact rawContact = rawContacts.get(0);
+ mRawContacts = contact.getRawContacts();
+ if (mRawContacts.size() == 1) {
+ RawContact rawContact = mRawContacts.get(0);
String type = rawContact.getAccountTypeString();
String dataSet = rawContact.getDataSet();
- AccountType accountType = rawContact.getAccountType();
+ AccountType accountType = rawContact.getAccountType(mContext);
if (accountType.getEditContactActivityClassName() != null &&
!accountType.areContactsWritable()) {
if (mListener != null) {
@@ -491,7 +536,21 @@
}
}
- bindEditorsForExistingContact(data);
+ String displayName = null;
+ // Check for writable raw contacts. If there are none, then we need to create one so user
+ // can edit. For the user profile case, there is already an editable contact.
+ if (!contact.isUserProfile() && !contact.isWritableContact(mContext)) {
+ mHasNewContact = true;
+
+ // This is potentially an asynchronous call and will add deltas to list.
+ selectAccountAndCreateContact();
+ displayName = contact.getDisplayName();
+ }
+
+ // This also adds deltas to list
+ // If displayName is null at this point it is simply ignored later on by the editor.
+ bindEditorsForExistingContact(displayName, contact.isUserProfile(),
+ mRawContacts);
}
@Override
@@ -499,15 +558,17 @@
mListener.onCustomEditContactActivityRequested(account, uri, null, false);
}
- private void bindEditorsForExistingContact(Contact contact) {
+ private void bindEditorsForExistingContact(String displayName, boolean isUserProfile,
+ ImmutableList<RawContact> rawContacts) {
setEnabled(true);
+ mDefaultDisplayName = displayName;
- mState = contact.createRawContactDeltaList();
+ mState.addAll(rawContacts.iterator());
setIntentExtras(mIntentExtras);
mIntentExtras = null;
// For user profile, change the contacts query URI
- mIsUserProfile = contact.isUserProfile();
+ mIsUserProfile = isUserProfile;
boolean localProfileExists = false;
if (mIsUserProfile) {
@@ -521,7 +582,7 @@
}
// Editor should always present a local profile for editing
if (!localProfileExists) {
- final RawContact rawContact = new RawContact(mContext);
+ final RawContact rawContact = new RawContact();
rawContact.setAccountToLocal();
RawContactDelta insert = new RawContactDelta(ValuesDelta.fromAfter(
@@ -531,7 +592,7 @@
}
}
mRequestFocus = true;
-
+ mExistingContactDataReady = true;
bindEditors();
}
@@ -641,8 +702,13 @@
mListener.onCustomCreateContactActivityRequested(newAccount, mIntentExtras);
}
} else {
- mState = null;
+ mExistingContactDataReady = false;
+ mNewContactDataReady = false;
+ mState = new RawContactDeltaList();
bindEditorsForNewContact(newAccount, newAccountType, oldState, oldAccountType);
+ if (mIsEdit) {
+ bindEditorsForExistingContact(mDefaultDisplayName, mIsUserProfile, mRawContacts);
+ }
}
}
@@ -656,14 +722,15 @@
AccountType oldAccountType) {
mStatus = Status.EDITING;
- final RawContact rawContact = new RawContact(mContext);
+ final RawContact rawContact = new RawContact();
if (newAccount != null) {
rawContact.setAccount(newAccount);
} else {
rawContact.setAccountToLocal();
}
- RawContactDelta insert = new RawContactDelta(ValuesDelta.fromAfter(rawContact.getValues()));
+ final ValuesDelta valuesDelta = ValuesDelta.fromAfter(rawContact.getValues());
+ final RawContactDelta insert = new RawContactDelta(valuesDelta);
if (oldState == null) {
// Parse any values from incoming intent
RawContactModifier.parseExtras(mContext, newAccountType, insert, mIntentExtras);
@@ -686,23 +753,25 @@
insert.setProfileQueryUri();
}
- if (mState == null) {
- // Create state if none exists yet
- mState = RawContactDeltaList.fromSingle(insert);
- } else {
- // Add contact onto end of existing state
- mState.add(insert);
- }
+ mState.add(insert);
mRequestFocus = true;
+ mNewContactDataReady = true;
bindEditors();
}
private void bindEditors() {
// bindEditors() can only bind views if there is data in mState, so immediately return
// if mState is null
- if (mState == null) {
+ if (mState.isEmpty()) {
+ return;
+ }
+
+ // Check if delta list is ready. Delta list is populated from existing data and when
+ // editing an read-only contact, it's also populated with newly created data for the
+ // blank form. When the data is not ready, skip. This method will be called multiple times.
+ if ((mIsEdit && !mExistingContactDataReady) || (mHasNewContact && !mNewContactDataReady)) {
return;
}
@@ -716,6 +785,7 @@
Context.LAYOUT_INFLATER_SERVICE);
final AccountTypeManager accountTypes = AccountTypeManager.getInstance(mContext);
int numRawContacts = mState.size();
+
for (int i = 0; i < numRawContacts; i++) {
// TODO ensure proper ordering of entities in the list
final RawContactDelta rawContactDelta = mState.get(i);
@@ -733,10 +803,10 @@
editor = (RawContactEditorView) inflater.inflate(R.layout.raw_contact_editor_view,
mContent, false);
}
- if (Intent.ACTION_INSERT.equals(mAction) && numRawContacts == 1) {
+ if (mHasNewContact && !mNewLocalProfile) {
final List<AccountWithDataSet> accounts =
AccountTypeManager.getInstance(mContext).getAccounts(true);
- if (accounts.size() > 1 && !mNewLocalProfile) {
+ if (accounts.size() > 1) {
addAccountSwitcher(mState.get(0), editor);
} else {
disableAccountSwitcher(editor);
@@ -779,12 +849,15 @@
}
};
- final TextFieldsEditorView nameEditor = rawContactEditor.getNameEditor();
+ final StructuredNameEditorView nameEditor = rawContactEditor.getNameEditor();
if (mRequestFocus) {
nameEditor.requestFocus();
mRequestFocus = false;
}
nameEditor.setEditorListener(listener);
+ if (!TextUtils.isEmpty(mDefaultDisplayName)) {
+ nameEditor.setDisplayName(mDefaultDisplayName);
+ }
final TextFieldsEditorView phoneticNameEditor =
rawContactEditor.getPhoneticNameEditor();
@@ -911,7 +984,7 @@
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
- popup.dismiss();
+ UiClosables.closeQuietly(popup);
AccountWithDataSet newAccount = adapter.getItem(position);
if (!newAccount.equals(currentAccount)) {
rebindEditorsForNewContact(currentState, currentAccount, newAccount);
@@ -945,16 +1018,21 @@
final MenuItem splitMenu = menu.findItem(R.id.menu_split);
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);
// Set visibility of menus
doneMenu.setVisible(false);
// Split only if more than one raw profile and not a user profile
- splitMenu.setVisible(mState != null && mState.size() > 1 && !isEditingUserProfile());
+ 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
@@ -1019,7 +1097,7 @@
* performing user actions.
*/
private boolean hasValidState() {
- return mState != null && mState.size() > 0;
+ return mState.size() > 0;
}
/**
@@ -1104,7 +1182,7 @@
}
private boolean revert() {
- if (mState == null || !hasPendingChanges()) {
+ if (mState.isEmpty() || !hasPendingChanges()) {
doRevertAction();
} else {
CancelEditDialogFragment.show(this);
@@ -1180,7 +1258,7 @@
// If this was in INSERT, we are changing into an EDIT now.
// If it already was an EDIT, we are changing to the new Uri now
- mState = null;
+ mState = new RawContactDeltaList();
load(Intent.ACTION_EDIT, contactLookupUri, null);
mStatus = Status.LOADING;
getLoaderManager().restartLoader(LOADER_DATA, null, mDataLoaderListener);
@@ -1380,12 +1458,10 @@
* Returns the contact ID for the currently edited contact or 0 if the contact is new.
*/
protected long getContactId() {
- if (mState != null) {
- for (RawContactDelta rawContact : mState) {
- Long contactId = rawContact.getValues().getAsLong(RawContacts.CONTACT_ID);
- if (contactId != null) {
- return contactId;
- }
+ for (RawContactDelta rawContact : mState) {
+ Long contactId = rawContact.getValues().getAsLong(RawContacts.CONTACT_ID);
+ if (contactId != null) {
+ return contactId;
}
}
return 0;
@@ -1422,13 +1498,11 @@
public void onAggregationSuggestionChange() {
Activity activity = getActivity();
if ((activity != null && activity.isFinishing())
- || !isVisible() || mState == null || mStatus != Status.EDITING) {
+ || !isVisible() || mState.isEmpty() || mStatus != Status.EDITING) {
return;
}
- if (mAggregationSuggestionPopup != null && mAggregationSuggestionPopup.isShowing()) {
- mAggregationSuggestionPopup.dismiss();
- }
+ UiClosables.closeQuietly(mAggregationSuggestionPopup);
if (mAggregationSuggestionEngine.getSuggestedContactCount() == 0) {
return;
@@ -1589,6 +1663,13 @@
outState.putBoolean(KEY_IS_USER_PROFILE, mIsUserProfile);
outState.putInt(KEY_STATUS, mStatus);
outState.putParcelable(KEY_UPDATED_PHOTOS, mUpdatedPhotos);
+ outState.putBoolean(KEY_HAS_NEW_CONTACT, mHasNewContact);
+ outState.putBoolean(KEY_IS_EDIT, mIsEdit);
+ outState.putBoolean(KEY_NEW_CONTACT_READY, mNewContactDataReady);
+ outState.putBoolean(KEY_EXISTING_CONTACT_READY, mExistingContactDataReady);
+ outState.putParcelableArrayList(KEY_RAW_CONTACTS,
+ mRawContacts == null ?
+ Lists.<RawContact> newArrayList() : Lists.newArrayList(mRawContacts));
super.onSaveInstanceState(outState);
}
@@ -1767,7 +1848,7 @@
@Override
public void onSplitContactConfirmed() {
- if (mState == null) {
+ if (mState.isEmpty()) {
// This may happen when this Fragment is recreated by the system during users
// confirming the split action (and thus this method is called just before onCreate()),
// for example.
diff --git a/src/com/android/contacts/editor/ContactEditorUtils.java b/src/com/android/contacts/editor/ContactEditorUtils.java
index 2791c2d..dfbcc6b 100644
--- a/src/com/android/contacts/editor/ContactEditorUtils.java
+++ b/src/com/android/contacts/editor/ContactEditorUtils.java
@@ -26,10 +26,10 @@
import android.text.TextUtils;
import android.util.Log;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.test.NeededForTesting;
+import com.android.contacts.common.test.NeededForTesting;
+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.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
diff --git a/src/com/android/contacts/editor/Editor.java b/src/com/android/contacts/editor/Editor.java
index 05336f2..12ea201 100644
--- a/src/com/android/contacts/editor/Editor.java
+++ b/src/com/android/contacts/editor/Editor.java
@@ -19,8 +19,8 @@
import android.provider.ContactsContract.Data;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.dataitem.DataKind;
/**
* Generic definition of something that edits a {@link Data} row through an
diff --git a/src/com/android/contacts/editor/EditorAnimator.java b/src/com/android/contacts/editor/EditorAnimator.java
index 5196f3f..7e85d8b 100644
--- a/src/com/android/contacts/editor/EditorAnimator.java
+++ b/src/com/android/contacts/editor/EditorAnimator.java
@@ -80,6 +80,41 @@
});
}
+ /**
+ * Slides the view into its new height, while simultaneously fading it into view.
+ *
+ * @param target The target view to perform the animation on.
+ * @param previousHeight The previous height of the view before its height was changed.
+ * Needed because the view does not store any state information about its previous height.
+ */
+ public void slideAndFadeIn(final ViewGroup target, final int previousHeight) {
+ mRunner.endOldAnimation();
+ target.setVisibility(View.VISIBLE);
+ target.setAlpha(0.0f);
+ target.requestFocus();
+ SchedulingUtils.doAfterLayout(target, new Runnable() {
+ @Override
+ public void run() {
+ final int offset = target.getHeight() - previousHeight;
+ final List<Animator> animators = Lists.newArrayList();
+
+ // Translations
+ final List<View> viewsToMove = getViewsBelowOf(target);
+
+ translateViews(animators, viewsToMove, -offset, 0.0f, 0, 200);
+
+ // Fade in
+ final ObjectAnimator fadeInAnimator = ObjectAnimator.ofFloat(
+ target, View.ALPHA, 0.0f, 1.0f);
+ fadeInAnimator.setDuration(200);
+ fadeInAnimator.setStartDelay(200);
+ animators.add(fadeInAnimator);
+
+ mRunner.run(animators);
+ }
+ });
+ }
+
public void expandOrganization(final View addOrganizationButton,
final ViewGroup organizationSectionViewContainer) {
mRunner.endOldAnimation();
@@ -93,7 +128,6 @@
// How many pixels extra do we need?
final int offset = organizationSectionViewContainer.getHeight() -
addOrganizationButton.getHeight();
-
final List<Animator> animators = Lists.newArrayList();
// Fade out
@@ -105,7 +139,6 @@
// Translations
final List<View> viewsToMove = getViewsBelowOf(organizationSectionViewContainer);
translateViews(animators, viewsToMove, -offset, 0.0f, 0, 200);
-
// Fade in
final ObjectAnimator fadeInAnimator = ObjectAnimator.ofFloat(
organizationSectionViewContainer, View.ALPHA, 0.0f, 1.0f);
@@ -198,8 +231,7 @@
}
/**
- * Traverses up the view hierarchy and returns all views below this item. Stops
- * once a parent is not a vertical LinearLayout
+ * Traverses up the view hierarchy and returns all views physically below this item.
*
* @return List of views that are below the given view. Empty list if parent of view is null.
*/
@@ -208,24 +240,28 @@
final List<View> result = Lists.newArrayList();
if (victimParent != null) {
final int index = victimParent.indexOfChild(view);
- getViewsBelowOfRecursive(result, victimParent, index + 1);
+ getViewsBelowOfRecursive(result, victimParent, index + 1, view);
}
return result;
}
private static void getViewsBelowOfRecursive(List<View> result, ViewGroup container,
- int index) {
+ int index, View target) {
for (int i = index; i < container.getChildCount(); i++) {
- result.add(container.getChildAt(i));
+ View view = container.getChildAt(i);
+ // consider the child view below the target view only if it is physically
+ // below the view on-screen, using half the height of the target view as the
+ // baseline
+ if (view.getY() > (target.getY() + target.getHeight() / 2)) {
+ result.add(view);
+ }
}
final ViewParent parent = container.getParent();
if (parent instanceof LinearLayout) {
final LinearLayout parentLayout = (LinearLayout) parent;
- if (parentLayout.getOrientation() == LinearLayout.VERTICAL) {
- int containerIndex = parentLayout.indexOfChild(container);
- getViewsBelowOfRecursive(result, parentLayout, containerIndex+1);
- }
+ int containerIndex = parentLayout.indexOfChild(container);
+ getViewsBelowOfRecursive(result, parentLayout, containerIndex + 1, target);
}
}
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
new file mode 100644
index 0000000..f3cf20a
--- /dev/null
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+
+package com.android.contacts.editor;
+
+import static android.provider.ContactsContract.CommonDataKinds.Event;
+import static android.provider.ContactsContract.CommonDataKinds.GroupMembership;
+import static android.provider.ContactsContract.CommonDataKinds.Photo;
+import static android.provider.ContactsContract.CommonDataKinds.StructuredName;
+
+import com.android.contacts.R;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.google.common.collect.Maps;
+
+import java.util.HashMap;
+
+/**
+ * Utility methods for creating contact editor.
+ */
+public class EditorUiUtils {
+
+ // Maps DataKind.mimeType to editor view layouts.
+ private static final HashMap<String, Integer> mimetypeLayoutMap = Maps.newHashMap();
+ static {
+ // Generally there should be a layout mapped to each existing DataKind mimetype but lots of
+ // them use the default text_fields_editor_view which we return as default so they don't
+ // need to be mapped.
+ //
+ // Other possible mime mappings are:
+ // DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME
+ // Nickname.CONTENT_ITEM_TYPE
+ // Email.CONTENT_ITEM_TYPE
+ // StructuredPostal.CONTENT_ITEM_TYPE
+ // Im.CONTENT_ITEM_TYPE
+ // Note.CONTENT_ITEM_TYPE
+ // Organization.CONTENT_ITEM_TYPE
+ // Phone.CONTENT_ITEM_TYPE
+ // SipAddress.CONTENT_ITEM_TYPE
+ // Website.CONTENT_ITEM_TYPE
+ // Relation.CONTENT_ITEM_TYPE
+ //
+ // Un-supported mime types need to mapped with -1.
+
+ mimetypeLayoutMap.put(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
+ R.layout.phonetic_name_editor_view);
+ mimetypeLayoutMap.put(StructuredName.CONTENT_ITEM_TYPE,
+ R.layout.structured_name_editor_view);
+ mimetypeLayoutMap.put(GroupMembership.CONTENT_ITEM_TYPE, -1);
+ mimetypeLayoutMap.put(Photo.CONTENT_ITEM_TYPE, -1);
+ mimetypeLayoutMap.put(Event.CONTENT_ITEM_TYPE, R.layout.event_field_editor_view);
+ }
+
+ /**
+ * Fetches a layout for a given mimetype.
+ *
+ * @param mimetype The mime type (e.g. StructuredName.CONTENT_ITEM_TYPE)
+ * @return The layout resource id.
+ */
+ public static int getLayoutResourceId(String mimetype) {
+ final Integer id = mimetypeLayoutMap.get(mimetype);
+ if (id == null) {
+ return R.layout.text_fields_editor_view;
+ }
+ return id;
+ }
+}
diff --git a/src/com/android/contacts/editor/EventFieldEditorView.java b/src/com/android/contacts/editor/EventFieldEditorView.java
index 77f2010..3589c89 100644
--- a/src/com/android/contacts/editor/EventFieldEditorView.java
+++ b/src/com/android/contacts/editor/EventFieldEditorView.java
@@ -30,10 +30,10 @@
import com.android.contacts.datepicker.DatePickerDialog;
import com.android.contacts.datepicker.DatePickerDialog.OnDateSetListener;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType.EditField;
-import com.android.contacts.model.account.AccountType.EventEditType;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.account.AccountType.EventEditType;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.util.DateUtils;
import java.text.ParsePosition;
@@ -121,7 +121,8 @@
private void rebuildDateView() {
final EditField editField = getKind().fieldList.get(0);
final String column = editField.column;
- String data = DateUtils.formatDate(getContext(), getEntry().getAsString(column));
+ String data = DateUtils.formatDate(getContext(), getEntry().getAsString(column),
+ false /*Use the short DateFormat to ensure that it fits inside the EditText*/);
if (TextUtils.isEmpty(data)) {
mDateView.setText(mNoDateString);
mDateView.setTextColor(mSecondaryTextColor);
@@ -202,44 +203,26 @@
final boolean isYearOptional = getType().isYearOptional();
final int oldYear, oldMonth, oldDay;
- if (TextUtils.isEmpty(oldValue)) {
- // Default to January first of this year
- oldYear = defaultYear;
- oldMonth = 0;
- oldDay = 1;
- } else {
- final ParsePosition position = new ParsePosition(0);
- // Try parsing with year
- Date date1 = kind.dateFormatWithYear.parse(oldValue, position);
- if (date1 == null) {
- // If that format does not fit, try guessing the right format
- date1 = DateUtils.parseDate(oldValue);
- }
- if (date1 != null) {
- calendar.setTime(date1);
- oldYear = calendar.get(Calendar.YEAR);
- oldMonth = calendar.get(Calendar.MONTH);
- oldDay = calendar.get(Calendar.DAY_OF_MONTH);
- } else {
- // Unfortunately, we need a one-off hack for February 29th, because
- // the parse functions assume 1970, which wasn't a leap year
- // Caveat here: This won't catch AccountTypes that allow omitting the year but
- // require a time of the day. But as we don't have any of those at the moment,
- // this shouldn't be an issue
- if (DateUtils.NO_YEAR_DATE_FEB29TH.equals(oldValue)) {
- oldYear = isYearOptional ? DatePickerDialog.NO_YEAR : defaultYear;
- oldMonth = Calendar.FEBRUARY;
- oldDay = 29;
- } else {
- final Date date2 = kind.dateFormatWithoutYear.parse(oldValue, position);
- // Don't understand the date? Let's not show any dialog
- if (date2 == null) return null;
- calendar.setTime(date2);
+ if (TextUtils.isEmpty(oldValue)) {
+ // Default to the current date
+ oldYear = defaultYear;
+ oldMonth = calendar.get(Calendar.MONTH);
+ oldDay = calendar.get(Calendar.DAY_OF_MONTH);
+ } else {
+ // Try parsing with year
+ Calendar cal = DateUtils.parseDate(oldValue, false);
+ if (cal != null) {
+ if (DateUtils.isYearSet(cal)) {
+ oldYear = cal.get(Calendar.YEAR);
+ } else {
+ //cal.set(Calendar.YEAR, 0);
oldYear = isYearOptional ? DatePickerDialog.NO_YEAR : defaultYear;
- oldMonth = calendar.get(Calendar.MONTH);
- oldDay = calendar.get(Calendar.DAY_OF_MONTH);
}
+ oldMonth = cal.get(Calendar.MONTH);
+ oldDay = cal.get(Calendar.DAY_OF_MONTH);
+ } else {
+ return null;
}
}
final OnDateSetListener callBack = new OnDateSetListener() {
@@ -262,7 +245,6 @@
} else {
resultString = kind.dateFormatWithYear.format(outCalendar.getTime());
}
-
onFieldChanged(column, resultString);
rebuildDateView();
}
diff --git a/src/com/android/contacts/editor/GroupMembershipView.java b/src/com/android/contacts/editor/GroupMembershipView.java
index b84e22b..d150be8 100644
--- a/src/com/android/contacts/editor/GroupMembershipView.java
+++ b/src/com/android/contacts/editor/GroupMembershipView.java
@@ -37,13 +37,14 @@
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.interactions.GroupCreationDialogFragment;
import com.android.contacts.interactions.GroupCreationDialogFragment.OnGroupCreatedListener;
-import com.android.contacts.model.RawContactModifier;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.internal.util.Objects;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.model.RawContactModifier;
+import com.android.contacts.util.UiClosables;
+import com.google.common.base.Objects;
import java.util.ArrayList;
@@ -280,8 +281,7 @@
@Override
public void onClick(View v) {
- if (mPopup != null && mPopup.isShowing()) {
- mPopup.dismiss();
+ if (UiClosables.closeQuietly(mPopup)) {
return;
}
@@ -329,10 +329,8 @@
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
- if (mPopup != null) {
- mPopup.dismiss();
- mPopup = null;
- }
+ UiClosables.closeQuietly(mPopup);
+ mPopup = null;
}
@Override
@@ -409,10 +407,8 @@
}
private void createNewGroup() {
- if (mPopup != null) {
- mPopup.dismiss();
- mPopup = null;
- }
+ UiClosables.closeQuietly(mPopup);
+ mPopup = null;
GroupCreationDialogFragment.show(
((Activity) getContext()).getFragmentManager(),
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 9cfe0a3..fb9c253 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -30,8 +30,8 @@
import com.android.contacts.editor.Editor.EditorListener;
import com.android.contacts.model.RawContactModifier;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.dataitem.DataKind;
import java.util.ArrayList;
import java.util.List;
@@ -186,12 +186,13 @@
*/
private View createEditorView(ValuesDelta entry) {
final View view;
+ final int layoutResId = EditorUiUtils.getLayoutResourceId(mKind.mimeType);
try {
- view = mInflater.inflate(mKind.editorLayoutResourceId, mEditors, false);
+ view = mInflater.inflate(layoutResId, mEditors, false);
} catch (Exception e) {
throw new RuntimeException(
"Cannot allocate editor with layout resource ID " +
- mKind.editorLayoutResourceId + " for MIME type " + mKind.mimeType +
+ layoutResId + " for MIME type " + mKind.mimeType +
" with error " + e.toString());
}
diff --git a/src/com/android/contacts/editor/LabeledEditorView.java b/src/com/android/contacts/editor/LabeledEditorView.java
index 789f425..3c0774d 100644
--- a/src/com/android/contacts/editor/LabeledEditorView.java
+++ b/src/com/android/contacts/editor/LabeledEditorView.java
@@ -47,10 +47,10 @@
import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.util.DialogManager;
import com.android.contacts.util.DialogManager.DialogShowingView;
@@ -559,7 +559,7 @@
if (convertView == null) {
textView = (TextView) mInflater.inflate(resource, parent, false);
textView.setAllCaps(true);
- textView.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
+ textView.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
textView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
textView.setTextColor(mTextColor);
textView.setEllipsize(TruncateAt.MIDDLE);
diff --git a/src/com/android/contacts/editor/PhoneticNameEditorView.java b/src/com/android/contacts/editor/PhoneticNameEditorView.java
index 8cbb921..2836c72 100644
--- a/src/com/android/contacts/editor/PhoneticNameEditorView.java
+++ b/src/com/android/contacts/editor/PhoneticNameEditorView.java
@@ -22,8 +22,8 @@
import android.util.AttributeSet;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.StructuredNameDataItem;
/**
diff --git a/src/com/android/contacts/editor/PhotoActionPopup.java b/src/com/android/contacts/editor/PhotoActionPopup.java
index 36a1340..9903880 100644
--- a/src/com/android/contacts/editor/PhotoActionPopup.java
+++ b/src/com/android/contacts/editor/PhotoActionPopup.java
@@ -25,6 +25,8 @@
import android.widget.ListPopupWindow;
import com.android.contacts.R;
+import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.UiClosables;
import java.util.ArrayList;
@@ -92,7 +94,9 @@
final String takePhotoString = context.getString(takePhotoResId);
final int pickPhotoResId = replace ? R.string.pick_new_photo : R.string.pick_photo;
final String pickPhotoString = context.getString(pickPhotoResId);
- choices.add(new ChoiceListItem(ChoiceListItem.ID_TAKE_PHOTO, takePhotoString));
+ if (PhoneCapabilityTester.isCameraIntentRegistered(context)) {
+ choices.add(new ChoiceListItem(ChoiceListItem.ID_TAKE_PHOTO, takePhotoString));
+ }
choices.add(new ChoiceListItem(ChoiceListItem.ID_PICK_PHOTO, pickPhotoString));
}
@@ -119,7 +123,7 @@
break;
}
- listPopupWindow.dismiss();
+ UiClosables.closeQuietly(listPopupWindow);
}
};
diff --git a/src/com/android/contacts/editor/PhotoEditorView.java b/src/com/android/contacts/editor/PhotoEditorView.java
index 30c3bb4..652c8e6 100644
--- a/src/com/android/contacts/editor/PhotoEditorView.java
+++ b/src/com/android/contacts/editor/PhotoEditorView.java
@@ -28,8 +28,8 @@
import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.util.ContactPhotoUtils;
/**
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index daccdd8..b52b0b2 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -18,6 +18,8 @@
import android.content.Context;
import android.database.Cursor;
+import android.os.Bundle;
+import android.os.Parcelable;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Photo;
@@ -38,13 +40,13 @@
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.internal.util.Objects;
+import com.google.common.base.Objects;
import java.util.ArrayList;
@@ -60,12 +62,20 @@
* {@link RawContactModifier} to ensure that {@link AccountType} are enforced.
*/
public class RawContactEditorView extends BaseRawContactEditorView {
+ private static final String KEY_ORGANIZATION_VIEW_EXPANDED = "organizationViewExpanded";
+ private static final String KEY_SUPER_INSTANCE_STATE = "superInstanceState";
+
private LayoutInflater mInflater;
private StructuredNameEditorView mName;
private PhoneticNameEditorView mPhoneticName;
private GroupMembershipView mGroupMembershipView;
+ private ViewGroup mOrganizationSectionViewContainer;
+ private View mAddOrganizationButton;
+ private View mOrganizationView;
+ private boolean mOrganizationViewExpanded = false;
+
private ViewGroup mFields;
private ImageView mAccountIcon;
@@ -139,6 +149,13 @@
mAccountTypeTextView = (TextView) findViewById(R.id.account_type);
mAccountNameTextView = (TextView) findViewById(R.id.account_name);
+ mOrganizationView = mInflater.inflate(
+ R.layout.organization_editor_view_switcher, mFields, false);
+ mAddOrganizationButton = mOrganizationView.findViewById(
+ R.id.add_organization_button);
+ mOrganizationSectionViewContainer =
+ (ViewGroup) mOrganizationView.findViewById(R.id.container);
+
mAddFieldButton = (Button) findViewById(R.id.button_add_field);
mAddFieldButton.setOnClickListener(new OnClickListener() {
@Override
@@ -148,6 +165,35 @@
});
}
+ @Override
+ protected Parcelable onSaveInstanceState() {
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(KEY_ORGANIZATION_VIEW_EXPANDED, mOrganizationViewExpanded);
+ // super implementation of onSaveInstanceState returns null
+ bundle.putParcelable(KEY_SUPER_INSTANCE_STATE, super.onSaveInstanceState());
+ return bundle;
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable state) {
+ if (state instanceof Bundle) {
+ Bundle bundle = (Bundle) state;
+ mOrganizationViewExpanded = bundle.getBoolean(KEY_ORGANIZATION_VIEW_EXPANDED);
+ if (mOrganizationViewExpanded) {
+ // we have to manually perform the expansion here because
+ // onRestoreInstanceState is called after setState. So at the point
+ // of the creation of the organization view, mOrganizationViewExpanded
+ // does not have the correct value yet.
+ mOrganizationSectionViewContainer.setVisibility(VISIBLE);
+ mAddOrganizationButton.setVisibility(GONE);
+ }
+ super.onRestoreInstanceState(bundle.getParcelable(KEY_SUPER_INSTANCE_STATE));
+ return;
+ }
+ super.onRestoreInstanceState(state);
+ return;
+ }
+
/**
* Set the internal state for this view, given a current
* {@link RawContactDelta} state and the {@link AccountType} that
@@ -262,27 +308,22 @@
} else {
// Otherwise provide the user with an "add organization" button that shows the
// EditText fields only when clicked
- final View organizationView = mInflater.inflate(
- R.layout.organization_editor_view_switcher, mFields, false);
- final View addOrganizationButton = organizationView.findViewById(
- R.id.add_organization_button);
- final ViewGroup organizationSectionViewContainer =
- (ViewGroup) organizationView.findViewById(R.id.container);
-
- organizationSectionViewContainer.addView(section);
+ mOrganizationSectionViewContainer.removeAllViews();
+ mOrganizationSectionViewContainer.addView(section);
// Setup the click listener for the "add organization" button
- addOrganizationButton.setOnClickListener(new OnClickListener() {
+ mAddOrganizationButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Once the user expands the organization field, the user cannot
// collapse them again.
- EditorAnimator.getInstance().expandOrganization(addOrganizationButton,
- organizationSectionViewContainer);
+ EditorAnimator.getInstance().expandOrganization(mAddOrganizationButton,
+ mOrganizationSectionViewContainer);
+ mOrganizationViewExpanded = true;
}
});
- mFields.addView(organizationView);
+ mFields.addView(mOrganizationView);
}
} else {
// Otherwise use generic section-based editors
@@ -380,7 +421,7 @@
return -1;
}
- public TextFieldsEditorView getNameEditor() {
+ public StructuredNameEditorView getNameEditor() {
return mName;
}
diff --git a/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java b/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
index 8e51d18..70a2b4e 100644
--- a/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
+++ b/src/com/android/contacts/editor/RawContactReadOnlyEditorView.java
@@ -37,14 +37,14 @@
import android.widget.TextView;
import android.widget.Toast;
-import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
+import com.android.contacts.common.GeoUtil;
import com.android.contacts.model.RawContactModifier;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.dataitem.DataKind;
import java.util.ArrayList;
@@ -204,7 +204,7 @@
final String phoneNumber = PhoneNumberUtils.formatNumber(
phone.getPhoneNumber(),
phone.getPhoneNormalizedNumber(),
- ContactsUtils.getCurrentCountryIso(getContext()));
+ GeoUtil.getCurrentCountryIso(getContext()));
final CharSequence phoneType;
if (phone.phoneHasType()) {
phoneType = Phone.getTypeLabel(
@@ -212,8 +212,8 @@
} else {
phoneType = null;
}
- bindData(mContext.getText(R.string.phoneLabelsGroup),
- phoneNumber, phoneType, i == 0);
+ bindData(mContext.getText(R.string.phoneLabelsGroup), phoneNumber, phoneType,
+ i == 0, true);
}
}
@@ -243,8 +243,13 @@
}
}
- private void bindData(
- CharSequence titleText, CharSequence data, CharSequence type, boolean isFirstEntry) {
+ private void bindData(CharSequence titleText, CharSequence data, CharSequence type,
+ boolean isFirstEntry) {
+ bindData(titleText, data, type, isFirstEntry, false);
+ }
+
+ private void bindData(CharSequence titleText, CharSequence data, CharSequence type,
+ boolean isFirstEntry, boolean forceLTR) {
final View field = mInflater.inflate(R.layout.item_read_only_field, mGeneral, false);
final View divider = field.findViewById(R.id.divider);
if (isFirstEntry) {
@@ -258,6 +263,9 @@
}
final TextView dataView = (TextView) field.findViewById(R.id.data);
dataView.setText(data);
+ if (forceLTR) {
+ dataView.setTextDirection(View.TEXT_DIRECTION_LTR);
+ }
final TextView typeView = (TextView) field.findViewById(R.id.type);
if (!TextUtils.isEmpty(type)) {
typeView.setText(type);
diff --git a/src/com/android/contacts/editor/SelectAccountDialogFragment.java b/src/com/android/contacts/editor/SelectAccountDialogFragment.java
deleted file mode 100644
index 3e7ad0e..0000000
--- a/src/com/android/contacts/editor/SelectAccountDialogFragment.java
+++ /dev/null
@@ -1,121 +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.editor;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.content.DialogInterface;
-import android.os.Bundle;
-
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountsListAdapter;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
-
-/**
- * Shows a dialog asking the user which account to chose.
- *
- * The result is passed to {@code targetFragment} passed to {@link #show}.
- */
-public final class SelectAccountDialogFragment extends DialogFragment {
- public static final String TAG = "SelectAccountDialogFragment";
-
- private static final String KEY_TITLE_RES_ID = "title_res_id";
- private static final String KEY_LIST_FILTER = "list_filter";
- private static final String KEY_EXTRA_ARGS = "extra_args";
-
- public SelectAccountDialogFragment() { // All fragments must have a public default constructor.
- }
-
- /**
- * Show the dialog.
- *
- * @param fragmentManager {@link FragmentManager}.
- * @param targetFragment {@link Fragment} that implements {@link Listener}.
- * @param titleResourceId resource ID to use as the title.
- * @param accountListFilter account filter.
- * @param extraArgs Extra arguments, which will later be passed to
- * {@link Listener#onAccountChosen}. {@code null} will be converted to
- * {@link Bundle#EMPTY}.
- */
- public static <F extends Fragment & Listener> void show(FragmentManager fragmentManager,
- F targetFragment, int titleResourceId,
- AccountListFilter accountListFilter, Bundle extraArgs) {
- final Bundle args = new Bundle();
- args.putInt(KEY_TITLE_RES_ID, titleResourceId);
- args.putSerializable(KEY_LIST_FILTER, accountListFilter);
- args.putBundle(KEY_EXTRA_ARGS, (extraArgs == null) ? Bundle.EMPTY : extraArgs);
-
- final SelectAccountDialogFragment instance = new SelectAccountDialogFragment();
- instance.setArguments(args);
- instance.setTargetFragment(targetFragment, 0);
- instance.show(fragmentManager, null);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- final Bundle args = getArguments();
-
- final AccountListFilter filter = (AccountListFilter) args.getSerializable(KEY_LIST_FILTER);
- final AccountsListAdapter accountAdapter = new AccountsListAdapter(builder.getContext(),
- filter);
-
- final DialogInterface.OnClickListener clickListener =
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
-
- onAccountSelected(accountAdapter.getItem(which));
- }
- };
-
- builder.setTitle(args.getInt(KEY_TITLE_RES_ID));
- builder.setSingleChoiceItems(accountAdapter, 0, clickListener);
- final AlertDialog result = builder.create();
- return result;
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- super.onCancel(dialog);
- final Fragment targetFragment = getTargetFragment();
- if (targetFragment != null && targetFragment instanceof Listener) {
- final Listener target = (Listener) targetFragment;
- target.onAccountSelectorCancelled();
- }
- }
-
- /**
- * Calls {@link Listener#onAccountChosen} of {@code targetFragment}.
- */
- private void onAccountSelected(AccountWithDataSet account) {
- final Fragment targetFragment = getTargetFragment();
- if (targetFragment != null && targetFragment instanceof Listener) {
- final Listener target = (Listener) targetFragment;
- target.onAccountChosen(account, getArguments().getBundle(KEY_EXTRA_ARGS));
- }
- }
-
- public interface Listener {
- void onAccountChosen(AccountWithDataSet account, Bundle extraArgs);
- void onAccountSelectorCancelled();
- }
-}
diff --git a/src/com/android/contacts/editor/StructuredNameEditorView.java b/src/com/android/contacts/editor/StructuredNameEditorView.java
index 3c4476d..4d72598 100644
--- a/src/com/android/contacts/editor/StructuredNameEditorView.java
+++ b/src/com/android/contacts/editor/StructuredNameEditorView.java
@@ -26,9 +26,9 @@
import android.util.AttributeSet;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.dataitem.DataItem;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.StructuredNameDataItem;
import com.android.contacts.util.NameConverter;
@@ -67,7 +67,7 @@
ViewIdGenerator vig) {
super.setValues(kind, entry, state, readOnly, vig);
if (mSnapshot == null) {
- mSnapshot = (StructuredNameDataItem) DataItem.createFrom(null,
+ mSnapshot = (StructuredNameDataItem) DataItem.createFrom(
new ContentValues(getValues().getCompleteValues()));
mChanged = entry.isInsert();
} else {
@@ -200,6 +200,18 @@
}
}
+ /**
+ * Set the display name onto the text field directly. This does not affect the underlying
+ * data structure so it is similar to the user typing the value in on the field directly.
+ *
+ * @param name The name to set on the text field.
+ */
+ public void setDisplayName(String name) {
+ // For now, assume the first text field is the name.
+ // TODO: Find a better way to get a hold of the name field.
+ super.setValue(0, name);
+ }
+
@Override
protected Parcelable onSaveInstanceState() {
SavedState state = new SavedState(super.onSaveInstanceState());
@@ -214,7 +226,7 @@
super.onRestoreInstanceState(ss.mSuperState);
mChanged = ss.mChanged;
- mSnapshot = (StructuredNameDataItem) DataItem.createFrom(null, ss.mSnapshot);
+ mSnapshot = (StructuredNameDataItem) DataItem.createFrom(ss.mSnapshot);
}
private static class SavedState implements Parcelable {
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index 8558b11..a20ba77 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -38,10 +38,10 @@
import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType.EditField;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.util.PhoneNumberFormatter;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.util.PhoneNumberFormatter;
/**
* Simple editor that handles labels and any {@link EditField} defined for the
@@ -58,6 +58,7 @@
private boolean mHideOptional = true;
private boolean mHasShortAndLongForms;
private int mMinFieldHeight;
+ private int mPreviousViewHeight;
public TextFieldsEditorView(Context context) {
super(context);
@@ -87,6 +88,8 @@
mExpansionViewContainer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ mPreviousViewHeight = mFields.getHeight();
+
// Save focus
final View focusedChild = getFocusedChild();
final int focusedViewId = focusedChild == null ? -1 : focusedChild.getId();
@@ -103,6 +106,8 @@
newFocusView = TextFieldsEditorView.this;
}
newFocusView.requestFocus();
+
+ EditorAnimator.getInstance().slideAndFadeIn(mFields, mPreviousViewHeight);
}
});
}
@@ -169,6 +174,10 @@
}
}
+ public void setValue(int field, String value) {
+ mFieldEditTexts[field].setText(value);
+ }
+
@Override
public void setValues(DataKind kind, ValuesDelta entry, RawContactDelta state, boolean readOnly,
ViewIdGenerator vig) {
@@ -206,6 +215,7 @@
fieldView.setInputType(inputType);
if (inputType == InputType.TYPE_CLASS_PHONE) {
PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(mContext, fieldView);
+ fieldView.setTextDirection(View.TEXT_DIRECTION_LTR);
}
// Show the "next" button in IME to navigate between text fields
diff --git a/src/com/android/contacts/editor/ViewIdGenerator.java b/src/com/android/contacts/editor/ViewIdGenerator.java
index 55a42a7..8494e1a 100644
--- a/src/com/android/contacts/editor/ViewIdGenerator.java
+++ b/src/com/android/contacts/editor/ViewIdGenerator.java
@@ -21,8 +21,8 @@
import android.os.Parcelable;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.dataitem.DataKind;
/**
* A class that provides unique view ids for {@link ContentEditorView}, {@link KindSectionView},
diff --git a/src/com/android/contacts/format/FormatUtils.java b/src/com/android/contacts/format/FormatUtils.java
deleted file mode 100644
index dd25c8d..0000000
--- a/src/com/android/contacts/format/FormatUtils.java
+++ /dev/null
@@ -1,194 +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.text.SpannableString;
-import android.text.style.StyleSpan;
-
-import com.android.contacts.test.NeededForTesting;
-
-import java.util.Arrays;
-
-/**
- * Assorted utility methods related to text formatting in Contacts.
- */
-public class FormatUtils {
- private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A';
- private static final char POP_DIRECTIONAL_FORMATTING = '\u202C';
-
- /**
- * Finds the earliest point in buffer1 at which the first part of buffer2 matches. For example,
- * overlapPoint("abcd", "cdef") == 2.
- */
- public static int overlapPoint(CharArrayBuffer buffer1, CharArrayBuffer buffer2) {
- if (buffer1 == null || buffer2 == null) {
- return -1;
- }
- return overlapPoint(Arrays.copyOfRange(buffer1.data, 0, buffer1.sizeCopied),
- Arrays.copyOfRange(buffer2.data, 0, buffer2.sizeCopied));
- }
-
- /**
- * Finds the earliest point in string1 at which the first part of string2 matches. For example,
- * overlapPoint("abcd", "cdef") == 2.
- */
- @NeededForTesting // App itself doesn't use this right now, but we don't want to remove it.
- public static int overlapPoint(String string1, String string2) {
- if (string1 == null || string2 == null) {
- return -1;
- }
- return overlapPoint(string1.toCharArray(), string2.toCharArray());
- }
-
- /**
- * Finds the earliest point in array1 at which the first part of array2 matches. For example,
- * overlapPoint("abcd", "cdef") == 2.
- */
- public static int overlapPoint(char[] array1, char[] array2) {
- if (array1 == null || array2 == null) {
- return -1;
- }
- int count1 = array1.length;
- int count2 = array2.length;
-
- // Ignore matching tails of the two arrays.
- while (count1 > 0 && count2 > 0 && array1[count1 - 1] == array2[count2 - 1]) {
- count1--;
- count2--;
- }
-
- int size = count2;
- for (int i = 0; i < count1; i++) {
- if (i + size > count1) {
- size = count1 - i;
- }
- int j;
- for (j = 0; j < size; j++) {
- if (array1[i+j] != array2[j]) {
- break;
- }
- }
- if (j == size) {
- return i;
- }
- }
-
- return -1;
- }
-
- /**
- * Applies the given style to a range of the input CharSequence.
- * @param style The style to apply (see the style constants in {@link Typeface}).
- * @param input The CharSequence to style.
- * @param start Starting index of the range to style (will be clamped to be a minimum of 0).
- * @param end Ending index of the range to style (will be clamped to a maximum of the input
- * length).
- * @param flags Bitmask for configuring behavior of the span. See {@link android.text.Spanned}.
- * @return The styled CharSequence.
- */
- public static CharSequence applyStyleToSpan(int style, CharSequence input, int start, int end,
- int flags) {
- // Enforce bounds of the char sequence.
- start = Math.max(0, start);
- end = Math.min(input.length(), end);
- SpannableString text = new SpannableString(input);
- text.setSpan(new StyleSpan(style), start, end, flags);
- return text;
- }
-
- @NeededForTesting
- public static void copyToCharArrayBuffer(String text, CharArrayBuffer buffer) {
- if (text != null) {
- char[] data = buffer.data;
- if (data == null || data.length < text.length()) {
- buffer.data = text.toCharArray();
- } else {
- text.getChars(0, text.length(), data, 0);
- }
- buffer.sizeCopied = text.length();
- } else {
- buffer.sizeCopied = 0;
- }
- }
-
- /** Returns a String that represents the content of the given {@link CharArrayBuffer}. */
- @NeededForTesting
- public static String charArrayBufferToString(CharArrayBuffer buffer) {
- return new String(buffer.data, 0, buffer.sizeCopied);
- }
-
- /**
- * Finds the index of the first word that starts with the given prefix.
- * <p>
- * If not found, returns -1.
- *
- * @param text the text in which to search for the prefix
- * @param prefix the text to find, in upper case letters
- */
- public static int indexOfWordPrefix(CharSequence text, char[] prefix) {
- if (prefix == null || text == null) {
- return -1;
- }
-
- int textLength = text.length();
- int prefixLength = prefix.length;
-
- if (prefixLength == 0 || textLength < prefixLength) {
- return -1;
- }
-
- int i = 0;
- while (i < textLength) {
- // Skip non-word characters
- while (i < textLength && !Character.isLetterOrDigit(text.charAt(i))) {
- i++;
- }
-
- if (i + prefixLength > textLength) {
- return -1;
- }
-
- // Compare the prefixes
- int j;
- for (j = 0; j < prefixLength; j++) {
- if (Character.toUpperCase(text.charAt(i + j)) != prefix[j]) {
- break;
- }
- }
- if (j == prefixLength) {
- return i;
- }
-
- // Skip this word
- while (i < textLength && Character.isLetterOrDigit(text.charAt(i))) {
- i++;
- }
- }
-
- return -1;
- }
-
- /** Returns the given text, forced to be left-to-right. */
- public static CharSequence forceLeftToRight(CharSequence text) {
- StringBuilder sb = new StringBuilder();
- sb.append(LEFT_TO_RIGHT_EMBEDDING);
- sb.append(text);
- sb.append(POP_DIRECTIONAL_FORMATTING);
- return sb.toString();
- }
-}
diff --git a/src/com/android/contacts/format/PrefixHighlighter.java b/src/com/android/contacts/format/PrefixHighlighter.java
deleted file mode 100644
index 0bc67a6..0000000
--- a/src/com/android/contacts/format/PrefixHighlighter.java
+++ /dev/null
@@ -1,66 +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.text.SpannableString;
-import android.text.style.ForegroundColorSpan;
-import android.widget.TextView;
-
-/**
- * Highlights the text in a text field.
- */
-public class PrefixHighlighter {
- private final int mPrefixHighlightColor;
-
- private ForegroundColorSpan mPrefixColorSpan;
-
- public PrefixHighlighter(int prefixHighlightColor) {
- mPrefixHighlightColor = prefixHighlightColor;
- }
-
- /**
- * Sets the text on the given text view, highlighting the word that matches the given prefix.
- *
- * @param view the view on which to set the text
- * @param text the string to use as the text
- * @param prefix the prefix to look for
- */
- public void setText(TextView view, String text, char[] prefix) {
- view.setText(apply(text, prefix));
- }
-
- /**
- * Returns a CharSequence which highlights the given prefix if found in the given text.
- *
- * @param text the text to which to apply the highlight
- * @param prefix the prefix to look for
- */
- public CharSequence apply(CharSequence text, char[] prefix) {
- int index = FormatUtils.indexOfWordPrefix(text, prefix);
- if (index != -1) {
- if (mPrefixColorSpan == null) {
- mPrefixColorSpan = new ForegroundColorSpan(mPrefixHighlightColor);
- }
-
- SpannableString result = new SpannableString(text);
- result.setSpan(mPrefixColorSpan, index, index + prefix.length, 0 /* flags */);
- return result;
- } else {
- return text;
- }
- }
-}
diff --git a/src/com/android/contacts/group/GroupBrowseListAdapter.java b/src/com/android/contacts/group/GroupBrowseListAdapter.java
index acea625..f48e0a7 100644
--- a/src/com/android/contacts/group/GroupBrowseListAdapter.java
+++ b/src/com/android/contacts/group/GroupBrowseListAdapter.java
@@ -29,9 +29,9 @@
import com.android.contacts.GroupListLoader;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.internal.util.Objects;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.google.common.base.Objects;
/**
* Adapter to populate the list of groups.
@@ -60,7 +60,7 @@
// first group
if (mSelectedGroupUri == null && cursor != null && cursor.getCount() > 0) {
GroupListItem firstItem = getItem(0);
- long groupId = (firstItem == null) ? null : firstItem.getGroupId();
+ long groupId = (firstItem == null) ? 0 : firstItem.getGroupId();
mSelectedGroupUri = getGroupUriFromId(groupId);
}
@@ -103,7 +103,7 @@
@Override
public int getCount() {
- return mCursor == null ? 0 : mCursor.getCount();
+ return (mCursor == null || mCursor.isClosed()) ? 0 : mCursor.getCount();
}
@Override
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index 625615f..d6ca3d7 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -46,7 +46,7 @@
import com.android.contacts.GroupListLoader;
import com.android.contacts.R;
import com.android.contacts.group.GroupBrowseListAdapter.GroupListItemViewCache;
-import com.android.contacts.widget.AutoScrollListView;
+import com.android.contacts.common.list.AutoScrollListView;
/**
* Fragment to display the list of groups.
diff --git a/src/com/android/contacts/group/GroupDetailDisplayUtils.java b/src/com/android/contacts/group/GroupDetailDisplayUtils.java
index d4e43a0..fb0b0c8 100644
--- a/src/com/android/contacts/group/GroupDetailDisplayUtils.java
+++ b/src/com/android/contacts/group/GroupDetailDisplayUtils.java
@@ -23,8 +23,8 @@
import android.widget.TextView;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
public class GroupDetailDisplayUtils {
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index e0dce8c..834e2c3 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -45,16 +45,16 @@
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.ContactPhotoManager;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.interactions.GroupDeletionDialogFragment;
-import com.android.contacts.list.ContactTileAdapter;
-import com.android.contacts.list.ContactTileAdapter.DisplayType;
-import com.android.contacts.list.ContactTileView;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.list.ContactTileAdapter;
+import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.list.GroupMemberTileAdapter;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
/**
* Displays the details of a group and shows a list of actions possible for the group.
@@ -115,10 +115,11 @@
private String mAccountTypeString;
private String mDataSet;
private boolean mIsReadOnly;
+ private boolean mIsMembershipEditable;
private boolean mShowGroupActionInActionBar;
private boolean mOptionsMenuGroupDeletable;
- private boolean mOptionsMenuGroupPresent;
+ private boolean mOptionsMenuGroupEditable;
private boolean mCloseActivityAfterDelete;
public GroupDetailFragment() {
@@ -133,8 +134,7 @@
Resources res = getResources();
int columnCount = res.getInteger(R.integer.contact_tile_column_count);
- mAdapter = new ContactTileAdapter(activity, mContactTileListener, columnCount,
- DisplayType.GROUP_MEMBERS);
+ mAdapter = new GroupMemberTileAdapter(activity, mContactTileListener, columnCount);
configurePhotoLoader();
}
@@ -339,8 +339,15 @@
* (based on the result from the {@link Loader}), then we can display this to the user in 1 of
* 2 ways depending on screen size and orientation: either as a button in the action bar or as
* a button in a static header on the page.
+ * We also use isGroupMembershipEditable() of accountType to determine whether or not we should
+ * display the Edit option in the Actionbar.
*/
private void updateAccountType(final String accountTypeString, final String dataSet) {
+ final AccountTypeManager manager = AccountTypeManager.getInstance(getActivity());
+ final AccountType accountType =
+ manager.getAccountType(accountTypeString, dataSet);
+
+ mIsMembershipEditable = accountType.isGroupMembershipEditable();
// If the group action should be shown in the action bar, then pass the data to the
// listener who will take care of setting up the view and click listener. There is nothing
@@ -350,10 +357,6 @@
return;
}
- final AccountTypeManager manager = AccountTypeManager.getInstance(getActivity());
- final AccountType accountType =
- manager.getAccountType(accountTypeString, dataSet);
-
// Otherwise, if the {@link Fragment} needs to create and setup the button, then first
// verify that there is a valid action.
if (!TextUtils.isEmpty(accountType.getViewGroupActivity())) {
@@ -407,24 +410,24 @@
public boolean isOptionsMenuChanged() {
return mOptionsMenuGroupDeletable != isGroupDeletable() &&
- mOptionsMenuGroupPresent != isGroupPresent();
+ mOptionsMenuGroupEditable != isGroupEditableAndPresent();
}
public boolean isGroupDeletable() {
return mGroupUri != null && !mIsReadOnly;
}
- public boolean isGroupPresent() {
- return mGroupUri != null;
+ public boolean isGroupEditableAndPresent() {
+ return mGroupUri != null && mIsMembershipEditable;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
mOptionsMenuGroupDeletable = isGroupDeletable() && isVisible();
- mOptionsMenuGroupPresent = isGroupPresent() && isVisible();
+ mOptionsMenuGroupEditable = isGroupEditableAndPresent() && isVisible();
final MenuItem editMenu = menu.findItem(R.id.menu_edit_group);
- editMenu.setVisible(mOptionsMenuGroupPresent);
+ editMenu.setVisible(mOptionsMenuGroupEditable);
final MenuItem deleteMenu = menu.findItem(R.id.menu_delete_group);
deleteMenu.setVisible(mOptionsMenuGroupDeletable);
diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java
index 762867c..acc99f4 100644
--- a/src/com/android/contacts/group/GroupEditorFragment.java
+++ b/src/com/android/contacts/group/GroupEditorFragment.java
@@ -57,21 +57,21 @@
import android.widget.TextView;
import android.widget.Toast;
-import com.android.contacts.ContactPhotoManager;
import com.android.contacts.ContactSaveService;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.GroupMemberLoader.GroupEditorQuery;
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.activities.GroupEditorActivity;
-import com.android.contacts.editor.SelectAccountDialogFragment;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.editor.SelectAccountDialogFragment;
import com.android.contacts.group.SuggestedMemberListAdapter.SuggestedMember;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.util.ViewUtil;
-import com.android.internal.util.Objects;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
+import com.android.contacts.common.util.ViewUtil;
+import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.List;
@@ -570,6 +570,10 @@
*/
public boolean save() {
if (!hasValidGroupName() || mStatus != Status.EDITING) {
+ mStatus = Status.CLOSING;
+ if (mListener != null) {
+ mListener.onReverted();
+ }
return false;
}
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index ea6e6dc..2880f77 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -35,8 +35,8 @@
import com.android.contacts.ContactSaveService;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Sets;
diff --git a/src/com/android/contacts/interactions/GroupCreationDialogFragment.java b/src/com/android/contacts/interactions/GroupCreationDialogFragment.java
index 5731bc1..b2860ea 100644
--- a/src/com/android/contacts/interactions/GroupCreationDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupCreationDialogFragment.java
@@ -23,7 +23,7 @@
import com.android.contacts.ContactSaveService;
import com.android.contacts.R;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
/**
* A dialog for creating a new group.
diff --git a/src/com/android/contacts/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
deleted file mode 100644
index f63f84c..0000000
--- a/src/com/android/contacts/interactions/ImportExportDialogFragment.java
+++ /dev/null
@@ -1,238 +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.interactions;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract.Contacts;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.contacts.R;
-import com.android.contacts.editor.SelectAccountDialogFragment;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountSelectionUtil;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
-import com.android.contacts.vcard.ExportVCardActivity;
-
-import java.util.List;
-
-/**
- * An dialog invoked to import/export contacts.
- */
-public class ImportExportDialogFragment extends DialogFragment
- implements SelectAccountDialogFragment.Listener {
- public static final String TAG = "ImportExportDialogFragment";
-
- private static final String KEY_RES_ID = "resourceId";
- private static final String ARG_CONTACTS_ARE_AVAILABLE = "CONTACTS_ARE_AVAILABLE";
-
- private final String[] LOOKUP_PROJECTION = new String[] {
- Contacts.LOOKUP_KEY
- };
-
- /** Preferred way to show this dialog */
- public static void show(FragmentManager fragmentManager, boolean contactsAreAvailable) {
- final ImportExportDialogFragment fragment = new ImportExportDialogFragment();
- Bundle args = new Bundle();
- args.putBoolean(ARG_CONTACTS_ARE_AVAILABLE, contactsAreAvailable);
- fragment.setArguments(args);
- fragment.show(fragmentManager, ImportExportDialogFragment.TAG);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Wrap our context to inflate list items using the correct theme
- final Resources res = getActivity().getResources();
- final LayoutInflater dialogInflater = (LayoutInflater)getActivity()
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final boolean contactsAreAvailable = getArguments().getBoolean(ARG_CONTACTS_ARE_AVAILABLE);
-
- // Adapter that shows a list of string resources
- final ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(getActivity(),
- R.layout.select_dialog_item) {
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final TextView result = (TextView)(convertView != null ? convertView :
- dialogInflater.inflate(R.layout.select_dialog_item, parent, false));
-
- final int resId = getItem(position);
- result.setText(resId);
- return result;
- }
- };
-
- if (TelephonyManager.getDefault().hasIccCard()
- && res.getBoolean(R.bool.config_allow_sim_import)) {
- adapter.add(R.string.import_from_sim);
- }
- if (res.getBoolean(R.bool.config_allow_import_from_sdcard)) {
- adapter.add(R.string.import_from_sdcard);
- }
- if (res.getBoolean(R.bool.config_allow_export_to_sdcard)) {
- if (contactsAreAvailable) {
- adapter.add(R.string.export_to_sdcard);
- }
- }
- if (res.getBoolean(R.bool.config_allow_share_visible_contacts)) {
- if (contactsAreAvailable) {
- adapter.add(R.string.share_visible_contacts);
- }
- }
-
- final DialogInterface.OnClickListener clickListener =
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- boolean dismissDialog;
- final int resId = adapter.getItem(which);
- switch (resId) {
- case R.string.import_from_sim:
- case R.string.import_from_sdcard: {
- dismissDialog = handleImportRequest(resId);
- break;
- }
- case R.string.export_to_sdcard: {
- dismissDialog = true;
- Intent exportIntent = new Intent(getActivity(), ExportVCardActivity.class);
- getActivity().startActivity(exportIntent);
- break;
- }
- case R.string.share_visible_contacts: {
- dismissDialog = true;
- doShareVisibleContacts();
- break;
- }
- default: {
- dismissDialog = true;
- Log.e(TAG, "Unexpected resource: "
- + getActivity().getResources().getResourceEntryName(resId));
- }
- }
- if (dismissDialog) {
- dialog.dismiss();
- }
- }
- };
- return new AlertDialog.Builder(getActivity())
- .setTitle(contactsAreAvailable
- ? R.string.dialog_import_export
- : R.string.dialog_import)
- .setSingleChoiceItems(adapter, -1, clickListener)
- .create();
- }
-
- private void doShareVisibleContacts() {
- // TODO move the query into a loader and do this in a background thread
- final Cursor cursor = getActivity().getContentResolver().query(Contacts.CONTENT_URI,
- LOOKUP_PROJECTION, Contacts.IN_VISIBLE_GROUP + "!=0", null, null);
- if (cursor != null) {
- try {
- if (!cursor.moveToFirst()) {
- Toast.makeText(getActivity(), R.string.share_error, Toast.LENGTH_SHORT).show();
- return;
- }
-
- StringBuilder uriListBuilder = new StringBuilder();
- int index = 0;
- do {
- if (index != 0)
- uriListBuilder.append(':');
- uriListBuilder.append(cursor.getString(0));
- index++;
- } while (cursor.moveToNext());
- Uri uri = Uri.withAppendedPath(
- Contacts.CONTENT_MULTI_VCARD_URI,
- Uri.encode(uriListBuilder.toString()));
-
- final Intent intent = new Intent(Intent.ACTION_SEND);
- intent.setType(Contacts.CONTENT_VCARD_TYPE);
- intent.putExtra(Intent.EXTRA_STREAM, uri);
- getActivity().startActivity(intent);
- } finally {
- cursor.close();
- }
- }
- }
-
- /**
- * Handle "import from SIM" and "import from SD".
- *
- * @return {@code true} if the dialog show be closed. {@code false} otherwise.
- */
- private boolean handleImportRequest(int resId) {
- // There are three possibilities:
- // - more than one accounts -> ask the user
- // - just one account -> use the account without asking the user
- // - no account -> use phone-local storage without asking the user
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(getActivity());
- final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
- final int size = accountList.size();
- if (size > 1) {
- // Send over to the account selector
- final Bundle args = new Bundle();
- args.putInt(KEY_RES_ID, resId);
- SelectAccountDialogFragment.show(
- getFragmentManager(), this,
- R.string.dialog_new_contact_account,
- AccountListFilter.ACCOUNTS_CONTACT_WRITABLE, args);
-
- // In this case, because this DialogFragment is used as a target fragment to
- // SelectAccountDialogFragment, we can't close it yet. We close the dialog when
- // we get a callback from it.
- return false;
- }
-
- AccountSelectionUtil.doImport(getActivity(), resId,
- (size == 1 ? accountList.get(0) : null));
- return true; // Close the dialog.
- }
-
- /**
- * Called when an account is selected on {@link SelectAccountDialogFragment}.
- */
- @Override
- public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
- AccountSelectionUtil.doImport(getActivity(), extraArgs.getInt(KEY_RES_ID), account);
-
- // At this point the dialog is still showing (which is why we can use getActivity() above)
- // So close it.
- dismiss();
- }
-
- @Override
- public void onAccountSelectorCancelled() {
- // See onAccountChosen() -- at this point the dialog is still showing. Close it.
- dismiss();
- }
-}
diff --git a/src/com/android/contacts/interactions/PhoneNumberInteraction.java b/src/com/android/contacts/interactions/PhoneNumberInteraction.java
deleted file mode 100644
index 207ceea..0000000
--- a/src/com/android/contacts/interactions/PhoneNumberInteraction.java
+++ /dev/null
@@ -1,495 +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.interactions;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
-import android.content.Intent;
-import android.content.Loader;
-import android.content.Loader.OnLoadCompleteListener;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.RawContacts;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.CheckBox;
-import android.widget.ListAdapter;
-import android.widget.TextView;
-
-import com.android.contacts.Collapser;
-import com.android.contacts.Collapser.Collapsible;
-import com.android.contacts.ContactSaveService;
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.R;
-import com.android.contacts.activities.DialtactsActivity;
-import com.android.contacts.activities.TransactionSafeActivity;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.StringInflater;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.model.AccountTypeManager;
-import com.google.common.annotations.VisibleForTesting;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Initiates phone calls or a text message. If there are multiple candidates, this class shows a
- * dialog to pick one. Creating one of these interactions should be done through the static
- * factory methods.
- *
- * Note that this class initiates not only usual *phone* calls but also *SIP* calls.
- *
- * TODO: clean up code and documents since it is quite confusing to use "phone numbers" or
- * "phone calls" here while they can be SIP addresses or SIP calls (See also issue 5039627).
- */
-public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
- private static final String TAG = PhoneNumberInteraction.class.getSimpleName();
-
- @VisibleForTesting
- /* package */ enum InteractionType {
- PHONE_CALL,
- SMS
- }
-
- /**
- * A model object for capturing a phone number for a given contact.
- */
- @VisibleForTesting
- /* package */ static class PhoneItem implements Parcelable, Collapsible<PhoneItem> {
- long id;
- String phoneNumber;
- String accountType;
- String dataSet;
- long type;
- String label;
- /** {@link Phone#CONTENT_ITEM_TYPE} or {@link SipAddress#CONTENT_ITEM_TYPE}. */
- String mimeType;
-
- public PhoneItem() {
- }
-
- private PhoneItem(Parcel in) {
- this.id = in.readLong();
- this.phoneNumber = in.readString();
- this.accountType = in.readString();
- this.dataSet = in.readString();
- this.type = in.readLong();
- this.label = in.readString();
- this.mimeType = in.readString();
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeLong(id);
- dest.writeString(phoneNumber);
- dest.writeString(accountType);
- dest.writeString(dataSet);
- dest.writeLong(type);
- dest.writeString(label);
- dest.writeString(mimeType);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public boolean collapseWith(PhoneItem phoneItem) {
- if (!shouldCollapseWith(phoneItem)) {
- return false;
- }
- // Just keep the number and id we already have.
- return true;
- }
-
- @Override
- public boolean shouldCollapseWith(PhoneItem phoneItem) {
- return ContactsUtils.shouldCollapse(Phone.CONTENT_ITEM_TYPE, phoneNumber,
- Phone.CONTENT_ITEM_TYPE, phoneItem.phoneNumber);
- }
-
- @Override
- public String toString() {
- return phoneNumber;
- }
-
- public static final Parcelable.Creator<PhoneItem> CREATOR
- = new Parcelable.Creator<PhoneItem>() {
- @Override
- public PhoneItem createFromParcel(Parcel in) {
- return new PhoneItem(in);
- }
-
- @Override
- public PhoneItem[] newArray(int size) {
- return new PhoneItem[size];
- }
- };
- }
-
- /**
- * A list adapter that populates the list of contact's phone numbers.
- */
- private static class PhoneItemAdapter extends ArrayAdapter<PhoneItem> {
- private final InteractionType mInteractionType;
- private final AccountTypeManager mAccountTypeManager;
-
- public PhoneItemAdapter(Context context, List<PhoneItem> list,
- InteractionType interactionType) {
- super(context, R.layout.phone_disambig_item, android.R.id.text2, list);
- mInteractionType = interactionType;
- mAccountTypeManager = AccountTypeManager.getInstance(context);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final View view = super.getView(position, convertView, parent);
-
- final PhoneItem item = getItem(position);
- final AccountType accountType = mAccountTypeManager.getAccountType(
- item.accountType, item.dataSet);
- final TextView typeView = (TextView) view.findViewById(android.R.id.text1);
- final DataKind kind = accountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
- if (kind != null) {
- ContentValues values = new ContentValues();
- values.put(Phone.TYPE, item.type);
- values.put(Phone.LABEL, item.label);
- StringInflater header = (mInteractionType == InteractionType.SMS)
- ? kind.actionAltHeader : kind.actionHeader;
- typeView.setText(header.inflateUsing(getContext(), values));
- } else {
- typeView.setText(R.string.call_other);
- }
- return view;
- }
- }
-
- /**
- * {@link DialogFragment} used for displaying a dialog with a list of phone numbers of which
- * one will be chosen to make a call or initiate an sms message.
- *
- * It is recommended to use
- * {@link PhoneNumberInteraction#startInteractionForPhoneCall(TransactionSafeActivity, Uri)} or
- * {@link PhoneNumberInteraction#startInteractionForTextMessage(TransactionSafeActivity, Uri)}
- * instead of directly using this class, as those methods handle one or multiple data cases
- * appropriately.
- */
- /* Made public to let the system reach this class */
- public static class PhoneDisambiguationDialogFragment extends DialogFragment
- implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
-
- private static final String ARG_PHONE_LIST = "phoneList";
- private static final String ARG_INTERACTION_TYPE = "interactionType";
- private static final String ARG_CALL_ORIGIN = "callOrigin";
-
- private InteractionType mInteractionType;
- private ListAdapter mPhonesAdapter;
- private List<PhoneItem> mPhoneList;
- private String mCallOrigin;
-
- public static void show(FragmentManager fragmentManager,
- ArrayList<PhoneItem> phoneList, InteractionType interactionType,
- String callOrigin) {
- PhoneDisambiguationDialogFragment fragment = new PhoneDisambiguationDialogFragment();
- Bundle bundle = new Bundle();
- bundle.putParcelableArrayList(ARG_PHONE_LIST, phoneList);
- bundle.putSerializable(ARG_INTERACTION_TYPE, interactionType);
- bundle.putString(ARG_CALL_ORIGIN, callOrigin);
- fragment.setArguments(bundle);
- fragment.show(fragmentManager, TAG);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final Activity activity = getActivity();
- mPhoneList = getArguments().getParcelableArrayList(ARG_PHONE_LIST);
- mInteractionType =
- (InteractionType) getArguments().getSerializable(ARG_INTERACTION_TYPE);
- mCallOrigin = getArguments().getString(ARG_CALL_ORIGIN);
-
- mPhonesAdapter = new PhoneItemAdapter(activity, mPhoneList, mInteractionType);
- final LayoutInflater inflater = activity.getLayoutInflater();
- final View setPrimaryView = inflater.inflate(R.layout.set_primary_checkbox, null);
- return new AlertDialog.Builder(activity)
- .setAdapter(mPhonesAdapter, this)
- .setTitle(mInteractionType == InteractionType.SMS
- ? R.string.sms_disambig_title : R.string.call_disambig_title)
- .setView(setPrimaryView)
- .create();
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- final Activity activity = getActivity();
- if (activity == null) return;
- final AlertDialog alertDialog = (AlertDialog)dialog;
- if (mPhoneList.size() > which && which >= 0) {
- final PhoneItem phoneItem = mPhoneList.get(which);
- final CheckBox checkBox = (CheckBox)alertDialog.findViewById(R.id.setPrimary);
- if (checkBox.isChecked()) {
- // Request to mark the data as primary in the background.
- final Intent serviceIntent = ContactSaveService.createSetSuperPrimaryIntent(
- activity, phoneItem.id);
- activity.startService(serviceIntent);
- }
-
- PhoneNumberInteraction.performAction(activity, phoneItem.phoneNumber,
- mInteractionType, mCallOrigin);
- } else {
- dialog.dismiss();
- }
- }
- }
-
- private static final String[] PHONE_NUMBER_PROJECTION = new String[] {
- Phone._ID,
- Phone.NUMBER,
- Phone.IS_SUPER_PRIMARY,
- RawContacts.ACCOUNT_TYPE,
- RawContacts.DATA_SET,
- Phone.TYPE,
- Phone.LABEL,
- Phone.MIMETYPE
- };
-
- private static final String PHONE_NUMBER_SELECTION =
- Data.MIMETYPE + " IN ('"
- + Phone.CONTENT_ITEM_TYPE + "', "
- + "'" + SipAddress.CONTENT_ITEM_TYPE + "') AND "
- + Data.DATA1 + " NOT NULL";
-
- private final Context mContext;
- private final OnDismissListener mDismissListener;
- private final InteractionType mInteractionType;
-
- private final String mCallOrigin;
-
- private CursorLoader mLoader;
-
- /**
- * Constructs a new {@link PhoneNumberInteraction}. The constructor takes in a {@link Context}
- * instead of a {@link TransactionSafeActivity} for testing purposes to verify the functionality
- * of this class. However, all factory methods for creating {@link PhoneNumberInteraction}s
- * require a {@link TransactionSafeActivity} (i.e. see {@link #startInteractionForPhoneCall}).
- */
- @VisibleForTesting
- /* package */ PhoneNumberInteraction(Context context, InteractionType interactionType,
- DialogInterface.OnDismissListener dismissListener) {
- this(context, interactionType, dismissListener, null);
- }
-
- private PhoneNumberInteraction(Context context, InteractionType interactionType,
- DialogInterface.OnDismissListener dismissListener, String callOrigin) {
- mContext = context;
- mInteractionType = interactionType;
- mDismissListener = dismissListener;
- mCallOrigin = callOrigin;
- }
-
- private void performAction(String phoneNumber) {
- PhoneNumberInteraction.performAction(mContext, phoneNumber, mInteractionType, mCallOrigin);
- }
-
- private static void performAction(
- Context context, String phoneNumber, InteractionType interactionType,
- String callOrigin) {
- Intent intent;
- switch (interactionType) {
- case SMS:
- intent = new Intent(
- Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
- break;
- default:
- intent = ContactsUtils.getCallIntent(phoneNumber, callOrigin);
- break;
- }
- context.startActivity(intent);
- }
-
- /**
- * Initiates the interaction. This may result in a phone call or sms message started
- * or a disambiguation dialog to determine which phone number should be used.
- */
- @VisibleForTesting
- /* package */ void startInteraction(Uri uri) {
- if (mLoader != null) {
- mLoader.reset();
- }
-
- final Uri queryUri;
- final String inputUriAsString = uri.toString();
- if (inputUriAsString.startsWith(Contacts.CONTENT_URI.toString())) {
- if (!inputUriAsString.endsWith(Contacts.Data.CONTENT_DIRECTORY)) {
- queryUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY);
- } else {
- queryUri = uri;
- }
- } else if (inputUriAsString.startsWith(Data.CONTENT_URI.toString())) {
- queryUri = uri;
- } else {
- throw new UnsupportedOperationException(
- "Input Uri must be contact Uri or data Uri (input: \"" + uri + "\")");
- }
-
- mLoader = new CursorLoader(mContext,
- queryUri,
- PHONE_NUMBER_PROJECTION,
- PHONE_NUMBER_SELECTION,
- null,
- null);
- mLoader.registerListener(0, this);
- mLoader.startLoading();
- }
-
- @Override
- public void onLoadComplete(Loader<Cursor> loader, Cursor cursor) {
- if (cursor == null || !isSafeToCommitTransactions()) {
- onDismiss();
- return;
- }
-
- ArrayList<PhoneItem> phoneList = new ArrayList<PhoneItem>();
- String primaryPhone = null;
- try {
- while (cursor.moveToNext()) {
- if (cursor.getInt(cursor.getColumnIndex(Phone.IS_SUPER_PRIMARY)) != 0) {
- // Found super primary, call it.
- primaryPhone = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
- break;
- }
-
- PhoneItem item = new PhoneItem();
- item.id = cursor.getLong(cursor.getColumnIndex(Data._ID));
- item.phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
- item.accountType =
- cursor.getString(cursor.getColumnIndex(RawContacts.ACCOUNT_TYPE));
- item.dataSet = cursor.getString(cursor.getColumnIndex(RawContacts.DATA_SET));
- item.type = cursor.getInt(cursor.getColumnIndex(Phone.TYPE));
- item.label = cursor.getString(cursor.getColumnIndex(Phone.LABEL));
- item.mimeType = cursor.getString(cursor.getColumnIndex(Phone.MIMETYPE));
-
- phoneList.add(item);
- }
- } finally {
- cursor.close();
- }
-
- if (primaryPhone != null) {
- performAction(primaryPhone);
- onDismiss();
- return;
- }
-
- Collapser.collapseList(phoneList);
-
- if (phoneList.size() == 0) {
- onDismiss();
- } else if (phoneList.size() == 1) {
- PhoneItem item = phoneList.get(0);
- onDismiss();
- performAction(item.phoneNumber);
- } else {
- // There are multiple candidates. Let the user choose one.
- showDisambiguationDialog(phoneList);
- }
- }
-
- private boolean isSafeToCommitTransactions() {
- return mContext instanceof TransactionSafeActivity ?
- ((TransactionSafeActivity) mContext).isSafeToCommitTransactions() : true;
- }
-
- private void onDismiss() {
- if (mDismissListener != null) {
- mDismissListener.onDismiss(null);
- }
- }
-
- /**
- * Start call action using given contact Uri. If there are multiple candidates for the phone
- * call, dialog is automatically shown and the user is asked to choose one.
- *
- * @param activity that is calling this interaction. This must be of type
- * {@link TransactionSafeActivity} because we need to check on the activity state after the
- * phone numbers have been queried for.
- * @param uri contact Uri (built from {@link Contacts#CONTENT_URI}) or data Uri
- * (built from {@link Data#CONTENT_URI}). Contact Uri may show the disambiguation dialog while
- * data Uri won't.
- */
- public static void startInteractionForPhoneCall(TransactionSafeActivity activity, Uri uri) {
- (new PhoneNumberInteraction(activity, InteractionType.PHONE_CALL, null))
- .startInteraction(uri);
- }
-
- /**
- * @param activity that is calling this interaction. This must be of type
- * {@link TransactionSafeActivity} because we need to check on the activity state after the
- * phone numbers have been queried for.
- * @param callOrigin If non null, {@link DialtactsActivity#EXTRA_CALL_ORIGIN} will be
- * appended to the Intent initiating phone call. See comments in Phone package (PhoneApp)
- * for more detail.
- */
- public static void startInteractionForPhoneCall(TransactionSafeActivity activity, Uri uri,
- String callOrigin) {
- (new PhoneNumberInteraction(activity, InteractionType.PHONE_CALL, null, callOrigin))
- .startInteraction(uri);
- }
-
- /**
- * Start text messaging (a.k.a SMS) action using given contact Uri. If there are multiple
- * candidates for the phone call, dialog is automatically shown and the user is asked to choose
- * one.
- *
- * @param activity that is calling this interaction. This must be of type
- * {@link TransactionSafeActivity} because we need to check on the activity state after the
- * phone numbers have been queried for.
- * @param uri contact Uri (built from {@link Contacts#CONTENT_URI}) or data Uri
- * (built from {@link Data#CONTENT_URI}). Contact Uri may show the disambiguation dialog while
- * data Uri won't.
- */
- public static void startInteractionForTextMessage(TransactionSafeActivity activity, Uri uri) {
- (new PhoneNumberInteraction(activity, InteractionType.SMS, null)).startInteraction(uri);
- }
-
- @VisibleForTesting
- /* package */ CursorLoader getLoader() {
- return mLoader;
- }
-
- @VisibleForTesting
- /* package */ void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
- PhoneDisambiguationDialogFragment.show(((Activity)mContext).getFragmentManager(),
- phoneList, mInteractionType, mCallOrigin);
- }
-}
diff --git a/src/com/android/contacts/list/AccountFilterActivity.java b/src/com/android/contacts/list/AccountFilterActivity.java
deleted file mode 100644
index af727a5..0000000
--- a/src/com/android/contacts/list/AccountFilterActivity.java
+++ /dev/null
@@ -1,265 +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.app.ActionBar;
-import android.app.Activity;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.AsyncTaskLoader;
-import android.content.Context;
-import android.content.Intent;
-import android.content.Loader;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.ListView;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Shows a list of all available accounts, letting the user select under which account to view
- * contacts.
- */
-public class AccountFilterActivity extends ContactsActivity
- implements AdapterView.OnItemClickListener {
-
- private static final String TAG = AccountFilterActivity.class.getSimpleName();
-
- private static final int SUBACTIVITY_CUSTOMIZE_FILTER = 0;
-
- public static final String KEY_EXTRA_CONTACT_LIST_FILTER = "contactListFilter";
- public static final String KEY_EXTRA_CURRENT_FILTER = "currentFilter";
-
- private static final int FILTER_LOADER_ID = 0;
-
- private ListView mListView;
-
- private ContactListFilter mCurrentFilter;
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.contact_list_filter);
-
- mListView = (ListView) findViewById(android.R.id.list);
- mListView.setOnItemClickListener(this);
-
- ActionBar actionBar = getActionBar();
- if (actionBar != null) {
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
-
- mCurrentFilter = getIntent().getParcelableExtra(KEY_EXTRA_CURRENT_FILTER);
-
- getLoaderManager().initLoader(FILTER_LOADER_ID, null, new MyLoaderCallbacks());
- }
-
- private static class FilterLoader extends AsyncTaskLoader<List<ContactListFilter>> {
- private Context mContext;
-
- public FilterLoader(Context context) {
- super(context);
- mContext = context;
- }
-
- @Override
- public List<ContactListFilter> loadInBackground() {
- return loadAccountFilters(mContext);
- }
-
- @Override
- protected void onStartLoading() {
- forceLoad();
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-
- @Override
- protected void onReset() {
- onStopLoading();
- }
- }
-
- private static List<ContactListFilter> loadAccountFilters(Context context) {
- final ArrayList<ContactListFilter> result = Lists.newArrayList();
- final ArrayList<ContactListFilter> accountFilters = Lists.newArrayList();
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
- List<AccountWithDataSet> accounts = accountTypes.getAccounts(false);
- for (AccountWithDataSet account : accounts) {
- AccountType accountType = accountTypes.getAccountType(account.type, account.dataSet);
- if (accountType.isExtension() && !account.hasData(context)) {
- // Hide extensions with no raw_contacts.
- continue;
- }
- Drawable icon = accountType != null ? accountType.getDisplayIcon(context) : null;
- accountFilters.add(ContactListFilter.createAccountFilter(
- account.type, account.name, account.dataSet, icon));
- }
-
- // Always show "All", even when there's no accounts. (We may have local contacts)
- result.add(ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS));
-
- final int count = accountFilters.size();
- if (count >= 1) {
- // If we only have one account, don't show it as "account", instead show it as "all"
- if (count > 1) {
- result.addAll(accountFilters);
- }
- result.add(ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_CUSTOM));
- }
- return result;
- }
-
- private class MyLoaderCallbacks implements LoaderCallbacks<List<ContactListFilter>> {
- @Override
- public Loader<List<ContactListFilter>> onCreateLoader(int id, Bundle args) {
- return new FilterLoader(AccountFilterActivity.this);
- }
-
- @Override
- public void onLoadFinished(
- Loader<List<ContactListFilter>> loader, List<ContactListFilter> data) {
- if (data == null) { // Just in case...
- Log.e(TAG, "Failed to load filters");
- return;
- }
- mListView.setAdapter(
- new FilterListAdapter(AccountFilterActivity.this, data, mCurrentFilter));
- }
-
- @Override
- public void onLoaderReset(Loader<List<ContactListFilter>> loader) {
- }
- }
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- final ContactListFilter filter = (ContactListFilter) view.getTag();
- if (filter == null) return; // Just in case
- if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- final Intent intent = new Intent(this,
- CustomContactListFilterActivity.class);
- startActivityForResult(intent, SUBACTIVITY_CUSTOMIZE_FILTER);
- } else {
- final Intent intent = new Intent();
- intent.putExtra(KEY_EXTRA_CONTACT_LIST_FILTER, filter);
- setResult(Activity.RESULT_OK, intent);
- finish();
- }
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode != Activity.RESULT_OK) {
- return;
- }
-
- switch (requestCode) {
- case SUBACTIVITY_CUSTOMIZE_FILTER: {
- final Intent intent = new Intent();
- ContactListFilter filter = ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_CUSTOM);
- intent.putExtra(KEY_EXTRA_CONTACT_LIST_FILTER, filter);
- setResult(Activity.RESULT_OK, intent);
- finish();
- break;
- }
- }
- }
-
- private static class FilterListAdapter extends BaseAdapter {
- private final List<ContactListFilter> mFilters;
- private final LayoutInflater mLayoutInflater;
- private final AccountTypeManager mAccountTypes;
- private final ContactListFilter mCurrentFilter;
-
- public FilterListAdapter(
- Context context, List<ContactListFilter> filters, ContactListFilter current) {
- mLayoutInflater = (LayoutInflater) context.getSystemService
- (Context.LAYOUT_INFLATER_SERVICE);
- mFilters = filters;
- mCurrentFilter = current;
- mAccountTypes = AccountTypeManager.getInstance(context);
- }
-
- @Override
- public int getCount() {
- return mFilters.size();
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public ContactListFilter getItem(int position) {
- return mFilters.get(position);
- }
-
- public View getView(int position, View convertView, ViewGroup parent) {
- final ContactListFilterView view;
- if (convertView != null) {
- view = (ContactListFilterView) convertView;
- } else {
- view = (ContactListFilterView) mLayoutInflater.inflate(
- R.layout.contact_list_filter_item, parent, false);
- }
- view.setSingleAccount(mFilters.size() == 1);
- final ContactListFilter filter = mFilters.get(position);
- view.setContactListFilter(filter);
- view.bindView(mAccountTypes);
- view.setTag(filter);
- view.setActivated(filter.equals(mCurrentFilter));
- return view;
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- // We have two logical "up" Activities: People and Phone.
- // Instead of having one static "up" direction, behave like back as an
- // exceptional case.
- onBackPressed();
- return true;
- default:
- break;
- }
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 09b6d42..78bc3eb 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -35,9 +35,12 @@
import android.util.Log;
import com.android.common.widget.CompositeCursorAdapter.Partition;
-import com.android.contacts.R;
+import com.android.contacts.common.list.AutoScrollListView;
+import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.list.ContactListAdapter;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.DirectoryPartition;
import com.android.contacts.util.ContactLoaderUtils;
-import com.android.contacts.widget.AutoScrollListView;
import java.util.List;
@@ -273,25 +276,6 @@
checkSelection();
}
- @Override
- protected void prepareEmptyView() {
- if (isSearchMode()) {
- return;
- } else if (isSyncActive()) {
- if (hasIccCard()) {
- setEmptyText(R.string.noContactsHelpTextWithSync);
- } else {
- setEmptyText(R.string.noContactsNoSimHelpTextWithSync);
- }
- } else {
- if (hasIccCard()) {
- setEmptyText(R.string.noContactsHelpText);
- } else {
- setEmptyText(R.string.noContactsNoSimHelpText);
- }
- }
- }
-
public Uri getSelectedContactUri() {
return mSelectedContactUri;
}
@@ -638,14 +622,6 @@
if (mListener != null) mListener.onRemoveFromFavoritesAction(contactUri);
}
- public void callContact(Uri contactUri) {
- if (mListener != null) mListener.onCallContactAction(contactUri);
- }
-
- public void smsContact(Uri contactUri) {
- if (mListener != null) mListener.onSmsContactAction(contactUri);
- }
-
private void notifyInvalidSelection() {
if (mListener != null) mListener.onInvalidSelection();
}
diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
deleted file mode 100644
index 00c26ff..0000000
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ /dev/null
@@ -1,678 +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.list;
-
-import android.content.Context;
-import android.content.CursorLoader;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.ContactCounts;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Directory;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.QuickContactBadge;
-import android.widget.SectionIndexer;
-import android.widget.TextView;
-
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.R;
-import com.android.contacts.widget.IndexerListAdapter;
-
-import java.util.HashSet;
-
-/**
- * Common base class for various contact-related lists, e.g. contact list, phone number list
- * etc.
- */
-public abstract class ContactEntryListAdapter extends IndexerListAdapter {
-
- private static final String TAG = "ContactEntryListAdapter";
-
- /**
- * Indicates whether the {@link Directory#LOCAL_INVISIBLE} directory should
- * be included in the search.
- */
- private static final boolean LOCAL_INVISIBLE_DIRECTORY_ENABLED = false;
-
- private int mDisplayOrder;
- private int mSortOrder;
-
- private boolean mDisplayPhotos;
- private boolean mQuickContactEnabled;
-
- /**
- * indicates if contact queries include profile
- */
- private boolean mIncludeProfile;
-
- /**
- * indicates if query results includes a profile
- */
- private boolean mProfileExists;
-
- private ContactPhotoManager mPhotoLoader;
-
- private String mQueryString;
- private char[] mUpperCaseQueryString;
- private boolean mSearchMode;
- private int mDirectorySearchMode;
- private int mDirectoryResultLimit = Integer.MAX_VALUE;
-
- private boolean mLoading = true;
- private boolean mEmptyListEnabled = true;
-
- private boolean mSelectionVisible;
-
- private ContactListFilter mFilter;
- private String mContactsCount = "";
- private boolean mDarkTheme = false;
-
- /** Resource used to provide header-text for default filter. */
- private CharSequence mDefaultFilterHeaderText;
-
- public ContactEntryListAdapter(Context context) {
- super(context);
- addPartitions();
- setDefaultFilterHeaderText(R.string.local_search_label);
- }
-
- protected void setDefaultFilterHeaderText(int resourceId) {
- mDefaultFilterHeaderText = getContext().getResources().getText(resourceId);
- }
-
- @Override
- protected View createPinnedSectionHeaderView(Context context, ViewGroup parent) {
- return new ContactListPinnedHeaderView(context, null);
- }
-
- @Override
- protected void setPinnedSectionTitle(View pinnedHeaderView, String title) {
- ((ContactListPinnedHeaderView)pinnedHeaderView).setSectionHeader(title);
- }
-
- @Override
- protected void setPinnedHeaderContactsCount(View header) {
- // Update the header with the contacts count only if a profile header exists
- // otherwise, the contacts count are shown in the empty profile header view
- if (mProfileExists) {
- ((ContactListPinnedHeaderView)header).setCountView(mContactsCount);
- } else {
- clearPinnedHeaderContactsCount(header);
- }
- }
-
- @Override
- protected void clearPinnedHeaderContactsCount(View header) {
- ((ContactListPinnedHeaderView)header).setCountView(null);
- }
-
- protected void addPartitions() {
- addPartition(createDefaultDirectoryPartition());
- }
-
- protected DirectoryPartition createDefaultDirectoryPartition() {
- DirectoryPartition partition = new DirectoryPartition(true, true);
- partition.setDirectoryId(Directory.DEFAULT);
- partition.setDirectoryType(getContext().getString(R.string.contactsList));
- partition.setPriorityDirectory(true);
- partition.setPhotoSupported(true);
- return partition;
- }
-
- /**
- * Remove all directories after the default directory. This is typically used when contacts
- * list screens are asked to exit the search mode and thus need to remove all remote directory
- * results for the search.
- *
- * This code assumes that the default directory and directories before that should not be
- * deleted (e.g. Join screen has "suggested contacts" directory before the default director,
- * and we should not remove the directory).
- */
- /* package */ void removeDirectoriesAfterDefault() {
- final int partitionCount = getPartitionCount();
- for (int i = partitionCount - 1; i >= 0; i--) {
- final Partition partition = getPartition(i);
- if ((partition instanceof DirectoryPartition)
- && ((DirectoryPartition) partition).getDirectoryId() == Directory.DEFAULT) {
- break;
- } else {
- removePartition(i);
- }
- }
- }
-
- private int getPartitionByDirectoryId(long id) {
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition) {
- if (((DirectoryPartition)partition).getDirectoryId() == id) {
- return i;
- }
- }
- }
- return -1;
- }
-
- public abstract String getContactDisplayName(int position);
- public abstract void configureLoader(CursorLoader loader, long directoryId);
-
- /**
- * Marks all partitions as "loading"
- */
- public void onDataReload() {
- boolean notify = false;
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition) {
- DirectoryPartition directoryPartition = (DirectoryPartition)partition;
- if (!directoryPartition.isLoading()) {
- notify = true;
- }
- directoryPartition.setStatus(DirectoryPartition.STATUS_NOT_LOADED);
- }
- }
- if (notify) {
- notifyDataSetChanged();
- }
- }
-
- @Override
- public void clearPartitions() {
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition) {
- DirectoryPartition directoryPartition = (DirectoryPartition)partition;
- directoryPartition.setStatus(DirectoryPartition.STATUS_NOT_LOADED);
- }
- }
- super.clearPartitions();
- }
-
- public boolean isSearchMode() {
- return mSearchMode;
- }
-
- public void setSearchMode(boolean flag) {
- mSearchMode = flag;
- }
-
- public String getQueryString() {
- return mQueryString;
- }
-
- public void setQueryString(String queryString) {
- mQueryString = queryString;
- if (TextUtils.isEmpty(queryString)) {
- mUpperCaseQueryString = null;
- } else {
- mUpperCaseQueryString = queryString.toUpperCase().toCharArray();
- }
- }
-
- public char[] getUpperCaseQueryString() {
- return mUpperCaseQueryString;
- }
-
- public int getDirectorySearchMode() {
- return mDirectorySearchMode;
- }
-
- public void setDirectorySearchMode(int mode) {
- mDirectorySearchMode = mode;
- }
-
- public int getDirectoryResultLimit() {
- return mDirectoryResultLimit;
- }
-
- public void setDirectoryResultLimit(int limit) {
- this.mDirectoryResultLimit = limit;
- }
-
- public int getContactNameDisplayOrder() {
- return mDisplayOrder;
- }
-
- public void setContactNameDisplayOrder(int displayOrder) {
- mDisplayOrder = displayOrder;
- }
-
- public int getSortOrder() {
- return mSortOrder;
- }
-
- public void setSortOrder(int sortOrder) {
- mSortOrder = sortOrder;
- }
-
- public void setPhotoLoader(ContactPhotoManager photoLoader) {
- mPhotoLoader = photoLoader;
- }
-
- protected ContactPhotoManager getPhotoLoader() {
- return mPhotoLoader;
- }
-
- public boolean getDisplayPhotos() {
- return mDisplayPhotos;
- }
-
- public void setDisplayPhotos(boolean displayPhotos) {
- mDisplayPhotos = displayPhotos;
- }
-
- public boolean isEmptyListEnabled() {
- return mEmptyListEnabled;
- }
-
- public void setEmptyListEnabled(boolean flag) {
- mEmptyListEnabled = flag;
- }
-
- public boolean isSelectionVisible() {
- return mSelectionVisible;
- }
-
- public void setSelectionVisible(boolean flag) {
- this.mSelectionVisible = flag;
- }
-
- public boolean isQuickContactEnabled() {
- return mQuickContactEnabled;
- }
-
- public void setQuickContactEnabled(boolean quickContactEnabled) {
- mQuickContactEnabled = quickContactEnabled;
- }
-
- public boolean shouldIncludeProfile() {
- return mIncludeProfile;
- }
-
- public void setIncludeProfile(boolean includeProfile) {
- mIncludeProfile = includeProfile;
- }
-
- public void setProfileExists(boolean exists) {
- mProfileExists = exists;
- // Stick the "ME" header for the profile
- if (exists) {
- SectionIndexer indexer = getIndexer();
- if (indexer != null) {
- ((ContactsSectionIndexer) indexer).setProfileHeader(
- getContext().getString(R.string.user_profile_contacts_list_header));
- }
- }
- }
-
- public boolean hasProfile() {
- return mProfileExists;
- }
-
- public void setDarkTheme(boolean value) {
- mDarkTheme = value;
- }
-
- public void configureDirectoryLoader(DirectoryListLoader loader) {
- loader.setDirectorySearchMode(mDirectorySearchMode);
- loader.setLocalInvisibleDirectoryEnabled(LOCAL_INVISIBLE_DIRECTORY_ENABLED);
- }
-
- /**
- * Updates partitions according to the directory meta-data contained in the supplied
- * cursor.
- */
- public void changeDirectories(Cursor cursor) {
- if (cursor.getCount() == 0) {
- // Directory table must have at least local directory, without which this adapter will
- // enter very weird state.
- Log.e(TAG, "Directory search loader returned an empty cursor, which implies we have " +
- "no directory entries.", new RuntimeException());
- return;
- }
- HashSet<Long> directoryIds = new HashSet<Long>();
-
- int idColumnIndex = cursor.getColumnIndex(Directory._ID);
- int directoryTypeColumnIndex = cursor.getColumnIndex(DirectoryListLoader.DIRECTORY_TYPE);
- int displayNameColumnIndex = cursor.getColumnIndex(Directory.DISPLAY_NAME);
- int photoSupportColumnIndex = cursor.getColumnIndex(Directory.PHOTO_SUPPORT);
-
- // TODO preserve the order of partition to match those of the cursor
- // Phase I: add new directories
- cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
- long id = cursor.getLong(idColumnIndex);
- directoryIds.add(id);
- if (getPartitionByDirectoryId(id) == -1) {
- DirectoryPartition partition = new DirectoryPartition(false, true);
- partition.setDirectoryId(id);
- partition.setDirectoryType(cursor.getString(directoryTypeColumnIndex));
- partition.setDisplayName(cursor.getString(displayNameColumnIndex));
- int photoSupport = cursor.getInt(photoSupportColumnIndex);
- partition.setPhotoSupported(photoSupport == Directory.PHOTO_SUPPORT_THUMBNAIL_ONLY
- || photoSupport == Directory.PHOTO_SUPPORT_FULL);
- addPartition(partition);
- }
- }
-
- // Phase II: remove deleted directories
- int count = getPartitionCount();
- for (int i = count; --i >= 0; ) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition) {
- long id = ((DirectoryPartition)partition).getDirectoryId();
- if (!directoryIds.contains(id)) {
- removePartition(i);
- }
- }
- }
-
- invalidate();
- notifyDataSetChanged();
- }
-
- @Override
- public void changeCursor(int partitionIndex, Cursor cursor) {
- if (partitionIndex >= getPartitionCount()) {
- // There is no partition for this data
- return;
- }
-
- Partition partition = getPartition(partitionIndex);
- if (partition instanceof DirectoryPartition) {
- ((DirectoryPartition)partition).setStatus(DirectoryPartition.STATUS_LOADED);
- }
-
- if (mDisplayPhotos && mPhotoLoader != null && isPhotoSupported(partitionIndex)) {
- mPhotoLoader.refreshCache();
- }
-
- super.changeCursor(partitionIndex, cursor);
-
- if (isSectionHeaderDisplayEnabled() && partitionIndex == getIndexedPartition()) {
- updateIndexer(cursor);
- }
- }
-
- public void changeCursor(Cursor cursor) {
- changeCursor(0, cursor);
- }
-
- /**
- * Updates the indexer, which is used to produce section headers.
- */
- private void updateIndexer(Cursor cursor) {
- if (cursor == null) {
- setIndexer(null);
- return;
- }
-
- Bundle bundle = cursor.getExtras();
- if (bundle.containsKey(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES)) {
- String sections[] =
- bundle.getStringArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_TITLES);
- int counts[] = bundle.getIntArray(ContactCounts.EXTRA_ADDRESS_BOOK_INDEX_COUNTS);
- setIndexer(new ContactsSectionIndexer(sections, counts));
- } else {
- setIndexer(null);
- }
- }
-
- @Override
- public int getViewTypeCount() {
- // We need a separate view type for each item type, plus another one for
- // each type with header, plus one for "other".
- return getItemViewTypeCount() * 2 + 1;
- }
-
- @Override
- public int getItemViewType(int partitionIndex, int position) {
- int type = super.getItemViewType(partitionIndex, position);
- if (!isUserProfile(position)
- && isSectionHeaderDisplayEnabled()
- && partitionIndex == getIndexedPartition()) {
- Placement placement = getItemPlacementInSection(position);
- return placement.firstInSection ? type : getItemViewTypeCount() + type;
- } else {
- return type;
- }
- }
-
- @Override
- public boolean isEmpty() {
- // TODO
-// if (contactsListActivity.mProviderStatus != ProviderStatus.STATUS_NORMAL) {
-// return true;
-// }
-
- if (!mEmptyListEnabled) {
- return false;
- } else if (isSearchMode()) {
- return TextUtils.isEmpty(getQueryString());
- } else if (mLoading) {
- // We don't want the empty state to show when loading.
- return false;
- } else {
- return super.isEmpty();
- }
- }
-
- public boolean isLoading() {
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition
- && ((DirectoryPartition) partition).isLoading()) {
- return true;
- }
- }
- return false;
- }
-
- public boolean areAllPartitionsEmpty() {
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- if (!isPartitionEmpty(i)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Changes visibility parameters for the default directory partition.
- */
- public void configureDefaultPartition(boolean showIfEmpty, boolean hasHeader) {
- int defaultPartitionIndex = -1;
- int count = getPartitionCount();
- for (int i = 0; i < count; i++) {
- Partition partition = getPartition(i);
- if (partition instanceof DirectoryPartition &&
- ((DirectoryPartition)partition).getDirectoryId() == Directory.DEFAULT) {
- defaultPartitionIndex = i;
- break;
- }
- }
- if (defaultPartitionIndex != -1) {
- setShowIfEmpty(defaultPartitionIndex, showIfEmpty);
- setHasHeader(defaultPartitionIndex, hasHeader);
- }
- }
-
- @Override
- protected View newHeaderView(Context context, int partition, Cursor cursor,
- ViewGroup parent) {
- LayoutInflater inflater = LayoutInflater.from(context);
- return inflater.inflate(R.layout.directory_header, parent, false);
- }
-
- @Override
- protected void bindHeaderView(View view, int partitionIndex, Cursor cursor) {
- Partition partition = getPartition(partitionIndex);
- if (!(partition instanceof DirectoryPartition)) {
- return;
- }
-
- DirectoryPartition directoryPartition = (DirectoryPartition)partition;
- long directoryId = directoryPartition.getDirectoryId();
- TextView labelTextView = (TextView)view.findViewById(R.id.label);
- TextView displayNameTextView = (TextView)view.findViewById(R.id.display_name);
- if (directoryId == Directory.DEFAULT || directoryId == Directory.LOCAL_INVISIBLE) {
- labelTextView.setText(mDefaultFilterHeaderText);
- displayNameTextView.setText(null);
- } else {
- labelTextView.setText(R.string.directory_search_label);
- String directoryName = directoryPartition.getDisplayName();
- String displayName = !TextUtils.isEmpty(directoryName)
- ? directoryName
- : directoryPartition.getDirectoryType();
- displayNameTextView.setText(displayName);
- }
-
- TextView countText = (TextView)view.findViewById(R.id.count);
- if (directoryPartition.isLoading()) {
- countText.setText(R.string.search_results_searching);
- } else {
- int count = cursor == null ? 0 : cursor.getCount();
- if (directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE
- && count >= getDirectoryResultLimit()) {
- countText.setText(mContext.getString(
- R.string.foundTooManyContacts, getDirectoryResultLimit()));
- } else {
- countText.setText(getQuantityText(
- count, R.string.listFoundAllContactsZero, R.plurals.searchFoundContacts));
- }
- }
- }
-
- /**
- * Checks whether the contact entry at the given position represents the user's profile.
- */
- protected boolean isUserProfile(int position) {
- // The profile only ever appears in the first position if it is present. So if the position
- // is anything beyond 0, it can't be the profile.
- boolean isUserProfile = false;
- if (position == 0) {
- int partition = getPartitionForPosition(position);
- if (partition >= 0) {
- // Save the old cursor position - the call to getItem() may modify the cursor
- // position.
- int offset = getCursor(partition).getPosition();
- Cursor cursor = (Cursor) getItem(position);
- if (cursor != null) {
- int profileColumnIndex = cursor.getColumnIndex(Contacts.IS_USER_PROFILE);
- if (profileColumnIndex != -1) {
- isUserProfile = cursor.getInt(profileColumnIndex) == 1;
- }
- // Restore the old cursor position.
- cursor.moveToPosition(offset);
- }
- }
- }
- return isUserProfile;
- }
-
- // TODO: fix PluralRules to handle zero correctly and use Resources.getQuantityText directly
- public String getQuantityText(int count, int zeroResourceId, int pluralResourceId) {
- if (count == 0) {
- return getContext().getString(zeroResourceId);
- } else {
- String format = getContext().getResources()
- .getQuantityText(pluralResourceId, count).toString();
- return String.format(format, count);
- }
- }
-
- public boolean isPhotoSupported(int partitionIndex) {
- Partition partition = getPartition(partitionIndex);
- if (partition instanceof DirectoryPartition) {
- return ((DirectoryPartition) partition).isPhotoSupported();
- }
- return true;
- }
-
- /**
- * Returns the currently selected filter.
- */
- public ContactListFilter getFilter() {
- return mFilter;
- }
-
- public void setFilter(ContactListFilter filter) {
- mFilter = filter;
- }
-
- // TODO: move sharable logic (bindXX() methods) to here with extra arguments
-
- /**
- * Loads the photo for the quick contact view and assigns the contact uri.
- * @param photoIdColumn Index of the photo id column
- * @param photoUriColumn Index of the photo uri column. Optional: Can be -1
- * @param contactIdColumn Index of the contact id column
- * @param lookUpKeyColumn Index of the lookup key column
- */
- protected void bindQuickContact(final ContactListItemView view, int partitionIndex,
- Cursor cursor, int photoIdColumn, int photoUriColumn, int contactIdColumn,
- int lookUpKeyColumn) {
- long photoId = 0;
- if (!cursor.isNull(photoIdColumn)) {
- photoId = cursor.getLong(photoIdColumn);
- }
-
- QuickContactBadge quickContact = view.getQuickContact();
- quickContact.assignContactUri(
- getContactUri(partitionIndex, cursor, contactIdColumn, lookUpKeyColumn));
-
- if (photoId != 0 || photoUriColumn == -1) {
- getPhotoLoader().loadThumbnail(quickContact, photoId, mDarkTheme);
- } else {
- final String photoUriString = cursor.getString(photoUriColumn);
- final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
- getPhotoLoader().loadPhoto(quickContact, photoUri, -1, mDarkTheme);
- }
-
- }
-
- protected Uri getContactUri(int partitionIndex, Cursor cursor,
- int contactIdColumn, int lookUpKeyColumn) {
- long contactId = cursor.getLong(contactIdColumn);
- String lookupKey = cursor.getString(lookUpKeyColumn);
- Uri uri = Contacts.getLookupUri(contactId, lookupKey);
- long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
- if (directoryId != Directory.DEFAULT) {
- uri = uri.buildUpon().appendQueryParameter(
- ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
- }
- return uri;
- }
-
- public void setContactsCount(String count) {
- mContactsCount = count;
- }
-
- public String getContactsCount() {
- return mContactsCount;
- }
-}
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
deleted file mode 100644
index e422d1b..0000000
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ /dev/null
@@ -1,933 +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.list;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.IContentService;
-import android.content.Intent;
-import android.content.Loader;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Parcelable;
-import android.os.RemoteException;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Directory;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnFocusChangeListener;
-import android.view.View.OnTouchListener;
-import android.view.ViewGroup;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.android.common.widget.CompositeCursorAdapter.Partition;
-import com.android.contacts.ContactListEmptyView;
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.R;
-import com.android.contacts.preference.ContactsPreferences;
-import com.android.contacts.widget.ContextMenuAdapter;
-
-/**
- * Common base class for various contact-related list fragments.
- */
-public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter>
- extends Fragment
- implements OnItemClickListener, OnScrollListener, OnFocusChangeListener, OnTouchListener,
- LoaderCallbacks<Cursor> {
- private static final String TAG = "ContactEntryListFragment";
-
- // TODO: Make this protected. This should not be used from the PeopleActivity but
- // instead use the new startActivityWithResultFromFragment API
- public static final int ACTIVITY_REQUEST_CODE_PICKER = 1;
-
- private static final String KEY_LIST_STATE = "liststate";
- private static final String KEY_SECTION_HEADER_DISPLAY_ENABLED = "sectionHeaderDisplayEnabled";
- private static final String KEY_PHOTO_LOADER_ENABLED = "photoLoaderEnabled";
- private static final String KEY_QUICK_CONTACT_ENABLED = "quickContactEnabled";
- private static final String KEY_INCLUDE_PROFILE = "includeProfile";
- private static final String KEY_SEARCH_MODE = "searchMode";
- private static final String KEY_VISIBLE_SCROLLBAR_ENABLED = "visibleScrollbarEnabled";
- private static final String KEY_SCROLLBAR_POSITION = "scrollbarPosition";
- private static final String KEY_QUERY_STRING = "queryString";
- private static final String KEY_DIRECTORY_SEARCH_MODE = "directorySearchMode";
- private static final String KEY_SELECTION_VISIBLE = "selectionVisible";
- private static final String KEY_REQUEST = "request";
- private static final String KEY_DARK_THEME = "darkTheme";
- private static final String KEY_LEGACY_COMPATIBILITY = "legacyCompatibility";
- private static final String KEY_DIRECTORY_RESULT_LIMIT = "directoryResultLimit";
-
- private static final String DIRECTORY_ID_ARG_KEY = "directoryId";
-
- private static final int DIRECTORY_LOADER_ID = -1;
-
- private static final int DIRECTORY_SEARCH_DELAY_MILLIS = 300;
- private static final int DIRECTORY_SEARCH_MESSAGE = 1;
-
- private static final int DEFAULT_DIRECTORY_RESULT_LIMIT = 20;
-
- private boolean mSectionHeaderDisplayEnabled;
- private boolean mPhotoLoaderEnabled;
- private boolean mQuickContactEnabled = true;
- private boolean mIncludeProfile;
- private boolean mSearchMode;
- private boolean mVisibleScrollbarEnabled;
- private int mVerticalScrollbarPosition = View.SCROLLBAR_POSITION_RIGHT;
- private String mQueryString;
- private int mDirectorySearchMode = DirectoryListLoader.SEARCH_MODE_NONE;
- private boolean mSelectionVisible;
- private boolean mLegacyCompatibility;
-
- private boolean mEnabled = true;
-
- private T mAdapter;
- private View mView;
- private ListView mListView;
-
- /**
- * Used for keeping track of the scroll state of the list.
- */
- private Parcelable mListState;
-
- private int mDisplayOrder;
- private int mSortOrder;
- private int mDirectoryResultLimit = DEFAULT_DIRECTORY_RESULT_LIMIT;
-
- private ContextMenuAdapter mContextMenuAdapter;
- private ContactPhotoManager mPhotoManager;
- private ContactListEmptyView mEmptyView;
- private ContactsPreferences mContactsPrefs;
-
- private boolean mForceLoad;
-
- private boolean mDarkTheme;
-
- protected boolean mUserProfileExists;
-
- private static final int STATUS_NOT_LOADED = 0;
- private static final int STATUS_LOADING = 1;
- private static final int STATUS_LOADED = 2;
-
- private int mDirectoryListStatus = STATUS_NOT_LOADED;
-
- /**
- * Indicates whether we are doing the initial complete load of data (false) or
- * a refresh caused by a change notification (true)
- */
- private boolean mLoadPriorityDirectoriesOnly;
-
- private Context mContext;
-
- private LoaderManager mLoaderManager;
-
- private Handler mDelayedDirectorySearchHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == DIRECTORY_SEARCH_MESSAGE) {
- loadDirectoryPartition(msg.arg1, (DirectoryPartition) msg.obj);
- }
- }
- };
-
- protected abstract View inflateView(LayoutInflater inflater, ViewGroup container);
- protected abstract T createListAdapter();
-
- /**
- * @param position Please note that the position is already adjusted for
- * header views, so "0" means the first list item below header
- * views.
- */
- protected abstract void onItemClick(int position, long id);
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- setContext(activity);
- setLoaderManager(super.getLoaderManager());
- }
-
- /**
- * Sets a context for the fragment in the unit test environment.
- */
- public void setContext(Context context) {
- mContext = context;
- configurePhotoLoader();
- }
-
- public Context getContext() {
- return mContext;
- }
-
- public void setEnabled(boolean enabled) {
- if (mEnabled != enabled) {
- mEnabled = enabled;
- if (mAdapter != null) {
- if (mEnabled) {
- reloadData();
- } else {
- mAdapter.clearPartitions();
- }
- }
- }
- }
-
- /**
- * Overrides a loader manager for use in unit tests.
- */
- public void setLoaderManager(LoaderManager loaderManager) {
- mLoaderManager = loaderManager;
- }
-
- @Override
- public LoaderManager getLoaderManager() {
- return mLoaderManager;
- }
-
- public T getAdapter() {
- return mAdapter;
- }
-
- @Override
- public View getView() {
- return mView;
- }
-
- public ListView getListView() {
- return mListView;
- }
-
- public ContactListEmptyView getEmptyView() {
- return mEmptyView;
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED, mSectionHeaderDisplayEnabled);
- outState.putBoolean(KEY_PHOTO_LOADER_ENABLED, mPhotoLoaderEnabled);
- outState.putBoolean(KEY_QUICK_CONTACT_ENABLED, mQuickContactEnabled);
- outState.putBoolean(KEY_INCLUDE_PROFILE, mIncludeProfile);
- outState.putBoolean(KEY_SEARCH_MODE, mSearchMode);
- outState.putBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED, mVisibleScrollbarEnabled);
- outState.putInt(KEY_SCROLLBAR_POSITION, mVerticalScrollbarPosition);
- outState.putInt(KEY_DIRECTORY_SEARCH_MODE, mDirectorySearchMode);
- outState.putBoolean(KEY_SELECTION_VISIBLE, mSelectionVisible);
- outState.putBoolean(KEY_LEGACY_COMPATIBILITY, mLegacyCompatibility);
- outState.putString(KEY_QUERY_STRING, mQueryString);
- outState.putInt(KEY_DIRECTORY_RESULT_LIMIT, mDirectoryResultLimit);
- outState.putBoolean(KEY_DARK_THEME, mDarkTheme);
-
- if (mListView != null) {
- outState.putParcelable(KEY_LIST_STATE, mListView.onSaveInstanceState());
- }
- }
-
- @Override
- public void onCreate(Bundle savedState) {
- super.onCreate(savedState);
- mContactsPrefs = new ContactsPreferences(mContext);
- restoreSavedState(savedState);
- }
-
- public void restoreSavedState(Bundle savedState) {
- if (savedState == null) {
- return;
- }
-
- mSectionHeaderDisplayEnabled = savedState.getBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED);
- mPhotoLoaderEnabled = savedState.getBoolean(KEY_PHOTO_LOADER_ENABLED);
- mQuickContactEnabled = savedState.getBoolean(KEY_QUICK_CONTACT_ENABLED);
- mIncludeProfile = savedState.getBoolean(KEY_INCLUDE_PROFILE);
- mSearchMode = savedState.getBoolean(KEY_SEARCH_MODE);
- mVisibleScrollbarEnabled = savedState.getBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED);
- mVerticalScrollbarPosition = savedState.getInt(KEY_SCROLLBAR_POSITION);
- mDirectorySearchMode = savedState.getInt(KEY_DIRECTORY_SEARCH_MODE);
- mSelectionVisible = savedState.getBoolean(KEY_SELECTION_VISIBLE);
- mLegacyCompatibility = savedState.getBoolean(KEY_LEGACY_COMPATIBILITY);
- mQueryString = savedState.getString(KEY_QUERY_STRING);
- mDirectoryResultLimit = savedState.getInt(KEY_DIRECTORY_RESULT_LIMIT);
- mDarkTheme = savedState.getBoolean(KEY_DARK_THEME);
-
- // Retrieve list state. This will be applied in onLoadFinished
- mListState = savedState.getParcelable(KEY_LIST_STATE);
- }
-
- @Override
- public void onStart() {
- super.onStart();
-
- mContactsPrefs.registerChangeListener(mPreferencesChangeListener);
-
- mForceLoad = loadPreferences();
-
- mDirectoryListStatus = STATUS_NOT_LOADED;
- mLoadPriorityDirectoriesOnly = true;
-
- startLoading();
- }
-
- protected void startLoading() {
- if (mAdapter == null) {
- // The method was called before the fragment was started
- return;
- }
-
- configureAdapter();
- int partitionCount = mAdapter.getPartitionCount();
- for (int i = 0; i < partitionCount; i++) {
- Partition partition = mAdapter.getPartition(i);
- if (partition instanceof DirectoryPartition) {
- DirectoryPartition directoryPartition = (DirectoryPartition)partition;
- if (directoryPartition.getStatus() == DirectoryPartition.STATUS_NOT_LOADED) {
- if (directoryPartition.isPriorityDirectory() || !mLoadPriorityDirectoriesOnly) {
- startLoadingDirectoryPartition(i);
- }
- }
- } else {
- getLoaderManager().initLoader(i, null, this);
- }
- }
-
- // Next time this method is called, we should start loading non-priority directories
- mLoadPriorityDirectoriesOnly = false;
- }
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- if (id == DIRECTORY_LOADER_ID) {
- DirectoryListLoader loader = new DirectoryListLoader(mContext);
- mAdapter.configureDirectoryLoader(loader);
- return loader;
- } else {
- CursorLoader loader = createCursorLoader();
- long directoryId = args != null && args.containsKey(DIRECTORY_ID_ARG_KEY)
- ? args.getLong(DIRECTORY_ID_ARG_KEY)
- : Directory.DEFAULT;
- mAdapter.configureLoader(loader, directoryId);
- return loader;
- }
- }
-
- public CursorLoader createCursorLoader() {
- return new CursorLoader(mContext, null, null, null, null, null);
- }
-
- private void startLoadingDirectoryPartition(int partitionIndex) {
- DirectoryPartition partition = (DirectoryPartition)mAdapter.getPartition(partitionIndex);
- partition.setStatus(DirectoryPartition.STATUS_LOADING);
- long directoryId = partition.getDirectoryId();
- if (mForceLoad) {
- if (directoryId == Directory.DEFAULT) {
- loadDirectoryPartition(partitionIndex, partition);
- } else {
- loadDirectoryPartitionDelayed(partitionIndex, partition);
- }
- } else {
- Bundle args = new Bundle();
- args.putLong(DIRECTORY_ID_ARG_KEY, directoryId);
- getLoaderManager().initLoader(partitionIndex, args, this);
- }
- }
-
- /**
- * Queues up a delayed request to search the specified directory. Since
- * directory search will likely introduce a lot of network traffic, we want
- * to wait for a pause in the user's typing before sending a directory request.
- */
- private void loadDirectoryPartitionDelayed(int partitionIndex, DirectoryPartition partition) {
- mDelayedDirectorySearchHandler.removeMessages(DIRECTORY_SEARCH_MESSAGE, partition);
- Message msg = mDelayedDirectorySearchHandler.obtainMessage(
- DIRECTORY_SEARCH_MESSAGE, partitionIndex, 0, partition);
- mDelayedDirectorySearchHandler.sendMessageDelayed(msg, DIRECTORY_SEARCH_DELAY_MILLIS);
- }
-
- /**
- * Loads the directory partition.
- */
- protected void loadDirectoryPartition(int partitionIndex, DirectoryPartition partition) {
- Bundle args = new Bundle();
- args.putLong(DIRECTORY_ID_ARG_KEY, partition.getDirectoryId());
- getLoaderManager().restartLoader(partitionIndex, args, this);
- }
-
- /**
- * Cancels all queued directory loading requests.
- */
- private void removePendingDirectorySearchRequests() {
- mDelayedDirectorySearchHandler.removeMessages(DIRECTORY_SEARCH_MESSAGE);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- if (!mEnabled) {
- return;
- }
-
- int loaderId = loader.getId();
- if (loaderId == DIRECTORY_LOADER_ID) {
- mDirectoryListStatus = STATUS_LOADED;
- mAdapter.changeDirectories(data);
- startLoading();
- } else {
- onPartitionLoaded(loaderId, data);
- if (isSearchMode()) {
- int directorySearchMode = getDirectorySearchMode();
- if (directorySearchMode != DirectoryListLoader.SEARCH_MODE_NONE) {
- if (mDirectoryListStatus == STATUS_NOT_LOADED) {
- mDirectoryListStatus = STATUS_LOADING;
- getLoaderManager().initLoader(DIRECTORY_LOADER_ID, null, this);
- } else {
- startLoading();
- }
- }
- } else {
- mDirectoryListStatus = STATUS_NOT_LOADED;
- getLoaderManager().destroyLoader(DIRECTORY_LOADER_ID);
- }
- }
- }
-
- public void onLoaderReset(Loader<Cursor> loader) {
- }
-
- protected void onPartitionLoaded(int partitionIndex, Cursor data) {
- if (partitionIndex >= mAdapter.getPartitionCount()) {
- // When we get unsolicited data, ignore it. This could happen
- // when we are switching from search mode to the default mode.
- return;
- }
-
- mAdapter.changeCursor(partitionIndex, data);
- setProfileHeader();
- showCount(partitionIndex, data);
-
- if (!isLoading()) {
- completeRestoreInstanceState();
- }
- }
-
- public boolean isLoading() {
- if (mAdapter != null && mAdapter.isLoading()) {
- return true;
- }
-
- if (isLoadingDirectoryList()) {
- return true;
- }
-
- return false;
- }
-
- public boolean isLoadingDirectoryList() {
- return isSearchMode() && getDirectorySearchMode() != DirectoryListLoader.SEARCH_MODE_NONE
- && (mDirectoryListStatus == STATUS_NOT_LOADED
- || mDirectoryListStatus == STATUS_LOADING);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- mContactsPrefs.unregisterChangeListener();
- mAdapter.clearPartitions();
- }
-
- protected void reloadData() {
- removePendingDirectorySearchRequests();
- mAdapter.onDataReload();
- mLoadPriorityDirectoriesOnly = true;
- mForceLoad = true;
- startLoading();
- }
-
- /**
- * Configures the empty view. It is called when we are about to populate
- * the list with an empty cursor.
- */
- protected void prepareEmptyView() {
- }
-
- /**
- * Shows the count of entries included in the list. The default
- * implementation does nothing.
- */
- protected void showCount(int partitionIndex, Cursor data) {
- }
-
- /**
- * Shows a view at the top of the list with a pseudo local profile prompting the user to add
- * a local profile. Default implementation does nothing.
- */
- protected void setProfileHeader() {
- mUserProfileExists = false;
- }
-
- /**
- * Provides logic that dismisses this fragment. The default implementation
- * does nothing.
- */
- protected void finish() {
- }
-
- public void setSectionHeaderDisplayEnabled(boolean flag) {
- if (mSectionHeaderDisplayEnabled != flag) {
- mSectionHeaderDisplayEnabled = flag;
- if (mAdapter != null) {
- mAdapter.setSectionHeaderDisplayEnabled(flag);
- }
- configureVerticalScrollbar();
- }
- }
-
- public boolean isSectionHeaderDisplayEnabled() {
- return mSectionHeaderDisplayEnabled;
- }
-
- public void setVisibleScrollbarEnabled(boolean flag) {
- if (mVisibleScrollbarEnabled != flag) {
- mVisibleScrollbarEnabled = flag;
- configureVerticalScrollbar();
- }
- }
-
- public boolean isVisibleScrollbarEnabled() {
- return mVisibleScrollbarEnabled;
- }
-
- public void setVerticalScrollbarPosition(int position) {
- if (mVerticalScrollbarPosition != position) {
- mVerticalScrollbarPosition = position;
- configureVerticalScrollbar();
- }
- }
-
- private void configureVerticalScrollbar() {
- boolean hasScrollbar = isVisibleScrollbarEnabled() && isSectionHeaderDisplayEnabled();
-
- if (mListView != null) {
- mListView.setFastScrollEnabled(hasScrollbar);
- mListView.setFastScrollAlwaysVisible(hasScrollbar);
- mListView.setVerticalScrollbarPosition(mVerticalScrollbarPosition);
- mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
- int leftPadding = 0;
- int rightPadding = 0;
- if (mVerticalScrollbarPosition == View.SCROLLBAR_POSITION_LEFT) {
- leftPadding = mContext.getResources().getDimensionPixelOffset(
- R.dimen.list_visible_scrollbar_padding);
- } else {
- rightPadding = mContext.getResources().getDimensionPixelOffset(
- R.dimen.list_visible_scrollbar_padding);
- }
- mListView.setPadding(leftPadding, mListView.getPaddingTop(),
- rightPadding, mListView.getPaddingBottom());
- }
- }
-
- public void setPhotoLoaderEnabled(boolean flag) {
- mPhotoLoaderEnabled = flag;
- configurePhotoLoader();
- }
-
- public boolean isPhotoLoaderEnabled() {
- return mPhotoLoaderEnabled;
- }
-
- /**
- * Returns true if the list is supposed to visually highlight the selected item.
- */
- public boolean isSelectionVisible() {
- return mSelectionVisible;
- }
-
- public void setSelectionVisible(boolean flag) {
- this.mSelectionVisible = flag;
- }
-
- public void setQuickContactEnabled(boolean flag) {
- this.mQuickContactEnabled = flag;
- }
-
- public void setIncludeProfile(boolean flag) {
- mIncludeProfile = flag;
- if(mAdapter != null) {
- mAdapter.setIncludeProfile(flag);
- }
- }
-
- /**
- * Enter/exit search mode. By design, a fragment enters search mode only when it has a
- * non-empty query text, so the mode must be tightly related to the current query.
- * For this reason this method must only be called by {@link #setQueryString}.
- *
- * Also note this method doesn't call {@link #reloadData()}; {@link #setQueryString} does it.
- */
- protected void setSearchMode(boolean flag) {
- if (mSearchMode != flag) {
- mSearchMode = flag;
- setSectionHeaderDisplayEnabled(!mSearchMode);
-
- if (!flag) {
- mDirectoryListStatus = STATUS_NOT_LOADED;
- getLoaderManager().destroyLoader(DIRECTORY_LOADER_ID);
- }
-
- if (mAdapter != null) {
- mAdapter.setPinnedPartitionHeadersEnabled(flag);
- mAdapter.setSearchMode(flag);
-
- mAdapter.clearPartitions();
- if (!flag) {
- // If we are switching from search to regular display, remove all directory
- // partitions after default one, assuming they are remote directories which
- // should be cleaned up on exiting the search mode.
- mAdapter.removeDirectoriesAfterDefault();
- }
- mAdapter.configureDefaultPartition(false, flag);
- }
-
- if (mListView != null) {
- mListView.setFastScrollEnabled(!flag);
- }
- }
- }
-
- public final boolean isSearchMode() {
- return mSearchMode;
- }
-
- public final String getQueryString() {
- return mQueryString;
- }
-
- public void setQueryString(String queryString, boolean delaySelection) {
- // Normalize the empty query.
- if (TextUtils.isEmpty(queryString)) queryString = null;
-
- if (!TextUtils.equals(mQueryString, queryString)) {
- mQueryString = queryString;
- setSearchMode(!TextUtils.isEmpty(mQueryString));
-
- if (mAdapter != null) {
- mAdapter.setQueryString(queryString);
- reloadData();
- }
- }
- }
-
- public int getDirectorySearchMode() {
- return mDirectorySearchMode;
- }
-
- public void setDirectorySearchMode(int mode) {
- mDirectorySearchMode = mode;
- }
-
- public boolean isLegacyCompatibilityMode() {
- return mLegacyCompatibility;
- }
-
- public void setLegacyCompatibilityMode(boolean flag) {
- mLegacyCompatibility = flag;
- }
-
- protected int getContactNameDisplayOrder() {
- return mDisplayOrder;
- }
-
- protected void setContactNameDisplayOrder(int displayOrder) {
- mDisplayOrder = displayOrder;
- if (mAdapter != null) {
- mAdapter.setContactNameDisplayOrder(displayOrder);
- }
- }
-
- public int getSortOrder() {
- return mSortOrder;
- }
-
- public void setSortOrder(int sortOrder) {
- mSortOrder = sortOrder;
- if (mAdapter != null) {
- mAdapter.setSortOrder(sortOrder);
- }
- }
-
- public void setDirectoryResultLimit(int limit) {
- mDirectoryResultLimit = limit;
- }
-
- public void setContextMenuAdapter(ContextMenuAdapter adapter) {
- mContextMenuAdapter = adapter;
- if (mListView != null) {
- mListView.setOnCreateContextMenuListener(adapter);
- }
- }
-
- public ContextMenuAdapter getContextMenuAdapter() {
- return mContextMenuAdapter;
- }
-
- protected boolean loadPreferences() {
- boolean changed = false;
- if (getContactNameDisplayOrder() != mContactsPrefs.getDisplayOrder()) {
- setContactNameDisplayOrder(mContactsPrefs.getDisplayOrder());
- changed = true;
- }
-
- if (getSortOrder() != mContactsPrefs.getSortOrder()) {
- setSortOrder(mContactsPrefs.getSortOrder());
- changed = true;
- }
-
- return changed;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- onCreateView(inflater, container);
-
- mAdapter = createListAdapter();
-
- boolean searchMode = isSearchMode();
- mAdapter.setSearchMode(searchMode);
- mAdapter.configureDefaultPartition(false, searchMode);
- mAdapter.setPhotoLoader(mPhotoManager);
- mListView.setAdapter(mAdapter);
-
- if (!isSearchMode()) {
- mListView.setFocusableInTouchMode(true);
- mListView.requestFocus();
- }
-
- return mView;
- }
-
- protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
- mView = inflateView(inflater, container);
-
- mListView = (ListView)mView.findViewById(android.R.id.list);
- if (mListView == null) {
- throw new RuntimeException(
- "Your content must have a ListView whose id attribute is " +
- "'android.R.id.list'");
- }
-
- View emptyView = mView.findViewById(android.R.id.empty);
- if (emptyView != null) {
- mListView.setEmptyView(emptyView);
- if (emptyView instanceof ContactListEmptyView) {
- mEmptyView = (ContactListEmptyView)emptyView;
- }
- }
-
- mListView.setOnItemClickListener(this);
- mListView.setOnFocusChangeListener(this);
- mListView.setOnTouchListener(this);
- mListView.setFastScrollEnabled(!isSearchMode());
-
- // Tell list view to not show dividers. We'll do it ourself so that we can *not* show
- // them when an A-Z headers is visible.
- mListView.setDividerHeight(0);
-
- // We manually save/restore the listview state
- mListView.setSaveEnabled(false);
-
- if (mContextMenuAdapter != null) {
- mListView.setOnCreateContextMenuListener(mContextMenuAdapter);
- }
-
- configureVerticalScrollbar();
- configurePhotoLoader();
- }
-
- protected void configurePhotoLoader() {
- if (isPhotoLoaderEnabled() && mContext != null) {
- if (mPhotoManager == null) {
- mPhotoManager = ContactPhotoManager.getInstance(mContext);
- }
- if (mListView != null) {
- mListView.setOnScrollListener(this);
- }
- if (mAdapter != null) {
- mAdapter.setPhotoLoader(mPhotoManager);
- }
- }
- }
-
- protected void configureAdapter() {
- if (mAdapter == null) {
- return;
- }
-
- mAdapter.setQuickContactEnabled(mQuickContactEnabled);
- mAdapter.setIncludeProfile(mIncludeProfile);
- mAdapter.setQueryString(mQueryString);
- mAdapter.setDirectorySearchMode(mDirectorySearchMode);
- mAdapter.setPinnedPartitionHeadersEnabled(mSearchMode);
- mAdapter.setContactNameDisplayOrder(mDisplayOrder);
- mAdapter.setSortOrder(mSortOrder);
- mAdapter.setSectionHeaderDisplayEnabled(mSectionHeaderDisplayEnabled);
- mAdapter.setSelectionVisible(mSelectionVisible);
- mAdapter.setDirectoryResultLimit(mDirectoryResultLimit);
- mAdapter.setDarkTheme(mDarkTheme);
- }
-
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
- int totalItemCount) {
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- if (scrollState == OnScrollListener.SCROLL_STATE_FLING) {
- mPhotoManager.pause();
- } else if (isPhotoLoaderEnabled()) {
- mPhotoManager.resume();
- }
- }
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- hideSoftKeyboard();
-
- int adjPosition = position - mListView.getHeaderViewsCount();
- if (adjPosition >= 0) {
- onItemClick(adjPosition, id);
- }
- }
-
- private void hideSoftKeyboard() {
- // Hide soft keyboard, if visible
- InputMethodManager inputMethodManager = (InputMethodManager)
- mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
- inputMethodManager.hideSoftInputFromWindow(mListView.getWindowToken(), 0);
- }
-
- /**
- * Dismisses the soft keyboard when the list takes focus.
- */
- @Override
- public void onFocusChange(View view, boolean hasFocus) {
- if (view == mListView && hasFocus) {
- hideSoftKeyboard();
- }
- }
-
- /**
- * Dismisses the soft keyboard when the list is touched.
- */
- @Override
- public boolean onTouch(View view, MotionEvent event) {
- if (view == mListView) {
- hideSoftKeyboard();
- }
- return false;
- }
-
- @Override
- public void onPause() {
- super.onPause();
- removePendingDirectorySearchRequests();
- }
-
- /**
- * Dismisses the search UI along with the keyboard if the filter text is empty.
- */
- public void onClose() {
- hideSoftKeyboard();
- finish();
- }
-
- /**
- * Restore the list state after the adapter is populated.
- */
- protected void completeRestoreInstanceState() {
- if (mListState != null) {
- mListView.onRestoreInstanceState(mListState);
- mListState = null;
- }
- }
-
- protected void setEmptyText(int resourceId) {
- TextView empty = (TextView) getEmptyView().findViewById(R.id.emptyText);
- empty.setText(mContext.getText(resourceId));
- empty.setVisibility(View.VISIBLE);
- }
-
- // TODO redesign into an async task or loader
- protected boolean isSyncActive() {
- Account[] accounts = AccountManager.get(mContext).getAccounts();
- if (accounts != null && accounts.length > 0) {
- IContentService contentService = ContentResolver.getContentService();
- for (Account account : accounts) {
- try {
- if (contentService.isSyncActive(account, ContactsContract.AUTHORITY)) {
- return true;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Could not get the sync status");
- }
- }
- }
- return false;
- }
-
- protected boolean hasIccCard() {
- TelephonyManager telephonyManager =
- (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
- return telephonyManager.hasIccCard();
- }
-
- public void setDarkTheme(boolean value) {
- mDarkTheme = value;
- if (mAdapter != null) mAdapter.setDarkTheme(value);
- }
-
- /**
- * Processes a result returned by the contact picker.
- */
- public void onPickerResult(Intent data) {
- throw new UnsupportedOperationException("Picker result handler is not implemented.");
- }
-
- private ContactsPreferences.ChangeListener mPreferencesChangeListener =
- new ContactsPreferences.ChangeListener() {
- @Override
- public void onChange() {
- loadPreferences();
- reloadData();
- }
- };
-}
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
deleted file mode 100644
index 1eb2dae..0000000
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ /dev/null
@@ -1,362 +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.list;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.ContactCounts;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Directory;
-import android.provider.ContactsContract.SearchSnippetColumns;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListView;
-
-import com.android.contacts.R;
-
-/**
- * A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type.
- * Also includes support for including the {@link ContactsContract.Profile} record in the
- * list.
- */
-public abstract class ContactListAdapter extends ContactEntryListAdapter {
-
- protected static class ContactQuery {
- private static final String[] CONTACT_PROJECTION_PRIMARY = new String[] {
- Contacts._ID, // 0
- Contacts.DISPLAY_NAME_PRIMARY, // 1
- Contacts.CONTACT_PRESENCE, // 2
- Contacts.CONTACT_STATUS, // 3
- Contacts.PHOTO_ID, // 4
- Contacts.PHOTO_THUMBNAIL_URI, // 5
- Contacts.LOOKUP_KEY, // 6
- Contacts.IS_USER_PROFILE, // 7
- };
-
- private static final String[] CONTACT_PROJECTION_ALTERNATIVE = new String[] {
- Contacts._ID, // 0
- Contacts.DISPLAY_NAME_ALTERNATIVE, // 1
- Contacts.CONTACT_PRESENCE, // 2
- Contacts.CONTACT_STATUS, // 3
- Contacts.PHOTO_ID, // 4
- Contacts.PHOTO_THUMBNAIL_URI, // 5
- Contacts.LOOKUP_KEY, // 6
- Contacts.IS_USER_PROFILE, // 7
- };
-
- private static final String[] FILTER_PROJECTION_PRIMARY = new String[] {
- Contacts._ID, // 0
- Contacts.DISPLAY_NAME_PRIMARY, // 1
- Contacts.CONTACT_PRESENCE, // 2
- Contacts.CONTACT_STATUS, // 3
- Contacts.PHOTO_ID, // 4
- Contacts.PHOTO_THUMBNAIL_URI, // 5
- Contacts.LOOKUP_KEY, // 6
- Contacts.IS_USER_PROFILE, // 7
- SearchSnippetColumns.SNIPPET, // 8
- };
-
- private static final String[] FILTER_PROJECTION_ALTERNATIVE = new String[] {
- Contacts._ID, // 0
- Contacts.DISPLAY_NAME_ALTERNATIVE, // 1
- Contacts.CONTACT_PRESENCE, // 2
- Contacts.CONTACT_STATUS, // 3
- Contacts.PHOTO_ID, // 4
- Contacts.PHOTO_THUMBNAIL_URI, // 5
- Contacts.LOOKUP_KEY, // 6
- Contacts.IS_USER_PROFILE, // 7
- SearchSnippetColumns.SNIPPET, // 8
- };
-
- public static final int CONTACT_ID = 0;
- public static final int CONTACT_DISPLAY_NAME = 1;
- public static final int CONTACT_PRESENCE_STATUS = 2;
- public static final int CONTACT_CONTACT_STATUS = 3;
- public static final int CONTACT_PHOTO_ID = 4;
- public static final int CONTACT_PHOTO_URI = 5;
- public static final int CONTACT_LOOKUP_KEY = 6;
- public static final int CONTACT_IS_USER_PROFILE = 7;
- public static final int CONTACT_SNIPPET = 8;
- }
-
- private CharSequence mUnknownNameText;
-
- private long mSelectedContactDirectoryId;
- private String mSelectedContactLookupKey;
- private long mSelectedContactId;
-
- public ContactListAdapter(Context context) {
- super(context);
-
- mUnknownNameText = context.getText(R.string.missing_name);
- }
-
- public CharSequence getUnknownNameText() {
- return mUnknownNameText;
- }
-
- public long getSelectedContactDirectoryId() {
- return mSelectedContactDirectoryId;
- }
-
- public String getSelectedContactLookupKey() {
- return mSelectedContactLookupKey;
- }
-
- public long getSelectedContactId() {
- return mSelectedContactId;
- }
-
- public void setSelectedContact(long selectedDirectoryId, String lookupKey, long contactId) {
- mSelectedContactDirectoryId = selectedDirectoryId;
- mSelectedContactLookupKey = lookupKey;
- mSelectedContactId = contactId;
- }
-
- protected static Uri buildSectionIndexerUri(Uri uri) {
- return uri.buildUpon()
- .appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true").build();
- }
-
- @Override
- public String getContactDisplayName(int position) {
- return ((Cursor) getItem(position)).getString(ContactQuery.CONTACT_DISPLAY_NAME);
- }
-
- /**
- * Builds the {@link Contacts#CONTENT_LOOKUP_URI} for the given
- * {@link ListView} position.
- */
- public Uri getContactUri(int position) {
- int partitionIndex = getPartitionForPosition(position);
- Cursor item = (Cursor)getItem(position);
- return item != null ? getContactUri(partitionIndex, item) : null;
- }
-
- public Uri getContactUri(int partitionIndex, Cursor cursor) {
- long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
- String lookupKey = cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY);
- Uri uri = Contacts.getLookupUri(contactId, lookupKey);
- long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
- if (directoryId != Directory.DEFAULT) {
- uri = uri.buildUpon().appendQueryParameter(
- ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)).build();
- }
- return uri;
- }
-
- /**
- * Returns true if the specified contact is selected in the list. For a
- * contact to be shown as selected, we need both the directory and and the
- * lookup key to be the same. We are paying no attention to the contactId,
- * because it is volatile, especially in the case of directories.
- */
- public boolean isSelectedContact(int partitionIndex, Cursor cursor) {
- long directoryId = ((DirectoryPartition)getPartition(partitionIndex)).getDirectoryId();
- if (getSelectedContactDirectoryId() != directoryId) {
- return false;
- }
- String lookupKey = getSelectedContactLookupKey();
- if (lookupKey != null && TextUtils.equals(lookupKey,
- cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY))) {
- return true;
- }
-
- return directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE
- && getSelectedContactId() == cursor.getLong(ContactQuery.CONTACT_ID);
- }
-
- @Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
- ContactListItemView view = new ContactListItemView(context, null);
- view.setUnknownNameText(mUnknownNameText);
- view.setQuickContactEnabled(isQuickContactEnabled());
- view.setActivatedStateSupported(isSelectionVisible());
- return view;
- }
-
- protected void bindSectionHeaderAndDivider(ContactListItemView view, int position,
- Cursor cursor) {
- if (isSectionHeaderDisplayEnabled()) {
- Placement placement = getItemPlacementInSection(position);
-
- // First position, set the contacts number string
- if (position == 0 && cursor.getInt(ContactQuery.CONTACT_IS_USER_PROFILE) == 1) {
- view.setCountView(getContactsCount());
- } else {
- view.setCountView(null);
- }
- view.setSectionHeader(placement.sectionHeader);
- view.setDividerVisible(!placement.lastInSection);
- } else {
- view.setSectionHeader(null);
- view.setDividerVisible(true);
- view.setCountView(null);
- }
- }
-
- protected void bindPhoto(final ContactListItemView view, int partitionIndex, Cursor cursor) {
- if (!isPhotoSupported(partitionIndex)) {
- view.removePhotoView();
- return;
- }
-
- // Set the photo, if available
- long photoId = 0;
- if (!cursor.isNull(ContactQuery.CONTACT_PHOTO_ID)) {
- photoId = cursor.getLong(ContactQuery.CONTACT_PHOTO_ID);
- }
-
- if (photoId != 0) {
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false);
- } else {
- final String photoUriString = cursor.getString(ContactQuery.CONTACT_PHOTO_URI);
- final Uri photoUri = photoUriString == null ? null : Uri.parse(photoUriString);
- getPhotoLoader().loadDirectoryPhoto(view.getPhotoView(), photoUri, false);
- }
- }
-
- protected void bindName(final ContactListItemView view, Cursor cursor) {
- view.showDisplayName(
- cursor, ContactQuery.CONTACT_DISPLAY_NAME, getContactNameDisplayOrder());
- // Note: we don't show phonetic any more (See issue 5265330)
- }
-
- protected void bindPresenceAndStatusMessage(final ContactListItemView view, Cursor cursor) {
- view.showPresenceAndStatusMessage(cursor, ContactQuery.CONTACT_PRESENCE_STATUS,
- ContactQuery.CONTACT_CONTACT_STATUS);
- }
-
- protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
- view.showSnippet(cursor, ContactQuery.CONTACT_SNIPPET);
- }
-
- public int getSelectedContactPosition() {
- if (mSelectedContactLookupKey == null && mSelectedContactId == 0) {
- return -1;
- }
-
- Cursor cursor = null;
- int partitionIndex = -1;
- int partitionCount = getPartitionCount();
- for (int i = 0; i < partitionCount; i++) {
- DirectoryPartition partition = (DirectoryPartition) getPartition(i);
- if (partition.getDirectoryId() == mSelectedContactDirectoryId) {
- partitionIndex = i;
- break;
- }
- }
- if (partitionIndex == -1) {
- return -1;
- }
-
- cursor = getCursor(partitionIndex);
- if (cursor == null) {
- return -1;
- }
-
- cursor.moveToPosition(-1); // Reset cursor
- int offset = -1;
- while (cursor.moveToNext()) {
- if (mSelectedContactLookupKey != null) {
- String lookupKey = cursor.getString(ContactQuery.CONTACT_LOOKUP_KEY);
- if (mSelectedContactLookupKey.equals(lookupKey)) {
- offset = cursor.getPosition();
- break;
- }
- }
- if (mSelectedContactId != 0 && (mSelectedContactDirectoryId == Directory.DEFAULT
- || mSelectedContactDirectoryId == Directory.LOCAL_INVISIBLE)) {
- long contactId = cursor.getLong(ContactQuery.CONTACT_ID);
- if (contactId == mSelectedContactId) {
- offset = cursor.getPosition();
- break;
- }
- }
- }
- if (offset == -1) {
- return -1;
- }
-
- int position = getPositionForPartition(partitionIndex) + offset;
- if (hasHeader(partitionIndex)) {
- position++;
- }
- return position;
- }
-
- public boolean hasValidSelection() {
- return getSelectedContactPosition() != -1;
- }
-
- public Uri getFirstContactUri() {
- int partitionCount = getPartitionCount();
- for (int i = 0; i < partitionCount; i++) {
- DirectoryPartition partition = (DirectoryPartition) getPartition(i);
- if (partition.isLoading()) {
- continue;
- }
-
- Cursor cursor = getCursor(i);
- if (cursor == null) {
- continue;
- }
-
- if (!cursor.moveToFirst()) {
- continue;
- }
-
- return getContactUri(i, cursor);
- }
-
- return null;
- }
-
- @Override
- public void changeCursor(int partitionIndex, Cursor cursor) {
- super.changeCursor(partitionIndex, cursor);
-
- // Check if a profile exists
- if (cursor != null && cursor.getCount() > 0) {
- cursor.moveToFirst();
- setProfileExists(cursor.getInt(ContactQuery.CONTACT_IS_USER_PROFILE) == 1);
- }
- }
-
- /**
- * @return Projection useful for children.
- */
- protected final String[] getProjection(boolean forSearch) {
- final int sortOrder = getContactNameDisplayOrder();
- if (forSearch) {
- if (sortOrder == ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY) {
- return ContactQuery.FILTER_PROJECTION_PRIMARY;
- } else {
- return ContactQuery.FILTER_PROJECTION_ALTERNATIVE;
- }
- } else {
- if (sortOrder == ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY) {
- return ContactQuery.CONTACT_PROJECTION_PRIMARY;
- } else {
- return ContactQuery.CONTACT_PROJECTION_ALTERNATIVE;
- }
- }
- }
-}
diff --git a/src/com/android/contacts/list/ContactListFilter.java b/src/com/android/contacts/list/ContactListFilter.java
deleted file mode 100644
index 172cbe2..0000000
--- a/src/com/android/contacts/list/ContactListFilter.java
+++ /dev/null
@@ -1,306 +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.list;
-
-import android.content.SharedPreferences;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.ContactsContract.RawContacts;
-import android.text.TextUtils;
-
-/**
- * Contact list filter parameters.
- */
-public final class ContactListFilter implements Comparable<ContactListFilter>, Parcelable {
-
- public static final int FILTER_TYPE_DEFAULT = -1;
- public static final int FILTER_TYPE_ALL_ACCOUNTS = -2;
- public static final int FILTER_TYPE_CUSTOM = -3;
- public static final int FILTER_TYPE_STARRED = -4;
- public static final int FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY = -5;
- public static final int FILTER_TYPE_SINGLE_CONTACT = -6;
-
- public static final int FILTER_TYPE_ACCOUNT = 0;
-
- /**
- * Obsolete filter which had been used in Honeycomb. This may be stored in
- * {@link SharedPreferences}, but should be replaced with ALL filter when it is found.
- *
- * TODO: "group" filter and relevant variables are all obsolete. Remove them.
- */
- private static final int FILTER_TYPE_GROUP = 1;
-
- private static final String KEY_FILTER_TYPE = "filter.type";
- private static final String KEY_ACCOUNT_NAME = "filter.accountName";
- private static final String KEY_ACCOUNT_TYPE = "filter.accountType";
- private static final String KEY_DATA_SET = "filter.dataSet";
-
- public final int filterType;
- public final String accountType;
- public final String accountName;
- public final String dataSet;
- public final Drawable icon;
- private String mId;
-
- public ContactListFilter(int filterType, String accountType, String accountName, String dataSet,
- Drawable icon) {
- this.filterType = filterType;
- this.accountType = accountType;
- this.accountName = accountName;
- this.dataSet = dataSet;
- this.icon = icon;
- }
-
- public static ContactListFilter createFilterWithType(int filterType) {
- return new ContactListFilter(filterType, null, null, null, null);
- }
-
- public static ContactListFilter createAccountFilter(String accountType, String accountName,
- String dataSet, Drawable icon) {
- return new ContactListFilter(ContactListFilter.FILTER_TYPE_ACCOUNT, accountType,
- accountName, dataSet, icon);
- }
-
- /**
- * Returns true if this filter is based on data and may become invalid over time.
- */
- public boolean isValidationRequired() {
- return filterType == FILTER_TYPE_ACCOUNT;
- }
-
- @Override
- public String toString() {
- switch (filterType) {
- case FILTER_TYPE_DEFAULT:
- return "default";
- case FILTER_TYPE_ALL_ACCOUNTS:
- return "all_accounts";
- case FILTER_TYPE_CUSTOM:
- return "custom";
- case FILTER_TYPE_STARRED:
- return "starred";
- case FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
- return "with_phones";
- case FILTER_TYPE_SINGLE_CONTACT:
- return "single";
- case FILTER_TYPE_ACCOUNT:
- return "account: " + accountType + (dataSet != null ? "/" + dataSet : "")
- + " " + accountName;
- }
- return super.toString();
- }
-
- @Override
- public int compareTo(ContactListFilter another) {
- int res = accountName.compareTo(another.accountName);
- if (res != 0) {
- return res;
- }
-
- res = accountType.compareTo(another.accountType);
- if (res != 0) {
- return res;
- }
-
- return filterType - another.filterType;
- }
-
- @Override
- public int hashCode() {
- int code = filterType;
- if (accountType != null) {
- code = code * 31 + accountType.hashCode();
- code = code * 31 + accountName.hashCode();
- }
- if (dataSet != null) {
- code = code * 31 + dataSet.hashCode();
- }
- return code;
- }
-
- @Override
- public boolean equals(Object other) {
- if (this == other) {
- return true;
- }
-
- if (!(other instanceof ContactListFilter)) {
- return false;
- }
-
- ContactListFilter otherFilter = (ContactListFilter) other;
- if (filterType != otherFilter.filterType
- || !TextUtils.equals(accountName, otherFilter.accountName)
- || !TextUtils.equals(accountType, otherFilter.accountType)
- || !TextUtils.equals(dataSet, otherFilter.dataSet)) {
- return false;
- }
-
- return true;
- }
-
- /**
- * Store the given {@link ContactListFilter} to preferences. If the requested filter is
- * of type {@link #FILTER_TYPE_SINGLE_CONTACT} then do not save it to preferences because
- * it is a temporary state.
- */
- public static void storeToPreferences(SharedPreferences prefs, ContactListFilter filter) {
- if (filter != null && filter.filterType == FILTER_TYPE_SINGLE_CONTACT) {
- return;
- }
- prefs.edit()
- .putInt(KEY_FILTER_TYPE, filter == null ? FILTER_TYPE_DEFAULT : filter.filterType)
- .putString(KEY_ACCOUNT_NAME, filter == null ? null : filter.accountName)
- .putString(KEY_ACCOUNT_TYPE, filter == null ? null : filter.accountType)
- .putString(KEY_DATA_SET, filter == null ? null : filter.dataSet)
- .apply();
- }
-
- /**
- * Try to obtain ContactListFilter object saved in SharedPreference.
- * If there's no info there, return ALL filter instead.
- */
- public static ContactListFilter restoreDefaultPreferences(SharedPreferences prefs) {
- ContactListFilter filter = restoreFromPreferences(prefs);
- if (filter == null) {
- filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS);
- }
- // "Group" filter is obsolete and thus is not exposed anymore. The "single contact mode"
- // should also not be stored in preferences anymore since it is a temporary state.
- if (filter.filterType == FILTER_TYPE_GROUP ||
- filter.filterType == FILTER_TYPE_SINGLE_CONTACT) {
- filter = ContactListFilter.createFilterWithType(FILTER_TYPE_ALL_ACCOUNTS);
- }
- return filter;
- }
-
- private static ContactListFilter restoreFromPreferences(SharedPreferences prefs) {
- int filterType = prefs.getInt(KEY_FILTER_TYPE, FILTER_TYPE_DEFAULT);
- if (filterType == FILTER_TYPE_DEFAULT) {
- return null;
- }
-
- String accountName = prefs.getString(KEY_ACCOUNT_NAME, null);
- String accountType = prefs.getString(KEY_ACCOUNT_TYPE, null);
- String dataSet = prefs.getString(KEY_DATA_SET, null);
- return new ContactListFilter(filterType, accountType, accountName, dataSet, null);
- }
-
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(filterType);
- dest.writeString(accountName);
- dest.writeString(accountType);
- dest.writeString(dataSet);
- }
-
- public static final Parcelable.Creator<ContactListFilter> CREATOR =
- new Parcelable.Creator<ContactListFilter>() {
- @Override
- public ContactListFilter createFromParcel(Parcel source) {
- int filterType = source.readInt();
- String accountName = source.readString();
- String accountType = source.readString();
- String dataSet = source.readString();
- return new ContactListFilter(filterType, accountType, accountName, dataSet, null);
- }
-
- @Override
- public ContactListFilter[] newArray(int size) {
- return new ContactListFilter[size];
- }
- };
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- /**
- * Returns a string that can be used as a stable persistent identifier for this filter.
- */
- public String getId() {
- if (mId == null) {
- StringBuilder sb = new StringBuilder();
- sb.append(filterType);
- if (accountType != null) {
- sb.append('-').append(accountType);
- }
- if (dataSet != null) {
- sb.append('/').append(dataSet);
- }
- if (accountName != null) {
- sb.append('-').append(accountName.replace('-', '_'));
- }
- mId = sb.toString();
- }
- return mId;
- }
-
- /**
- * Adds the account query parameters to the given {@code uriBuilder}.
- *
- * @throws IllegalStateException if the filter type is not {@link #FILTER_TYPE_ACCOUNT}.
- */
- public Uri.Builder addAccountQueryParameterToUrl(Uri.Builder uriBuilder) {
- if (filterType != FILTER_TYPE_ACCOUNT) {
- throw new IllegalStateException("filterType must be FILTER_TYPE_ACCOUNT");
- }
- uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_NAME, accountName);
- uriBuilder.appendQueryParameter(RawContacts.ACCOUNT_TYPE, accountType);
- if (!TextUtils.isEmpty(dataSet)) {
- uriBuilder.appendQueryParameter(RawContacts.DATA_SET, dataSet);
- }
- return uriBuilder;
- }
-
- public String toDebugString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("[filter type: " + filterType + " (" + filterTypeToString(filterType) + ")");
- if (filterType == FILTER_TYPE_ACCOUNT) {
- builder.append(", accountType: " + accountType)
- .append(", accountName: " + accountName)
- .append(", dataSet: " + dataSet);
- }
- builder.append(", icon: " + icon + "]");
- return builder.toString();
- }
-
- public static final String filterTypeToString(int filterType) {
- switch (filterType) {
- case FILTER_TYPE_DEFAULT:
- return "FILTER_TYPE_DEFAULT";
- case FILTER_TYPE_ALL_ACCOUNTS:
- return "FILTER_TYPE_ALL_ACCOUNTS";
- case FILTER_TYPE_CUSTOM:
- return "FILTER_TYPE_CUSTOM";
- case FILTER_TYPE_STARRED:
- return "FILTER_TYPE_STARRED";
- case FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
- return "FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY";
- case FILTER_TYPE_SINGLE_CONTACT:
- return "FILTER_TYPE_SINGLE_CONTACT";
- case FILTER_TYPE_ACCOUNT:
- return "FILTER_TYPE_ACCOUNT";
- default:
- return "(unknown)";
- }
- }
-}
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
deleted file mode 100644
index ddcb1ae..0000000
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ /dev/null
@@ -1,174 +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.list;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Manages {@link ContactListFilter}. All methods must be called from UI thread.
- */
-public abstract class ContactListFilterController {
-
- public static final String CONTACT_LIST_FILTER_SERVICE = "contactListFilter";
-
- public interface ContactListFilterListener {
- void onContactListFilterChanged();
- }
-
- public static ContactListFilterController getInstance(Context context) {
- return (ContactListFilterController)
- context.getApplicationContext().getSystemService(CONTACT_LIST_FILTER_SERVICE);
- }
-
- public static ContactListFilterController
- createContactListFilterController(Context context) {
- return new ContactListFilterControllerImpl(context);
- }
-
- public abstract void addListener(ContactListFilterListener listener);
-
- public abstract void removeListener(ContactListFilterListener listener);
-
- /**
- * Return the currently-active filter.
- */
- public abstract ContactListFilter getFilter();
-
- /**
- * @param filter the filter
- * @param persistent True when the given filter should be saved soon. False when the filter
- * should not be saved. The latter case may happen when some Intent requires a certain type of
- * UI (e.g. single contact) temporarily.
- */
- public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
-
- public abstract void selectCustomFilter();
-
- /**
- * Checks if the current filter is valid and reset the filter if not. It may happen when
- * an account is removed while the filter points to the account with
- * {@link ContactListFilter#FILTER_TYPE_ACCOUNT} type, for example. It may also happen if
- * the current filter is {@link ContactListFilter#FILTER_TYPE_SINGLE_CONTACT}, in
- * which case, we should switch to the last saved filter in {@link SharedPreferences}.
- */
- public abstract void checkFilterValidity(boolean notifyListeners);
-}
-
-/**
- * Stores the {@link ContactListFilter} selected by the user and saves it to
- * {@link SharedPreferences} if necessary.
- */
-class ContactListFilterControllerImpl extends ContactListFilterController {
- private final Context mContext;
- private final List<ContactListFilterListener> mListeners =
- new ArrayList<ContactListFilterListener>();
- private ContactListFilter mFilter;
-
- public ContactListFilterControllerImpl(Context context) {
- mContext = context;
- mFilter = ContactListFilter.restoreDefaultPreferences(getSharedPreferences());
- checkFilterValidity(true /* notify listeners */);
- }
-
- @Override
- public void addListener(ContactListFilterListener listener) {
- mListeners.add(listener);
- }
-
- @Override
- public void removeListener(ContactListFilterListener listener) {
- mListeners.remove(listener);
- }
-
- @Override
- public ContactListFilter getFilter() {
- return mFilter;
- }
-
- private SharedPreferences getSharedPreferences() {
- return PreferenceManager.getDefaultSharedPreferences(mContext);
- }
-
- @Override
- public void setContactListFilter(ContactListFilter filter, boolean persistent) {
- setContactListFilter(filter, persistent, true);
- }
-
- private void setContactListFilter(ContactListFilter filter, boolean persistent,
- boolean notifyListeners) {
- if (!filter.equals(mFilter)) {
- mFilter = filter;
- if (persistent) {
- ContactListFilter.storeToPreferences(getSharedPreferences(), mFilter);
- }
- if (notifyListeners && !mListeners.isEmpty()) {
- notifyContactListFilterChanged();
- }
- }
- }
-
- @Override
- public void selectCustomFilter() {
- setContactListFilter(ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_CUSTOM), true);
- }
-
- private void notifyContactListFilterChanged() {
- for (ContactListFilterListener listener : mListeners) {
- listener.onContactListFilterChanged();
- }
- }
-
- @Override
- public void checkFilterValidity(boolean notifyListeners) {
- if (mFilter == null) {
- return;
- }
-
- switch (mFilter.filterType) {
- case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT:
- setContactListFilter(
- ContactListFilter.restoreDefaultPreferences(getSharedPreferences()),
- false, notifyListeners);
- break;
- case ContactListFilter.FILTER_TYPE_ACCOUNT:
- if (!filterAccountExists()) {
- // The current account filter points to invalid account. Use "all" filter
- // instead.
- setContactListFilter(ContactListFilter.createFilterWithType(
- ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS), true, notifyListeners);
- }
- }
- }
-
- /**
- * @return true if the Account for the current filter exists.
- */
- private boolean filterAccountExists() {
- final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(mContext);
- final AccountWithDataSet filterAccount = new AccountWithDataSet(
- mFilter.accountName, mFilter.accountType, mFilter.dataSet);
- return accountTypeManager.contains(filterAccount, false);
- }
-}
diff --git a/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
deleted file mode 100644
index d0ecfe4..0000000
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ /dev/null
@@ -1,142 +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.list;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RadioButton;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-
-/**
- * Contact list filter parameters.
- */
-public class ContactListFilterView extends LinearLayout {
-
- private static final String TAG = ContactListFilterView.class.getSimpleName();
-
- private ImageView mIcon;
- private TextView mAccountType;
- private TextView mAccountUserName;
- private RadioButton mRadioButton;
- private ContactListFilter mFilter;
- private boolean mSingleAccount;
-
- public ContactListFilterView(Context context) {
- super(context);
- }
-
- public ContactListFilterView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public void setContactListFilter(ContactListFilter filter) {
- mFilter = filter;
- }
-
- public ContactListFilter getContactListFilter() {
- return mFilter;
- }
-
- public void setSingleAccount(boolean flag) {
- this.mSingleAccount = flag;
- }
-
- @Override
- public void setActivated(boolean activated) {
- super.setActivated(activated);
- if (mRadioButton != null) {
- mRadioButton.setChecked(activated);
- } else {
- // We're guarding against null-pointer exceptions,
- // but otherwise this code is not expected to work
- // properly if the button hasn't been initialized.
- Log.wtf(TAG, "radio-button cannot be activated because it is null");
- }
- }
-
- public void bindView(AccountTypeManager accountTypes) {
- if (mAccountType == null) {
- mIcon = (ImageView) findViewById(R.id.icon);
- mAccountType = (TextView) findViewById(R.id.accountType);
- mAccountUserName = (TextView) findViewById(R.id.accountUserName);
- mRadioButton = (RadioButton) findViewById(R.id.radioButton);
- mRadioButton.setChecked(isActivated());
- }
-
- if (mFilter == null) {
- mAccountType.setText(R.string.contactsList);
- return;
- }
-
- mAccountUserName.setVisibility(View.GONE);
- switch (mFilter.filterType) {
- case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
- bindView(0, R.string.list_filter_all_accounts);
- break;
- }
- case ContactListFilter.FILTER_TYPE_STARRED: {
- bindView(R.drawable.ic_menu_star_holo_light, R.string.list_filter_all_starred);
- break;
- }
- case ContactListFilter.FILTER_TYPE_CUSTOM: {
- bindView(R.drawable.ic_menu_settings_holo_light, R.string.list_filter_customize);
- break;
- }
- case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
- bindView(0, R.string.list_filter_phones);
- break;
- }
- case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
- bindView(0, R.string.list_filter_single);
- break;
- }
- case ContactListFilter.FILTER_TYPE_ACCOUNT: {
- mAccountUserName.setVisibility(View.VISIBLE);
- mIcon.setVisibility(View.VISIBLE);
- if (mFilter.icon != null) {
- mIcon.setImageDrawable(mFilter.icon);
- } else {
- mIcon.setImageResource(R.drawable.unknown_source);
- }
- final AccountType accountType =
- accountTypes.getAccountType(mFilter.accountType, mFilter.dataSet);
- mAccountUserName.setText(mFilter.accountName);
- mAccountType.setText(accountType.getDisplayLabel(getContext()));
- break;
- }
- }
- }
-
- private void bindView(int iconResource, int textResource) {
- if (iconResource != 0) {
- mIcon.setVisibility(View.VISIBLE);
- mIcon.setImageResource(iconResource);
- } else {
- mIcon.setVisibility(View.GONE);
- }
-
- mAccountType.setText(textResource);
- }
-}
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
deleted file mode 100644
index 4b2e254..0000000
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ /dev/null
@@ -1,1215 +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.list;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.content.res.TypedArray;
-import android.database.CharArrayBuffer;
-import android.database.Cursor;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Rect;
-import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.TextUtils.TruncateAt;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView.SelectionBoundsAdjuster;
-import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
-import android.widget.QuickContactBadge;
-import android.widget.TextView;
-
-import com.android.contacts.ContactPresenceIconUtil;
-import com.android.contacts.ContactStatusUtil;
-import com.android.contacts.R;
-import com.android.contacts.format.PrefixHighlighter;
-
-/**
- * A custom view for an item in the contact list.
- * The view contains the contact's photo, a set of text views (for name, status, etc...) and
- * icons for presence and call.
- * The view uses no XML file for layout and all the measurements and layouts are done
- * in the onMeasure and onLayout methods.
- *
- * The layout puts the contact's photo on the right side of the view, the call icon (if present)
- * to the left of the photo, the text lines are aligned to the left and the presence icon (if
- * present) is set to the left of the status line.
- *
- * The layout also supports a header (used as a header of a group of contacts) that is above the
- * contact's data and a divider between contact view.
- */
-
-public class ContactListItemView extends ViewGroup
- implements SelectionBoundsAdjuster {
-
- // Style values for layout and appearance
- private final int mPreferredHeight;
- private final int mGapBetweenImageAndText;
- private final int mGapBetweenLabelAndData;
- private final int mPresenceIconMargin;
- private final int mPresenceIconSize;
- private final int mHeaderTextColor;
- private final int mHeaderTextIndent;
- private final int mHeaderTextSize;
- private final int mHeaderUnderlineHeight;
- private final int mHeaderUnderlineColor;
- private final int mCountViewTextSize;
- private final int mContactsCountTextColor;
- private final int mTextIndent;
- private Drawable mActivatedBackgroundDrawable;
-
- /**
- * Used with {@link #mLabelView}, specifying the width ratio between label and data.
- */
- private final int mLabelViewWidthWeight;
- /**
- * Used with {@link #mDataView}, specifying the width ratio between label and data.
- */
- private final int mDataViewWidthWeight;
-
- // Will be used with adjustListItemSelectionBounds().
- private int mSelectionBoundsMarginLeft;
- private int mSelectionBoundsMarginRight;
-
- // Horizontal divider between contact views.
- private boolean mHorizontalDividerVisible = true;
- private Drawable mHorizontalDividerDrawable;
- private int mHorizontalDividerHeight;
-
- /**
- * Where to put contact photo. This affects the other Views' layout or look-and-feel.
- */
- public enum PhotoPosition {
- LEFT,
- RIGHT
- }
- public static final PhotoPosition DEFAULT_PHOTO_POSITION = PhotoPosition.RIGHT;
- private PhotoPosition mPhotoPosition = DEFAULT_PHOTO_POSITION;
-
- // Header layout data
- private boolean mHeaderVisible;
- private View mHeaderDivider;
- private int mHeaderBackgroundHeight;
- private TextView mHeaderTextView;
-
- // The views inside the contact view
- private boolean mQuickContactEnabled = true;
- private QuickContactBadge mQuickContact;
- private ImageView mPhotoView;
- private TextView mNameTextView;
- private TextView mPhoneticNameTextView;
- private TextView mLabelView;
- private TextView mDataView;
- private TextView mSnippetView;
- private TextView mStatusView;
- private TextView mCountView;
- private ImageView mPresenceIcon;
-
- private ColorStateList mSecondaryTextColor;
-
- private char[] mHighlightedPrefix;
-
- private int mDefaultPhotoViewSize;
- /**
- * Can be effective even when {@link #mPhotoView} is null, as we want to have horizontal padding
- * to align other data in this View.
- */
- private int mPhotoViewWidth;
- /**
- * Can be effective even when {@link #mPhotoView} is null, as we want to have vertical padding.
- */
- private int mPhotoViewHeight;
-
- /**
- * Only effective when {@link #mPhotoView} is null.
- * When true all the Views on the right side of the photo should have horizontal padding on
- * those left assuming there is a photo.
- */
- private boolean mKeepHorizontalPaddingForPhotoView;
- /**
- * Only effective when {@link #mPhotoView} is null.
- */
- private boolean mKeepVerticalPaddingForPhotoView;
-
- /**
- * True when {@link #mPhotoViewWidth} and {@link #mPhotoViewHeight} are ready for being used.
- * False indicates those values should be updated before being used in position calculation.
- */
- private boolean mPhotoViewWidthAndHeightAreReady = false;
-
- private int mNameTextViewHeight;
- private int mPhoneticNameTextViewHeight;
- private int mLabelViewHeight;
- private int mDataViewHeight;
- private int mSnippetTextViewHeight;
- private int mStatusTextViewHeight;
-
- // Holds Math.max(mLabelTextViewHeight, mDataViewHeight), assuming Label and Data share the
- // same row.
- private int mLabelAndDataViewMaxHeight;
-
- // TODO: some TextView fields are using CharArrayBuffer while some are not. Determine which is
- // more efficient for each case or in general, and simplify the whole implementation.
- // Note: if we're sure MARQUEE will be used every time, there's no reason to use
- // CharArrayBuffer, since MARQUEE requires Span and thus we need to copy characters inside the
- // buffer to Spannable once, while CharArrayBuffer is for directly applying char array to
- // TextView without any modification.
- private final CharArrayBuffer mDataBuffer = new CharArrayBuffer(128);
- private final CharArrayBuffer mPhoneticNameBuffer = new CharArrayBuffer(128);
-
- private boolean mActivatedStateSupported;
-
- private Rect mBoundsWithoutHeader = new Rect();
-
- /** A helper used to highlight a prefix in a text field. */
- private PrefixHighlighter mPrefixHighlighter;
- private CharSequence mUnknownNameText;
-
- public ContactListItemView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mContext = context;
-
- // Read all style values
- TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ContactListItemView);
- mPreferredHeight = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_height, 0);
- mActivatedBackgroundDrawable = a.getDrawable(
- R.styleable.ContactListItemView_activated_background);
- mHorizontalDividerDrawable = a.getDrawable(
- R.styleable.ContactListItemView_list_item_divider);
-
- mGapBetweenImageAndText = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_gap_between_image_and_text, 0);
- mGapBetweenLabelAndData = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_gap_between_label_and_data, 0);
- mPresenceIconMargin = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_presence_icon_margin, 4);
- mPresenceIconSize = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_presence_icon_size, 16);
- mDefaultPhotoViewSize = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_photo_size, 0);
- mHeaderTextIndent = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_header_text_indent, 0);
- mHeaderTextColor = a.getColor(
- R.styleable.ContactListItemView_list_item_header_text_color, Color.BLACK);
- mHeaderTextSize = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_text_size, 12);
- mHeaderBackgroundHeight = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_height, 30);
- mHeaderUnderlineHeight = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_underline_height, 1);
- mHeaderUnderlineColor = a.getColor(
- R.styleable.ContactListItemView_list_item_header_underline_color, 0);
- mTextIndent = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_text_indent, 0);
- mCountViewTextSize = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_contacts_count_text_size, 12);
- mContactsCountTextColor = a.getColor(
- R.styleable.ContactListItemView_list_item_contacts_count_text_color, Color.BLACK);
- mDataViewWidthWeight = a.getInteger(
- R.styleable.ContactListItemView_list_item_data_width_weight, 5);
- mLabelViewWidthWeight = a.getInteger(
- R.styleable.ContactListItemView_list_item_label_width_weight, 3);
-
- setPadding(
- a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_left, 0),
- a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_top, 0),
- a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_right, 0),
- a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_bottom, 0));
-
- final int prefixHighlightColor = a.getColor(
- R.styleable.ContactListItemView_list_item_prefix_highlight_color, Color.GREEN);
- mPrefixHighlighter = new PrefixHighlighter(prefixHighlightColor);
- a.recycle();
-
- a = getContext().obtainStyledAttributes(android.R.styleable.Theme);
- mSecondaryTextColor = a.getColorStateList(android.R.styleable.Theme_textColorSecondary);
- a.recycle();
-
- mHorizontalDividerHeight = mHorizontalDividerDrawable.getIntrinsicHeight();
-
- if (mActivatedBackgroundDrawable != null) {
- mActivatedBackgroundDrawable.setCallback(this);
- }
- }
-
- public void setUnknownNameText(CharSequence unknownNameText) {
- mUnknownNameText = unknownNameText;
- }
-
- public void setQuickContactEnabled(boolean flag) {
- mQuickContactEnabled = flag;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- // We will match parent's width and wrap content vertically, but make sure
- // height is no less than listPreferredItemHeight.
- final int specWidth = resolveSize(0, widthMeasureSpec);
- final int preferredHeight;
- if (mHorizontalDividerVisible) {
- preferredHeight = mPreferredHeight + mHorizontalDividerHeight;
- } else {
- preferredHeight = mPreferredHeight;
- }
-
- mNameTextViewHeight = 0;
- mPhoneticNameTextViewHeight = 0;
- mLabelViewHeight = 0;
- mDataViewHeight = 0;
- mLabelAndDataViewMaxHeight = 0;
- mSnippetTextViewHeight = 0;
- mStatusTextViewHeight = 0;
-
- ensurePhotoViewSize();
-
- // Width each TextView is able to use.
- final int effectiveWidth;
- // All the other Views will honor the photo, so available width for them may be shrunk.
- if (mPhotoViewWidth > 0 || mKeepHorizontalPaddingForPhotoView) {
- effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight()
- - (mPhotoViewWidth + mGapBetweenImageAndText);
- } else {
- effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight();
- }
-
- // Go over all visible text views and measure actual width of each of them.
- // Also calculate their heights to get the total height for this entire view.
-
- if (isVisible(mNameTextView)) {
- // Caculate width for name text - this parallels similar measurement in onLayout.
- int nameTextWidth = effectiveWidth;
- if (mPhotoPosition != PhotoPosition.LEFT) {
- nameTextWidth -= mTextIndent;
- }
- mNameTextView.measure(
- MeasureSpec.makeMeasureSpec(nameTextWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mNameTextViewHeight = mNameTextView.getMeasuredHeight();
- }
-
- if (isVisible(mPhoneticNameTextView)) {
- mPhoneticNameTextView.measure(
- MeasureSpec.makeMeasureSpec(effectiveWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mPhoneticNameTextViewHeight = mPhoneticNameTextView.getMeasuredHeight();
- }
-
- // If both data (phone number/email address) and label (type like "MOBILE") are quite long,
- // we should ellipsize both using appropriate ratio.
- final int dataWidth;
- final int labelWidth;
- if (isVisible(mDataView)) {
- if (isVisible(mLabelView)) {
- final int totalWidth = effectiveWidth - mGapBetweenLabelAndData;
- dataWidth = ((totalWidth * mDataViewWidthWeight)
- / (mDataViewWidthWeight + mLabelViewWidthWeight));
- labelWidth = ((totalWidth * mLabelViewWidthWeight) /
- (mDataViewWidthWeight + mLabelViewWidthWeight));
- } else {
- dataWidth = effectiveWidth;
- labelWidth = 0;
- }
- } else {
- dataWidth = 0;
- if (isVisible(mLabelView)) {
- labelWidth = effectiveWidth;
- } else {
- labelWidth = 0;
- }
- }
-
- if (isVisible(mDataView)) {
- mDataView.measure(MeasureSpec.makeMeasureSpec(dataWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mDataViewHeight = mDataView.getMeasuredHeight();
- }
-
- if (isVisible(mLabelView)) {
- // For performance reason we don't want AT_MOST usually, but when the picture is
- // on right, we need to use it anyway because mDataView is next to mLabelView.
- final int mode = (mPhotoPosition == PhotoPosition.LEFT
- ? MeasureSpec.EXACTLY : MeasureSpec.AT_MOST);
- mLabelView.measure(MeasureSpec.makeMeasureSpec(labelWidth, mode),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mLabelViewHeight = mLabelView.getMeasuredHeight();
- }
- mLabelAndDataViewMaxHeight = Math.max(mLabelViewHeight, mDataViewHeight);
-
- if (isVisible(mSnippetView)) {
- mSnippetView.measure(
- MeasureSpec.makeMeasureSpec(effectiveWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mSnippetTextViewHeight = mSnippetView.getMeasuredHeight();
- }
-
- // Status view height is the biggest of the text view and the presence icon
- if (isVisible(mPresenceIcon)) {
- mPresenceIcon.measure(
- MeasureSpec.makeMeasureSpec(mPresenceIconSize, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(mPresenceIconSize, MeasureSpec.EXACTLY));
- mStatusTextViewHeight = mPresenceIcon.getMeasuredHeight();
- }
-
- if (isVisible(mStatusView)) {
- // Presence and status are in a same row, so status will be affected by icon size.
- final int statusWidth;
- if (isVisible(mPresenceIcon)) {
- statusWidth = (effectiveWidth - mPresenceIcon.getMeasuredWidth()
- - mPresenceIconMargin);
- } else {
- statusWidth = effectiveWidth;
- }
- mStatusView.measure(MeasureSpec.makeMeasureSpec(statusWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- mStatusTextViewHeight =
- Math.max(mStatusTextViewHeight, mStatusView.getMeasuredHeight());
- }
-
- // Calculate height including padding.
- int height = (mNameTextViewHeight + mPhoneticNameTextViewHeight +
- mLabelAndDataViewMaxHeight +
- mSnippetTextViewHeight + mStatusTextViewHeight);
-
- // Make sure the height is at least as high as the photo
- height = Math.max(height, mPhotoViewHeight + getPaddingBottom() + getPaddingTop());
-
- // Add horizontal divider height
- if (mHorizontalDividerVisible) {
- height += mHorizontalDividerHeight;
- }
-
- // Make sure height is at least the preferred height
- height = Math.max(height, preferredHeight);
-
- // Add the height of the header if visible
- if (mHeaderVisible) {
- mHeaderTextView.measure(
- MeasureSpec.makeMeasureSpec(specWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
- if (mCountView != null) {
- mCountView.measure(
- MeasureSpec.makeMeasureSpec(specWidth, MeasureSpec.AT_MOST),
- MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
- }
- mHeaderBackgroundHeight = Math.max(mHeaderBackgroundHeight,
- mHeaderTextView.getMeasuredHeight());
- height += (mHeaderBackgroundHeight + mHeaderUnderlineHeight);
- }
-
- setMeasuredDimension(specWidth, height);
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- final int height = bottom - top;
- final int width = right - left;
-
- // Determine the vertical bounds by laying out the header first.
- int topBound = 0;
- int bottomBound = height;
- int leftBound = getPaddingLeft();
- int rightBound = width - getPaddingRight();
-
- // Put the header in the top of the contact view (Text + underline view)
- if (mHeaderVisible) {
- mHeaderTextView.layout(leftBound + mHeaderTextIndent,
- 0,
- rightBound,
- mHeaderBackgroundHeight);
- if (mCountView != null) {
- mCountView.layout(rightBound - mCountView.getMeasuredWidth(),
- 0,
- rightBound,
- mHeaderBackgroundHeight);
- }
- mHeaderDivider.layout(leftBound,
- mHeaderBackgroundHeight,
- rightBound,
- mHeaderBackgroundHeight + mHeaderUnderlineHeight);
- topBound += (mHeaderBackgroundHeight + mHeaderUnderlineHeight);
- }
-
- // Put horizontal divider at the bottom
- if (mHorizontalDividerVisible) {
- mHorizontalDividerDrawable.setBounds(
- leftBound,
- height - mHorizontalDividerHeight,
- rightBound,
- height);
- bottomBound -= mHorizontalDividerHeight;
- }
-
- mBoundsWithoutHeader.set(0, topBound, width, bottomBound);
-
- if (mActivatedStateSupported && isActivated()) {
- mActivatedBackgroundDrawable.setBounds(mBoundsWithoutHeader);
- }
-
- final View photoView = mQuickContact != null ? mQuickContact : mPhotoView;
- if (mPhotoPosition == PhotoPosition.LEFT) {
- // Photo is the left most view. All the other Views should on the right of the photo.
- if (photoView != null) {
- // Center the photo vertically
- final int photoTop = topBound + (bottomBound - topBound - mPhotoViewHeight) / 2;
- photoView.layout(
- leftBound,
- photoTop,
- leftBound + mPhotoViewWidth,
- photoTop + mPhotoViewHeight);
- leftBound += mPhotoViewWidth + mGapBetweenImageAndText;
- } else if (mKeepHorizontalPaddingForPhotoView) {
- // Draw nothing but keep the padding.
- leftBound += mPhotoViewWidth + mGapBetweenImageAndText;
- }
- } else {
- // Photo is the right most view. Right bound should be adjusted that way.
- if (photoView != null) {
- // Center the photo vertically
- final int photoTop = topBound + (bottomBound - topBound - mPhotoViewHeight) / 2;
- photoView.layout(
- rightBound - mPhotoViewWidth,
- photoTop,
- rightBound,
- photoTop + mPhotoViewHeight);
- rightBound -= (mPhotoViewWidth + mGapBetweenImageAndText);
- }
-
- // Add indent between left-most padding and texts.
- leftBound += mTextIndent;
- }
-
- // Center text vertically
- final int totalTextHeight = mNameTextViewHeight + mPhoneticNameTextViewHeight +
- mLabelAndDataViewMaxHeight + mSnippetTextViewHeight + mStatusTextViewHeight;
- int textTopBound = (bottomBound + topBound - totalTextHeight) / 2;
-
- // Layout all text view and presence icon
- // Put name TextView first
- if (isVisible(mNameTextView)) {
- mNameTextView.layout(leftBound,
- textTopBound,
- rightBound,
- textTopBound + mNameTextViewHeight);
- textTopBound += mNameTextViewHeight;
- }
-
- // Presence and status
- int statusLeftBound = leftBound;
- if (isVisible(mPresenceIcon)) {
- int iconWidth = mPresenceIcon.getMeasuredWidth();
- mPresenceIcon.layout(
- leftBound,
- textTopBound,
- leftBound + iconWidth,
- textTopBound + mStatusTextViewHeight);
- statusLeftBound += (iconWidth + mPresenceIconMargin);
- }
-
- if (isVisible(mStatusView)) {
- mStatusView.layout(statusLeftBound,
- textTopBound,
- rightBound,
- textTopBound + mStatusTextViewHeight);
- }
-
- if (isVisible(mStatusView) || isVisible(mPresenceIcon)) {
- textTopBound += mStatusTextViewHeight;
- }
-
- // Rest of text views
- int dataLeftBound = leftBound;
- if (isVisible(mPhoneticNameTextView)) {
- mPhoneticNameTextView.layout(leftBound,
- textTopBound,
- rightBound,
- textTopBound + mPhoneticNameTextViewHeight);
- textTopBound += mPhoneticNameTextViewHeight;
- }
-
- // Label and Data align bottom.
- if (isVisible(mLabelView)) {
- if (mPhotoPosition == PhotoPosition.LEFT) {
- // When photo is on left, label is placed on the right edge of the list item.
- mLabelView.layout(rightBound - mLabelView.getMeasuredWidth(),
- textTopBound + mLabelAndDataViewMaxHeight - mLabelViewHeight,
- rightBound,
- textTopBound + mLabelAndDataViewMaxHeight);
- rightBound -= mLabelView.getMeasuredWidth();
- } else {
- // When photo is on right, label is placed on the left of data view.
- dataLeftBound = leftBound + mLabelView.getMeasuredWidth();
- mLabelView.layout(leftBound,
- textTopBound + mLabelAndDataViewMaxHeight - mLabelViewHeight,
- dataLeftBound,
- textTopBound + mLabelAndDataViewMaxHeight);
- dataLeftBound += mGapBetweenLabelAndData;
- }
- }
-
- if (isVisible(mDataView)) {
- mDataView.layout(dataLeftBound,
- textTopBound + mLabelAndDataViewMaxHeight - mDataViewHeight,
- rightBound,
- textTopBound + mLabelAndDataViewMaxHeight);
- }
- if (isVisible(mLabelView) || isVisible(mDataView)) {
- textTopBound += mLabelAndDataViewMaxHeight;
- }
-
- if (isVisible(mSnippetView)) {
- mSnippetView.layout(leftBound,
- textTopBound,
- rightBound,
- textTopBound + mSnippetTextViewHeight);
- }
- }
-
- @Override
- public void adjustListItemSelectionBounds(Rect bounds) {
- bounds.top += mBoundsWithoutHeader.top;
- bounds.bottom = bounds.top + mBoundsWithoutHeader.height();
- bounds.left += mSelectionBoundsMarginLeft;
- bounds.right -= mSelectionBoundsMarginRight;
- }
-
- protected boolean isVisible(View view) {
- return view != null && view.getVisibility() == View.VISIBLE;
- }
-
- /**
- * Extracts width and height from the style
- */
- private void ensurePhotoViewSize() {
- if (!mPhotoViewWidthAndHeightAreReady) {
- mPhotoViewWidth = mPhotoViewHeight = getDefaultPhotoViewSize();
- if (!mQuickContactEnabled && mPhotoView == null) {
- if (!mKeepHorizontalPaddingForPhotoView) {
- mPhotoViewWidth = 0;
- }
- if (!mKeepVerticalPaddingForPhotoView) {
- mPhotoViewHeight = 0;
- }
- }
-
- mPhotoViewWidthAndHeightAreReady = true;
- }
- }
-
- protected void setDefaultPhotoViewSize(int pixels) {
- mDefaultPhotoViewSize = pixels;
- }
-
- protected int getDefaultPhotoViewSize() {
- return mDefaultPhotoViewSize;
- }
-
- /**
- * Gets a LayoutParam that corresponds to the default photo size.
- *
- * @return A new LayoutParam.
- */
- private LayoutParams getDefaultPhotoLayoutParams() {
- LayoutParams params = generateDefaultLayoutParams();
- params.width = getDefaultPhotoViewSize();
- params.height = params.width;
- return params;
- }
-
- @Override
- protected void drawableStateChanged() {
- super.drawableStateChanged();
- if (mActivatedStateSupported) {
- mActivatedBackgroundDrawable.setState(getDrawableState());
- }
- }
-
- @Override
- protected boolean verifyDrawable(Drawable who) {
- return who == mActivatedBackgroundDrawable || super.verifyDrawable(who);
- }
-
- @Override
- public void jumpDrawablesToCurrentState() {
- super.jumpDrawablesToCurrentState();
- if (mActivatedStateSupported) {
- mActivatedBackgroundDrawable.jumpToCurrentState();
- }
- }
-
- @Override
- public void dispatchDraw(Canvas canvas) {
- if (mActivatedStateSupported && isActivated()) {
- mActivatedBackgroundDrawable.draw(canvas);
- }
- if (mHorizontalDividerVisible) {
- mHorizontalDividerDrawable.draw(canvas);
- }
-
- super.dispatchDraw(canvas);
- }
-
- /**
- * Sets the flag that determines whether a divider should drawn at the bottom
- * of the view.
- */
- public void setDividerVisible(boolean visible) {
- mHorizontalDividerVisible = visible;
- }
-
- /**
- * Sets section header or makes it invisible if the title is null.
- */
- public void setSectionHeader(String title) {
- if (!TextUtils.isEmpty(title)) {
- if (mHeaderTextView == null) {
- mHeaderTextView = new TextView(mContext);
- mHeaderTextView.setTextColor(mHeaderTextColor);
- mHeaderTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mHeaderTextSize);
- mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
- mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
- addView(mHeaderTextView);
- }
- if (mHeaderDivider == null) {
- mHeaderDivider = new View(mContext);
- mHeaderDivider.setBackgroundColor(mHeaderUnderlineColor);
- addView(mHeaderDivider);
- }
- setMarqueeText(mHeaderTextView, title);
- mHeaderTextView.setVisibility(View.VISIBLE);
- mHeaderDivider.setVisibility(View.VISIBLE);
- mHeaderTextView.setAllCaps(true);
- mHeaderVisible = true;
- } else {
- if (mHeaderTextView != null) {
- mHeaderTextView.setVisibility(View.GONE);
- }
- if (mHeaderDivider != null) {
- mHeaderDivider.setVisibility(View.GONE);
- }
- mHeaderVisible = false;
- }
- }
-
- /**
- * Returns the quick contact badge, creating it if necessary.
- */
- public QuickContactBadge getQuickContact() {
- if (!mQuickContactEnabled) {
- throw new IllegalStateException("QuickContact is disabled for this view");
- }
- if (mQuickContact == null) {
- mQuickContact = new QuickContactBadge(mContext);
- mQuickContact.setLayoutParams(getDefaultPhotoLayoutParams());
- if (mNameTextView != null) {
- mQuickContact.setContentDescription(mContext.getString(
- R.string.description_quick_contact_for, mNameTextView.getText()));
- }
-
- addView(mQuickContact);
- mPhotoViewWidthAndHeightAreReady = false;
- }
- return mQuickContact;
- }
-
- /**
- * Returns the photo view, creating it if necessary.
- */
- public ImageView getPhotoView() {
- if (mPhotoView == null) {
- mPhotoView = new ImageView(mContext);
- mPhotoView.setLayoutParams(getDefaultPhotoLayoutParams());
- // Quick contact style used above will set a background - remove it
- mPhotoView.setBackground(null);
- addView(mPhotoView);
- mPhotoViewWidthAndHeightAreReady = false;
- }
- return mPhotoView;
- }
-
- /**
- * Removes the photo view.
- */
- public void removePhotoView() {
- removePhotoView(false, true);
- }
-
- /**
- * Removes the photo view.
- *
- * @param keepHorizontalPadding True means data on the right side will have
- * padding on left, pretending there is still a photo view.
- * @param keepVerticalPadding True means the View will have some height
- * enough for accommodating a photo view.
- */
- public void removePhotoView(boolean keepHorizontalPadding, boolean keepVerticalPadding) {
- mPhotoViewWidthAndHeightAreReady = false;
- mKeepHorizontalPaddingForPhotoView = keepHorizontalPadding;
- mKeepVerticalPaddingForPhotoView = keepVerticalPadding;
- if (mPhotoView != null) {
- removeView(mPhotoView);
- mPhotoView = null;
- }
- if (mQuickContact != null) {
- removeView(mQuickContact);
- mQuickContact = null;
- }
- }
-
- /**
- * Sets a word prefix that will be highlighted if encountered in fields like
- * name and search snippet.
- * <p>
- * NOTE: must be all upper-case
- */
- public void setHighlightedPrefix(char[] upperCasePrefix) {
- mHighlightedPrefix = upperCasePrefix;
- }
-
- /**
- * Returns the text view for the contact name, creating it if necessary.
- */
- public TextView getNameTextView() {
- if (mNameTextView == null) {
- mNameTextView = new TextView(mContext);
- mNameTextView.setSingleLine(true);
- mNameTextView.setEllipsize(getTextEllipsis());
- mNameTextView.setTextAppearance(mContext, android.R.style.TextAppearance_Medium);
- // Manually call setActivated() since this view may be added after the first
- // setActivated() call toward this whole item view.
- mNameTextView.setActivated(isActivated());
- mNameTextView.setGravity(Gravity.CENTER_VERTICAL);
- addView(mNameTextView);
- }
- return mNameTextView;
- }
-
- /**
- * Adds or updates a text view for the phonetic name.
- */
- public void setPhoneticName(char[] text, int size) {
- if (text == null || size == 0) {
- if (mPhoneticNameTextView != null) {
- mPhoneticNameTextView.setVisibility(View.GONE);
- }
- } else {
- getPhoneticNameTextView();
- setMarqueeText(mPhoneticNameTextView, text, size);
- mPhoneticNameTextView.setVisibility(VISIBLE);
- }
- }
-
- /**
- * Returns the text view for the phonetic name, creating it if necessary.
- */
- public TextView getPhoneticNameTextView() {
- if (mPhoneticNameTextView == null) {
- mPhoneticNameTextView = new TextView(mContext);
- mPhoneticNameTextView.setSingleLine(true);
- mPhoneticNameTextView.setEllipsize(getTextEllipsis());
- mPhoneticNameTextView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
- mPhoneticNameTextView.setTypeface(mPhoneticNameTextView.getTypeface(), Typeface.BOLD);
- mPhoneticNameTextView.setActivated(isActivated());
- addView(mPhoneticNameTextView);
- }
- return mPhoneticNameTextView;
- }
-
- /**
- * Adds or updates a text view for the data label.
- */
- public void setLabel(CharSequence text) {
- if (TextUtils.isEmpty(text)) {
- if (mLabelView != null) {
- mLabelView.setVisibility(View.GONE);
- }
- } else {
- getLabelView();
- setMarqueeText(mLabelView, text);
- mLabelView.setVisibility(VISIBLE);
- }
- }
-
- /**
- * Returns the text view for the data label, creating it if necessary.
- */
- public TextView getLabelView() {
- if (mLabelView == null) {
- mLabelView = new TextView(mContext);
- mLabelView.setSingleLine(true);
- mLabelView.setEllipsize(getTextEllipsis());
- mLabelView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
- if (mPhotoPosition == PhotoPosition.LEFT) {
- mLabelView.setTextSize(TypedValue.COMPLEX_UNIT_SP, mCountViewTextSize);
- mLabelView.setAllCaps(true);
- mLabelView.setGravity(Gravity.RIGHT);
- } else {
- mLabelView.setTypeface(mLabelView.getTypeface(), Typeface.BOLD);
- }
- mLabelView.setActivated(isActivated());
- addView(mLabelView);
- }
- return mLabelView;
- }
-
- /**
- * Adds or updates a text view for the data element.
- */
- public void setData(char[] text, int size) {
- if (text == null || size == 0) {
- if (mDataView != null) {
- mDataView.setVisibility(View.GONE);
- }
- } else {
- getDataView();
- setMarqueeText(mDataView, text, size);
- mDataView.setVisibility(VISIBLE);
- }
- }
-
- private void setMarqueeText(TextView textView, char[] text, int size) {
- if (getTextEllipsis() == TruncateAt.MARQUEE) {
- setMarqueeText(textView, new String(text, 0, size));
- } else {
- textView.setText(text, 0, size);
- }
- }
-
- private void setMarqueeText(TextView textView, CharSequence text) {
- if (getTextEllipsis() == TruncateAt.MARQUEE) {
- // To show MARQUEE correctly (with END effect during non-active state), we need
- // to build Spanned with MARQUEE in addition to TextView's ellipsize setting.
- final SpannableString spannable = new SpannableString(text);
- spannable.setSpan(TruncateAt.MARQUEE, 0, spannable.length(),
- Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- textView.setText(spannable);
- } else {
- textView.setText(text);
- }
- }
-
- /**
- * Returns the text view for the data text, creating it if necessary.
- */
- public TextView getDataView() {
- if (mDataView == null) {
- mDataView = new TextView(mContext);
- mDataView.setSingleLine(true);
- mDataView.setEllipsize(getTextEllipsis());
- mDataView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
- mDataView.setActivated(isActivated());
- addView(mDataView);
- }
- return mDataView;
- }
-
- /**
- * Adds or updates a text view for the search snippet.
- */
- public void setSnippet(String text) {
- if (TextUtils.isEmpty(text)) {
- if (mSnippetView != null) {
- mSnippetView.setVisibility(View.GONE);
- }
- } else {
- mPrefixHighlighter.setText(getSnippetView(), text, mHighlightedPrefix);
- mSnippetView.setVisibility(VISIBLE);
- }
- }
-
- /**
- * Returns the text view for the search snippet, creating it if necessary.
- */
- public TextView getSnippetView() {
- if (mSnippetView == null) {
- mSnippetView = new TextView(mContext);
- mSnippetView.setSingleLine(true);
- mSnippetView.setEllipsize(getTextEllipsis());
- mSnippetView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
- mSnippetView.setTypeface(mSnippetView.getTypeface(), Typeface.BOLD);
- mSnippetView.setActivated(isActivated());
- addView(mSnippetView);
- }
- return mSnippetView;
- }
-
- /**
- * Returns the text view for the status, creating it if necessary.
- */
- public TextView getStatusView() {
- if (mStatusView == null) {
- mStatusView = new TextView(mContext);
- mStatusView.setSingleLine(true);
- mStatusView.setEllipsize(getTextEllipsis());
- mStatusView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
- mStatusView.setTextColor(mSecondaryTextColor);
- mStatusView.setActivated(isActivated());
- addView(mStatusView);
- }
- return mStatusView;
- }
-
- /**
- * Returns the text view for the contacts count, creating it if necessary.
- */
- public TextView getCountView() {
- if (mCountView == null) {
- mCountView = new TextView(mContext);
- mCountView.setSingleLine(true);
- mCountView.setEllipsize(getTextEllipsis());
- mCountView.setTextAppearance(mContext, android.R.style.TextAppearance_Medium);
- mCountView.setTextColor(R.color.contact_count_text_color);
- addView(mCountView);
- }
- return mCountView;
- }
-
- /**
- * Adds or updates a text view for the contacts count.
- */
- public void setCountView(CharSequence text) {
- if (TextUtils.isEmpty(text)) {
- if (mCountView != null) {
- mCountView.setVisibility(View.GONE);
- }
- } else {
- getCountView();
- setMarqueeText(mCountView, text);
- mCountView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCountViewTextSize);
- mCountView.setGravity(Gravity.CENTER_VERTICAL);
- mCountView.setTextColor(mContactsCountTextColor);
- mCountView.setVisibility(VISIBLE);
- }
- }
-
- /**
- * Adds or updates a text view for the status.
- */
- public void setStatus(CharSequence text) {
- if (TextUtils.isEmpty(text)) {
- if (mStatusView != null) {
- mStatusView.setVisibility(View.GONE);
- }
- } else {
- getStatusView();
- setMarqueeText(mStatusView, text);
- mStatusView.setVisibility(VISIBLE);
- }
- }
-
- /**
- * Adds or updates the presence icon view.
- */
- public void setPresence(Drawable icon) {
- if (icon != null) {
- if (mPresenceIcon == null) {
- mPresenceIcon = new ImageView(mContext);
- addView(mPresenceIcon);
- }
- mPresenceIcon.setImageDrawable(icon);
- mPresenceIcon.setScaleType(ScaleType.CENTER);
- mPresenceIcon.setVisibility(View.VISIBLE);
- } else {
- if (mPresenceIcon != null) {
- mPresenceIcon.setVisibility(View.GONE);
- }
- }
- }
-
- private TruncateAt getTextEllipsis() {
- return TruncateAt.MARQUEE;
- }
-
- public void showDisplayName(Cursor cursor, int nameColumnIndex, int displayOrder) {
- CharSequence name = cursor.getString(nameColumnIndex);
- if (!TextUtils.isEmpty(name)) {
- name = mPrefixHighlighter.apply(name, mHighlightedPrefix);
- } else {
- name = mUnknownNameText;
- }
- setMarqueeText(getNameTextView(), name);
-
- // Since the quick contact content description is derived from the display name and there is
- // no guarantee that when the quick contact is initialized the display name is already set,
- // do it here too.
- if (mQuickContact != null) {
- mQuickContact.setContentDescription(mContext.getString(
- R.string.description_quick_contact_for, mNameTextView.getText()));
- }
- }
-
- public void hideDisplayName() {
- if (mNameTextView != null) {
- removeView(mNameTextView);
- mNameTextView = null;
- }
- }
-
- public void showPhoneticName(Cursor cursor, int phoneticNameColumnIndex) {
- cursor.copyStringToBuffer(phoneticNameColumnIndex, mPhoneticNameBuffer);
- int phoneticNameSize = mPhoneticNameBuffer.sizeCopied;
- if (phoneticNameSize != 0) {
- setPhoneticName(mPhoneticNameBuffer.data, phoneticNameSize);
- } else {
- setPhoneticName(null, 0);
- }
- }
-
- public void hidePhoneticName() {
- if (mPhoneticNameTextView != null) {
- removeView(mPhoneticNameTextView);
- mPhoneticNameTextView = null;
- }
- }
-
- /**
- * Sets the proper icon (star or presence or nothing) and/or status message.
- */
- public void showPresenceAndStatusMessage(Cursor cursor, int presenceColumnIndex,
- int contactStatusColumnIndex) {
- Drawable icon = null;
- int presence = 0;
- if (!cursor.isNull(presenceColumnIndex)) {
- presence = cursor.getInt(presenceColumnIndex);
- icon = ContactPresenceIconUtil.getPresenceIcon(getContext(), presence);
- }
- setPresence(icon);
-
- String statusMessage = null;
- if (contactStatusColumnIndex != 0 && !cursor.isNull(contactStatusColumnIndex)) {
- statusMessage = cursor.getString(contactStatusColumnIndex);
- }
- // If there is no status message from the contact, but there was a presence value, then use
- // the default status message string
- if (statusMessage == null && presence != 0) {
- statusMessage = ContactStatusUtil.getStatusString(getContext(), presence);
- }
- setStatus(statusMessage);
- }
-
- /**
- * Shows search snippet.
- */
- public void showSnippet(Cursor cursor, int summarySnippetColumnIndex) {
- if (cursor.getColumnCount() <= summarySnippetColumnIndex) {
- setSnippet(null);
- return;
- }
- String snippet;
- String columnContent = cursor.getString(summarySnippetColumnIndex);
-
- // Do client side snippeting if provider didn't do it
- Bundle extras = cursor.getExtras();
- if (extras.getBoolean(ContactsContract.DEFERRED_SNIPPETING)) {
- int displayNameIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
-
- snippet = ContactsContract.snippetize(columnContent,
- displayNameIndex < 0 ? null : cursor.getString(displayNameIndex),
- extras.getString(ContactsContract.DEFERRED_SNIPPETING_QUERY),
- DefaultContactListAdapter.SNIPPET_START_MATCH,
- DefaultContactListAdapter.SNIPPET_END_MATCH,
- DefaultContactListAdapter.SNIPPET_ELLIPSIS,
- DefaultContactListAdapter.SNIPPET_MAX_TOKENS);
- } else {
- snippet = columnContent;
- }
-
- if (snippet != null) {
- int from = 0;
- int to = snippet.length();
- int start = snippet.indexOf(DefaultContactListAdapter.SNIPPET_START_MATCH);
- if (start == -1) {
- snippet = null;
- } else {
- int firstNl = snippet.lastIndexOf('\n', start);
- if (firstNl != -1) {
- from = firstNl + 1;
- }
- int end = snippet.lastIndexOf(DefaultContactListAdapter.SNIPPET_END_MATCH);
- if (end != -1) {
- int lastNl = snippet.indexOf('\n', end);
- if (lastNl != -1) {
- to = lastNl;
- }
- }
-
- StringBuilder sb = new StringBuilder();
- for (int i = from; i < to; i++) {
- char c = snippet.charAt(i);
- if (c != DefaultContactListAdapter.SNIPPET_START_MATCH &&
- c != DefaultContactListAdapter.SNIPPET_END_MATCH) {
- sb.append(c);
- }
- }
- snippet = sb.toString();
- }
- }
- setSnippet(snippet);
- }
-
- /**
- * Shows data element (e.g. phone number).
- */
- public void showData(Cursor cursor, int dataColumnIndex) {
- cursor.copyStringToBuffer(dataColumnIndex, mDataBuffer);
- setData(mDataBuffer.data, mDataBuffer.sizeCopied);
- }
-
- public void setActivatedStateSupported(boolean flag) {
- this.mActivatedStateSupported = flag;
- }
-
- @Override
- public void requestLayout() {
- // We will assume that once measured this will not need to resize
- // itself, so there is no need to pass the layout request to the parent
- // view (ListView).
- forceLayout();
- }
-
- public void setPhotoPosition(PhotoPosition photoPosition) {
- mPhotoPosition = photoPosition;
- }
-
- public PhotoPosition getPhotoPosition() {
- return mPhotoPosition;
- }
-
- /**
- * Specifies left and right margin for selection bounds. See also
- * {@link #adjustListItemSelectionBounds(Rect)}.
- */
- public void setSelectionBoundsHorizontalMargin(int left, int right) {
- mSelectionBoundsMarginLeft = left;
- mSelectionBoundsMarginRight = right;
- }
-}
diff --git a/src/com/android/contacts/list/ContactListPinnedHeaderView.java b/src/com/android/contacts/list/ContactListPinnedHeaderView.java
deleted file mode 100644
index 34a56d6..0000000
--- a/src/com/android/contacts/list/ContactListPinnedHeaderView.java
+++ /dev/null
@@ -1,178 +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.list;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Color;
-import android.graphics.Typeface;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-
-/**
- * A custom view for the pinned section header shown at the top of the contact list.
- */
-public class ContactListPinnedHeaderView extends ViewGroup {
-
- protected final Context mContext;
-
- private final int mHeaderTextColor;
- private final int mHeaderTextIndent;
- private final int mHeaderTextSize;
- private final int mHeaderUnderlineHeight;
- private final int mHeaderUnderlineColor;
- private final int mPaddingRight;
- private final int mPaddingLeft;
- private final int mContactsCountTextColor;
- private final int mCountViewTextSize;
-
- private int mHeaderBackgroundHeight;
- private TextView mHeaderTextView;
- private TextView mCountTextView = null;
- private View mHeaderDivider;
-
- public ContactListPinnedHeaderView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mContext = context;
-
- TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ContactListItemView);
-
- mHeaderTextIndent = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_header_text_indent, 0);
- mHeaderTextColor = a.getColor(
- R.styleable.ContactListItemView_list_item_header_text_color, Color.BLACK);
- mHeaderTextSize = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_text_size, 12);
- mHeaderUnderlineHeight = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_underline_height, 1);
- mHeaderUnderlineColor = a.getColor(
- R.styleable.ContactListItemView_list_item_header_underline_color, 0);
- mHeaderBackgroundHeight = a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_header_height, 30);
- mPaddingLeft = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_left, 0);
- mPaddingRight = a.getDimensionPixelOffset(
- R.styleable.ContactListItemView_list_item_padding_right, 0);
- mContactsCountTextColor = a.getColor(
- R.styleable.ContactListItemView_list_item_contacts_count_text_color, Color.BLACK);
- mCountViewTextSize = (int)a.getDimensionPixelSize(
- R.styleable.ContactListItemView_list_item_contacts_count_text_size, 12);
-
- a.recycle();
-
- mHeaderTextView = new TextView(mContext);
- mHeaderTextView.setTextColor(mHeaderTextColor);
- mHeaderTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mHeaderTextSize);
- mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
- mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
- mHeaderTextView.setAllCaps(true);
- addView(mHeaderTextView);
- mHeaderDivider = new View(mContext);
- mHeaderDivider.setBackgroundColor(mHeaderUnderlineColor);
- addView(mHeaderDivider);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-
- // We will match parent's width and wrap content vertically.
- int width = resolveSize(0, widthMeasureSpec);
-
- mHeaderTextView.measure(
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
- MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
- if (isViewMeasurable(mCountTextView)) {
- mCountTextView.measure(
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
- MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
- }
-
- setMeasuredDimension(width, mHeaderBackgroundHeight + mHeaderUnderlineHeight);
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- int width = right - left;
-
- // Take into account left and right padding when laying out the below views.
- mHeaderTextView.layout(mHeaderTextIndent + mPaddingLeft,
- 0,
- mHeaderTextView.getMeasuredWidth() + mHeaderTextIndent + mPaddingLeft,
- mHeaderBackgroundHeight);
-
- if (isViewMeasurable(mCountTextView)) {
- mCountTextView.layout(width - mPaddingRight - mCountTextView.getMeasuredWidth(),
- 0,
- width - mPaddingRight,
- mHeaderBackgroundHeight);
- }
-
- mHeaderDivider.layout(mPaddingLeft,
- mHeaderBackgroundHeight,
- width - mPaddingRight,
- mHeaderBackgroundHeight + mHeaderUnderlineHeight);
- }
-
- /**
- * Sets section header or makes it invisible if the title is null.
- */
- public void setSectionHeader(String title) {
- if (!TextUtils.isEmpty(title)) {
- mHeaderTextView.setText(title);
- mHeaderTextView.setVisibility(View.VISIBLE);
- mHeaderDivider.setVisibility(View.VISIBLE);
- } else {
- mHeaderTextView.setVisibility(View.GONE);
- mHeaderDivider.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void requestLayout() {
- // We will assume that once measured this will not need to resize
- // itself, so there is no need to pass the layout request to the parent
- // view (ListView).
- forceLayout();
- }
-
- public void setCountView(String count) {
- if (mCountTextView == null) {
- mCountTextView = new TextView(mContext);
- mCountTextView.setTextColor(mContactsCountTextColor);
- mCountTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCountViewTextSize);
- mCountTextView.setGravity(Gravity.CENTER_VERTICAL);
- addView(mCountTextView);
- }
- mCountTextView.setText(count);
- if (count == null || count.isEmpty()) {
- mCountTextView.setVisibility(View.GONE);
- } else {
- mCountTextView.setVisibility(View.VISIBLE);
- }
- }
-
- private boolean isViewMeasurable(View view) {
- return (view != null && view.getVisibility() == View.VISIBLE);
- }
-}
diff --git a/src/com/android/contacts/list/ContactNameHighlightingAnimation.java b/src/com/android/contacts/list/ContactNameHighlightingAnimation.java
index ddea603..46fe88b 100644
--- a/src/com/android/contacts/list/ContactNameHighlightingAnimation.java
+++ b/src/com/android/contacts/list/ContactNameHighlightingAnimation.java
@@ -18,6 +18,7 @@
import android.view.View;
import android.widget.ListView;
+import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.widget.TextHighlightingAnimation;
/**
diff --git a/src/com/android/contacts/list/ContactPickerFragment.java b/src/com/android/contacts/list/ContactPickerFragment.java
index bda62f3..3dc4330 100644
--- a/src/com/android/contacts/list/ContactPickerFragment.java
+++ b/src/com/android/contacts/list/ContactPickerFragment.java
@@ -24,7 +24,14 @@
import android.widget.AdapterView;
import com.android.contacts.R;
-import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.list.ContactListAdapter;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.DefaultContactListAdapter;
+import com.android.contacts.common.list.DirectoryListLoader;
+import com.android.contacts.common.list.ShortcutIntentBuilder;
+import com.android.contacts.common.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
/**
* Fragment for the contact list used for browsing contacts (as compared to
@@ -70,10 +77,6 @@
mEditMode = flag;
}
- public boolean isShortcutRequested() {
- return mShortcutRequested;
- }
-
public void setShortcutRequested(boolean flag) {
mShortcutRequested = flag;
}
@@ -180,31 +183,6 @@
}
@Override
- protected void prepareEmptyView() {
- if (isSearchMode()) {
- return;
- } else if (isSyncActive()) {
- if (mShortcutRequested) {
- // Help text is the same no matter whether there is SIM or not.
- setEmptyText(R.string.noContactsHelpTextWithSyncForCreateShortcut);
- } else if (hasIccCard()) {
- setEmptyText(R.string.noContactsHelpTextWithSync);
- } else {
- setEmptyText(R.string.noContactsNoSimHelpTextWithSync);
- }
- } else {
- if (mShortcutRequested) {
- // Help text is the same no matter whether there is SIM or not.
- setEmptyText(R.string.noContactsHelpTextWithSyncForCreateShortcut);
- } else if (hasIccCard()) {
- setEmptyText(R.string.noContactsHelpText);
- } else {
- setEmptyText(R.string.noContactsNoSimHelpText);
- }
- }
- }
-
- @Override
public void onShortcutIntentCreated(Uri uri, Intent shortcutIntent) {
mListener.onShortcutIntentCreated(shortcutIntent);
}
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
deleted file mode 100644
index 0a13e0b..0000000
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ /dev/null
@@ -1,682 +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.content.ContentUris;
-import android.content.Context;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.ContactPresenceIconUtil;
-import com.android.contacts.ContactStatusUtil;
-import com.android.contacts.ContactTileLoaderFactory;
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.GroupMemberLoader;
-import com.android.contacts.GroupMemberLoader.GroupDetailQuery;
-import com.android.contacts.R;
-
-import java.util.ArrayList;
-
-/**
- * Arranges contacts in {@link ContactTileListFragment} (aka favorites) according to
- * provided {@link DisplayType}.
- * Also allows for a configurable number of columns and {@link DisplayType}
- */
-public class ContactTileAdapter extends BaseAdapter {
- private static final String TAG = ContactTileAdapter.class.getSimpleName();
-
- private DisplayType mDisplayType;
- private ContactTileView.Listener mListener;
- private Context mContext;
- private Resources mResources;
- private Cursor mContactCursor = null;
- private ContactPhotoManager mPhotoManager;
- private int mNumFrequents;
-
- /**
- * Index of the first NON starred contact in the {@link Cursor}
- * Only valid when {@link DisplayType#STREQUENT} is true
- */
- private int mDividerPosition;
- private int mColumnCount;
- private int mIdIndex;
- private int mLookupIndex;
- private int mPhotoUriIndex;
- private int mNameIndex;
- private int mStarredIndex;
- private int mPresenceIndex;
- private int mStatusIndex;
-
- /**
- * Only valid when {@link DisplayType#STREQUENT_PHONE_ONLY} is true
- */
- private int mPhoneNumberIndex;
- private int mPhoneNumberTypeIndex;
- private int mPhoneNumberLabelIndex;
-
- private boolean mIsQuickContactEnabled = false;
- private final int mPaddingInPixels;
-
- /**
- * Configures the adapter to filter and display contacts using different view types.
- * TODO: Create Uris to support getting Starred_only and Frequent_only cursors.
- */
- public enum DisplayType {
- /**
- * Displays a mixed view type of starred and frequent contacts
- */
- STREQUENT,
-
- /**
- * Displays a mixed view type of starred and frequent contacts based on phone data.
- * Also includes secondary touch target.
- */
- STREQUENT_PHONE_ONLY,
-
- /**
- * Display only starred contacts
- */
- STARRED_ONLY,
-
- /**
- * Display only most frequently contacted
- */
- FREQUENT_ONLY,
-
- /**
- * Display all contacts from a group in the cursor
- * Use {@link GroupMemberLoader}
- * when passing {@link Cursor} into loadFromCusor method.
- */
- GROUP_MEMBERS
- }
-
- public ContactTileAdapter(Context context, ContactTileView.Listener listener, int numCols,
- DisplayType displayType) {
- mListener = listener;
- mContext = context;
- mResources = context.getResources();
- mColumnCount = (displayType == DisplayType.FREQUENT_ONLY ? 1 : numCols);
- mDisplayType = displayType;
- mNumFrequents = 0;
-
- // Converting padding in dips to padding in pixels
- mPaddingInPixels = mContext.getResources()
- .getDimensionPixelSize(R.dimen.contact_tile_divider_padding);
-
- bindColumnIndices();
- }
-
- public void setPhotoLoader(ContactPhotoManager photoLoader) {
- mPhotoManager = photoLoader;
- }
-
- public void setColumnCount(int columnCount) {
- mColumnCount = columnCount;
- }
-
- public void setDisplayType(DisplayType displayType) {
- mDisplayType = displayType;
- }
-
- public void enableQuickContact(boolean enableQuickContact) {
- mIsQuickContactEnabled = enableQuickContact;
- }
-
- /**
- * Sets the column indices for expected {@link Cursor}
- * based on {@link DisplayType}.
- */
- private void bindColumnIndices() {
- /**
- * Need to check for {@link DisplayType#GROUP_MEMBERS} because
- * it has different projections than all other {@link DisplayType}s
- * By using {@link GroupMemberLoader} and {@link ContactTileLoaderFactory}
- * the correct {@link Cursor}s will be given.
- */
- if (mDisplayType == DisplayType.GROUP_MEMBERS) {
- mIdIndex = GroupDetailQuery.CONTACT_ID;
- mLookupIndex = GroupDetailQuery.CONTACT_LOOKUP_KEY;
- mPhotoUriIndex = GroupDetailQuery.CONTACT_PHOTO_URI;
- mNameIndex = GroupDetailQuery.CONTACT_DISPLAY_NAME_PRIMARY;
- mPresenceIndex = GroupDetailQuery.CONTACT_PRESENCE_STATUS;
- mStatusIndex = GroupDetailQuery.CONTACT_STATUS;
- } else {
- mIdIndex = ContactTileLoaderFactory.CONTACT_ID;
- mLookupIndex = ContactTileLoaderFactory.LOOKUP_KEY;
- mPhotoUriIndex = ContactTileLoaderFactory.PHOTO_URI;
- mNameIndex = ContactTileLoaderFactory.DISPLAY_NAME;
- mStarredIndex = ContactTileLoaderFactory.STARRED;
- mPresenceIndex = ContactTileLoaderFactory.CONTACT_PRESENCE;
- mStatusIndex = ContactTileLoaderFactory.CONTACT_STATUS;
-
- mPhoneNumberIndex = ContactTileLoaderFactory.PHONE_NUMBER;
- mPhoneNumberTypeIndex = ContactTileLoaderFactory.PHONE_NUMBER_TYPE;
- mPhoneNumberLabelIndex = ContactTileLoaderFactory.PHONE_NUMBER_LABEL;
- }
- }
-
- /**
- * Creates {@link ContactTileView}s for each item in {@link Cursor}.
- * If {@link DisplayType} is {@link DisplayType#GROUP_MEMBERS} use {@link GroupMemberLoader}
- * Else use {@link ContactTileLoaderFactory}
- */
- public void setContactCursor(Cursor cursor) {
- mContactCursor = cursor;
- mDividerPosition = getDividerPosition(cursor);
-
- // count the number of frequents
- switch (mDisplayType) {
- case STARRED_ONLY:
- case GROUP_MEMBERS:
- mNumFrequents = 0;
- break;
- case STREQUENT:
- case STREQUENT_PHONE_ONLY:
- mNumFrequents = mContactCursor.getCount() - mDividerPosition;
- break;
- case FREQUENT_ONLY:
- mNumFrequents = mContactCursor.getCount();
- break;
- default:
- throw new IllegalArgumentException("Unrecognized DisplayType " + mDisplayType);
- }
-
- // cause a refresh of any views that rely on this data
- notifyDataSetChanged();
- }
-
- /**
- * Iterates over the {@link Cursor}
- * Returns position of the first NON Starred Contact
- * Returns -1 if {@link DisplayType#STARRED_ONLY} or {@link DisplayType#GROUP_MEMBERS}
- * Returns 0 if {@link DisplayType#FREQUENT_ONLY}
- */
- private int getDividerPosition(Cursor cursor) {
- if (cursor == null || cursor.isClosed()) {
- throw new IllegalStateException("Unable to access cursor");
- }
-
- switch (mDisplayType) {
- case STREQUENT:
- case STREQUENT_PHONE_ONLY:
- cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
- if (cursor.getInt(mStarredIndex) == 0) {
- return cursor.getPosition();
- }
- }
- break;
- case GROUP_MEMBERS:
- case STARRED_ONLY:
- // There is no divider
- return -1;
- case FREQUENT_ONLY:
- // Divider is first
- return 0;
- default:
- throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
- }
-
- // There are not NON Starred contacts in cursor
- // Set divider positon to end
- return cursor.getCount();
- }
-
- private ContactEntry createContactEntryFromCursor(Cursor cursor, int position) {
- // If the loader was canceled we will be given a null cursor.
- // In that case, show an empty list of contacts.
- if (cursor == null || cursor.isClosed() || cursor.getCount() <= position) return null;
-
- cursor.moveToPosition(position);
- long id = cursor.getLong(mIdIndex);
- String photoUri = cursor.getString(mPhotoUriIndex);
- String lookupKey = cursor.getString(mLookupIndex);
-
- ContactEntry contact = new ContactEntry();
- String name = cursor.getString(mNameIndex);
- contact.name = (name != null) ? name : mResources.getString(R.string.missing_name);
- contact.status = cursor.getString(mStatusIndex);
- contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
- contact.lookupKey = ContentUris.withAppendedId(
- Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
-
- // Set phone number and label
- if (mDisplayType == DisplayType.STREQUENT_PHONE_ONLY) {
- int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
- String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
- contact.phoneLabel = (String) Phone.getTypeLabel(mResources, phoneNumberType,
- phoneNumberCustomLabel);
- contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
- } else {
- // Set presence icon and status message
- Drawable icon = null;
- int presence = 0;
- if (!cursor.isNull(mPresenceIndex)) {
- presence = cursor.getInt(mPresenceIndex);
- icon = ContactPresenceIconUtil.getPresenceIcon(mContext, presence);
- }
- contact.presenceIcon = icon;
-
- String statusMessage = null;
- if (mStatusIndex != 0 && !cursor.isNull(mStatusIndex)) {
- statusMessage = cursor.getString(mStatusIndex);
- }
- // If there is no status message from the contact, but there was a presence value,
- // then use the default status message string
- if (statusMessage == null && presence != 0) {
- statusMessage = ContactStatusUtil.getStatusString(mContext, presence);
- }
- contact.status = statusMessage;
- }
-
- return contact;
- }
-
- /**
- * Returns the number of frequents that will be displayed in the list.
- */
- public int getNumFrequents() {
- return mNumFrequents;
- }
-
- @Override
- public int getCount() {
- if (mContactCursor == null || mContactCursor.isClosed()) {
- return 0;
- }
-
- switch (mDisplayType) {
- case STARRED_ONLY:
- case GROUP_MEMBERS:
- return getRowCount(mContactCursor.getCount());
- case STREQUENT:
- case STREQUENT_PHONE_ONLY:
- // Takes numbers of rows the Starred Contacts Occupy
- int starredRowCount = getRowCount(mDividerPosition);
-
- // Compute the frequent row count which is 1 plus the number of frequents
- // (to account for the divider) or 0 if there are no frequents.
- int frequentRowCount = mNumFrequents == 0 ? 0 : mNumFrequents + 1;
-
- // Return the number of starred plus frequent rows
- return starredRowCount + frequentRowCount;
- case FREQUENT_ONLY:
- // Number of frequent contacts
- return mContactCursor.getCount();
- default:
- throw new IllegalArgumentException("Unrecognized DisplayType " + mDisplayType);
- }
- }
-
- /**
- * Returns the number of rows required to show the provided number of entries
- * with the current number of columns.
- */
- private int getRowCount(int entryCount) {
- return entryCount == 0 ? 0 : ((entryCount - 1) / mColumnCount) + 1;
- }
-
- public int getColumnCount() {
- return mColumnCount;
- }
-
- /**
- * Returns an ArrayList of the {@link ContactEntry}s that are to appear
- * on the row for the given position.
- */
- @Override
- public ArrayList<ContactEntry> getItem(int position) {
- ArrayList<ContactEntry> resultList = new ArrayList<ContactEntry>(mColumnCount);
- int contactIndex = position * mColumnCount;
-
- switch (mDisplayType) {
- case FREQUENT_ONLY:
- resultList.add(createContactEntryFromCursor(mContactCursor, position));
- break;
- case STARRED_ONLY:
- case GROUP_MEMBERS:
- for (int columnCounter = 0; columnCounter < mColumnCount; columnCounter++) {
- resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
- contactIndex++;
- }
- break;
- case STREQUENT:
- case STREQUENT_PHONE_ONLY:
- if (position < getRowCount(mDividerPosition)) {
- for (int columnCounter = 0; columnCounter < mColumnCount &&
- contactIndex != mDividerPosition; columnCounter++) {
- resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
- contactIndex++;
- }
- } else {
- /*
- * Current position minus how many rows are before the divider and
- * Minus 1 for the divider itself provides the relative index of the frequent
- * contact being displayed. Then add the dividerPostion to give the offset
- * into the contacts cursor to get the absoulte index.
- */
- contactIndex = position - getRowCount(mDividerPosition) - 1 + mDividerPosition;
- resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
- }
- break;
- default:
- throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
- }
- return resultList;
- }
-
- @Override
- public long getItemId(int position) {
- // As we show several selectable items for each ListView row,
- // we can not determine a stable id. But as we don't rely on ListView's selection,
- // this should not be a problem.
- return position;
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- return (mDisplayType != DisplayType.STREQUENT &&
- mDisplayType != DisplayType.STREQUENT_PHONE_ONLY);
- }
-
- @Override
- public boolean isEnabled(int position) {
- return position != getRowCount(mDividerPosition);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- int itemViewType = getItemViewType(position);
-
- if (itemViewType == ViewTypes.DIVIDER) {
- // Checking For Divider First so not to cast convertView
- return convertView == null ? getDivider() : convertView;
- }
-
- ContactTileRow contactTileRowView = (ContactTileRow) convertView;
- ArrayList<ContactEntry> contactList = getItem(position);
-
- if (contactTileRowView == null) {
- // Creating new row if needed
- contactTileRowView = new ContactTileRow(mContext, itemViewType);
- }
-
- contactTileRowView.configureRow(contactList, position == getCount() - 1);
- return contactTileRowView;
- }
-
- /**
- * Divider uses a list_seperator.xml along with text to denote
- * the most frequently contacted contacts.
- */
- public View getDivider() {
- return ContactsUtils.createHeaderView(mContext,
- mDisplayType == DisplayType.STREQUENT_PHONE_ONLY ?
- R.string.favoritesFrequentCalled : R.string.favoritesFrequentContacted);
- }
-
- private int getLayoutResourceId(int viewType) {
- switch (viewType) {
- case ViewTypes.STARRED:
- return mIsQuickContactEnabled ?
- R.layout.contact_tile_starred_quick_contact : R.layout.contact_tile_starred;
- case ViewTypes.FREQUENT:
- return mDisplayType == DisplayType.STREQUENT_PHONE_ONLY ?
- R.layout.contact_tile_frequent_phone : R.layout.contact_tile_frequent;
- case ViewTypes.STARRED_PHONE:
- return R.layout.contact_tile_phone_starred;
- default:
- throw new IllegalArgumentException("Unrecognized viewType " + viewType);
- }
- }
- @Override
- public int getViewTypeCount() {
- return ViewTypes.COUNT;
- }
-
- @Override
- public int getItemViewType(int position) {
- /*
- * Returns view type based on {@link DisplayType}.
- * {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS}
- * are {@link ViewTypes#STARRED}.
- * {@link DisplayType#FREQUENT_ONLY} is {@link ViewTypes#FREQUENT}.
- * {@link DisplayType#STREQUENT} mixes both {@link ViewTypes}
- * and also adds in {@link ViewTypes#DIVIDER}.
- */
- switch (mDisplayType) {
- case STREQUENT:
- if (position < getRowCount(mDividerPosition)) {
- return ViewTypes.STARRED;
- } else if (position == getRowCount(mDividerPosition)) {
- return ViewTypes.DIVIDER;
- } else {
- return ViewTypes.FREQUENT;
- }
- case STREQUENT_PHONE_ONLY:
- if (position < getRowCount(mDividerPosition)) {
- return ViewTypes.STARRED_PHONE;
- } else if (position == getRowCount(mDividerPosition)) {
- return ViewTypes.DIVIDER;
- } else {
- return ViewTypes.FREQUENT;
- }
- case STARRED_ONLY:
- case GROUP_MEMBERS:
- return ViewTypes.STARRED;
- case FREQUENT_ONLY:
- return ViewTypes.FREQUENT;
- default:
- throw new IllegalStateException("Unrecognized DisplayType " + mDisplayType);
- }
- }
-
- /**
- * Returns the "frequent header" position. Only available when STREQUENT or
- * STREQUENT_PHONE_ONLY is used for its display type.
- */
- public int getFrequentHeaderPosition() {
- return getRowCount(mDividerPosition);
- }
-
- /**
- * Acts as a row item composed of {@link ContactTileView}
- *
- * TODO: FREQUENT doesn't really need it. Just let {@link #getView} return
- */
- private class ContactTileRow extends FrameLayout {
- private int mItemViewType;
- private int mLayoutResId;
-
- public ContactTileRow(Context context, int itemViewType) {
- super(context);
- mItemViewType = itemViewType;
- mLayoutResId = getLayoutResourceId(mItemViewType);
-
- // Remove row (but not children) from accessibility node tree.
- setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
- }
-
- /**
- * Configures the row to add {@link ContactEntry}s information to the views
- */
- public void configureRow(ArrayList<ContactEntry> list, boolean isLastRow) {
- int columnCount = mItemViewType == ViewTypes.FREQUENT ? 1 : mColumnCount;
-
- // Adding tiles to row and filling in contact information
- for (int columnCounter = 0; columnCounter < columnCount; columnCounter++) {
- ContactEntry entry =
- columnCounter < list.size() ? list.get(columnCounter) : null;
- addTileFromEntry(entry, columnCounter, isLastRow);
- }
- }
-
- private void addTileFromEntry(ContactEntry entry, int childIndex, boolean isLastRow) {
- final ContactTileView contactTile;
-
- if (getChildCount() <= childIndex) {
- contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
- // Note: the layoutparam set here is only actually used for FREQUENT.
- // We override onMeasure() for STARRED and we don't care the layout param there.
- Resources resources = mContext.getResources();
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT,
- ViewGroup.LayoutParams.WRAP_CONTENT);
- params.setMargins(
- resources.getDimensionPixelSize(R.dimen.detail_item_side_margin),
- 0,
- resources.getDimensionPixelSize(R.dimen.detail_item_side_margin),
- 0);
- contactTile.setLayoutParams(params);
- contactTile.setPhotoManager(mPhotoManager);
- contactTile.setListener(mListener);
- addView(contactTile);
- } else {
- contactTile = (ContactTileView) getChildAt(childIndex);
- }
- contactTile.loadFromContact(entry);
-
- switch (mItemViewType) {
- case ViewTypes.STARRED_PHONE:
- case ViewTypes.STARRED:
- // Setting divider visibilities
- contactTile.setPadding(0, 0,
- childIndex >= mColumnCount - 1 ? 0 : mPaddingInPixels,
- isLastRow ? 0 : mPaddingInPixels);
- break;
- case ViewTypes.FREQUENT:
- contactTile.setHorizontalDividerVisibility(
- isLastRow ? View.GONE : View.VISIBLE);
- break;
- default:
- break;
- }
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- switch (mItemViewType) {
- case ViewTypes.STARRED_PHONE:
- case ViewTypes.STARRED:
- onLayoutForTiles();
- return;
- default:
- super.onLayout(changed, left, top, right, bottom);
- return;
- }
- }
-
- private void onLayoutForTiles() {
- final int count = getChildCount();
-
- // Just line up children horizontally.
- int childLeft = 0;
- for (int i = 0; i < count; i++) {
- final View child = getChildAt(i);
-
- // Note MeasuredWidth includes the padding.
- final int childWidth = child.getMeasuredWidth();
- child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());
- childLeft += childWidth;
- }
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- switch (mItemViewType) {
- case ViewTypes.STARRED_PHONE:
- case ViewTypes.STARRED:
- onMeasureForTiles(widthMeasureSpec);
- return;
- default:
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- return;
- }
- }
-
- private void onMeasureForTiles(int widthMeasureSpec) {
- final int width = MeasureSpec.getSize(widthMeasureSpec);
-
- final int childCount = getChildCount();
- if (childCount == 0) {
- // Just in case...
- setMeasuredDimension(width, 0);
- return;
- }
-
- // 1. Calculate image size.
- // = ([total width] - [total padding]) / [child count]
- //
- // 2. Set it to width/height of each children.
- // If we have a remainder, some tiles will have 1 pixel larger width than its height.
- //
- // 3. Set the dimensions of itself.
- // Let width = given width.
- // Let height = image size + bottom paddding.
-
- final int totalPaddingsInPixels = (mColumnCount - 1) * mPaddingInPixels;
-
- // Preferred width / height for images (excluding the padding).
- // The actual width may be 1 pixel larger than this if we have a remainder.
- final int imageSize = (width - totalPaddingsInPixels) / mColumnCount;
- final int remainder = width - (imageSize * mColumnCount) - totalPaddingsInPixels;
-
- for (int i = 0; i < childCount; i++) {
- final View child = getChildAt(i);
- final int childWidth = imageSize + child.getPaddingRight()
- // Compensate for the remainder
- + (i < remainder ? 1 : 0);
- final int childHeight = imageSize + child.getPaddingBottom();
- child.measure(
- MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.EXACTLY)
- );
- }
- setMeasuredDimension(width, imageSize + getChildAt(0).getPaddingBottom());
- }
- }
-
- /**
- * Class to hold contact information
- */
- public static class ContactEntry {
- public String name;
- public String status;
- public String phoneLabel;
- public String phoneNumber;
- public Uri photoUri;
- public Uri lookupKey;
- public Drawable presenceIcon;
- }
-
- private static class ViewTypes {
- public static final int COUNT = 4;
- public static final int STARRED = 0;
- public static final int DIVIDER = 1;
- public static final int FREQUENT = 2;
- public static final int STARRED_PHONE = 3;
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileFrequentFragment.java b/src/com/android/contacts/list/ContactTileFrequentFragment.java
index 88ef1e8..605bdd3 100644
--- a/src/com/android/contacts/list/ContactTileFrequentFragment.java
+++ b/src/com/android/contacts/list/ContactTileFrequentFragment.java
@@ -20,8 +20,8 @@
import android.view.View;
import android.view.ViewGroup;
-import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
+import com.android.contacts.common.MoreContactUtils;
/**
* Fragment containing a list of frequently contacted people.
@@ -34,7 +34,7 @@
Bundle savedInstanceState) {
View listLayout = inflateAndSetupView(inflater, container, savedInstanceState,
R.layout.contact_tile_list_frequent);
- View headerView = ContactsUtils.createHeaderView(getActivity(),
+ View headerView = MoreContactUtils.createHeaderView(getActivity(),
R.string.favoritesFrequentContacted);
ViewGroup headerContainer = (ViewGroup) listLayout.findViewById(R.id.header_container);
headerContainer.addView(headerView);
diff --git a/src/com/android/contacts/list/ContactTileFrequentView.java b/src/com/android/contacts/list/ContactTileFrequentView.java
deleted file mode 100644
index ba240af..0000000
--- a/src/com/android/contacts/list/ContactTileFrequentView.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.
- */
-package com.android.contacts.list;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-import com.android.contacts.util.ViewUtil;
-
-/**
- * A {@link ContactTileView} that is used for most frequently contacted in the People app
- */
-public class ContactTileFrequentView extends ContactTileView {
- public ContactTileFrequentView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected boolean isDarkTheme() {
- return false;
- }
-
- @Override
- protected int getApproximateImageSize() {
- return ViewUtil.getConstantPreLayoutWidth(getQuickContact());
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileListFragment.java b/src/com/android/contacts/list/ContactTileListFragment.java
index f5de15f..55c87f3 100644
--- a/src/com/android/contacts/list/ContactTileListFragment.java
+++ b/src/com/android/contacts/list/ContactTileListFragment.java
@@ -32,10 +32,12 @@
import android.widget.ListView;
import android.widget.TextView;
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.ContactTileLoaderFactory;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactTileLoaderFactory;
import com.android.contacts.R;
-import com.android.contacts.list.ContactTileAdapter.DisplayType;
+import com.android.contacts.common.list.ContactTileAdapter;
+import com.android.contacts.common.list.ContactTileView;
+import com.android.contacts.common.list.ContactTileAdapter.DisplayType;
/**
* Fragment containing a list of starred contacts followed by a list of frequently contacted.
diff --git a/src/com/android/contacts/list/ContactTilePhoneFrequentView.java b/src/com/android/contacts/list/ContactTilePhoneFrequentView.java
deleted file mode 100644
index 7c3aef3..0000000
--- a/src/com/android/contacts/list/ContactTilePhoneFrequentView.java
+++ /dev/null
@@ -1,80 +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.content.Context;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.View;
-
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.list.ContactTileAdapter.ContactEntry;
-import com.android.contacts.util.ViewUtil;
-
-/**
- * A dark version of the {@link ContactTileView} that is used in Dialtacts
- * for frequently called contacts. Slightly different behavior from superclass...
- * when you tap it, you want to call the frequently-called number for the
- * contact, even if that is not the default number for that contact.
- */
-public class ContactTilePhoneFrequentView extends ContactTileView {
- private String mPhoneNumberString;
-
- public ContactTilePhoneFrequentView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected boolean isDarkTheme() {
- return true;
- }
-
- @Override
- protected int getApproximateImageSize() {
- return ViewUtil.getConstantPreLayoutWidth(getQuickContact());
- }
-
- @Override
- public void loadFromContact(ContactEntry entry) {
- super.loadFromContact(entry);
- mPhoneNumberString = null; // ... in case we're reusing the view
- if (entry != null) {
- // Grab the phone-number to call directly... see {@link onClick()}
- mPhoneNumberString = entry.phoneNumber;
- }
- }
-
- @Override
- protected OnClickListener createClickListener() {
- return new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mListener == null) return;
- if (TextUtils.isEmpty(mPhoneNumberString)) {
- // Copy "superclass" implementation
- mListener.onContactSelected(getLookupUri(), ContactsUtils.getTargetRectFromView(
- mContext, ContactTilePhoneFrequentView.this));
- } else {
- // When you tap a frequently-called contact, you want to
- // call them at the number that you usually talk to them
- // at (i.e. the one displayed in the UI), regardless of
- // whether that's their default number.
- mListener.onCallNumberDirectly(mPhoneNumberString);
- }
- }
- };
- }
-}
diff --git a/src/com/android/contacts/list/ContactTilePhoneStarredView.java b/src/com/android/contacts/list/ContactTilePhoneStarredView.java
deleted file mode 100644
index dc68688..0000000
--- a/src/com/android/contacts/list/ContactTilePhoneStarredView.java
+++ /dev/null
@@ -1,64 +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.content.Context;
-import android.content.Intent;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageButton;
-
-import com.android.contacts.R;
-
-/**
- * Displays the contact's picture overlayed with their name
- * in a perfect square. It also has an additional touch target for a secondary action.
- */
-public class ContactTilePhoneStarredView extends ContactTileView {
- private ImageButton mSecondaryButton;
-
- public ContactTilePhoneStarredView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
- mSecondaryButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(Intent.ACTION_VIEW, getLookupUri());
- // Secondary target will be visible only from phone's favorite screen, then
- // we want to launch it as a separate People task.
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- getContext().startActivity(intent);
- }
- });
- }
-
- @Override
- protected boolean isDarkTheme() {
- return true;
- }
-
- @Override
- protected int getApproximateImageSize() {
- // The picture is the full size of the tile (minus some padding, but we can be generous)
- return mListener.getApproximateTileWidth();
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileStarredView.java b/src/com/android/contacts/list/ContactTileStarredView.java
deleted file mode 100644
index ee76d4d..0000000
--- a/src/com/android/contacts/list/ContactTileStarredView.java
+++ /dev/null
@@ -1,41 +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.content.Context;
-import android.util.AttributeSet;
-
-/**
- * A {@link ContactTileStarredView} displays the contact's picture overlayed with their name
- * in a square. The actual dimensions are set by
- * {@link com.android.contacts.list.ContactTileAdapter.ContactTileRow}.
- */
-public class ContactTileStarredView extends ContactTileView {
- public ContactTileStarredView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected boolean isDarkTheme() {
- return false;
- }
-
- @Override
- protected int getApproximateImageSize() {
- // The picture is the full size of the tile (minus some padding, but we can be generous)
- return mListener.getApproximateTileWidth();
- }
-}
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
deleted file mode 100644
index c108827..0000000
--- a/src/com/android/contacts/list/ContactTileView.java
+++ /dev/null
@@ -1,192 +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.content.Context;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.QuickContactBadge;
-import android.widget.TextView;
-
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.R;
-import com.android.contacts.list.ContactTileAdapter.ContactEntry;
-
-/**
- * A ContactTile displays a contact's picture and name
- */
-public abstract class ContactTileView extends FrameLayout {
- private final static String TAG = ContactTileView.class.getSimpleName();
-
- private Uri mLookupUri;
- private ImageView mPhoto;
- private QuickContactBadge mQuickContact;
- private TextView mName;
- private TextView mStatus;
- private TextView mPhoneLabel;
- private TextView mPhoneNumber;
- private ContactPhotoManager mPhotoManager = null;
- private View mPushState;
- private View mHorizontalDivider;
- protected Listener mListener;
-
- public ContactTileView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mName = (TextView) findViewById(R.id.contact_tile_name);
-
- mQuickContact = (QuickContactBadge) findViewById(R.id.contact_tile_quick);
- mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
- mStatus = (TextView) findViewById(R.id.contact_tile_status);
- mPhoneLabel = (TextView) findViewById(R.id.contact_tile_phone_type);
- mPhoneNumber = (TextView) findViewById(R.id.contact_tile_phone_number);
- mPushState = findViewById(R.id.contact_tile_push_state);
- mHorizontalDivider = findViewById(R.id.contact_tile_horizontal_divider);
-
- OnClickListener listener = createClickListener();
-
- if(mPushState != null) {
- mPushState.setOnClickListener(listener);
- } else {
- setOnClickListener(listener);
- }
- }
-
- protected OnClickListener createClickListener() {
- return new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mListener == null) return;
- mListener.onContactSelected(
- getLookupUri(),
- ContactsUtils.getTargetRectFromView(mContext, ContactTileView.this));
- }
- };
- }
-
- public void setPhotoManager(ContactPhotoManager photoManager) {
- mPhotoManager = photoManager;
- }
-
- /**
- * Populates the data members to be displayed from the
- * fields in {@link ContactEntry}
- */
- public void loadFromContact(ContactEntry entry) {
-
- if (entry != null) {
- mName.setText(entry.name);
- mLookupUri = entry.lookupKey;
-
- if (mStatus != null) {
- if (entry.status == null) {
- mStatus.setVisibility(View.GONE);
- } else {
- mStatus.setText(entry.status);
- mStatus.setCompoundDrawablesWithIntrinsicBounds(entry.presenceIcon,
- null, null, null);
- mStatus.setVisibility(View.VISIBLE);
- }
- }
-
- if (mPhoneLabel != null) {
- mPhoneLabel.setText(entry.phoneLabel);
- }
-
- if (mPhoneNumber != null) {
- // TODO: Format number correctly
- mPhoneNumber.setText(entry.phoneNumber);
- }
-
- setVisibility(View.VISIBLE);
-
- if (mPhotoManager != null) {
- if (mPhoto != null) {
- mPhotoManager.loadPhoto(mPhoto, entry.photoUri, getApproximateImageSize(),
- isDarkTheme());
-
- if (mQuickContact != null) {
- mQuickContact.assignContactUri(mLookupUri);
- }
- } else if (mQuickContact != null) {
- mQuickContact.assignContactUri(mLookupUri);
- mPhotoManager.loadPhoto(mQuickContact, entry.photoUri,
- getApproximateImageSize(), isDarkTheme());
- }
- } else {
- Log.w(TAG, "contactPhotoManager not set");
- }
-
- if (mPushState != null) {
- mPushState.setContentDescription(entry.name);
- } else if (mQuickContact != null) {
- mQuickContact.setContentDescription(entry.name);
- }
- } else {
- setVisibility(View.INVISIBLE);
- }
- }
-
- public void setListener(Listener listener) {
- mListener = listener;
- }
-
- public void setHorizontalDividerVisibility(int visibility) {
- if (mHorizontalDivider != null) mHorizontalDivider.setVisibility(visibility);
- }
-
- public Uri getLookupUri() {
- return mLookupUri;
- }
-
- protected QuickContactBadge getQuickContact() {
- return mQuickContact;
- }
-
- /**
- * Implemented by subclasses to estimate the size of the picture. This can return -1 if only
- * a thumbnail is shown anyway
- */
- protected abstract int getApproximateImageSize();
-
- protected abstract boolean isDarkTheme();
-
- public interface Listener {
- /**
- * Notification that the contact was selected; no specific action is dictated.
- */
- void onContactSelected(Uri contactLookupUri, Rect viewRect);
- /**
- * Notification that the specified number is to be called.
- */
- void onCallNumberDirectly(String phoneNumber);
- /**
- * @return The width of each tile. This doesn't have to be a precise number (e.g. paddings
- * can be ignored), but is used to load the correct picture size from the database
- */
- int getApproximateTileWidth();
- }
-}
diff --git a/src/com/android/contacts/list/ContactsSectionIndexer.java b/src/com/android/contacts/list/ContactsSectionIndexer.java
deleted file mode 100644
index c260667..0000000
--- a/src/com/android/contacts/list/ContactsSectionIndexer.java
+++ /dev/null
@@ -1,121 +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.list;
-
-import android.text.TextUtils;
-import android.widget.SectionIndexer;
-
-import java.util.Arrays;
-
-/**
- * A section indexer that is configured with precomputed section titles and
- * their respective counts.
- */
-public class ContactsSectionIndexer implements SectionIndexer {
-
- private String[] mSections;
- private int[] mPositions;
- private int mCount;
- private static final String BLANK_HEADER_STRING = " ";
-
- /**
- * Constructor.
- *
- * @param sections a non-null array
- * @param counts a non-null array of the same size as <code>sections</code>
- */
- public ContactsSectionIndexer(String[] sections, int[] counts) {
- if (sections == null || counts == null) {
- throw new NullPointerException();
- }
-
- if (sections.length != counts.length) {
- throw new IllegalArgumentException(
- "The sections and counts arrays must have the same length");
- }
-
- // TODO process sections/counts based on current locale and/or specific section titles
-
- this.mSections = sections;
- mPositions = new int[counts.length];
- int position = 0;
- for (int i = 0; i < counts.length; i++) {
- if (TextUtils.isEmpty(mSections[i])) {
- mSections[i] = BLANK_HEADER_STRING;
- } else if (!mSections[i].equals(BLANK_HEADER_STRING)) {
- mSections[i] = mSections[i].trim();
- }
-
- mPositions[i] = position;
- position += counts[i];
- }
- mCount = position;
- }
-
- public Object[] getSections() {
- return mSections;
- }
-
- public int getPositionForSection(int section) {
- if (section < 0 || section >= mSections.length) {
- return -1;
- }
-
- return mPositions[section];
- }
-
- public int getSectionForPosition(int position) {
- if (position < 0 || position >= mCount) {
- return -1;
- }
-
- int index = Arrays.binarySearch(mPositions, position);
-
- /*
- * Consider this example: section positions are 0, 3, 5; the supplied
- * position is 4. The section corresponding to position 4 starts at
- * position 3, so the expected return value is 1. Binary search will not
- * find 4 in the array and thus will return -insertPosition-1, i.e. -3.
- * To get from that number to the expected value of 1 we need to negate
- * and subtract 2.
- */
- return index >= 0 ? index : -index - 2;
- }
-
- public void setProfileHeader(String header) {
- if (mSections != null) {
- // Don't do anything if the header is already set properly.
- if (mSections.length > 0 && header.equals(mSections[0])) {
- return;
- }
-
- // Since the section indexer isn't aware of the profile at the top, we need to add a
- // special section at the top for it and shift everything else down.
- String[] tempSections = new String[mSections.length + 1];
- int[] tempPositions = new int[mPositions.length + 1];
- tempSections[0] = header;
- tempPositions[0] = 0;
- for (int i = 1; i <= mPositions.length; i++) {
- tempSections[i] = mSections[i - 1];
- tempPositions[i] = mPositions[i - 1] + 1;
- }
- mSections = tempSections;
- mPositions = tempPositions;
- mCount++;
- }
- }
-}
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 43a2d8e..70d224a 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -132,7 +132,7 @@
String message = getResources().getString(R.string.upgrade_out_of_memory,
new Object[] { providerStatus.data});
mMessageView.setText(message);
- mMessageView.setGravity(Gravity.LEFT);
+ mMessageView.setGravity(Gravity.START);
mMessageView.setVisibility(View.VISIBLE);
mCreateContactButton.setVisibility(View.GONE);
mAddAccountButton.setVisibility(View.GONE);
diff --git a/src/com/android/contacts/list/CustomContactListFilterActivity.java b/src/com/android/contacts/list/CustomContactListFilterActivity.java
deleted file mode 100644
index c62b389..0000000
--- a/src/com/android/contacts/list/CustomContactListFilterActivity.java
+++ /dev/null
@@ -1,924 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.list;
-
-import android.app.ActionBar;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.app.ProgressDialog;
-import android.content.AsyncTaskLoader;
-import android.content.ContentProviderOperation;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.Loader;
-import android.content.OperationApplicationException;
-import android.content.SharedPreferences;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.preference.PreferenceManager;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Groups;
-import android.provider.ContactsContract.Settings;
-import android.util.Log;
-import android.view.ContextMenu;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.MenuItem.OnMenuItemClickListener;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseExpandableListAdapter;
-import android.widget.CheckBox;
-import android.widget.ExpandableListAdapter;
-import android.widget.ExpandableListView;
-import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
-import android.widget.TextView;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.GoogleAccountType;
-import com.android.contacts.util.EmptyService;
-import com.android.contacts.util.LocalizedNameResolver;
-import com.android.contacts.util.WeakAsyncTask;
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-
-/**
- * Shows a list of all available {@link Groups} available, letting the user
- * select which ones they want to be visible.
- */
-public class CustomContactListFilterActivity extends ContactsActivity
- implements View.OnClickListener, ExpandableListView.OnChildClickListener,
- LoaderCallbacks<CustomContactListFilterActivity.AccountSet>
-{
- private static final String TAG = "CustomContactListFilterActivity";
-
- private static final int ACCOUNT_SET_LOADER_ID = 1;
-
- private ExpandableListView mList;
- private DisplayAdapter mAdapter;
-
- private SharedPreferences mPrefs;
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.contact_list_filter_custom);
-
- mList = (ExpandableListView) findViewById(android.R.id.list);
- mList.setOnChildClickListener(this);
- mList.setHeaderDividersEnabled(true);
- mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
- mAdapter = new DisplayAdapter(this);
-
- final LayoutInflater inflater = getLayoutInflater();
-
- findViewById(R.id.btn_done).setOnClickListener(this);
- findViewById(R.id.btn_discard).setOnClickListener(this);
-
- mList.setOnCreateContextMenuListener(this);
-
- mList.setAdapter(mAdapter);
-
- ActionBar actionBar = getActionBar();
- if (actionBar != null) {
- // android.R.id.home will be triggered in onOptionsItemSelected()
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
- }
-
- public static class CustomFilterConfigurationLoader extends AsyncTaskLoader<AccountSet> {
-
- private AccountSet mAccountSet;
-
- public CustomFilterConfigurationLoader(Context context) {
- super(context);
- }
-
- @Override
- public AccountSet loadInBackground() {
- Context context = getContext();
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
- final ContentResolver resolver = context.getContentResolver();
-
- final AccountSet accounts = new AccountSet();
- for (AccountWithDataSet account : accountTypes.getAccounts(false)) {
- final AccountType accountType = accountTypes.getAccountTypeForAccount(account);
- if (accountType.isExtension() && !account.hasData(context)) {
- // Extension with no data -- skip.
- continue;
- }
-
- AccountDisplay accountDisplay =
- new AccountDisplay(resolver, account.name, account.type, account.dataSet);
-
- final Uri.Builder groupsUri = Groups.CONTENT_URI.buildUpon()
- .appendQueryParameter(Groups.ACCOUNT_NAME, account.name)
- .appendQueryParameter(Groups.ACCOUNT_TYPE, account.type);
- if (account.dataSet != null) {
- groupsUri.appendQueryParameter(Groups.DATA_SET, account.dataSet).build();
- }
- android.content.EntityIterator iterator =
- ContactsContract.Groups.newEntityIterator(resolver.query(
- groupsUri.build(), null, null, null, null));
- try {
- boolean hasGroups = false;
-
- // Create entries for each known group
- while (iterator.hasNext()) {
- final ContentValues values = iterator.next().getEntityValues();
- final GroupDelta group = GroupDelta.fromBefore(values);
- accountDisplay.addGroup(group);
- hasGroups = true;
- }
- // Create single entry handling ungrouped status
- accountDisplay.mUngrouped =
- GroupDelta.fromSettings(resolver, account.name, account.type,
- account.dataSet, hasGroups);
- accountDisplay.addGroup(accountDisplay.mUngrouped);
- } finally {
- iterator.close();
- }
-
- accounts.add(accountDisplay);
- }
-
- return accounts;
- }
-
- @Override
- public void deliverResult(AccountSet cursor) {
- if (isReset()) {
- return;
- }
-
- mAccountSet = cursor;
-
- if (isStarted()) {
- super.deliverResult(cursor);
- }
- }
-
- @Override
- protected void onStartLoading() {
- if (mAccountSet != null) {
- deliverResult(mAccountSet);
- }
- if (takeContentChanged() || mAccountSet == null) {
- forceLoad();
- }
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-
- @Override
- protected void onReset() {
- super.onReset();
- onStopLoading();
- mAccountSet = null;
- }
- }
-
- @Override
- protected void onStart() {
- getLoaderManager().initLoader(ACCOUNT_SET_LOADER_ID, null, this);
- super.onStart();
- }
-
- @Override
- public Loader<AccountSet> onCreateLoader(int id, Bundle args) {
- return new CustomFilterConfigurationLoader(this);
- }
-
- @Override
- public void onLoadFinished(Loader<AccountSet> loader, AccountSet data) {
- mAdapter.setAccounts(data);
- }
-
- @Override
- public void onLoaderReset(Loader<AccountSet> loader) {
- mAdapter.setAccounts(null);
- }
-
- private static final int DEFAULT_SHOULD_SYNC = 1;
- private static final int DEFAULT_VISIBLE = 0;
-
- /**
- * Entry holding any changes to {@link Groups} or {@link Settings} rows,
- * such as {@link Groups#SHOULD_SYNC} or {@link Groups#GROUP_VISIBLE}.
- */
- protected static class GroupDelta extends ValuesDelta {
- private boolean mUngrouped = false;
- private boolean mAccountHasGroups;
-
- private GroupDelta() {
- super();
- }
-
- /**
- * Build {@link GroupDelta} from the {@link Settings} row for the given
- * {@link Settings#ACCOUNT_NAME}, {@link Settings#ACCOUNT_TYPE}, and
- * {@link Settings#DATA_SET}.
- */
- public static GroupDelta fromSettings(ContentResolver resolver, String accountName,
- String accountType, String dataSet, boolean accountHasGroups) {
- final Uri.Builder settingsUri = Settings.CONTENT_URI.buildUpon()
- .appendQueryParameter(Settings.ACCOUNT_NAME, accountName)
- .appendQueryParameter(Settings.ACCOUNT_TYPE, accountType);
- if (dataSet != null) {
- settingsUri.appendQueryParameter(Settings.DATA_SET, dataSet);
- }
- final Cursor cursor = resolver.query(settingsUri.build(), new String[] {
- Settings.SHOULD_SYNC, Settings.UNGROUPED_VISIBLE
- }, null, null, null);
-
- try {
- final ContentValues values = new ContentValues();
- values.put(Settings.ACCOUNT_NAME, accountName);
- values.put(Settings.ACCOUNT_TYPE, accountType);
- values.put(Settings.DATA_SET, dataSet);
-
- if (cursor != null && cursor.moveToFirst()) {
- // Read existing values when present
- values.put(Settings.SHOULD_SYNC, cursor.getInt(0));
- values.put(Settings.UNGROUPED_VISIBLE, cursor.getInt(1));
- return fromBefore(values).setUngrouped(accountHasGroups);
- } else {
- // Nothing found, so treat as create
- values.put(Settings.SHOULD_SYNC, DEFAULT_SHOULD_SYNC);
- values.put(Settings.UNGROUPED_VISIBLE, DEFAULT_VISIBLE);
- return fromAfter(values).setUngrouped(accountHasGroups);
- }
- } finally {
- if (cursor != null) cursor.close();
- }
- }
-
- public static GroupDelta fromBefore(ContentValues before) {
- final GroupDelta entry = new GroupDelta();
- entry.mBefore = before;
- entry.mAfter = new ContentValues();
- return entry;
- }
-
- public static GroupDelta fromAfter(ContentValues after) {
- final GroupDelta entry = new GroupDelta();
- entry.mBefore = null;
- entry.mAfter = after;
- return entry;
- }
-
- protected GroupDelta setUngrouped(boolean accountHasGroups) {
- mUngrouped = true;
- mAccountHasGroups = accountHasGroups;
- return this;
- }
-
- @Override
- public boolean beforeExists() {
- return mBefore != null;
- }
-
- public boolean getShouldSync() {
- return getAsInteger(mUngrouped ? Settings.SHOULD_SYNC : Groups.SHOULD_SYNC,
- DEFAULT_SHOULD_SYNC) != 0;
- }
-
- public boolean getVisible() {
- return getAsInteger(mUngrouped ? Settings.UNGROUPED_VISIBLE : Groups.GROUP_VISIBLE,
- DEFAULT_VISIBLE) != 0;
- }
-
- public void putShouldSync(boolean shouldSync) {
- put(mUngrouped ? Settings.SHOULD_SYNC : Groups.SHOULD_SYNC, shouldSync ? 1 : 0);
- }
-
- public void putVisible(boolean visible) {
- put(mUngrouped ? Settings.UNGROUPED_VISIBLE : Groups.GROUP_VISIBLE, visible ? 1 : 0);
- }
-
- private String getAccountType() {
- return (mBefore == null ? mAfter : mBefore).getAsString(Settings.ACCOUNT_TYPE);
- }
-
- public CharSequence getTitle(Context context) {
- if (mUngrouped) {
- final String customAllContactsName =
- LocalizedNameResolver.getAllContactsName(context, getAccountType());
- if (customAllContactsName != null) {
- return customAllContactsName;
- }
- if (mAccountHasGroups) {
- return context.getText(R.string.display_ungrouped);
- } else {
- return context.getText(R.string.display_all_contacts);
- }
- } else {
- final Integer titleRes = getAsInteger(Groups.TITLE_RES);
- if (titleRes != null) {
- final String packageName = getAsString(Groups.RES_PACKAGE);
- return context.getPackageManager().getText(packageName, titleRes, null);
- } else {
- return getAsString(Groups.TITLE);
- }
- }
- }
-
- /**
- * Build a possible {@link ContentProviderOperation} to persist any
- * changes to the {@link Groups} or {@link Settings} row described by
- * this {@link GroupDelta}.
- */
- public ContentProviderOperation buildDiff() {
- if (isInsert()) {
- // Only allow inserts for Settings
- if (mUngrouped) {
- mAfter.remove(mIdColumn);
- return ContentProviderOperation.newInsert(Settings.CONTENT_URI)
- .withValues(mAfter)
- .build();
- }
- else {
- throw new IllegalStateException("Unexpected diff");
- }
- } else if (isUpdate()) {
- if (mUngrouped) {
- String accountName = this.getAsString(Settings.ACCOUNT_NAME);
- String accountType = this.getAsString(Settings.ACCOUNT_TYPE);
- String dataSet = this.getAsString(Settings.DATA_SET);
- StringBuilder selection = new StringBuilder(Settings.ACCOUNT_NAME + "=? AND "
- + Settings.ACCOUNT_TYPE + "=?");
- String[] selectionArgs;
- if (dataSet == null) {
- selection.append(" AND " + Settings.DATA_SET + " IS NULL");
- selectionArgs = new String[] {accountName, accountType};
- } else {
- selection.append(" AND " + Settings.DATA_SET + "=?");
- selectionArgs = new String[] {accountName, accountType, dataSet};
- }
- return ContentProviderOperation.newUpdate(Settings.CONTENT_URI)
- .withSelection(selection.toString(), selectionArgs)
- .withValues(mAfter)
- .build();
- } else {
- return ContentProviderOperation.newUpdate(
- addCallerIsSyncAdapterParameter(Groups.CONTENT_URI))
- .withSelection(Groups._ID + "=" + this.getId(), null)
- .withValues(mAfter)
- .build();
- }
- } else {
- return null;
- }
- }
- }
-
- private static Uri addCallerIsSyncAdapterParameter(Uri uri) {
- return uri.buildUpon()
- .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
- .build();
- }
-
- /**
- * {@link Comparator} to sort by {@link Groups#_ID}.
- */
- private static Comparator<GroupDelta> sIdComparator = new Comparator<GroupDelta>() {
- public int compare(GroupDelta object1, GroupDelta object2) {
- final Long id1 = object1.getId();
- final Long id2 = object2.getId();
- if (id1 == null && id2 == null) {
- return 0;
- } else if (id1 == null) {
- return -1;
- } else if (id2 == null) {
- return 1;
- } else if (id1 < id2) {
- return -1;
- } else if (id1 > id2) {
- return 1;
- } else {
- return 0;
- }
- }
- };
-
- /**
- * Set of all {@link AccountDisplay} entries, one for each source.
- */
- protected static class AccountSet extends ArrayList<AccountDisplay> {
- public ArrayList<ContentProviderOperation> buildDiff() {
- final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
- for (AccountDisplay account : this) {
- account.buildDiff(diff);
- }
- return diff;
- }
- }
-
- /**
- * {@link GroupDelta} details for a single {@link AccountWithDataSet}, usually shown as
- * children under a single expandable group.
- */
- protected static class AccountDisplay {
- public final String mName;
- public final String mType;
- public final String mDataSet;
-
- public GroupDelta mUngrouped;
- public ArrayList<GroupDelta> mSyncedGroups = Lists.newArrayList();
- public ArrayList<GroupDelta> mUnsyncedGroups = Lists.newArrayList();
-
- /**
- * Build an {@link AccountDisplay} covering all {@link Groups} under the
- * given {@link AccountWithDataSet}.
- */
- public AccountDisplay(ContentResolver resolver, String accountName, String accountType,
- String dataSet) {
- mName = accountName;
- mType = accountType;
- mDataSet = dataSet;
- }
-
- /**
- * Add the given {@link GroupDelta} internally, filing based on its
- * {@link GroupDelta#getShouldSync()} status.
- */
- private void addGroup(GroupDelta group) {
- if (group.getShouldSync()) {
- mSyncedGroups.add(group);
- } else {
- mUnsyncedGroups.add(group);
- }
- }
-
- /**
- * Set the {@link GroupDelta#putShouldSync(boolean)} value for all
- * children {@link GroupDelta} rows.
- */
- public void setShouldSync(boolean shouldSync) {
- final Iterator<GroupDelta> oppositeChildren = shouldSync ?
- mUnsyncedGroups.iterator() : mSyncedGroups.iterator();
- while (oppositeChildren.hasNext()) {
- final GroupDelta child = oppositeChildren.next();
- setShouldSync(child, shouldSync, false);
- oppositeChildren.remove();
- }
- }
-
- public void setShouldSync(GroupDelta child, boolean shouldSync) {
- setShouldSync(child, shouldSync, true);
- }
-
- /**
- * Set {@link GroupDelta#putShouldSync(boolean)}, and file internally
- * based on updated state.
- */
- public void setShouldSync(GroupDelta child, boolean shouldSync, boolean attemptRemove) {
- child.putShouldSync(shouldSync);
- if (shouldSync) {
- if (attemptRemove) {
- mUnsyncedGroups.remove(child);
- }
- mSyncedGroups.add(child);
- Collections.sort(mSyncedGroups, sIdComparator);
- } else {
- if (attemptRemove) {
- mSyncedGroups.remove(child);
- }
- mUnsyncedGroups.add(child);
- }
- }
-
- /**
- * Build set of {@link ContentProviderOperation} to persist any user
- * changes to {@link GroupDelta} rows under this {@link AccountWithDataSet}.
- */
- public void buildDiff(ArrayList<ContentProviderOperation> diff) {
- for (GroupDelta group : mSyncedGroups) {
- final ContentProviderOperation oper = group.buildDiff();
- if (oper != null) diff.add(oper);
- }
- for (GroupDelta group : mUnsyncedGroups) {
- final ContentProviderOperation oper = group.buildDiff();
- if (oper != null) diff.add(oper);
- }
- }
- }
-
- /**
- * {@link ExpandableListAdapter} that shows {@link GroupDelta} settings,
- * grouped by {@link AccountWithDataSet} type. Shows footer row when any groups are
- * unsynced, as determined through {@link AccountDisplay#mUnsyncedGroups}.
- */
- protected static class DisplayAdapter extends BaseExpandableListAdapter {
- private Context mContext;
- private LayoutInflater mInflater;
- private AccountTypeManager mAccountTypes;
- private AccountSet mAccounts;
-
- private boolean mChildWithPhones = false;
-
- public DisplayAdapter(Context context) {
- mContext = context;
- mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mAccountTypes = AccountTypeManager.getInstance(context);
- }
-
- public void setAccounts(AccountSet accounts) {
- mAccounts = accounts;
- notifyDataSetChanged();
- }
-
- /**
- * In group descriptions, show the number of contacts with phone
- * numbers, in addition to the total contacts.
- */
- public void setChildDescripWithPhones(boolean withPhones) {
- mChildWithPhones = withPhones;
- }
-
- @Override
- public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
- ViewGroup parent) {
- if (convertView == null) {
- convertView = mInflater.inflate(
- R.layout.custom_contact_list_filter_account, parent, false);
- }
-
- final TextView text1 = (TextView)convertView.findViewById(android.R.id.text1);
- final TextView text2 = (TextView)convertView.findViewById(android.R.id.text2);
-
- final AccountDisplay account = (AccountDisplay)this.getGroup(groupPosition);
-
- final AccountType accountType = mAccountTypes.getAccountType(
- account.mType, account.mDataSet);
-
- text1.setText(account.mName);
- text1.setVisibility(account.mName == null ? View.GONE : View.VISIBLE);
- text2.setText(accountType.getDisplayLabel(mContext));
-
- return convertView;
- }
-
- @Override
- public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
- View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = mInflater.inflate(
- R.layout.custom_contact_list_filter_group, parent, false);
- }
-
- final TextView text1 = (TextView)convertView.findViewById(android.R.id.text1);
- final TextView text2 = (TextView)convertView.findViewById(android.R.id.text2);
- final CheckBox checkbox = (CheckBox)convertView.findViewById(android.R.id.checkbox);
-
- final AccountDisplay account = mAccounts.get(groupPosition);
- final GroupDelta child = (GroupDelta)this.getChild(groupPosition, childPosition);
- if (child != null) {
- // Handle normal group, with title and checkbox
- final boolean groupVisible = child.getVisible();
- checkbox.setVisibility(View.VISIBLE);
- checkbox.setChecked(groupVisible);
-
- final CharSequence groupTitle = child.getTitle(mContext);
- text1.setText(groupTitle);
- text2.setVisibility(View.GONE);
- } else {
- // When unknown child, this is "more" footer view
- checkbox.setVisibility(View.GONE);
- text1.setText(R.string.display_more_groups);
- text2.setVisibility(View.GONE);
- }
-
- return convertView;
- }
-
- @Override
- public Object getChild(int groupPosition, int childPosition) {
- final AccountDisplay account = mAccounts.get(groupPosition);
- final boolean validChild = childPosition >= 0
- && childPosition < account.mSyncedGroups.size();
- if (validChild) {
- return account.mSyncedGroups.get(childPosition);
- } else {
- return null;
- }
- }
-
- @Override
- public long getChildId(int groupPosition, int childPosition) {
- final GroupDelta child = (GroupDelta)getChild(groupPosition, childPosition);
- if (child != null) {
- final Long childId = child.getId();
- return childId != null ? childId : Long.MIN_VALUE;
- } else {
- return Long.MIN_VALUE;
- }
- }
-
- @Override
- public int getChildrenCount(int groupPosition) {
- // Count is any synced groups, plus possible footer
- final AccountDisplay account = mAccounts.get(groupPosition);
- final boolean anyHidden = account.mUnsyncedGroups.size() > 0;
- return account.mSyncedGroups.size() + (anyHidden ? 1 : 0);
- }
-
- @Override
- public Object getGroup(int groupPosition) {
- return mAccounts.get(groupPosition);
- }
-
- @Override
- public int getGroupCount() {
- if (mAccounts == null) {
- return 0;
- }
- return mAccounts.size();
- }
-
- @Override
- public long getGroupId(int groupPosition) {
- return groupPosition;
- }
-
- @Override
- public boolean hasStableIds() {
- return true;
- }
-
- @Override
- public boolean isChildSelectable(int groupPosition, int childPosition) {
- return true;
- }
- }
-
- /** {@inheritDoc} */
- public void onClick(View view) {
- switch (view.getId()) {
- case R.id.btn_done: {
- this.doSaveAction();
- break;
- }
- case R.id.btn_discard: {
- this.finish();
- break;
- }
- }
- }
-
- /**
- * Handle any clicks on {@link ExpandableListAdapter} children, which
- * usually mean toggling its visible state.
- */
- @Override
- public boolean onChildClick(ExpandableListView parent, View view, int groupPosition,
- int childPosition, long id) {
- final CheckBox checkbox = (CheckBox)view.findViewById(android.R.id.checkbox);
-
- final AccountDisplay account = (AccountDisplay)mAdapter.getGroup(groupPosition);
- final GroupDelta child = (GroupDelta)mAdapter.getChild(groupPosition, childPosition);
- if (child != null) {
- checkbox.toggle();
- child.putVisible(checkbox.isChecked());
- } else {
- // Open context menu for bringing back unsynced
- this.openContextMenu(view);
- }
- return true;
- }
-
- // TODO: move these definitions to framework constants when we begin
- // defining this mode through <sync-adapter> tags
- private static final int SYNC_MODE_UNSUPPORTED = 0;
- private static final int SYNC_MODE_UNGROUPED = 1;
- private static final int SYNC_MODE_EVERYTHING = 2;
-
- protected int getSyncMode(AccountDisplay account) {
- // TODO: read sync mode through <sync-adapter> definition
- if (GoogleAccountType.ACCOUNT_TYPE.equals(account.mType) && account.mDataSet == null) {
- return SYNC_MODE_EVERYTHING;
- } else {
- return SYNC_MODE_UNSUPPORTED;
- }
- }
-
- @Override
- public void onCreateContextMenu(ContextMenu menu, View view,
- ContextMenu.ContextMenuInfo menuInfo) {
- super.onCreateContextMenu(menu, view, menuInfo);
-
- // Bail if not working with expandable long-press, or if not child
- if (!(menuInfo instanceof ExpandableListContextMenuInfo)) return;
-
- final ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
- final int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
- final int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
-
- // Skip long-press on expandable parents
- if (childPosition == -1) return;
-
- final AccountDisplay account = (AccountDisplay)mAdapter.getGroup(groupPosition);
- final GroupDelta child = (GroupDelta)mAdapter.getChild(groupPosition, childPosition);
-
- // Ignore when selective syncing unsupported
- final int syncMode = getSyncMode(account);
- if (syncMode == SYNC_MODE_UNSUPPORTED) return;
-
- if (child != null) {
- showRemoveSync(menu, account, child, syncMode);
- } else {
- showAddSync(menu, account, syncMode);
- }
- }
-
- protected void showRemoveSync(ContextMenu menu, final AccountDisplay account,
- final GroupDelta child, final int syncMode) {
- final CharSequence title = child.getTitle(this);
-
- menu.setHeaderTitle(title);
- menu.add(R.string.menu_sync_remove).setOnMenuItemClickListener(
- new OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- handleRemoveSync(account, child, syncMode, title);
- return true;
- }
- });
- }
-
- protected void handleRemoveSync(final AccountDisplay account, final GroupDelta child,
- final int syncMode, CharSequence title) {
- final boolean shouldSyncUngrouped = account.mUngrouped.getShouldSync();
- if (syncMode == SYNC_MODE_EVERYTHING && shouldSyncUngrouped
- && !child.equals(account.mUngrouped)) {
- // Warn before removing this group when it would cause ungrouped to stop syncing
- final AlertDialog.Builder builder = new AlertDialog.Builder(this);
- final CharSequence removeMessage = this.getString(
- R.string.display_warn_remove_ungrouped, title);
- builder.setTitle(R.string.menu_sync_remove);
- builder.setMessage(removeMessage);
- builder.setNegativeButton(android.R.string.cancel, null);
- builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- // Mark both this group and ungrouped to stop syncing
- account.setShouldSync(account.mUngrouped, false);
- account.setShouldSync(child, false);
- mAdapter.notifyDataSetChanged();
- }
- });
- builder.show();
- } else {
- // Mark this group to not sync
- account.setShouldSync(child, false);
- mAdapter.notifyDataSetChanged();
- }
- }
-
- protected void showAddSync(ContextMenu menu, final AccountDisplay account, final int syncMode) {
- menu.setHeaderTitle(R.string.dialog_sync_add);
-
- // Create item for each available, unsynced group
- for (final GroupDelta child : account.mUnsyncedGroups) {
- if (!child.getShouldSync()) {
- final CharSequence title = child.getTitle(this);
- menu.add(title).setOnMenuItemClickListener(new OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- // Adding specific group for syncing
- if (child.mUngrouped && syncMode == SYNC_MODE_EVERYTHING) {
- account.setShouldSync(true);
- } else {
- account.setShouldSync(child, true);
- }
- mAdapter.notifyDataSetChanged();
- return true;
- }
- });
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private void doSaveAction() {
- if (mAdapter == null || mAdapter.mAccounts == null) {
- finish();
- return;
- }
-
- setResult(RESULT_OK);
-
- final ArrayList<ContentProviderOperation> diff = mAdapter.mAccounts.buildDiff();
- if (diff.isEmpty()) {
- finish();
- return;
- }
-
- new UpdateTask(this).execute(diff);
- }
-
- /**
- * Background task that persists changes to {@link Groups#GROUP_VISIBLE},
- * showing spinner dialog to user while updating.
- */
- public static class UpdateTask extends
- WeakAsyncTask<ArrayList<ContentProviderOperation>, Void, Void, Activity> {
- private ProgressDialog mProgress;
-
- public UpdateTask(Activity target) {
- super(target);
- }
-
- /** {@inheritDoc} */
- @Override
- protected void onPreExecute(Activity target) {
- final Context context = target;
-
- mProgress = ProgressDialog.show(
- context, null, context.getText(R.string.savingDisplayGroups));
-
- // Before starting this task, start an empty service to protect our
- // process from being reclaimed by the system.
- context.startService(new Intent(context, EmptyService.class));
- }
-
- /** {@inheritDoc} */
- @Override
- protected Void doInBackground(
- Activity target, ArrayList<ContentProviderOperation>... params) {
- final Context context = target;
- final ContentValues values = new ContentValues();
- final ContentResolver resolver = context.getContentResolver();
-
- try {
- final ArrayList<ContentProviderOperation> diff = params[0];
- resolver.applyBatch(ContactsContract.AUTHORITY, diff);
- } catch (RemoteException e) {
- Log.e(TAG, "Problem saving display groups", e);
- } catch (OperationApplicationException e) {
- Log.e(TAG, "Problem saving display groups", e);
- }
-
- return null;
- }
-
- /** {@inheritDoc} */
- @Override
- protected void onPostExecute(Activity target, Void result) {
- final Context context = target;
-
- try {
- mProgress.dismiss();
- } catch (Exception e) {
- Log.e(TAG, "Error dismissing progress dialog", e);
- }
-
- target.finish();
-
- // Stop the service that was protecting us
- context.stopService(new Intent(context, EmptyService.class));
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- // Pretend cancel.
- setResult(Activity.RESULT_CANCELED);
- finish();
- return true;
- default:
- break;
- }
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 8f38045..30d5b36 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -32,8 +32,13 @@
import android.widget.TextView;
import com.android.contacts.R;
+import com.android.contacts.common.list.ContactListAdapter;
+import com.android.contacts.common.list.ContactListFilter;
+import com.android.contacts.common.list.ContactListFilterController;
+import com.android.contacts.common.list.DefaultContactListAdapter;
+import com.android.contacts.common.list.ProfileAndContactsLoader;
import com.android.contacts.editor.ContactEditorFragment;
-import com.android.contacts.util.AccountFilterUtil;
+import com.android.contacts.common.util.AccountFilterUtil;
/**
* Fragment containing a contact list used for browsing (as compared to
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
deleted file mode 100644
index 88c1db0..0000000
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ /dev/null
@@ -1,222 +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.list;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.SharedPreferences;
-import android.database.Cursor;
-import android.net.Uri;
-import android.net.Uri.Builder;
-import android.preference.PreferenceManager;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Directory;
-import android.provider.ContactsContract.SearchSnippetColumns;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.android.contacts.preference.ContactsPreferences;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type.
- */
-public class DefaultContactListAdapter extends ContactListAdapter {
-
- public static final char SNIPPET_START_MATCH = '\u0001';
- public static final char SNIPPET_END_MATCH = '\u0001';
- public static final String SNIPPET_ELLIPSIS = "\u2026";
- public static final int SNIPPET_MAX_TOKENS = 5;
-
- public static final String SNIPPET_ARGS = SNIPPET_START_MATCH + "," + SNIPPET_END_MATCH + ","
- + SNIPPET_ELLIPSIS + "," + SNIPPET_MAX_TOKENS;
-
- public DefaultContactListAdapter(Context context) {
- super(context);
- }
-
- @Override
- public void configureLoader(CursorLoader loader, long directoryId) {
- if (loader instanceof ProfileAndContactsLoader) {
- ((ProfileAndContactsLoader) loader).setLoadProfile(shouldIncludeProfile());
- }
-
- ContactListFilter filter = getFilter();
- if (isSearchMode()) {
- String query = getQueryString();
- if (query == null) {
- query = "";
- }
- query = query.trim();
- if (TextUtils.isEmpty(query)) {
- // Regardless of the directory, we don't want anything returned,
- // so let's just send a "nothing" query to the local directory.
- loader.setUri(Contacts.CONTENT_URI);
- loader.setProjection(getProjection(false));
- loader.setSelection("0");
- } else {
- Builder builder = Contacts.CONTENT_FILTER_URI.buildUpon();
- builder.appendPath(query); // Builder will encode the query
- builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
- String.valueOf(directoryId));
- if (directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE) {
- builder.appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY,
- String.valueOf(getDirectoryResultLimit()));
- }
- builder.appendQueryParameter(SearchSnippetColumns.SNIPPET_ARGS_PARAM_KEY,
- SNIPPET_ARGS);
- builder.appendQueryParameter(SearchSnippetColumns.DEFERRED_SNIPPETING_KEY,"1");
- loader.setUri(builder.build());
- loader.setProjection(getProjection(true));
- }
- } else {
- configureUri(loader, directoryId, filter);
- loader.setProjection(getProjection(false));
- configureSelection(loader, directoryId, filter);
- }
-
- String sortOrder;
- if (getSortOrder() == ContactsContract.Preferences.SORT_ORDER_PRIMARY) {
- sortOrder = Contacts.SORT_KEY_PRIMARY;
- } else {
- sortOrder = Contacts.SORT_KEY_ALTERNATIVE;
- }
-
- loader.setSortOrder(sortOrder);
- }
-
- protected void configureUri(CursorLoader loader, long directoryId, ContactListFilter filter) {
- Uri uri = Contacts.CONTENT_URI;
- if (filter != null && filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
- String lookupKey = getSelectedContactLookupKey();
- if (lookupKey != null) {
- uri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey);
- } else {
- uri = ContentUris.withAppendedId(Contacts.CONTENT_URI, getSelectedContactId());
- }
- }
-
- if (directoryId == Directory.DEFAULT && isSectionHeaderDisplayEnabled()) {
- uri = buildSectionIndexerUri(uri);
- }
-
- // The "All accounts" filter is the same as the entire contents of Directory.DEFAULT
- if (filter != null
- && filter.filterType != ContactListFilter.FILTER_TYPE_CUSTOM
- && filter.filterType != ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
- final Uri.Builder builder = uri.buildUpon();
- builder.appendQueryParameter(
- ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
- filter.addAccountQueryParameterToUrl(builder);
- }
- uri = builder.build();
- }
-
- loader.setUri(uri);
- }
-
- private void configureSelection(
- CursorLoader loader, long directoryId, ContactListFilter filter) {
- if (filter == null) {
- return;
- }
-
- if (directoryId != Directory.DEFAULT) {
- return;
- }
-
- StringBuilder selection = new StringBuilder();
- List<String> selectionArgs = new ArrayList<String>();
-
- switch (filter.filterType) {
- case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {
- // We have already added directory=0 to the URI, which takes care of this
- // filter
- break;
- }
- case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {
- // We have already added the lookup key to the URI, which takes care of this
- // filter
- break;
- }
- case ContactListFilter.FILTER_TYPE_STARRED: {
- selection.append(Contacts.STARRED + "!=0");
- break;
- }
- case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {
- selection.append(Contacts.HAS_PHONE_NUMBER + "=1");
- break;
- }
- case ContactListFilter.FILTER_TYPE_CUSTOM: {
- selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
- if (isCustomFilterForPhoneNumbersOnly()) {
- selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");
- }
- break;
- }
- case ContactListFilter.FILTER_TYPE_ACCOUNT: {
- // We use query parameters for account filter, so no selection to add here.
- break;
- }
- }
- loader.setSelection(selection.toString());
- loader.setSelectionArgs(selectionArgs.toArray(new String[0]));
- }
-
- @Override
- protected void bindView(View itemView, int partition, Cursor cursor, int position) {
- final ContactListItemView view = (ContactListItemView)itemView;
-
- view.setHighlightedPrefix(isSearchMode() ? getUpperCaseQueryString() : null);
-
- if (isSelectionVisible()) {
- view.setActivated(isSelectedContact(partition, cursor));
- }
-
- bindSectionHeaderAndDivider(view, position, cursor);
-
- if (isQuickContactEnabled()) {
- bindQuickContact(view, partition, cursor, ContactQuery.CONTACT_PHOTO_ID,
- ContactQuery.CONTACT_PHOTO_URI, ContactQuery.CONTACT_ID,
- ContactQuery.CONTACT_LOOKUP_KEY);
- } else {
- if (getDisplayPhotos()) {
- bindPhoto(view, partition, cursor);
- }
- }
-
- bindName(view, cursor);
- bindPresenceAndStatusMessage(view, cursor);
-
- if (isSearchMode()) {
- bindSearchSnippet(view, cursor);
- } else {
- view.setSnippet(null);
- }
- }
-
- private boolean isCustomFilterForPhoneNumbersOnly() {
- // TODO: this flag should not be stored in shared prefs. It needs to be in the db.
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
- return prefs.getBoolean(ContactsPreferences.PREF_DISPLAY_ONLY_PHONES,
- ContactsPreferences.PREF_DISPLAY_ONLY_PHONES_DEFAULT);
- }
-}
diff --git a/src/com/android/contacts/list/DirectoryListLoader.java b/src/com/android/contacts/list/DirectoryListLoader.java
deleted file mode 100644
index f85cc5e..0000000
--- a/src/com/android/contacts/list/DirectoryListLoader.java
+++ /dev/null
@@ -1,196 +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.list;
-
-import android.content.AsyncTaskLoader;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.net.Uri;
-import android.os.Handler;
-import android.provider.ContactsContract.Directory;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.contacts.R;
-
-/**
- * A specialized loader for the list of directories, see {@link Directory}.
- */
-public class DirectoryListLoader extends AsyncTaskLoader<Cursor> {
-
- private static final String TAG = "ContactEntryListAdapter";
-
- public static final int SEARCH_MODE_NONE = 0;
- public static final int SEARCH_MODE_DEFAULT = 1;
- public static final int SEARCH_MODE_CONTACT_SHORTCUT = 2;
- public static final int SEARCH_MODE_DATA_SHORTCUT = 3;
-
- private static final class DirectoryQuery {
- public static final Uri URI = Directory.CONTENT_URI;
- public static final String ORDER_BY = Directory._ID;
-
- public static final String[] PROJECTION = {
- Directory._ID,
- Directory.PACKAGE_NAME,
- Directory.TYPE_RESOURCE_ID,
- Directory.DISPLAY_NAME,
- Directory.PHOTO_SUPPORT,
- };
-
- public static final int ID = 0;
- public static final int PACKAGE_NAME = 1;
- public static final int TYPE_RESOURCE_ID = 2;
- public static final int DISPLAY_NAME = 3;
- public static final int PHOTO_SUPPORT = 4;
- }
-
- public static final String DIRECTORY_TYPE = "directoryType";
-
- private static final String[] RESULT_PROJECTION = {
- Directory._ID,
- DIRECTORY_TYPE,
- Directory.DISPLAY_NAME,
- Directory.PHOTO_SUPPORT,
- };
-
- private final ContentObserver mObserver = new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange) {
- forceLoad();
- }
- };
-
- private int mDirectorySearchMode;
- private boolean mLocalInvisibleDirectoryEnabled;
-
- private MatrixCursor mDefaultDirectoryList;
-
- public DirectoryListLoader(Context context) {
- super(context);
- }
-
- public void setDirectorySearchMode(int mode) {
- mDirectorySearchMode = mode;
- }
-
- /**
- * A flag that indicates whether the {@link Directory#LOCAL_INVISIBLE} directory should
- * be included in the results.
- */
- public void setLocalInvisibleDirectoryEnabled(boolean flag) {
- this.mLocalInvisibleDirectoryEnabled = flag;
- }
-
- @Override
- protected void onStartLoading() {
- getContext().getContentResolver().
- registerContentObserver(Directory.CONTENT_URI, false, mObserver);
- forceLoad();
- }
-
- @Override
- protected void onStopLoading() {
- getContext().getContentResolver().unregisterContentObserver(mObserver);
- }
-
- @Override
- public Cursor loadInBackground() {
- if (mDirectorySearchMode == SEARCH_MODE_NONE) {
- return getDefaultDirectories();
- }
-
- MatrixCursor result = new MatrixCursor(RESULT_PROJECTION);
- Context context = getContext();
- PackageManager pm = context.getPackageManager();
- String selection;
- switch (mDirectorySearchMode) {
- case SEARCH_MODE_DEFAULT:
- selection = mLocalInvisibleDirectoryEnabled ? null
- : (Directory._ID + "!=" + Directory.LOCAL_INVISIBLE);
- break;
-
- case SEARCH_MODE_CONTACT_SHORTCUT:
- selection = Directory.SHORTCUT_SUPPORT + "=" + Directory.SHORTCUT_SUPPORT_FULL
- + (mLocalInvisibleDirectoryEnabled ? ""
- : (" AND " + Directory._ID + "!=" + Directory.LOCAL_INVISIBLE));
- break;
-
- case SEARCH_MODE_DATA_SHORTCUT:
- selection = Directory.SHORTCUT_SUPPORT + " IN ("
- + Directory.SHORTCUT_SUPPORT_FULL + ", "
- + Directory.SHORTCUT_SUPPORT_DATA_ITEMS_ONLY + ")"
- + (mLocalInvisibleDirectoryEnabled ? ""
- : (" AND " + Directory._ID + "!=" + Directory.LOCAL_INVISIBLE));
- break;
-
- default:
- throw new RuntimeException(
- "Unsupported directory search mode: " + mDirectorySearchMode);
- }
-
- Cursor cursor = context.getContentResolver().query(DirectoryQuery.URI,
- DirectoryQuery.PROJECTION, selection, null, DirectoryQuery.ORDER_BY);
- try {
- while(cursor.moveToNext()) {
- long directoryId = cursor.getLong(DirectoryQuery.ID);
- String directoryType = null;
-
- String packageName = cursor.getString(DirectoryQuery.PACKAGE_NAME);
- int typeResourceId = cursor.getInt(DirectoryQuery.TYPE_RESOURCE_ID);
- if (!TextUtils.isEmpty(packageName) && typeResourceId != 0) {
- try {
- directoryType = pm.getResourcesForApplication(packageName)
- .getString(typeResourceId);
- } catch (Exception e) {
- Log.e(TAG, "Cannot obtain directory type from package: " + packageName);
- }
- }
- String displayName = cursor.getString(DirectoryQuery.DISPLAY_NAME);
- int photoSupport = cursor.getInt(DirectoryQuery.PHOTO_SUPPORT);
- result.addRow(new Object[]{directoryId, directoryType, displayName, photoSupport});
- }
- } finally {
- cursor.close();
- }
-
- return result;
- }
-
- private Cursor getDefaultDirectories() {
- if (mDefaultDirectoryList == null) {
- mDefaultDirectoryList = new MatrixCursor(RESULT_PROJECTION);
- mDefaultDirectoryList.addRow(new Object[] {
- Directory.DEFAULT,
- getContext().getString(R.string.contactsList),
- null
- });
- mDefaultDirectoryList.addRow(new Object[] {
- Directory.LOCAL_INVISIBLE,
- getContext().getString(R.string.local_invisible_directory),
- null
- });
- }
- return mDefaultDirectoryList;
- }
-
- @Override
- protected void onReset() {
- stopLoading();
- }
-}
diff --git a/src/com/android/contacts/list/DirectoryPartition.java b/src/com/android/contacts/list/DirectoryPartition.java
deleted file mode 100644
index c1fd533..0000000
--- a/src/com/android/contacts/list/DirectoryPartition.java
+++ /dev/null
@@ -1,109 +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.list;
-
-import android.provider.ContactsContract.Directory;
-
-import com.android.common.widget.CompositeCursorAdapter;
-
-/**
- * Model object for a {@link Directory} row.
- */
-public final class DirectoryPartition extends CompositeCursorAdapter.Partition {
-
- public static final int STATUS_NOT_LOADED = 0;
- public static final int STATUS_LOADING = 1;
- public static final int STATUS_LOADED = 2;
-
- private long mDirectoryId;
- private String mDirectoryType;
- private String mDisplayName;
- private int mStatus;
- private boolean mPriorityDirectory;
- private boolean mPhotoSupported;
-
- public DirectoryPartition(boolean showIfEmpty, boolean hasHeader) {
- super(showIfEmpty, hasHeader);
- }
-
- /**
- * Directory ID, see {@link Directory}.
- */
- public long getDirectoryId() {
- return mDirectoryId;
- }
-
- public void setDirectoryId(long directoryId) {
- this.mDirectoryId = directoryId;
- }
-
- /**
- * Directory type resolved from {@link Directory#PACKAGE_NAME} and
- * {@link Directory#TYPE_RESOURCE_ID};
- */
- public String getDirectoryType() {
- return mDirectoryType;
- }
-
- public void setDirectoryType(String directoryType) {
- this.mDirectoryType = directoryType;
- }
-
- /**
- * See {@link Directory#DISPLAY_NAME}.
- */
- public String getDisplayName() {
- return mDisplayName;
- }
-
- public void setDisplayName(String displayName) {
- this.mDisplayName = displayName;
- }
-
- public int getStatus() {
- return mStatus;
- }
-
- public void setStatus(int status) {
- mStatus = status;
- }
-
- public boolean isLoading() {
- return mStatus == STATUS_NOT_LOADED || mStatus == STATUS_LOADING;
- }
-
- /**
- * Returns true if this directory should be loaded before non-priority directories.
- */
- public boolean isPriorityDirectory() {
- return mPriorityDirectory;
- }
-
- public void setPriorityDirectory(boolean priorityDirectory) {
- mPriorityDirectory = priorityDirectory;
- }
-
- /**
- * Returns true if this directory supports photos.
- */
- public boolean isPhotoSupported() {
- return mPhotoSupported;
- }
-
- public void setPhotoSupported(boolean flag) {
- this.mPhotoSupported = flag;
- }
-}
diff --git a/src/com/android/contacts/list/EmailAddressListAdapter.java b/src/com/android/contacts/list/EmailAddressListAdapter.java
index c85abdd..4a32ae3 100644
--- a/src/com/android/contacts/list/EmailAddressListAdapter.java
+++ b/src/com/android/contacts/list/EmailAddressListAdapter.java
@@ -29,6 +29,9 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+
/**
* A cursor adapter for the {@link Email#CONTENT_TYPE} content type.
*/
diff --git a/src/com/android/contacts/list/EmailAddressPickerFragment.java b/src/com/android/contacts/list/EmailAddressPickerFragment.java
index 41f470f..2146b68 100644
--- a/src/com/android/contacts/list/EmailAddressPickerFragment.java
+++ b/src/com/android/contacts/list/EmailAddressPickerFragment.java
@@ -21,6 +21,9 @@
import android.view.ViewGroup;
import com.android.contacts.R;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.list.DirectoryListLoader;
/**
* Fragment containing an email list for picking.
diff --git a/src/com/android/contacts/list/GroupMemberTileAdapter.java b/src/com/android/contacts/list/GroupMemberTileAdapter.java
new file mode 100644
index 0000000..813d3bc
--- /dev/null
+++ b/src/com/android/contacts/list/GroupMemberTileAdapter.java
@@ -0,0 +1,84 @@
+/*
+ * 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
+ */
+
+package com.android.contacts.list;
+
+import android.content.Context;
+import android.database.Cursor;
+
+import com.android.contacts.GroupMemberLoader;
+import com.android.contacts.common.list.ContactTileAdapter;
+import com.android.contacts.common.list.ContactTileView;
+import com.google.common.collect.Lists;
+
+import java.util.ArrayList;
+
+/**
+ * Tile adapter for groups.
+ */
+public class GroupMemberTileAdapter extends ContactTileAdapter {
+
+ public GroupMemberTileAdapter(Context context, ContactTileView.Listener listener, int numCols) {
+ super(context, listener, numCols, DisplayType.GROUP_MEMBERS);
+ }
+
+ @Override
+ protected void bindColumnIndices() {
+ mIdIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_ID;
+ mLookupIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_LOOKUP_KEY;
+ mPhotoUriIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_PHOTO_URI;
+ mNameIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_DISPLAY_NAME_PRIMARY;
+ mPresenceIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_PRESENCE_STATUS;
+ mStatusIndex = GroupMemberLoader.GroupDetailQuery.CONTACT_STATUS;
+ }
+
+ @Override
+ protected void saveNumFrequentsFromCursor(Cursor cursor) {
+ mNumFrequents = 0;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return ViewTypes.STARRED;
+ }
+
+ @Override
+ protected int getDividerPosition(Cursor cursor) {
+ // No divider
+ return -1;
+ }
+
+ @Override
+ public int getCount() {
+ if (mContactCursor == null || mContactCursor.isClosed()) {
+ return 0;
+ }
+
+ return getRowCount(mContactCursor.getCount());
+ }
+
+ @Override
+ public ArrayList<ContactEntry> getItem(int position) {
+ final ArrayList<ContactEntry> resultList = Lists.newArrayListWithCapacity(mColumnCount);
+ int contactIndex = position * mColumnCount;
+
+ for (int columnCounter = 0; columnCounter < mColumnCount; columnCounter++) {
+ resultList.add(createContactEntryFromCursor(mContactCursor, contactIndex));
+ contactIndex++;
+ }
+ return resultList;
+ }
+}
diff --git a/src/com/android/contacts/list/JoinContactListAdapter.java b/src/com/android/contacts/list/JoinContactListAdapter.java
index 6e1a6b2..88259c1 100644
--- a/src/com/android/contacts/list/JoinContactListAdapter.java
+++ b/src/com/android/contacts/list/JoinContactListAdapter.java
@@ -31,6 +31,9 @@
import android.widget.TextView;
import com.android.contacts.R;
+import com.android.contacts.common.list.ContactListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.list.DirectoryListLoader;
public class JoinContactListAdapter extends ContactListAdapter {
diff --git a/src/com/android/contacts/list/JoinContactListFragment.java b/src/com/android/contacts/list/JoinContactListFragment.java
index 9cfa4ae..a5c269d 100644
--- a/src/com/android/contacts/list/JoinContactListFragment.java
+++ b/src/com/android/contacts/list/JoinContactListFragment.java
@@ -32,6 +32,7 @@
import android.widget.TextView;
import com.android.contacts.R;
+import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.list.JoinContactLoader.JoinContactLoaderResult;
/**
diff --git a/src/com/android/contacts/list/LegacyContactListAdapter.java b/src/com/android/contacts/list/LegacyContactListAdapter.java
index dbdce5e..defc4e7 100644
--- a/src/com/android/contacts/list/LegacyContactListAdapter.java
+++ b/src/com/android/contacts/list/LegacyContactListAdapter.java
@@ -24,6 +24,9 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+
/**
* A cursor adapter for the People.CONTENT_TYPE content type.
*/
diff --git a/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java b/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
index 1ef106a..bc16a0b 100644
--- a/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/LegacyPhoneNumberListAdapter.java
@@ -26,6 +26,9 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+
/**
* A cursor adapter for the Phones.CONTENT_TYPE content type.
*/
diff --git a/src/com/android/contacts/list/LegacyPhoneNumberPickerFragment.java b/src/com/android/contacts/list/LegacyPhoneNumberPickerFragment.java
new file mode 100644
index 0000000..b88fa71
--- /dev/null
+++ b/src/com/android/contacts/list/LegacyPhoneNumberPickerFragment.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package com.android.contacts.list;
+
+import android.net.Uri;
+import android.util.Log;
+
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+import com.android.contacts.common.list.PhoneNumberPickerFragment;
+
+/**
+ * Version of PhoneNumberPickerFragment used specifically for legacy support.
+ */
+public class LegacyPhoneNumberPickerFragment extends PhoneNumberPickerFragment {
+
+ private static final String TAG = LegacyPhoneNumberPickerFragment.class.getSimpleName();
+
+ @Override
+ protected boolean getVisibleScrollbarEnabled() {
+ return false;
+ }
+
+ @Override
+ protected Uri getPhoneUri(int position) {
+ final LegacyPhoneNumberListAdapter adapter = (LegacyPhoneNumberListAdapter) getAdapter();
+ return adapter.getPhoneUri(position);
+ }
+
+ @Override
+ protected ContactEntryListAdapter createListAdapter() {
+ LegacyPhoneNumberListAdapter adapter = new LegacyPhoneNumberListAdapter(getActivity());
+ adapter.setDisplayPhotos(true);
+ return adapter;
+ }
+
+ @Override
+ protected void setPhotoPosition(ContactEntryListAdapter adapter) {
+ // no-op
+ }
+
+ @Override
+ protected void startPhoneNumberShortcutIntent(Uri uri) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
+ Log.w(TAG, "setPhotoPosition() is ignored in legacy compatibility mode.");
+ }
+}
diff --git a/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java b/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
index 91a0e3b..2819ed6 100644
--- a/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/LegacyPostalAddressListAdapter.java
@@ -26,6 +26,9 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+
/**
* A cursor adapter for the ContactMethods.CONTENT_TYPE content type.
*/
diff --git a/src/com/android/contacts/list/OnContactBrowserActionListener.java b/src/com/android/contacts/list/OnContactBrowserActionListener.java
index 771f251..6d28bac 100644
--- a/src/com/android/contacts/list/OnContactBrowserActionListener.java
+++ b/src/com/android/contacts/list/OnContactBrowserActionListener.java
@@ -61,16 +61,6 @@
void onRemoveFromFavoritesAction(Uri contactUri);
/**
- * Places a call to the specified contact.
- */
- void onCallContactAction(Uri contactUri);
-
- /**
- * Initiates a text message to the specified contact.
- */
- void onSmsContactAction(Uri contactUri);
-
- /**
* Closes the contact browser.
*/
void onFinishAction();
diff --git a/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java b/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java
deleted file mode 100644
index 0077c78..0000000
--- a/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java
+++ /dev/null
@@ -1,41 +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.list;
-
-import android.app.ActionBar;
-import android.content.Intent;
-import android.net.Uri;
-
-/**
- * Action callbacks that can be sent by a phone number picker.
- */
-public interface OnPhoneNumberPickerActionListener {
-
- /**
- * Returns the selected phone number to the requester.
- */
- void onPickPhoneNumberAction(Uri dataUri);
-
- /**
- * Returns the selected number as a shortcut intent.
- */
- void onShortcutIntentCreated(Intent intent);
-
- /**
- * Called when home menu in {@link ActionBar} is clicked by the user.
- */
- void onHomeInActionBarSelected();
-}
diff --git a/src/com/android/contacts/list/PhoneFavoriteFragment.java b/src/com/android/contacts/list/PhoneFavoriteFragment.java
deleted file mode 100644
index 5ef19ff..0000000
--- a/src/com/android/contacts/list/PhoneFavoriteFragment.java
+++ /dev/null
@@ -1,563 +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.app.Activity;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.content.CursorLoader;
-import android.content.Intent;
-import android.content.Loader;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.Directory;
-import android.provider.Settings;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.FrameLayout;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.android.contacts.ContactPhotoManager;
-import com.android.contacts.ContactTileLoaderFactory;
-import com.android.contacts.R;
-import com.android.contacts.dialog.ClearFrequentsDialog;
-import com.android.contacts.interactions.ImportExportDialogFragment;
-import com.android.contacts.preference.ContactsPreferences;
-import com.android.contacts.util.AccountFilterUtil;
-
-/**
- * Fragment for Phone UI's favorite screen.
- *
- * This fragment contains three kinds of contacts in one screen: "starred", "frequent", and "all"
- * contacts. To show them at once, this merges results from {@link ContactTileAdapter} and
- * {@link PhoneNumberListAdapter} into one unified list using {@link PhoneFavoriteMergedAdapter}.
- * A contact filter header is also inserted between those adapters' results.
- */
-public class PhoneFavoriteFragment extends Fragment implements OnItemClickListener {
- private static final String TAG = PhoneFavoriteFragment.class.getSimpleName();
- private static final boolean DEBUG = false;
-
- /**
- * Used with LoaderManager.
- */
- private static int LOADER_ID_CONTACT_TILE = 1;
- private static int LOADER_ID_ALL_CONTACTS = 2;
-
- private static final String KEY_FILTER = "filter";
-
- private static final int REQUEST_CODE_ACCOUNT_FILTER = 1;
-
- public interface Listener {
- public void onContactSelected(Uri contactUri);
- public void onCallNumberDirectly(String phoneNumber);
- }
-
- private class ContactTileLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
- @Override
- public CursorLoader onCreateLoader(int id, Bundle args) {
- if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onCreateLoader.");
- return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(getActivity());
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onLoadFinished");
- mContactTileAdapter.setContactCursor(data);
-
- if (mAllContactsForceReload) {
- mAllContactsAdapter.onDataReload();
- // Use restartLoader() to make LoaderManager to load the section again.
- getLoaderManager().restartLoader(
- LOADER_ID_ALL_CONTACTS, null, mAllContactsLoaderListener);
- } else if (!mAllContactsLoaderStarted) {
- // Load "all" contacts if not loaded yet.
- getLoaderManager().initLoader(
- LOADER_ID_ALL_CONTACTS, null, mAllContactsLoaderListener);
- }
- mAllContactsForceReload = false;
- mAllContactsLoaderStarted = true;
-
- // Show the filter header with "loading" state.
- updateFilterHeaderView();
- mAccountFilterHeader.setVisibility(View.VISIBLE);
-
- // invalidate the options menu if needed
- invalidateOptionsMenuIfNeeded();
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
- if (DEBUG) Log.d(TAG, "ContactTileLoaderListener#onLoaderReset. ");
- }
- }
-
- private class AllContactsLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- if (DEBUG) Log.d(TAG, "AllContactsLoaderListener#onCreateLoader");
- CursorLoader loader = new CursorLoader(getActivity(), null, null, null, null, null);
- mAllContactsAdapter.configureLoader(loader, Directory.DEFAULT);
- return loader;
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- if (DEBUG) Log.d(TAG, "AllContactsLoaderListener#onLoadFinished");
- mAllContactsAdapter.changeCursor(0, data);
- updateFilterHeaderView();
- mHandler.removeMessages(MESSAGE_SHOW_LOADING_EFFECT);
- mLoadingView.setVisibility(View.VISIBLE);
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
- if (DEBUG) Log.d(TAG, "AllContactsLoaderListener#onLoaderReset. ");
- }
- }
-
- private class ContactTileAdapterListener implements ContactTileView.Listener {
- @Override
- public void onContactSelected(Uri contactUri, Rect targetRect) {
- if (mListener != null) {
- mListener.onContactSelected(contactUri);
- }
- }
-
- @Override
- public void onCallNumberDirectly(String phoneNumber) {
- if (mListener != null) {
- mListener.onCallNumberDirectly(phoneNumber);
- }
- }
-
- @Override
- public int getApproximateTileWidth() {
- return getView().getWidth() / mContactTileAdapter.getColumnCount();
- }
- }
-
- private class FilterHeaderClickListener implements OnClickListener {
- @Override
- public void onClick(View view) {
- AccountFilterUtil.startAccountFilterActivityForResult(
- PhoneFavoriteFragment.this,
- REQUEST_CODE_ACCOUNT_FILTER,
- mFilter);
- }
- }
-
- private class ContactsPreferenceChangeListener
- implements ContactsPreferences.ChangeListener {
- @Override
- public void onChange() {
- if (loadContactsPreferences()) {
- requestReloadAllContacts();
- }
- }
- }
-
- private class ScrollListener implements ListView.OnScrollListener {
- private boolean mShouldShowFastScroller;
- @Override
- public void onScroll(AbsListView view,
- int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- // FastScroller should be visible only when the user is seeing "all" contacts section.
- final boolean shouldShow = mAdapter.shouldShowFirstScroller(firstVisibleItem);
- if (shouldShow != mShouldShowFastScroller) {
- mListView.setVerticalScrollBarEnabled(shouldShow);
- mListView.setFastScrollEnabled(shouldShow);
- mListView.setFastScrollAlwaysVisible(shouldShow);
- mShouldShowFastScroller = shouldShow;
- }
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- }
- }
-
- private static final int MESSAGE_SHOW_LOADING_EFFECT = 1;
- private static final int LOADING_EFFECT_DELAY = 500; // ms
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MESSAGE_SHOW_LOADING_EFFECT:
- mLoadingView.setVisibility(View.VISIBLE);
- break;
- }
- }
- };
-
- private Listener mListener;
- private PhoneFavoriteMergedAdapter mAdapter;
- private ContactTileAdapter mContactTileAdapter;
- private PhoneNumberListAdapter mAllContactsAdapter;
-
- /**
- * true when the loader for {@link PhoneNumberListAdapter} has started already.
- */
- private boolean mAllContactsLoaderStarted;
- /**
- * true when the loader for {@link PhoneNumberListAdapter} must reload "all" contacts again.
- * It typically happens when {@link ContactsPreferences} has changed its settings
- * (display order and sort order)
- */
- private boolean mAllContactsForceReload;
-
- private ContactsPreferences mContactsPrefs;
- private ContactListFilter mFilter;
-
- private TextView mEmptyView;
- private ListView mListView;
- /**
- * Layout containing {@link #mAccountFilterHeader}. Used to limit area being "pressed".
- */
- private FrameLayout mAccountFilterHeaderContainer;
- private View mAccountFilterHeader;
-
- /**
- * Layout used when contacts load is slower than expected and thus "loading" view should be
- * shown.
- */
- private View mLoadingView;
-
- private final ContactTileView.Listener mContactTileAdapterListener =
- new ContactTileAdapterListener();
- private final LoaderManager.LoaderCallbacks<Cursor> mContactTileLoaderListener =
- new ContactTileLoaderListener();
- private final LoaderManager.LoaderCallbacks<Cursor> mAllContactsLoaderListener =
- new AllContactsLoaderListener();
- private final OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
- private final ContactsPreferenceChangeListener mContactsPreferenceChangeListener =
- new ContactsPreferenceChangeListener();
- private final ScrollListener mScrollListener = new ScrollListener();
-
- private boolean mOptionsMenuHasFrequents;
-
- @Override
- public void onAttach(Activity activity) {
- if (DEBUG) Log.d(TAG, "onAttach()");
- super.onAttach(activity);
-
- mContactsPrefs = new ContactsPreferences(activity);
-
- // Construct two base adapters which will become part of PhoneFavoriteMergedAdapter.
- // We don't construct the resultant adapter at this moment since it requires LayoutInflater
- // that will be available on onCreateView().
-
- mContactTileAdapter = new ContactTileAdapter(activity, mContactTileAdapterListener,
- getResources().getInteger(R.integer.contact_tile_column_count_in_favorites),
- ContactTileAdapter.DisplayType.STREQUENT_PHONE_ONLY);
- mContactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(activity));
-
- // Setup the "all" adapter manually. See also the setup logic in ContactEntryListFragment.
- mAllContactsAdapter = new PhoneNumberListAdapter(activity);
- mAllContactsAdapter.setDisplayPhotos(true);
- mAllContactsAdapter.setQuickContactEnabled(true);
- mAllContactsAdapter.setSearchMode(false);
- mAllContactsAdapter.setIncludeProfile(false);
- mAllContactsAdapter.setSelectionVisible(false);
- mAllContactsAdapter.setDarkTheme(true);
- mAllContactsAdapter.setPhotoLoader(ContactPhotoManager.getInstance(activity));
- // Disable directory header.
- mAllContactsAdapter.setHasHeader(0, false);
- // Show A-Z section index.
- mAllContactsAdapter.setSectionHeaderDisplayEnabled(true);
- // Disable pinned header. It doesn't work with this fragment.
- mAllContactsAdapter.setPinnedPartitionHeadersEnabled(false);
- // Put photos on left for consistency with "frequent" contacts section.
- mAllContactsAdapter.setPhotoPosition(ContactListItemView.PhotoPosition.LEFT);
-
- // Use Callable.CONTENT_URI which will include not only phone numbers but also SIP
- // addresses.
- mAllContactsAdapter.setUseCallableUri(true);
-
- mAllContactsAdapter.setContactNameDisplayOrder(mContactsPrefs.getDisplayOrder());
- mAllContactsAdapter.setSortOrder(mContactsPrefs.getSortOrder());
- }
-
- @Override
- public void onCreate(Bundle savedState) {
- if (DEBUG) Log.d(TAG, "onCreate()");
- super.onCreate(savedState);
- if (savedState != null) {
- mFilter = savedState.getParcelable(KEY_FILTER);
-
- if (mFilter != null) {
- mAllContactsAdapter.setFilter(mFilter);
- }
- }
- setHasOptionsMenu(true);
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(KEY_FILTER, mFilter);
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- final View listLayout = inflater.inflate(
- R.layout.phone_contact_tile_list, container, false);
-
- mListView = (ListView) listLayout.findViewById(R.id.contact_tile_list);
- mListView.setItemsCanFocus(true);
- mListView.setOnItemClickListener(this);
- mListView.setVerticalScrollBarEnabled(false);
- mListView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
- mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
-
- // Create the account filter header but keep it hidden until "all" contacts are loaded.
- mAccountFilterHeaderContainer = new FrameLayout(getActivity(), null);
- mAccountFilterHeader = inflater.inflate(R.layout.account_filter_header_for_phone_favorite,
- mListView, false);
- mAccountFilterHeader.setOnClickListener(mFilterHeaderClickListener);
- mAccountFilterHeaderContainer.addView(mAccountFilterHeader);
-
- mLoadingView = inflater.inflate(R.layout.phone_loading_contacts, mListView, false);
-
- mAdapter = new PhoneFavoriteMergedAdapter(getActivity(),
- mContactTileAdapter, mAccountFilterHeaderContainer, mAllContactsAdapter,
- mLoadingView);
-
- mListView.setAdapter(mAdapter);
-
- mListView.setOnScrollListener(mScrollListener);
- mListView.setFastScrollEnabled(false);
- mListView.setFastScrollAlwaysVisible(false);
-
- mEmptyView = (TextView) listLayout.findViewById(R.id.contact_tile_list_empty);
- mEmptyView.setText(getString(R.string.listTotalAllContactsZero));
- mListView.setEmptyView(mEmptyView);
-
- updateFilterHeaderView();
-
- return listLayout;
- }
-
- private boolean isOptionsMenuChanged() {
- return mOptionsMenuHasFrequents != hasFrequents();
- }
-
- private void invalidateOptionsMenuIfNeeded() {
- if (isOptionsMenuChanged()) {
- getActivity().invalidateOptionsMenu();
- }
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.phone_favorite_options, menu);
- }
-
- @Override
- public void onPrepareOptionsMenu(Menu menu) {
- final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
- mOptionsMenuHasFrequents = hasFrequents();
- clearFrequents.setVisible(mOptionsMenuHasFrequents);
- }
-
- private boolean hasFrequents() {
- return mContactTileAdapter.getNumFrequents() > 0;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_import_export:
- // We hard-code the "contactsAreAvailable" argument because doing it properly would
- // involve querying a {@link ProviderStatusLoader}, which we don't want to do right
- // now in Dialtacts for (potential) performance reasons. Compare with how it is
- // done in {@link PeopleActivity}.
- ImportExportDialogFragment.show(getFragmentManager(), true);
- return true;
- case R.id.menu_accounts:
- final Intent intent = new Intent(Settings.ACTION_SYNC_SETTINGS);
- intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {
- ContactsContract.AUTHORITY
- });
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- startActivity(intent);
- return true;
- case R.id.menu_clear_frequents:
- ClearFrequentsDialog.show(getFragmentManager());
- return true;
- }
- return false;
- }
-
- @Override
- public void onStart() {
- super.onStart();
-
- mContactsPrefs.registerChangeListener(mContactsPreferenceChangeListener);
-
- // If ContactsPreferences has changed, we need to reload "all" contacts with the new
- // settings. If mAllContactsFoarceReload is already true, it should be kept.
- if (loadContactsPreferences()) {
- mAllContactsForceReload = true;
- }
-
- // Use initLoader() instead of restartLoader() to refraining unnecessary reload.
- // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
- // be called, on which we'll check if "all" contacts should be reloaded again or not.
- getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, mContactTileLoaderListener);
-
- // Delay showing "loading" view until certain amount of time so that users won't see
- // instant flash of the view when the contacts load is fast enough.
- // This will be kept shown until both tile and all sections are loaded.
- mLoadingView.setVisibility(View.INVISIBLE);
- mHandler.sendEmptyMessageDelayed(MESSAGE_SHOW_LOADING_EFFECT, LOADING_EFFECT_DELAY);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- mContactsPrefs.unregisterChangeListener();
- }
-
- /**
- * {@inheritDoc}
- *
- * This is only effective for elements provided by {@link #mContactTileAdapter}.
- * {@link #mContactTileAdapter} has its own logic for click events.
- */
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- if (position <= contactTileAdapterCount) {
- Log.e(TAG, "onItemClick() event for unexpected position. "
- + "The position " + position + " is before \"all\" section. Ignored.");
- } else {
- final int localPosition = position - mContactTileAdapter.getCount() - 1;
- if (mListener != null) {
- mListener.onContactSelected(mAllContactsAdapter.getDataUri(localPosition));
- }
- }
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_CODE_ACCOUNT_FILTER) {
- if (getActivity() != null) {
- AccountFilterUtil.handleAccountFilterResult(
- ContactListFilterController.getInstance(getActivity()), resultCode, data);
- } else {
- Log.e(TAG, "getActivity() returns null during Fragment#onActivityResult()");
- }
- }
- }
-
- private boolean loadContactsPreferences() {
- if (mContactsPrefs == null || mAllContactsAdapter == null) {
- return false;
- }
-
- boolean changed = false;
- final int currentDisplayOrder = mContactsPrefs.getDisplayOrder();
- if (mAllContactsAdapter.getContactNameDisplayOrder() != currentDisplayOrder) {
- mAllContactsAdapter.setContactNameDisplayOrder(currentDisplayOrder);
- changed = true;
- }
-
- final int currentSortOrder = mContactsPrefs.getSortOrder();
- if (mAllContactsAdapter.getSortOrder() != currentSortOrder) {
- mAllContactsAdapter.setSortOrder(currentSortOrder);
- changed = true;
- }
-
- return changed;
- }
-
- /**
- * Requests to reload "all" contacts. If the section is already loaded, this method will
- * force reloading it now. If the section isn't loaded yet, the actual load may be done later
- * (on {@link #onStart()}.
- */
- private void requestReloadAllContacts() {
- if (DEBUG) {
- Log.d(TAG, "requestReloadAllContacts()"
- + " mAllContactsAdapter: " + mAllContactsAdapter
- + ", mAllContactsLoaderStarted: " + mAllContactsLoaderStarted);
- }
-
- if (mAllContactsAdapter == null || !mAllContactsLoaderStarted) {
- // Remember this request until next load on onStart().
- mAllContactsForceReload = true;
- return;
- }
-
- if (DEBUG) Log.d(TAG, "Reload \"all\" contacts now.");
-
- mAllContactsAdapter.onDataReload();
- // Use restartLoader() to make LoaderManager to load the section again.
- getLoaderManager().restartLoader(LOADER_ID_ALL_CONTACTS, null, mAllContactsLoaderListener);
- }
-
- private void updateFilterHeaderView() {
- final ContactListFilter filter = getFilter();
- if (mAccountFilterHeader == null || mAllContactsAdapter == null || filter == null) {
- return;
- }
- AccountFilterUtil.updateAccountFilterTitleForPhone(mAccountFilterHeader, filter, true);
- }
-
- public ContactListFilter getFilter() {
- return mFilter;
- }
-
- public void setFilter(ContactListFilter filter) {
- if ((mFilter == null && filter == null) || (mFilter != null && mFilter.equals(filter))) {
- return;
- }
-
- if (DEBUG) {
- Log.d(TAG, "setFilter(). old filter (" + mFilter
- + ") will be replaced with new filter (" + filter + ")");
- }
-
- mFilter = filter;
-
- if (mAllContactsAdapter != null) {
- mAllContactsAdapter.setFilter(mFilter);
- requestReloadAllContacts();
- updateFilterHeaderView();
- }
- }
-
- public void setListener(Listener listener) {
- mListener = listener;
- }
-}
diff --git a/src/com/android/contacts/list/PhoneFavoriteMergedAdapter.java b/src/com/android/contacts/list/PhoneFavoriteMergedAdapter.java
deleted file mode 100644
index 3aa9fe5..0000000
--- a/src/com/android/contacts/list/PhoneFavoriteMergedAdapter.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * Licensed to 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.content.Context;
-import android.content.res.Resources;
-import android.database.DataSetObserver;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.SectionIndexer;
-
-import com.android.contacts.R;
-
-/**
- * An adapter that combines items from {@link ContactTileAdapter} and
- * {@link ContactEntryListAdapter} into a single list. In between those two results,
- * an account filter header will be inserted.
- */
-public class PhoneFavoriteMergedAdapter extends BaseAdapter implements SectionIndexer {
-
- private class CustomDataSetObserver extends DataSetObserver {
- @Override
- public void onChanged() {
- notifyDataSetChanged();
- }
- }
-
- private final ContactTileAdapter mContactTileAdapter;
- private final ContactEntryListAdapter mContactEntryListAdapter;
- private final View mAccountFilterHeaderContainer;
- private final View mLoadingView;
-
- private final int mItemPaddingLeft;
- private final int mItemPaddingRight;
-
- // Make frequent header consistent with account filter header.
- private final int mFrequentHeaderPaddingTop;
-
- private final DataSetObserver mObserver;
-
- public PhoneFavoriteMergedAdapter(Context context,
- ContactTileAdapter contactTileAdapter,
- View accountFilterHeaderContainer,
- ContactEntryListAdapter contactEntryListAdapter,
- View loadingView) {
- Resources resources = context.getResources();
- mItemPaddingLeft = resources.getDimensionPixelSize(R.dimen.detail_item_side_margin);
- mItemPaddingRight = resources.getDimensionPixelSize(R.dimen.list_visible_scrollbar_padding);
- mFrequentHeaderPaddingTop = resources.getDimensionPixelSize(
- R.dimen.contact_browser_list_top_margin);
- mContactTileAdapter = contactTileAdapter;
- mContactEntryListAdapter = contactEntryListAdapter;
-
- mAccountFilterHeaderContainer = accountFilterHeaderContainer;
-
- mObserver = new CustomDataSetObserver();
- mContactTileAdapter.registerDataSetObserver(mObserver);
- mContactEntryListAdapter.registerDataSetObserver(mObserver);
-
- mLoadingView = loadingView;
- }
-
- @Override
- public boolean isEmpty() {
- // Cannot use the super's method here because we add extra rows in getCount() to account
- // for headers
- return mContactTileAdapter.getCount() + mContactEntryListAdapter.getCount() == 0;
- }
-
- @Override
- public int getCount() {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();
- if (mContactEntryListAdapter.isLoading()) {
- // Hide "all" contacts during its being loaded. Instead show "loading" view.
- //
- // "+2" for mAccountFilterHeaderContainer and mLoadingView
- return contactTileAdapterCount + 2;
- } else {
- // "+1" for mAccountFilterHeaderContainer
- return contactTileAdapterCount + contactEntryListAdapterCount + 1;
- }
- }
-
- @Override
- public Object getItem(int position) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();
- if (position < contactTileAdapterCount) { // For "tile" and "frequent" sections
- return mContactTileAdapter.getItem(position);
- } else if (position == contactTileAdapterCount) { // For "all" section's account header
- return mAccountFilterHeaderContainer;
- } else { // For "all" section
- if (mContactEntryListAdapter.isLoading()) { // "All" section is being loaded.
- return mLoadingView;
- } else {
- // "-1" for mAccountFilterHeaderContainer
- final int localPosition = position - contactTileAdapterCount - 1;
- return mContactTileAdapter.getItem(localPosition);
- }
- }
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public int getViewTypeCount() {
- // "+2" for mAccountFilterHeaderContainer and mLoadingView
- return (mContactTileAdapter.getViewTypeCount()
- + mContactEntryListAdapter.getViewTypeCount()
- + 2);
- }
-
- @Override
- public int getItemViewType(int position) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();
- // There should be four kinds of types that are usually used, and one more exceptional
- // type (IGNORE_ITEM_VIEW_TYPE), which sometimes comes from mContactTileAdapter.
- //
- // The four ordinary view types have the index equal to or more than 0, and less than
- // mContactTileAdapter.getViewTypeCount()+ mContactEntryListAdapter.getViewTypeCount() + 2.
- // (See also this class's getViewTypeCount())
- //
- // We have those values for:
- // - The view types mContactTileAdapter originally has
- // - The view types mContactEntryListAdapter originally has
- // - mAccountFilterHeaderContainer ("all" section's account header), and
- // - mLoadingView
- //
- // Those types should not be mixed, so we have a different range for each kinds of types:
- // - Types for mContactTileAdapter ("tile" and "frequent" sections)
- // They should have the index, >=0 and <mContactTileAdapter.getViewTypeCount()
- //
- // - Types for mContactEntryListAdapter ("all" sections)
- // They should have the index, >=mContactTileAdapter.getViewTypeCount() and
- // <(mContactTileAdapter.getViewTypeCount() + mContactEntryListAdapter.getViewTypeCount())
- //
- // - Type for "all" section's account header
- // It should have the exact index
- // mContactTileAdapter.getViewTypeCount()+ mContactEntryListAdapter.getViewTypeCount()
- //
- // - Type for "loading" view used during "all" section is being loaded.
- // It should have the exact index
- // mContactTileAdapter.getViewTypeCount()+ mContactEntryListAdapter.getViewTypeCount() + 1
- //
- // As an exception, IGNORE_ITEM_VIEW_TYPE (-1) will be remained as is, which will be used
- // by framework's Adapter implementation and thus should be left as is.
- if (position < contactTileAdapterCount) { // For "tile" and "frequent" sections
- return mContactTileAdapter.getItemViewType(position);
- } else if (position == contactTileAdapterCount) { // For "all" section's account header
- return mContactTileAdapter.getViewTypeCount()
- + mContactEntryListAdapter.getViewTypeCount();
- } else { // For "all" section
- if (mContactEntryListAdapter.isLoading()) { // "All" section is being loaded.
- return mContactTileAdapter.getViewTypeCount()
- + mContactEntryListAdapter.getViewTypeCount() + 1;
- } else {
- // "-1" for mAccountFilterHeaderContainer
- final int localPosition = position - contactTileAdapterCount - 1;
- final int type = mContactEntryListAdapter.getItemViewType(localPosition);
- // IGNORE_ITEM_VIEW_TYPE must be handled differently.
- return (type < 0) ? type : type + mContactTileAdapter.getViewTypeCount();
- }
- }
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();
-
- // Obtain a View relevant for that position, and adjust its horizontal padding. Each
- // View has different implementation, so we use different way to control those padding.
- if (position < contactTileAdapterCount) { // For "tile" and "frequent" sections
- final View view = mContactTileAdapter.getView(position, convertView, parent);
- final int frequentHeaderPosition = mContactTileAdapter.getFrequentHeaderPosition();
- if (position < frequentHeaderPosition) { // "starred" contacts
- // No padding adjustment.
- } else if (position == frequentHeaderPosition) {
- view.setPadding(mItemPaddingLeft, mFrequentHeaderPaddingTop,
- mItemPaddingRight, view.getPaddingBottom());
- } else {
- // Views for "frequent" contacts use FrameLayout's margins instead of padding.
- final FrameLayout frameLayout = (FrameLayout) view;
- final View child = frameLayout.getChildAt(0);
- FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- FrameLayout.LayoutParams.WRAP_CONTENT,
- FrameLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(mItemPaddingLeft, 0, mItemPaddingRight, 0);
- child.setLayoutParams(params);
- }
- return view;
- } else if (position == contactTileAdapterCount) { // For "all" section's account header
- mAccountFilterHeaderContainer.setPadding(mItemPaddingLeft,
- mAccountFilterHeaderContainer.getPaddingTop(),
- mItemPaddingRight,
- mAccountFilterHeaderContainer.getPaddingBottom());
- return mAccountFilterHeaderContainer;
- } else { // For "all" section
- if (mContactEntryListAdapter.isLoading()) { // "All" section is being loaded.
- mLoadingView.setPadding(mItemPaddingLeft,
- mLoadingView.getPaddingTop(),
- mItemPaddingRight,
- mLoadingView.getPaddingBottom());
- return mLoadingView;
- } else {
- // "-1" for mAccountFilterHeaderContainer
- final int localPosition = position - contactTileAdapterCount - 1;
- final ContactListItemView itemView = (ContactListItemView)
- mContactEntryListAdapter.getView(localPosition, convertView, null);
- itemView.setPadding(mItemPaddingLeft, itemView.getPaddingTop(),
- mItemPaddingRight, itemView.getPaddingBottom());
- itemView.setSelectionBoundsHorizontalMargin(mItemPaddingLeft, mItemPaddingRight);
- return itemView;
- }
- }
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- // If "all" section is being loaded we'll show mLoadingView, which is not enabled.
- // Otherwise check the all the other components in the ListView and return appropriate
- // result.
- return !mContactEntryListAdapter.isLoading()
- && (mContactTileAdapter.areAllItemsEnabled()
- && mAccountFilterHeaderContainer.isEnabled()
- && mContactEntryListAdapter.areAllItemsEnabled());
- }
-
- @Override
- public boolean isEnabled(int position) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int contactEntryListAdapterCount = mContactEntryListAdapter.getCount();
- if (position < contactTileAdapterCount) { // For "tile" and "frequent" sections
- return mContactTileAdapter.isEnabled(position);
- } else if (position == contactTileAdapterCount) { // For "all" section's account header
- // This will be handled by View's onClick event instead of ListView's onItemClick event.
- return false;
- } else { // For "all" section
- if (mContactEntryListAdapter.isLoading()) { // "All" section is being loaded.
- return false;
- } else {
- // "-1" for mAccountFilterHeaderContainer
- final int localPosition = position - contactTileAdapterCount - 1;
- return mContactEntryListAdapter.isEnabled(localPosition);
- }
- }
- }
-
- @Override
- public int getPositionForSection(int sectionIndex) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- final int localPosition = mContactEntryListAdapter.getPositionForSection(sectionIndex);
- return contactTileAdapterCount + 1 + localPosition;
- }
-
- @Override
- public int getSectionForPosition(int position) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- if (position <= contactTileAdapterCount) {
- return 0;
- } else {
- // "-1" for mAccountFilterHeaderContainer
- final int localPosition = position - contactTileAdapterCount - 1;
- return mContactEntryListAdapter.getSectionForPosition(localPosition);
- }
- }
-
- @Override
- public Object[] getSections() {
- return mContactEntryListAdapter.getSections();
- }
-
- public boolean shouldShowFirstScroller(int firstVisibleItem) {
- final int contactTileAdapterCount = mContactTileAdapter.getCount();
- return firstVisibleItem > contactTileAdapterCount;
- }
-}
diff --git a/src/com/android/contacts/list/PhoneNumberListAdapter.java b/src/com/android/contacts/list/PhoneNumberListAdapter.java
deleted file mode 100644
index 6323cc1..0000000
--- a/src/com/android/contacts/list/PhoneNumberListAdapter.java
+++ /dev/null
@@ -1,331 +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.list;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.database.Cursor;
-import android.net.Uri;
-import android.net.Uri.Builder;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Callable;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.ContactCounts;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.Directory;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.contacts.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A cursor adapter for the {@link Phone#CONTENT_ITEM_TYPE} and
- * {@link SipAddress#CONTENT_ITEM_TYPE}.
- *
- * By default this adapter just handles phone numbers. When {@link #setUseCallableUri(boolean)} is
- * called with "true", this adapter starts handling SIP addresses too, by using {@link Callable}
- * API instead of {@link Phone}.
- */
-public class PhoneNumberListAdapter extends ContactEntryListAdapter {
- private static final String TAG = PhoneNumberListAdapter.class.getSimpleName();
-
- protected static class PhoneQuery {
- private static final String[] PROJECTION_PRIMARY = new String[] {
- Phone._ID, // 0
- Phone.TYPE, // 1
- Phone.LABEL, // 2
- Phone.NUMBER, // 3
- Phone.CONTACT_ID, // 4
- Phone.LOOKUP_KEY, // 5
- Phone.PHOTO_ID, // 6
- Phone.DISPLAY_NAME_PRIMARY, // 7
- };
-
- private static final String[] PROJECTION_ALTERNATIVE = new String[] {
- Phone._ID, // 0
- Phone.TYPE, // 1
- Phone.LABEL, // 2
- Phone.NUMBER, // 3
- Phone.CONTACT_ID, // 4
- Phone.LOOKUP_KEY, // 5
- Phone.PHOTO_ID, // 6
- Phone.DISPLAY_NAME_ALTERNATIVE, // 7
- };
-
- public static final int PHONE_ID = 0;
- public static final int PHONE_TYPE = 1;
- public static final int PHONE_LABEL = 2;
- public static final int PHONE_NUMBER = 3;
- public static final int PHONE_CONTACT_ID = 4;
- public static final int PHONE_LOOKUP_KEY = 5;
- public static final int PHONE_PHOTO_ID = 6;
- public static final int PHONE_DISPLAY_NAME = 7;
- }
-
- private final CharSequence mUnknownNameText;
-
- private ContactListItemView.PhotoPosition mPhotoPosition;
-
- private boolean mUseCallableUri;
-
- public PhoneNumberListAdapter(Context context) {
- super(context);
- setDefaultFilterHeaderText(R.string.list_filter_phones);
- mUnknownNameText = context.getText(android.R.string.unknownName);
- }
-
- protected CharSequence getUnknownNameText() {
- return mUnknownNameText;
- }
-
- @Override
- public void configureLoader(CursorLoader loader, long directoryId) {
- if (directoryId != Directory.DEFAULT) {
- Log.w(TAG, "PhoneNumberListAdapter is not ready for non-default directory ID ("
- + "directoryId: " + directoryId + ")");
- }
-
- final Builder builder;
- if (isSearchMode()) {
- final Uri baseUri =
- mUseCallableUri ? Callable.CONTENT_FILTER_URI : Phone.CONTENT_FILTER_URI;
- builder = baseUri.buildUpon();
- final String query = getQueryString();
- if (TextUtils.isEmpty(query)) {
- builder.appendPath("");
- } else {
- builder.appendPath(query); // Builder will encode the query
- }
- builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
- String.valueOf(directoryId));
- } else {
- final Uri baseUri = mUseCallableUri ? Callable.CONTENT_URI : Phone.CONTENT_URI;
- builder = baseUri.buildUpon().appendQueryParameter(
- ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(Directory.DEFAULT));
- if (isSectionHeaderDisplayEnabled()) {
- builder.appendQueryParameter(ContactCounts.ADDRESS_BOOK_INDEX_EXTRAS, "true");
- }
- applyFilter(loader, builder, directoryId, getFilter());
- }
-
- // Remove duplicates when it is possible.
- builder.appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true");
- loader.setUri(builder.build());
-
- // TODO a projection that includes the search snippet
- if (getContactNameDisplayOrder() == ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY) {
- loader.setProjection(PhoneQuery.PROJECTION_PRIMARY);
- } else {
- loader.setProjection(PhoneQuery.PROJECTION_ALTERNATIVE);
- }
-
- if (getSortOrder() == ContactsContract.Preferences.SORT_ORDER_PRIMARY) {
- loader.setSortOrder(Phone.SORT_KEY_PRIMARY);
- } else {
- loader.setSortOrder(Phone.SORT_KEY_ALTERNATIVE);
- }
- }
-
- /**
- * Configure {@code loader} and {@code uriBuilder} according to {@code directoryId} and {@code
- * filter}.
- */
- private void applyFilter(CursorLoader loader, Uri.Builder uriBuilder, long directoryId,
- ContactListFilter filter) {
- if (filter == null || directoryId != Directory.DEFAULT) {
- return;
- }
-
- final StringBuilder selection = new StringBuilder();
- final List<String> selectionArgs = new ArrayList<String>();
-
- switch (filter.filterType) {
- case ContactListFilter.FILTER_TYPE_CUSTOM: {
- selection.append(Contacts.IN_VISIBLE_GROUP + "=1");
- selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");
- break;
- }
- case ContactListFilter.FILTER_TYPE_ACCOUNT: {
- filter.addAccountQueryParameterToUrl(uriBuilder);
- break;
- }
- case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS:
- case ContactListFilter.FILTER_TYPE_DEFAULT:
- break; // No selection needed.
- case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY:
- break; // This adapter is always "phone only", so no selection needed either.
- default:
- Log.w(TAG, "Unsupported filter type came " +
- "(type: " + filter.filterType + ", toString: " + filter + ")" +
- " showing all contacts.");
- // No selection.
- break;
- }
- loader.setSelection(selection.toString());
- loader.setSelectionArgs(selectionArgs.toArray(new String[0]));
- }
-
- @Override
- public String getContactDisplayName(int position) {
- return ((Cursor) getItem(position)).getString(PhoneQuery.PHONE_DISPLAY_NAME);
- }
-
- /**
- * Builds a {@link Data#CONTENT_URI} for the given cursor position.
- *
- * @return Uri for the data. may be null if the cursor is not ready.
- */
- public Uri getDataUri(int position) {
- Cursor cursor = ((Cursor)getItem(position));
- if (cursor != null) {
- long id = cursor.getLong(PhoneQuery.PHONE_ID);
- return ContentUris.withAppendedId(Data.CONTENT_URI, id);
- } else {
- Log.w(TAG, "Cursor was null in getDataUri() call. Returning null instead.");
- return null;
- }
- }
-
- @Override
- protected View newView(Context context, int partition, Cursor cursor, int position,
- ViewGroup parent) {
- final ContactListItemView view = new ContactListItemView(context, null);
- view.setUnknownNameText(mUnknownNameText);
- view.setQuickContactEnabled(isQuickContactEnabled());
- view.setPhotoPosition(mPhotoPosition);
- return view;
- }
-
- @Override
- protected void bindView(View itemView, int partition, Cursor cursor, int position) {
- ContactListItemView view = (ContactListItemView)itemView;
-
- view.setHighlightedPrefix(isSearchMode() ? getUpperCaseQueryString() : null);
-
- // Look at elements before and after this position, checking if contact IDs are same.
- // If they have one same contact ID, it means they can be grouped.
- //
- // In one group, only the first entry will show its photo and its name, and the other
- // entries in the group show just their data (e.g. phone number, email address).
- cursor.moveToPosition(position);
- boolean isFirstEntry = true;
- boolean showBottomDivider = true;
- final long currentContactId = cursor.getLong(PhoneQuery.PHONE_CONTACT_ID);
- if (cursor.moveToPrevious() && !cursor.isBeforeFirst()) {
- final long previousContactId = cursor.getLong(PhoneQuery.PHONE_CONTACT_ID);
- if (currentContactId == previousContactId) {
- isFirstEntry = false;
- }
- }
- cursor.moveToPosition(position);
- if (cursor.moveToNext() && !cursor.isAfterLast()) {
- final long nextContactId = cursor.getLong(PhoneQuery.PHONE_CONTACT_ID);
- if (currentContactId == nextContactId) {
- // The following entry should be in the same group, which means we don't want a
- // divider between them.
- // TODO: we want a different divider than the divider between groups. Just hiding
- // this divider won't be enough.
- showBottomDivider = false;
- }
- }
- cursor.moveToPosition(position);
-
- bindSectionHeaderAndDivider(view, position);
- if (isFirstEntry) {
- bindName(view, cursor);
- if (isQuickContactEnabled()) {
- // No need for photo uri here, because we can not have directory results. If we
- // ever do, we need to add photo uri to the query
- bindQuickContact(view, partition, cursor, PhoneQuery.PHONE_PHOTO_ID, -1,
- PhoneQuery.PHONE_CONTACT_ID, PhoneQuery.PHONE_LOOKUP_KEY);
- } else {
- bindPhoto(view, cursor);
- }
- } else {
- unbindName(view);
-
- view.removePhotoView(true, false);
- }
- bindPhoneNumber(view, cursor);
- view.setDividerVisible(showBottomDivider);
- }
-
- protected void bindPhoneNumber(ContactListItemView view, Cursor cursor) {
- CharSequence label = null;
- if (!cursor.isNull(PhoneQuery.PHONE_TYPE)) {
- final int type = cursor.getInt(PhoneQuery.PHONE_TYPE);
- final String customLabel = cursor.getString(PhoneQuery.PHONE_LABEL);
-
- // TODO cache
- label = Phone.getTypeLabel(getContext().getResources(), type, customLabel);
- }
- view.setLabel(label);
- view.showData(cursor, PhoneQuery.PHONE_NUMBER);
- }
-
- protected void bindSectionHeaderAndDivider(final ContactListItemView view, int position) {
- if (isSectionHeaderDisplayEnabled()) {
- Placement placement = getItemPlacementInSection(position);
- view.setSectionHeader(placement.firstInSection ? placement.sectionHeader : null);
- view.setDividerVisible(!placement.lastInSection);
- } else {
- view.setSectionHeader(null);
- view.setDividerVisible(true);
- }
- }
-
- protected void bindName(final ContactListItemView view, Cursor cursor) {
- view.showDisplayName(cursor, PhoneQuery.PHONE_DISPLAY_NAME, getContactNameDisplayOrder());
- // Note: we don't show phonetic names any more (see issue 5265330)
- }
-
- protected void unbindName(final ContactListItemView view) {
- view.hideDisplayName();
- }
-
- protected void bindPhoto(final ContactListItemView view, Cursor cursor) {
- long photoId = 0;
- if (!cursor.isNull(PhoneQuery.PHONE_PHOTO_ID)) {
- photoId = cursor.getLong(PhoneQuery.PHONE_PHOTO_ID);
- }
-
- getPhotoLoader().loadThumbnail(view.getPhotoView(), photoId, false);
- }
-
- public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
- mPhotoPosition = photoPosition;
- }
-
- public ContactListItemView.PhotoPosition getPhotoPosition() {
- return mPhotoPosition;
- }
-
- public void setUseCallableUri(boolean useCallableUri) {
- mUseCallableUri = useCallableUri;
- }
-
- public boolean usesCallableUri() {
- return mUseCallableUri;
- }
-}
diff --git a/src/com/android/contacts/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
deleted file mode 100644
index 17b5500..0000000
--- a/src/com/android/contacts/list/PhoneNumberPickerFragment.java
+++ /dev/null
@@ -1,309 +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.list;
-
-import android.content.Intent;
-import android.content.Loader;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-
-import com.android.contacts.R;
-import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
-import com.android.contacts.util.AccountFilterUtil;
-
-/**
- * Fragment containing a phone number list for picking.
- */
-public class PhoneNumberPickerFragment extends ContactEntryListFragment<ContactEntryListAdapter>
- implements OnShortcutIntentCreatedListener {
- private static final String TAG = PhoneNumberPickerFragment.class.getSimpleName();
-
- private static final int REQUEST_CODE_ACCOUNT_FILTER = 1;
-
- private static final String KEY_SHORTCUT_ACTION = "shortcutAction";
-
- private OnPhoneNumberPickerActionListener mListener;
- private String mShortcutAction;
-
- private ContactListFilter mFilter;
-
- private View mAccountFilterHeader;
- /**
- * Lives as ListView's header and is shown when {@link #mAccountFilterHeader} is set
- * to View.GONE.
- */
- private View mPaddingView;
-
- private static final String KEY_FILTER = "filter";
-
- /** true if the loader has started at least once. */
- private boolean mLoaderStarted;
-
- private boolean mUseCallableUri;
-
- private ContactListItemView.PhotoPosition mPhotoPosition =
- ContactListItemView.DEFAULT_PHOTO_POSITION;
-
- private class FilterHeaderClickListener implements OnClickListener {
- @Override
- public void onClick(View view) {
- AccountFilterUtil.startAccountFilterActivityForResult(
- PhoneNumberPickerFragment.this,
- REQUEST_CODE_ACCOUNT_FILTER,
- mFilter);
- }
- }
- private OnClickListener mFilterHeaderClickListener = new FilterHeaderClickListener();
-
- public PhoneNumberPickerFragment() {
- setQuickContactEnabled(false);
- setPhotoLoaderEnabled(true);
- setSectionHeaderDisplayEnabled(true);
- setDirectorySearchMode(DirectoryListLoader.SEARCH_MODE_DATA_SHORTCUT);
-
- // Show nothing instead of letting caller Activity show something.
- setHasOptionsMenu(true);
- }
-
- public void setOnPhoneNumberPickerActionListener(OnPhoneNumberPickerActionListener listener) {
- this.mListener = listener;
- }
-
- @Override
- protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
- super.onCreateView(inflater, container);
-
- View paddingView = inflater.inflate(R.layout.contact_detail_list_padding, null, false);
- mPaddingView = paddingView.findViewById(R.id.contact_detail_list_padding);
- getListView().addHeaderView(paddingView);
-
- mAccountFilterHeader = getView().findViewById(R.id.account_filter_header_container);
- mAccountFilterHeader.setOnClickListener(mFilterHeaderClickListener);
- updateFilterHeaderView();
-
- setVisibleScrollbarEnabled(!isLegacyCompatibilityMode());
- }
-
- @Override
- protected void setSearchMode(boolean flag) {
- super.setSearchMode(flag);
- updateFilterHeaderView();
- }
-
- private void updateFilterHeaderView() {
- final ContactListFilter filter = getFilter();
- if (mAccountFilterHeader == null || filter == null) {
- return;
- }
- final boolean shouldShowHeader =
- !isSearchMode() &&
- AccountFilterUtil.updateAccountFilterTitleForPhone(
- mAccountFilterHeader, filter, false);
- if (shouldShowHeader) {
- mPaddingView.setVisibility(View.GONE);
- mAccountFilterHeader.setVisibility(View.VISIBLE);
- } else {
- mPaddingView.setVisibility(View.VISIBLE);
- mAccountFilterHeader.setVisibility(View.GONE);
- }
- }
-
- @Override
- public void restoreSavedState(Bundle savedState) {
- super.restoreSavedState(savedState);
-
- if (savedState == null) {
- return;
- }
-
- mFilter = savedState.getParcelable(KEY_FILTER);
- mShortcutAction = savedState.getString(KEY_SHORTCUT_ACTION);
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(KEY_FILTER, mFilter);
- outState.putString(KEY_SHORTCUT_ACTION, mShortcutAction);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- final int itemId = item.getItemId();
- if (itemId == android.R.id.home) { // See ActionBar#setDisplayHomeAsUpEnabled()
- if (mListener != null) {
- mListener.onHomeInActionBarSelected();
- }
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- /**
- * @param shortcutAction either {@link Intent#ACTION_CALL} or
- * {@link Intent#ACTION_SENDTO} or null.
- */
- public void setShortcutAction(String shortcutAction) {
- this.mShortcutAction = shortcutAction;
- }
-
- @Override
- protected void onItemClick(int position, long id) {
- final Uri phoneUri;
- if (!isLegacyCompatibilityMode()) {
- PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
- phoneUri = adapter.getDataUri(position);
-
- } else {
- LegacyPhoneNumberListAdapter adapter = (LegacyPhoneNumberListAdapter) getAdapter();
- phoneUri = adapter.getPhoneUri(position);
- }
-
- if (phoneUri != null) {
- pickPhoneNumber(phoneUri);
- } else {
- Log.w(TAG, "Item at " + position + " was clicked before adapter is ready. Ignoring");
- }
- }
-
- @Override
- protected void startLoading() {
- mLoaderStarted = true;
- super.startLoading();
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- super.onLoadFinished(loader, data);
-
- // disable scroll bar if there is no data
- setVisibleScrollbarEnabled(data.getCount() > 0);
- }
-
- public void setUseCallableUri(boolean useCallableUri) {
- mUseCallableUri = useCallableUri;
- }
-
- public boolean usesCallableUri() {
- return mUseCallableUri;
- }
-
- @Override
- protected ContactEntryListAdapter createListAdapter() {
- if (!isLegacyCompatibilityMode()) {
- PhoneNumberListAdapter adapter = new PhoneNumberListAdapter(getActivity());
- adapter.setDisplayPhotos(true);
- adapter.setUseCallableUri(mUseCallableUri);
- return adapter;
- } else {
- LegacyPhoneNumberListAdapter adapter = new LegacyPhoneNumberListAdapter(getActivity());
- adapter.setDisplayPhotos(true);
- return adapter;
- }
- }
-
- @Override
- protected void configureAdapter() {
- super.configureAdapter();
-
- final ContactEntryListAdapter adapter = getAdapter();
- if (adapter == null) {
- return;
- }
-
- if (!isSearchMode() && mFilter != null) {
- adapter.setFilter(mFilter);
- }
-
- if (!isLegacyCompatibilityMode()) {
- ((PhoneNumberListAdapter) adapter).setPhotoPosition(mPhotoPosition);
- }
- }
-
- @Override
- protected View inflateView(LayoutInflater inflater, ViewGroup container) {
- return inflater.inflate(R.layout.contact_list_content, null);
- }
-
- public void pickPhoneNumber(Uri uri) {
- if (mShortcutAction == null) {
- mListener.onPickPhoneNumberAction(uri);
- } else {
- if (isLegacyCompatibilityMode()) {
- throw new UnsupportedOperationException();
- }
- ShortcutIntentBuilder builder = new ShortcutIntentBuilder(getActivity(), this);
- builder.createPhoneNumberShortcutIntent(uri, mShortcutAction);
- }
- }
-
- public void onShortcutIntentCreated(Uri uri, Intent shortcutIntent) {
- mListener.onShortcutIntentCreated(shortcutIntent);
- }
-
- @Override
- public void onPickerResult(Intent data) {
- mListener.onPickPhoneNumberAction(data.getData());
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_CODE_ACCOUNT_FILTER) {
- if (getActivity() != null) {
- AccountFilterUtil.handleAccountFilterResult(
- ContactListFilterController.getInstance(getActivity()), resultCode, data);
- } else {
- Log.e(TAG, "getActivity() returns null during Fragment#onActivityResult()");
- }
- }
- }
-
- public ContactListFilter getFilter() {
- return mFilter;
- }
-
- public void setFilter(ContactListFilter filter) {
- if ((mFilter == null && filter == null) ||
- (mFilter != null && mFilter.equals(filter))) {
- return;
- }
-
- mFilter = filter;
- if (mLoaderStarted) {
- reloadData();
- }
- updateFilterHeaderView();
- }
-
- public void setPhotoPosition(ContactListItemView.PhotoPosition photoPosition) {
- mPhotoPosition = photoPosition;
- if (!isLegacyCompatibilityMode()) {
- final PhoneNumberListAdapter adapter = (PhoneNumberListAdapter) getAdapter();
- if (adapter != null) {
- adapter.setPhotoPosition(photoPosition);
- }
- } else {
- Log.w(TAG, "setPhotoPosition() is ignored in legacy compatibility mode.");
- }
- }
-}
diff --git a/src/com/android/contacts/list/PostalAddressListAdapter.java b/src/com/android/contacts/list/PostalAddressListAdapter.java
index 5e3be30..a800c00 100644
--- a/src/com/android/contacts/list/PostalAddressListAdapter.java
+++ b/src/com/android/contacts/list/PostalAddressListAdapter.java
@@ -28,6 +28,9 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactListItemView;
+
/**
* A cursor adapter for the {@link StructuredPostal#CONTENT_TYPE} content type.
*/
diff --git a/src/com/android/contacts/list/PostalAddressPickerFragment.java b/src/com/android/contacts/list/PostalAddressPickerFragment.java
index 9bd4fc3..a23a78b 100644
--- a/src/com/android/contacts/list/PostalAddressPickerFragment.java
+++ b/src/com/android/contacts/list/PostalAddressPickerFragment.java
@@ -21,6 +21,9 @@
import android.view.ViewGroup;
import com.android.contacts.R;
+import com.android.contacts.common.list.ContactEntryListAdapter;
+import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.list.DirectoryListLoader;
/**
* Fragment containing a postal address list for picking.
diff --git a/src/com/android/contacts/list/ProfileAndContactsLoader.java b/src/com/android/contacts/list/ProfileAndContactsLoader.java
deleted file mode 100644
index 4291a40..0000000
--- a/src/com/android/contacts/list/ProfileAndContactsLoader.java
+++ /dev/null
@@ -1,90 +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.content.Context;
-import android.content.CursorLoader;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
-import android.os.Bundle;
-import android.provider.ContactsContract.Profile;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * A loader for use in the default contact list, which will also query for the user's profile
- * if configured to do so.
- */
-public class ProfileAndContactsLoader extends CursorLoader {
-
- private boolean mLoadProfile;
- private String[] mProjection;
-
- public ProfileAndContactsLoader(Context context) {
- super(context);
- }
-
- public void setLoadProfile(boolean flag) {
- mLoadProfile = flag;
- }
-
- public void setProjection(String[] projection) {
- super.setProjection(projection);
- mProjection = projection;
- }
-
- @Override
- public Cursor loadInBackground() {
- // First load the profile, if enabled.
- List<Cursor> cursors = Lists.newArrayList();
- if (mLoadProfile) {
- cursors.add(loadProfile());
- }
- final Cursor contactsCursor = super.loadInBackground();
- cursors.add(contactsCursor);
- return new MergeCursor(cursors.toArray(new Cursor[cursors.size()])) {
- @Override
- public Bundle getExtras() {
- // Need to get the extras from the contacts cursor.
- return contactsCursor.getExtras();
- }
- };
- }
-
- /**
- * Loads the profile into a MatrixCursor.
- */
- private MatrixCursor loadProfile() {
- Cursor cursor = getContext().getContentResolver().query(Profile.CONTENT_URI, mProjection,
- null, null, null);
- try {
- MatrixCursor matrix = new MatrixCursor(mProjection);
- Object[] row = new Object[mProjection.length];
- while (cursor.moveToNext()) {
- for (int i = 0; i < row.length; i++) {
- row[i] = cursor.getString(i);
- }
- matrix.addRow(row);
- }
- return matrix;
- } finally {
- cursor.close();
- }
- }
-}
diff --git a/src/com/android/contacts/list/ShortcutIntentBuilder.java b/src/com/android/contacts/list/ShortcutIntentBuilder.java
deleted file mode 100644
index 1578524..0000000
--- a/src/com/android/contacts/list/ShortcutIntentBuilder.java
+++ /dev/null
@@ -1,421 +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.list;
-
-import android.app.ActivityManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Paint.FontMetricsInt;
-import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.text.TextPaint;
-import android.text.TextUtils;
-import android.text.TextUtils.TruncateAt;
-
-import com.android.contacts.R;
-import com.android.contacts.util.Constants;
-
-/**
- * Constructs shortcut intents.
- */
-public class ShortcutIntentBuilder {
-
- private static final String[] CONTACT_COLUMNS = {
- Contacts.DISPLAY_NAME,
- Contacts.PHOTO_ID,
- };
-
- private static final int CONTACT_DISPLAY_NAME_COLUMN_INDEX = 0;
- private static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 1;
-
- private static final String[] PHONE_COLUMNS = {
- Phone.DISPLAY_NAME,
- Phone.PHOTO_ID,
- Phone.NUMBER,
- Phone.TYPE,
- Phone.LABEL
- };
-
- private static final int PHONE_DISPLAY_NAME_COLUMN_INDEX = 0;
- private static final int PHONE_PHOTO_ID_COLUMN_INDEX = 1;
- private static final int PHONE_NUMBER_COLUMN_INDEX = 2;
- private static final int PHONE_TYPE_COLUMN_INDEX = 3;
- private static final int PHONE_LABEL_COLUMN_INDEX = 4;
-
- private static final String[] PHOTO_COLUMNS = {
- Photo.PHOTO,
- };
-
- private static final int PHOTO_PHOTO_COLUMN_INDEX = 0;
-
- private static final String PHOTO_SELECTION = Photo._ID + "=?";
-
- private final OnShortcutIntentCreatedListener mListener;
- private final Context mContext;
- private int mIconSize;
- private final int mIconDensity;
- private final int mBorderWidth;
- private final int mBorderColor;
-
- /**
- * This is a hidden API of the launcher in JellyBean that allows us to disable the animation
- * that it would usually do, because it interferes with our own animation for QuickContact
- */
- public static final String INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION =
- "com.android.launcher.intent.extra.shortcut.INGORE_LAUNCH_ANIMATION";
-
- /**
- * Listener interface.
- */
- public interface OnShortcutIntentCreatedListener {
-
- /**
- * Callback for shortcut intent creation.
- *
- * @param uri the original URI for which the shortcut intent has been
- * created.
- * @param shortcutIntent resulting shortcut intent.
- */
- void onShortcutIntentCreated(Uri uri, Intent shortcutIntent);
- }
-
- public ShortcutIntentBuilder(Context context, OnShortcutIntentCreatedListener listener) {
- mContext = context;
- mListener = listener;
-
- final Resources r = context.getResources();
- final ActivityManager am = (ActivityManager) context
- .getSystemService(Context.ACTIVITY_SERVICE);
- mIconSize = r.getDimensionPixelSize(R.dimen.shortcut_icon_size);
- if (mIconSize == 0) {
- mIconSize = am.getLauncherLargeIconSize();
- }
- mIconDensity = am.getLauncherLargeIconDensity();
- mBorderWidth = r.getDimensionPixelOffset(
- R.dimen.shortcut_icon_border_width);
- mBorderColor = r.getColor(R.color.shortcut_overlay_text_background);
- }
-
- public void createContactShortcutIntent(Uri contactUri) {
- new ContactLoadingAsyncTask(contactUri).execute();
- }
-
- public void createPhoneNumberShortcutIntent(Uri dataUri, String shortcutAction) {
- new PhoneNumberLoadingAsyncTask(dataUri, shortcutAction).execute();
- }
-
- /**
- * An asynchronous task that loads name, photo and other data from the database.
- */
- private abstract class LoadingAsyncTask extends AsyncTask<Void, Void, Void> {
- protected Uri mUri;
- protected String mContentType;
- protected String mDisplayName;
- protected byte[] mBitmapData;
- protected long mPhotoId;
-
- public LoadingAsyncTask(Uri uri) {
- mUri = uri;
- }
-
- @Override
- protected Void doInBackground(Void... params) {
- mContentType = mContext.getContentResolver().getType(mUri);
- loadData();
- loadPhoto();
- return null;
- }
-
- protected abstract void loadData();
-
- private void loadPhoto() {
- if (mPhotoId == 0) {
- return;
- }
-
- ContentResolver resolver = mContext.getContentResolver();
- Cursor cursor = resolver.query(Data.CONTENT_URI, PHOTO_COLUMNS, PHOTO_SELECTION,
- new String[] { String.valueOf(mPhotoId) }, null);
- if (cursor != null) {
- try {
- if (cursor.moveToFirst()) {
- mBitmapData = cursor.getBlob(PHOTO_PHOTO_COLUMN_INDEX);
- }
- } finally {
- cursor.close();
- }
- }
- }
- }
-
- private final class ContactLoadingAsyncTask extends LoadingAsyncTask {
- public ContactLoadingAsyncTask(Uri uri) {
- super(uri);
- }
-
- @Override
- protected void loadData() {
- ContentResolver resolver = mContext.getContentResolver();
- Cursor cursor = resolver.query(mUri, CONTACT_COLUMNS, null, null, null);
- if (cursor != null) {
- try {
- if (cursor.moveToFirst()) {
- mDisplayName = cursor.getString(CONTACT_DISPLAY_NAME_COLUMN_INDEX);
- mPhotoId = cursor.getLong(CONTACT_PHOTO_ID_COLUMN_INDEX);
- }
- } finally {
- cursor.close();
- }
- }
- }
- @Override
- protected void onPostExecute(Void result) {
- createContactShortcutIntent(mUri, mContentType, mDisplayName, mBitmapData);
- }
- }
-
- private final class PhoneNumberLoadingAsyncTask extends LoadingAsyncTask {
- private final String mShortcutAction;
- private String mPhoneNumber;
- private int mPhoneType;
- private String mPhoneLabel;
-
- public PhoneNumberLoadingAsyncTask(Uri uri, String shortcutAction) {
- super(uri);
- mShortcutAction = shortcutAction;
- }
-
- @Override
- protected void loadData() {
- ContentResolver resolver = mContext.getContentResolver();
- Cursor cursor = resolver.query(mUri, PHONE_COLUMNS, null, null, null);
- if (cursor != null) {
- try {
- if (cursor.moveToFirst()) {
- mDisplayName = cursor.getString(PHONE_DISPLAY_NAME_COLUMN_INDEX);
- mPhotoId = cursor.getLong(PHONE_PHOTO_ID_COLUMN_INDEX);
- mPhoneNumber = cursor.getString(PHONE_NUMBER_COLUMN_INDEX);
- mPhoneType = cursor.getInt(PHONE_TYPE_COLUMN_INDEX);
- mPhoneLabel = cursor.getString(PHONE_LABEL_COLUMN_INDEX);
- }
- } finally {
- cursor.close();
- }
- }
- }
-
- @Override
- protected void onPostExecute(Void result) {
- createPhoneNumberShortcutIntent(mUri, mDisplayName, mBitmapData, mPhoneNumber,
- mPhoneType, mPhoneLabel, mShortcutAction);
- }
- }
-
- private Bitmap getPhotoBitmap(byte[] bitmapData) {
- Bitmap bitmap;
- if (bitmapData != null) {
- bitmap = BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length, null);
- } else {
- bitmap = ((BitmapDrawable) mContext.getResources().getDrawableForDensity(
- R.drawable.ic_contact_picture_holo_light, mIconDensity)).getBitmap();
- }
- return bitmap;
- }
-
- private void createContactShortcutIntent(Uri contactUri, String contentType, String displayName,
- byte[] bitmapData) {
- Bitmap bitmap = getPhotoBitmap(bitmapData);
-
- Intent shortcutIntent = new Intent(ContactsContract.QuickContact.ACTION_QUICK_CONTACT);
-
- // When starting from the launcher, start in a new, cleared task.
- // CLEAR_WHEN_TASK_RESET cannot reset the root of a task, so we
- // clear the whole thing preemptively here since QuickContactActivity will
- // finish itself when launching other detail activities.
- shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
-
- // Tell the launcher to not do its animation, because we are doing our own
- shortcutIntent.putExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION, true);
-
- shortcutIntent.setDataAndType(contactUri, contentType);
- shortcutIntent.putExtra(ContactsContract.QuickContact.EXTRA_MODE,
- ContactsContract.QuickContact.MODE_LARGE);
- shortcutIntent.putExtra(ContactsContract.QuickContact.EXTRA_EXCLUDE_MIMES,
- (String[]) null);
-
- final Bitmap icon = generateQuickContactIcon(bitmap);
-
- Intent intent = new Intent();
- intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
- intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
- if (TextUtils.isEmpty(displayName)) {
- intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, mContext.getResources().getString(
- R.string.missing_name));
- } else {
- intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, displayName);
- }
-
- mListener.onShortcutIntentCreated(contactUri, intent);
- }
-
- private void createPhoneNumberShortcutIntent(Uri uri, String displayName, byte[] bitmapData,
- String phoneNumber, int phoneType, String phoneLabel, String shortcutAction) {
- Bitmap bitmap = getPhotoBitmap(bitmapData);
-
- Uri phoneUri;
- if (Intent.ACTION_CALL.equals(shortcutAction)) {
- // Make the URI a direct tel: URI so that it will always continue to work
- phoneUri = Uri.fromParts(Constants.SCHEME_TEL, phoneNumber, null);
- bitmap = generatePhoneNumberIcon(bitmap, phoneType, phoneLabel,
- R.drawable.badge_action_call);
- } else {
- phoneUri = Uri.fromParts(Constants.SCHEME_SMSTO, phoneNumber, null);
- bitmap = generatePhoneNumberIcon(bitmap, phoneType, phoneLabel,
- R.drawable.badge_action_sms);
- }
-
- Intent shortcutIntent = new Intent(shortcutAction, phoneUri);
- shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-
- Intent intent = new Intent();
- intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
- intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
- intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, displayName);
-
- mListener.onShortcutIntentCreated(uri, intent);
- }
-
- private void drawBorder(Canvas canvas, Rect dst) {
- // Darken the border
- final Paint workPaint = new Paint();
- workPaint.setColor(mBorderColor);
- workPaint.setStyle(Paint.Style.STROKE);
- // The stroke is drawn centered on the rect bounds, and since half will be drawn outside the
- // bounds, we need to double the width for it to appear as intended.
- workPaint.setStrokeWidth(mBorderWidth * 2);
- canvas.drawRect(dst, workPaint);
- }
-
- private Bitmap generateQuickContactIcon(Bitmap photo) {
-
- // Setup the drawing classes
- Bitmap icon = Bitmap.createBitmap(mIconSize, mIconSize, Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(icon);
-
- // Copy in the photo
- Paint photoPaint = new Paint();
- photoPaint.setDither(true);
- photoPaint.setFilterBitmap(true);
- Rect src = new Rect(0,0, photo.getWidth(),photo.getHeight());
- Rect dst = new Rect(0,0, mIconSize, mIconSize);
- canvas.drawBitmap(photo, src, dst, photoPaint);
-
- drawBorder(canvas, dst);
-
- Drawable overlay = mContext.getResources().getDrawableForDensity(
- com.android.internal.R.drawable.quickcontact_badge_overlay_dark, mIconDensity);
-
- overlay.setBounds(dst);
- overlay.draw(canvas);
- canvas.setBitmap(null);
-
- return icon;
- }
-
- /**
- * Generates a phone number shortcut icon. Adds an overlay describing the type of the phone
- * number, and if there is a photo also adds the call action icon.
- */
- private Bitmap generatePhoneNumberIcon(Bitmap photo, int phoneType, String phoneLabel,
- int actionResId) {
- final Resources r = mContext.getResources();
- final float density = r.getDisplayMetrics().density;
-
- Bitmap phoneIcon = ((BitmapDrawable) r.getDrawableForDensity(actionResId, mIconDensity))
- .getBitmap();
-
- // Setup the drawing classes
- Bitmap icon = Bitmap.createBitmap(mIconSize, mIconSize, Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(icon);
-
- // Copy in the photo
- Paint photoPaint = new Paint();
- photoPaint.setDither(true);
- photoPaint.setFilterBitmap(true);
- Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());
- Rect dst = new Rect(0, 0, mIconSize, mIconSize);
- canvas.drawBitmap(photo, src, dst, photoPaint);
-
- drawBorder(canvas, dst);
-
- // Create an overlay for the phone number type
- CharSequence overlay = Phone.getTypeLabel(r, phoneType, phoneLabel);
-
- if (overlay != null) {
- TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
- textPaint.setTextSize(r.getDimension(R.dimen.shortcut_overlay_text_size));
- textPaint.setColor(r.getColor(R.color.textColorIconOverlay));
- textPaint.setShadowLayer(4f, 0, 2f, r.getColor(R.color.textColorIconOverlayShadow));
-
- final FontMetricsInt fmi = textPaint.getFontMetricsInt();
-
- // First fill in a darker background around the text to be drawn
- final Paint workPaint = new Paint();
- workPaint.setColor(mBorderColor);
- workPaint.setStyle(Paint.Style.FILL);
- final int textPadding = r
- .getDimensionPixelOffset(R.dimen.shortcut_overlay_text_background_padding);
- final int textBandHeight = (fmi.descent - fmi.ascent) + textPadding * 2;
- dst.set(0 + mBorderWidth, mIconSize - textBandHeight, mIconSize - mBorderWidth,
- mIconSize - mBorderWidth);
- canvas.drawRect(dst, workPaint);
-
- final float sidePadding = mBorderWidth;
- overlay = TextUtils.ellipsize(overlay, textPaint, mIconSize - 2 * sidePadding,
- TruncateAt.END_SMALL);
- final float textWidth = textPaint.measureText(overlay, 0, overlay.length());
- canvas.drawText(overlay, 0, overlay.length(), (mIconSize - textWidth) / 2, mIconSize
- - fmi.descent - textPadding, textPaint);
- }
-
- // Draw the phone action icon as an overlay
- src.set(0, 0, phoneIcon.getWidth(), phoneIcon.getHeight());
- int iconWidth = icon.getWidth();
- dst.set(iconWidth - ((int) (20 * density)), -1,
- iconWidth, ((int) (19 * density)));
- dst.offset(-mBorderWidth, mBorderWidth);
- canvas.drawBitmap(phoneIcon, src, dst, photoPaint);
-
- canvas.setBitmap(null);
-
- return icon;
- }
-}
diff --git a/src/com/android/contacts/model/AccountTypeManager.java b/src/com/android/contacts/model/AccountTypeManager.java
deleted file mode 100644
index b4a3e2b..0000000
--- a/src/com/android/contacts/model/AccountTypeManager.java
+++ /dev/null
@@ -1,816 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.accounts.OnAccountsUpdateListener;
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.IContentService;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SyncAdapterType;
-import android.content.SyncStatusObserver;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.SystemClock;
-import android.provider.ContactsContract;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.TimingLogger;
-
-import com.android.contacts.ContactsUtils;
-import com.android.contacts.list.ContactListFilterController;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountTypeWithDataSet;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.ExchangeAccountType;
-import com.android.contacts.model.account.ExternalAccountType;
-import com.android.contacts.model.account.FallbackAccountType;
-import com.android.contacts.model.account.GoogleAccountType;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.util.Constants;
-import com.android.internal.util.Objects;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * Singleton holder for all parsed {@link AccountType} available on the
- * system, typically filled through {@link PackageManager} queries.
- */
-public abstract class AccountTypeManager {
- static final String TAG = "AccountTypeManager";
-
- public static final String ACCOUNT_TYPE_SERVICE = "contactAccountTypes";
-
- /**
- * Requests the singleton instance of {@link AccountTypeManager} with data bound from
- * the available authenticators. This method can safely be called from the UI thread.
- */
- public static AccountTypeManager getInstance(Context context) {
- context = context.getApplicationContext();
- AccountTypeManager service =
- (AccountTypeManager) context.getSystemService(ACCOUNT_TYPE_SERVICE);
- if (service == null) {
- service = createAccountTypeManager(context);
- Log.e(TAG, "No account type service in context: " + context);
- }
- return service;
- }
-
- public static synchronized AccountTypeManager createAccountTypeManager(Context context) {
- return new AccountTypeManagerImpl(context);
- }
-
- /**
- * Returns the list of all accounts (if contactWritableOnly is false) or just the list of
- * contact writable accounts (if contactWritableOnly is true).
- */
- // TODO: Consider splitting this into getContactWritableAccounts() and getAllAccounts()
- public abstract List<AccountWithDataSet> getAccounts(boolean contactWritableOnly);
-
- /**
- * Returns the list of accounts that are group writable.
- */
- public abstract List<AccountWithDataSet> getGroupWritableAccounts();
-
- public abstract AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet);
-
- public final AccountType getAccountType(String accountType, String dataSet) {
- return getAccountType(AccountTypeWithDataSet.get(accountType, dataSet));
- }
-
- public final AccountType getAccountTypeForAccount(AccountWithDataSet account) {
- return getAccountType(account.getAccountTypeWithDataSet());
- }
-
- /**
- * @return Unmodifiable map from {@link AccountTypeWithDataSet}s to {@link AccountType}s
- * which support the "invite" feature and have one or more account.
- *
- * This is a filtered down and more "usable" list compared to
- * {@link #getAllInvitableAccountTypes}, where usable is defined as:
- * (1) making sure that the app that contributed the account type is not disabled
- * (in order to avoid presenting the user with an option that does nothing), and
- * (2) that there is at least one raw contact with that account type in the database
- * (assuming that the user probably doesn't use that account type).
- *
- * Warning: Don't use on the UI thread because this can scan the database.
- */
- public abstract Map<AccountTypeWithDataSet, AccountType> getUsableInvitableAccountTypes();
-
- /**
- * Find the best {@link DataKind} matching the requested
- * {@link AccountType#accountType}, {@link AccountType#dataSet}, and {@link DataKind#mimeType}.
- * If no direct match found, we try searching {@link FallbackAccountType}.
- */
- public DataKind getKindOrFallback(String accountType, String dataSet, String mimeType) {
- final AccountType type = getAccountType(accountType, dataSet);
- return type == null ? null : type.getKindForMimetype(mimeType);
- }
-
- /**
- * Returns all registered {@link AccountType}s, including extension ones.
- *
- * @param contactWritableOnly if true, it only returns ones that support writing contacts.
- */
- public abstract List<AccountType> getAccountTypes(boolean contactWritableOnly);
-
- /**
- * @param contactWritableOnly if true, it only returns ones that support writing contacts.
- * @return true when this instance contains the given account.
- */
- public boolean contains(AccountWithDataSet account, boolean contactWritableOnly) {
- for (AccountWithDataSet account_2 : getAccounts(false)) {
- if (account.equals(account_2)) {
- return true;
- }
- }
- return false;
- }
-}
-
-class AccountTypeManagerImpl extends AccountTypeManager
- implements OnAccountsUpdateListener, SyncStatusObserver {
-
- private static final Map<AccountTypeWithDataSet, AccountType>
- EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP =
- Collections.unmodifiableMap(new HashMap<AccountTypeWithDataSet, AccountType>());
-
- /**
- * A sample contact URI used to test whether any activities will respond to an
- * invitable intent with the given URI as the intent data. This doesn't need to be
- * specific to a real contact because an app that intercepts the intent should probably do so
- * for all types of contact URIs.
- */
- private static final Uri SAMPLE_CONTACT_URI = ContactsContract.Contacts.getLookupUri(
- 1, "xxx");
-
- private Context mContext;
- private AccountManager mAccountManager;
-
- private AccountType mFallbackAccountType;
-
- private List<AccountWithDataSet> mAccounts = Lists.newArrayList();
- private List<AccountWithDataSet> mContactWritableAccounts = Lists.newArrayList();
- private List<AccountWithDataSet> mGroupWritableAccounts = Lists.newArrayList();
- private Map<AccountTypeWithDataSet, AccountType> mAccountTypesWithDataSets = Maps.newHashMap();
- private Map<AccountTypeWithDataSet, AccountType> mInvitableAccountTypes =
- EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP;
-
- private final InvitableAccountTypeCache mInvitableAccountTypeCache;
-
- /**
- * The boolean value is equal to true if the {@link InvitableAccountTypeCache} has been
- * initialized. False otherwise.
- */
- private final AtomicBoolean mInvitablesCacheIsInitialized = new AtomicBoolean(false);
-
- /**
- * The boolean value is equal to true if the {@link FindInvitablesTask} is still executing.
- * False otherwise.
- */
- private final AtomicBoolean mInvitablesTaskIsRunning = new AtomicBoolean(false);
-
- private static final int MESSAGE_LOAD_DATA = 0;
- private static final int MESSAGE_PROCESS_BROADCAST_INTENT = 1;
-
- private HandlerThread mListenerThread;
- private Handler mListenerHandler;
-
- private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
- private final Runnable mCheckFilterValidityRunnable = new Runnable () {
- @Override
- public void run() {
- ContactListFilterController.getInstance(mContext).checkFilterValidity(true);
- }
- };
-
- private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Message msg = mListenerHandler.obtainMessage(MESSAGE_PROCESS_BROADCAST_INTENT, intent);
- mListenerHandler.sendMessage(msg);
- }
-
- };
-
- /* A latch that ensures that asynchronous initialization completes before data is used */
- private volatile CountDownLatch mInitializationLatch = new CountDownLatch(1);
-
- private static final Comparator<Account> ACCOUNT_COMPARATOR = new Comparator<Account>() {
- @Override
- public int compare(Account a, Account b) {
- String aDataSet = null;
- String bDataSet = null;
- if (a instanceof AccountWithDataSet) {
- aDataSet = ((AccountWithDataSet) a).dataSet;
- }
- if (b instanceof AccountWithDataSet) {
- bDataSet = ((AccountWithDataSet) b).dataSet;
- }
-
- if (Objects.equal(a.name, b.name) && Objects.equal(a.type, b.type)
- && Objects.equal(aDataSet, bDataSet)) {
- return 0;
- } else if (b.name == null || b.type == null) {
- return -1;
- } else if (a.name == null || a.type == null) {
- return 1;
- } else {
- int diff = a.name.compareTo(b.name);
- if (diff != 0) {
- return diff;
- }
- diff = a.type.compareTo(b.type);
- if (diff != 0) {
- return diff;
- }
-
- // Accounts without data sets get sorted before those that have them.
- if (aDataSet != null) {
- return bDataSet == null ? 1 : aDataSet.compareTo(bDataSet);
- } else {
- return -1;
- }
- }
- }
- };
-
- /**
- * Internal constructor that only performs initial parsing.
- */
- public AccountTypeManagerImpl(Context context) {
- mContext = context;
- mFallbackAccountType = new FallbackAccountType(context);
-
- mAccountManager = AccountManager.get(mContext);
-
- mListenerThread = new HandlerThread("AccountChangeListener");
- mListenerThread.start();
- mListenerHandler = new Handler(mListenerThread.getLooper()) {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MESSAGE_LOAD_DATA:
- loadAccountsInBackground();
- break;
- case MESSAGE_PROCESS_BROADCAST_INTENT:
- processBroadcastIntent((Intent) msg.obj);
- break;
- }
- }
- };
-
- mInvitableAccountTypeCache = new InvitableAccountTypeCache();
-
- // Request updates when packages or accounts change
- IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
- filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- filter.addDataScheme("package");
- mContext.registerReceiver(mBroadcastReceiver, filter);
- IntentFilter sdFilter = new IntentFilter();
- sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
- sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
- mContext.registerReceiver(mBroadcastReceiver, sdFilter);
-
- // Request updates when locale is changed so that the order of each field will
- // be able to be changed on the locale change.
- filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
- mContext.registerReceiver(mBroadcastReceiver, filter);
-
- mAccountManager.addOnAccountsUpdatedListener(this, mListenerHandler, false);
-
- ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, this);
-
- mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
- }
-
- @Override
- public void onStatusChanged(int which) {
- mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
- }
-
- public void processBroadcastIntent(Intent intent) {
- mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA);
- }
-
- /* This notification will arrive on the background thread */
- public void onAccountsUpdated(Account[] accounts) {
- // Refresh to catch any changed accounts
- loadAccountsInBackground();
- }
-
- /**
- * Returns instantly if accounts and account types have already been loaded.
- * Otherwise waits for the background thread to complete the loading.
- */
- void ensureAccountsLoaded() {
- CountDownLatch latch = mInitializationLatch;
- if (latch == null) {
- return;
- }
- while (true) {
- try {
- latch.await();
- return;
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- }
-
- /**
- * Loads account list and corresponding account types (potentially with data sets). Always
- * called on a background thread.
- */
- protected void loadAccountsInBackground() {
- if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
- Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground start");
- }
- TimingLogger timings = new TimingLogger(TAG, "loadAccountsInBackground");
- final long startTime = SystemClock.currentThreadTimeMillis();
- final long startTimeWall = SystemClock.elapsedRealtime();
-
- // Account types, keyed off the account type and data set concatenation.
- final Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet =
- Maps.newHashMap();
-
- // The same AccountTypes, but keyed off {@link RawContacts#ACCOUNT_TYPE}. Since there can
- // be multiple account types (with different data sets) for the same type of account, each
- // type string may have multiple AccountType entries.
- final Map<String, List<AccountType>> accountTypesByType = Maps.newHashMap();
-
- final List<AccountWithDataSet> allAccounts = Lists.newArrayList();
- final List<AccountWithDataSet> contactWritableAccounts = Lists.newArrayList();
- final List<AccountWithDataSet> groupWritableAccounts = Lists.newArrayList();
- final Set<String> extensionPackages = Sets.newHashSet();
-
- final AccountManager am = mAccountManager;
- final IContentService cs = ContentResolver.getContentService();
-
- try {
- final SyncAdapterType[] syncs = cs.getSyncAdapterTypes();
- final AuthenticatorDescription[] auths = am.getAuthenticatorTypes();
-
- // First process sync adapters to find any that provide contact data.
- for (SyncAdapterType sync : syncs) {
- if (!ContactsContract.AUTHORITY.equals(sync.authority)) {
- // Skip sync adapters that don't provide contact data.
- continue;
- }
-
- // Look for the formatting details provided by each sync
- // adapter, using the authenticator to find general resources.
- final String type = sync.accountType;
- final AuthenticatorDescription auth = findAuthenticator(auths, type);
- if (auth == null) {
- Log.w(TAG, "No authenticator found for type=" + type + ", ignoring it.");
- continue;
- }
-
- AccountType accountType;
- if (GoogleAccountType.ACCOUNT_TYPE.equals(type)) {
- accountType = new GoogleAccountType(mContext, auth.packageName);
- } else if (ExchangeAccountType.isExchangeType(type)) {
- accountType = new ExchangeAccountType(mContext, auth.packageName, type);
- } else {
- // TODO: use syncadapter package instead, since it provides resources
- Log.d(TAG, "Registering external account type=" + type
- + ", packageName=" + auth.packageName);
- accountType = new ExternalAccountType(mContext, auth.packageName, false);
- }
- if (!accountType.isInitialized()) {
- if (accountType.isEmbedded()) {
- throw new IllegalStateException("Problem initializing embedded type "
- + accountType.getClass().getCanonicalName());
- } else {
- // Skip external account types that couldn't be initialized.
- continue;
- }
- }
-
- accountType.accountType = auth.type;
- accountType.titleRes = auth.labelId;
- accountType.iconRes = auth.iconId;
-
- addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
-
- // Check to see if the account type knows of any other non-sync-adapter packages
- // that may provide other data sets of contact data.
- extensionPackages.addAll(accountType.getExtensionPackageNames());
- }
-
- // If any extension packages were specified, process them as well.
- if (!extensionPackages.isEmpty()) {
- Log.d(TAG, "Registering " + extensionPackages.size() + " extension packages");
- for (String extensionPackage : extensionPackages) {
- ExternalAccountType accountType =
- new ExternalAccountType(mContext, extensionPackage, true);
- if (!accountType.isInitialized()) {
- // Skip external account types that couldn't be initialized.
- continue;
- }
- if (!accountType.hasContactsMetadata()) {
- Log.w(TAG, "Skipping extension package " + extensionPackage + " because"
- + " it doesn't have the CONTACTS_STRUCTURE metadata");
- continue;
- }
- if (TextUtils.isEmpty(accountType.accountType)) {
- Log.w(TAG, "Skipping extension package " + extensionPackage + " because"
- + " the CONTACTS_STRUCTURE metadata doesn't have the accountType"
- + " attribute");
- continue;
- }
- Log.d(TAG, "Registering extension package account type="
- + accountType.accountType + ", dataSet=" + accountType.dataSet
- + ", packageName=" + extensionPackage);
-
- addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
- }
- }
- } catch (RemoteException e) {
- Log.w(TAG, "Problem loading accounts: " + e.toString());
- }
- timings.addSplit("Loaded account types");
-
- // Map in accounts to associate the account names with each account type entry.
- Account[] accounts = mAccountManager.getAccounts();
- for (Account account : accounts) {
- boolean syncable = false;
- try {
- syncable = cs.getIsSyncable(account, ContactsContract.AUTHORITY) > 0;
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot obtain sync flag for account: " + account, e);
- }
-
- if (syncable) {
- List<AccountType> accountTypes = accountTypesByType.get(account.type);
- if (accountTypes != null) {
- // Add an account-with-data-set entry for each account type that is
- // authenticated by this account.
- for (AccountType accountType : accountTypes) {
- AccountWithDataSet accountWithDataSet = new AccountWithDataSet(
- account.name, account.type, accountType.dataSet);
- allAccounts.add(accountWithDataSet);
- if (accountType.areContactsWritable()) {
- contactWritableAccounts.add(accountWithDataSet);
- }
- if (accountType.isGroupMembershipEditable()) {
- groupWritableAccounts.add(accountWithDataSet);
- }
- }
- }
- }
- }
-
- Collections.sort(allAccounts, ACCOUNT_COMPARATOR);
- Collections.sort(contactWritableAccounts, ACCOUNT_COMPARATOR);
- Collections.sort(groupWritableAccounts, ACCOUNT_COMPARATOR);
-
- timings.addSplit("Loaded accounts");
-
- synchronized (this) {
- mAccountTypesWithDataSets = accountTypesByTypeAndDataSet;
- mAccounts = allAccounts;
- mContactWritableAccounts = contactWritableAccounts;
- mGroupWritableAccounts = groupWritableAccounts;
- mInvitableAccountTypes = findAllInvitableAccountTypes(
- mContext, allAccounts, accountTypesByTypeAndDataSet);
- }
-
- timings.dumpToLog();
- final long endTimeWall = SystemClock.elapsedRealtime();
- final long endTime = SystemClock.currentThreadTimeMillis();
-
- Log.i(TAG, "Loaded meta-data for " + mAccountTypesWithDataSets.size() + " account types, "
- + mAccounts.size() + " accounts in " + (endTimeWall - startTimeWall) + "ms(wall) "
- + (endTime - startTime) + "ms(cpu)");
-
- if (mInitializationLatch != null) {
- mInitializationLatch.countDown();
- mInitializationLatch = null;
- }
- if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
- Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground finish");
- }
-
- // Check filter validity since filter may become obsolete after account update. It must be
- // done from UI thread.
- mMainThreadHandler.post(mCheckFilterValidityRunnable);
- }
-
- // Bookkeeping method for tracking the known account types in the given maps.
- private void addAccountType(AccountType accountType,
- Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet,
- Map<String, List<AccountType>> accountTypesByType) {
- accountTypesByTypeAndDataSet.put(accountType.getAccountTypeAndDataSet(), accountType);
- List<AccountType> accountsForType = accountTypesByType.get(accountType.accountType);
- if (accountsForType == null) {
- accountsForType = Lists.newArrayList();
- }
- accountsForType.add(accountType);
- accountTypesByType.put(accountType.accountType, accountsForType);
- }
-
- /**
- * Find a specific {@link AuthenticatorDescription} in the provided list
- * that matches the given account type.
- */
- protected static AuthenticatorDescription findAuthenticator(AuthenticatorDescription[] auths,
- String accountType) {
- for (AuthenticatorDescription auth : auths) {
- if (accountType.equals(auth.type)) {
- return auth;
- }
- }
- return null;
- }
-
- /**
- * Return list of all known, contact writable {@link AccountWithDataSet}'s.
- */
- @Override
- public List<AccountWithDataSet> getAccounts(boolean contactWritableOnly) {
- ensureAccountsLoaded();
- return contactWritableOnly ? mContactWritableAccounts : mAccounts;
- }
-
- /**
- * Return the list of all known, group writable {@link AccountWithDataSet}'s.
- */
- public List<AccountWithDataSet> getGroupWritableAccounts() {
- ensureAccountsLoaded();
- return mGroupWritableAccounts;
- }
-
- /**
- * Find the best {@link DataKind} matching the requested
- * {@link AccountType#accountType}, {@link AccountType#dataSet}, and {@link DataKind#mimeType}.
- * If no direct match found, we try searching {@link FallbackAccountType}.
- */
- @Override
- public DataKind getKindOrFallback(String accountType, String dataSet, String mimeType) {
- ensureAccountsLoaded();
- DataKind kind = null;
-
- // Try finding account type and kind matching request
- final AccountType type = mAccountTypesWithDataSets.get(
- AccountTypeWithDataSet.get(accountType, dataSet));
- if (type != null) {
- kind = type.getKindForMimetype(mimeType);
- }
-
- if (kind == null) {
- // Nothing found, so try fallback as last resort
- kind = mFallbackAccountType.getKindForMimetype(mimeType);
- }
-
- if (kind == null) {
- Log.w(TAG, "Unknown type=" + accountType + ", mime=" + mimeType);
- }
-
- return kind;
- }
-
- /**
- * Return {@link AccountType} for the given account type and data set.
- */
- @Override
- public AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet) {
- ensureAccountsLoaded();
- synchronized (this) {
- AccountType type = mAccountTypesWithDataSets.get(accountTypeWithDataSet);
- return type != null ? type : mFallbackAccountType;
- }
- }
-
- /**
- * @return Unmodifiable map from {@link AccountTypeWithDataSet}s to {@link AccountType}s
- * which support the "invite" feature and have one or more account. This is an unfiltered
- * list. See {@link #getUsableInvitableAccountTypes()}.
- */
- private Map<AccountTypeWithDataSet, AccountType> getAllInvitableAccountTypes() {
- ensureAccountsLoaded();
- return mInvitableAccountTypes;
- }
-
- @Override
- public Map<AccountTypeWithDataSet, AccountType> getUsableInvitableAccountTypes() {
- ensureAccountsLoaded();
- // Since this method is not thread-safe, it's possible for multiple threads to encounter
- // the situation where (1) the cache has not been initialized yet or
- // (2) an async task to refresh the account type list in the cache has already been
- // started. Hence we use {@link AtomicBoolean}s and return cached values immediately
- // while we compute the actual result in the background. We use this approach instead of
- // using "synchronized" because computing the account type list involves a DB read, and
- // can potentially cause a deadlock situation if this method is called from code which
- // holds the DB lock. The trade-off of potentially having an incorrect list of invitable
- // account types for a short period of time seems more manageable than enforcing the
- // context in which this method is called.
-
- // Computing the list of usable invitable account types is done on the fly as requested.
- // If this method has never been called before, then block until the list has been computed.
- if (!mInvitablesCacheIsInitialized.get()) {
- mInvitableAccountTypeCache.setCachedValue(findUsableInvitableAccountTypes(mContext));
- mInvitablesCacheIsInitialized.set(true);
- } else {
- // Otherwise, there is a value in the cache. If the value has expired and
- // an async task has not already been started by another thread, then kick off a new
- // async task to compute the list.
- if (mInvitableAccountTypeCache.isExpired() &&
- mInvitablesTaskIsRunning.compareAndSet(false, true)) {
- new FindInvitablesTask().execute();
- }
- }
-
- return mInvitableAccountTypeCache.getCachedValue();
- }
-
- /**
- * Return all {@link AccountType}s with at least one account which supports "invite", i.e.
- * its {@link AccountType#getInviteContactActivityClassName()} is not empty.
- */
- @VisibleForTesting
- static Map<AccountTypeWithDataSet, AccountType> findAllInvitableAccountTypes(Context context,
- Collection<AccountWithDataSet> accounts,
- Map<AccountTypeWithDataSet, AccountType> accountTypesByTypeAndDataSet) {
- HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
- for (AccountWithDataSet account : accounts) {
- AccountTypeWithDataSet accountTypeWithDataSet = account.getAccountTypeWithDataSet();
- AccountType type = accountTypesByTypeAndDataSet.get(accountTypeWithDataSet);
- if (type == null) continue; // just in case
- if (result.containsKey(accountTypeWithDataSet)) continue;
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Type " + accountTypeWithDataSet
- + " inviteClass=" + type.getInviteContactActivityClassName());
- }
- if (!TextUtils.isEmpty(type.getInviteContactActivityClassName())) {
- result.put(accountTypeWithDataSet, type);
- }
- }
- return Collections.unmodifiableMap(result);
- }
-
- /**
- * Return all usable {@link AccountType}s that support the "invite" feature from the
- * list of all potential invitable account types (retrieved from
- * {@link #getAllInvitableAccountTypes}). A usable invitable account type means:
- * (1) there is at least 1 raw contact in the database with that account type, and
- * (2) the app contributing the account type is not disabled.
- *
- * Warning: Don't use on the UI thread because this can scan the database.
- */
- private Map<AccountTypeWithDataSet, AccountType> findUsableInvitableAccountTypes(
- Context context) {
- Map<AccountTypeWithDataSet, AccountType> allInvitables = getAllInvitableAccountTypes();
- if (allInvitables.isEmpty()) {
- return EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP;
- }
-
- final HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
- result.putAll(allInvitables);
-
- final PackageManager packageManager = context.getPackageManager();
- for (AccountTypeWithDataSet accountTypeWithDataSet : allInvitables.keySet()) {
- AccountType accountType = allInvitables.get(accountTypeWithDataSet);
-
- // Make sure that account types don't come from apps that are disabled.
- Intent invitableIntent = ContactsUtils.getInvitableIntent(accountType,
- SAMPLE_CONTACT_URI);
- if (invitableIntent == null) {
- result.remove(accountTypeWithDataSet);
- continue;
- }
- ResolveInfo resolveInfo = packageManager.resolveActivity(invitableIntent,
- PackageManager.MATCH_DEFAULT_ONLY);
- if (resolveInfo == null) {
- // If we can't find an activity to start for this intent, then there's no point in
- // showing this option to the user.
- result.remove(accountTypeWithDataSet);
- continue;
- }
-
- // Make sure that there is at least 1 raw contact with this account type. This check
- // is non-trivial and should not be done on the UI thread.
- if (!accountTypeWithDataSet.hasData(context)) {
- result.remove(accountTypeWithDataSet);
- }
- }
-
- return Collections.unmodifiableMap(result);
- }
-
- @Override
- public List<AccountType> getAccountTypes(boolean contactWritableOnly) {
- ensureAccountsLoaded();
- final List<AccountType> accountTypes = Lists.newArrayList();
- synchronized (this) {
- for (AccountType type : mAccountTypesWithDataSets.values()) {
- if (!contactWritableOnly || type.areContactsWritable()) {
- accountTypes.add(type);
- }
- }
- }
- return accountTypes;
- }
-
- /**
- * Background task to find all usable {@link AccountType}s that support the "invite" feature
- * from the list of all potential invitable account types. Once the work is completed,
- * the list of account types is stored in the {@link AccountTypeManager}'s
- * {@link InvitableAccountTypeCache}.
- */
- private class FindInvitablesTask extends AsyncTask<Void, Void,
- Map<AccountTypeWithDataSet, AccountType>> {
-
- @Override
- protected Map<AccountTypeWithDataSet, AccountType> doInBackground(Void... params) {
- return findUsableInvitableAccountTypes(mContext);
- }
-
- @Override
- protected void onPostExecute(Map<AccountTypeWithDataSet, AccountType> accountTypes) {
- mInvitableAccountTypeCache.setCachedValue(accountTypes);
- mInvitablesTaskIsRunning.set(false);
- }
- }
-
- /**
- * This cache holds a list of invitable {@link AccountTypeWithDataSet}s, in the form of a
- * {@link Map<AccountTypeWithDataSet, AccountType>}. Note that the cached value is valid only
- * for {@link #TIME_TO_LIVE} milliseconds.
- */
- private static final class InvitableAccountTypeCache {
-
- /**
- * The cached {@link #mInvitableAccountTypes} list expires after this number of milliseconds
- * has elapsed.
- */
- private static final long TIME_TO_LIVE = 60000;
-
- private Map<AccountTypeWithDataSet, AccountType> mInvitableAccountTypes;
-
- private long mTimeLastSet;
-
- /**
- * Returns true if the data in this cache is stale and needs to be refreshed. Returns false
- * otherwise.
- */
- public boolean isExpired() {
- return SystemClock.elapsedRealtime() - mTimeLastSet > TIME_TO_LIVE;
- }
-
- /**
- * Returns the cached value. Note that the caller is responsible for checking
- * {@link #isExpired()} to ensure that the value is not stale.
- */
- public Map<AccountTypeWithDataSet, AccountType> getCachedValue() {
- return mInvitableAccountTypes;
- }
-
- public void setCachedValue(Map<AccountTypeWithDataSet, AccountType> map) {
- mInvitableAccountTypes = map;
- mTimeLastSet = SystemClock.elapsedRealtime();
- }
- }
-}
diff --git a/src/com/android/contacts/model/Contact.java b/src/com/android/contacts/model/Contact.java
index ede2101..0314c3c 100644
--- a/src/com/android/contacts/model/Contact.java
+++ b/src/com/android/contacts/model/Contact.java
@@ -25,8 +25,7 @@
import android.provider.ContactsContract.DisplayNameSources;
import com.android.contacts.GroupMetaData;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.dataitem.DataItem;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.StreamItemEntry;
import com.google.common.annotations.VisibleForTesting;
@@ -389,7 +388,7 @@
// Iterate through raw-contacts; if we find a writable on, return its ID.
for (RawContact rawContact : getRawContacts()) {
- AccountType accountType = rawContact.getAccountType();
+ AccountType accountType = rawContact.getAccountType(context);
if (accountType != null && accountType.areContactsWritable()) {
return rawContact.getId();
}
@@ -429,10 +428,7 @@
}
RawContact rawContact = mRawContacts.get(0);
- ArrayList<ContentValues> result = new ArrayList<ContentValues>();
- for (DataItem dataItem : rawContact.getDataItems()) {
- result.add(dataItem.getContentValues());
- }
+ ArrayList<ContentValues> result = rawContact.getContentValues();
// If the photo was loaded using the URI, create an entry for the photo
// binary data.
diff --git a/src/com/android/contacts/model/ContactLoader.java b/src/com/android/contacts/model/ContactLoader.java
index f9f630d..3c1fc9d 100644
--- a/src/com/android/contacts/model/ContactLoader.java
+++ b/src/com/android/contacts/model/ContactLoader.java
@@ -41,10 +41,11 @@
import android.util.Log;
import android.util.LongSparseArray;
-import com.android.contacts.ContactsUtils;
import com.android.contacts.GroupMetaData;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
import com.android.contacts.model.dataitem.DataItem;
import com.android.contacts.model.dataitem.PhoneDataItem;
import com.android.contacts.model.dataitem.PhotoDataItem;
@@ -52,7 +53,7 @@
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.StreamItemEntry;
import com.android.contacts.util.StreamItemPhotoEntry;
-import com.android.contacts.util.UriUtils;
+import com.android.contacts.common.util.UriUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
@@ -382,12 +383,12 @@
// First time to see this raw contact id, so create a new entity, and
// add it to the result's entities.
currentRawContactId = rawContactId;
- rawContact = new RawContact(getContext(), loadRawContactValues(cursor));
+ rawContact = new RawContact(loadRawContactValues(cursor));
rawContactsBuilder.add(rawContact);
}
if (!cursor.isNull(ContactQuery.DATA_ID)) {
ContentValues data = loadDataValues(cursor);
- final DataItem item = rawContact.addDataItemValues(data);
+ rawContact.addDataItemValues(data);
if (!cursor.isNull(ContactQuery.PRESENCE)
|| !cursor.isNull(ContactQuery.STATUS)) {
@@ -804,7 +805,7 @@
* overwritten
*/
private void computeFormattedPhoneNumbers(Contact contactData) {
- final String countryIso = ContactsUtils.getCurrentCountryIso(getContext());
+ final String countryIso = GeoUtil.getCurrentCountryIso(getContext());
final ImmutableList<RawContact> rawContacts = contactData.getRawContacts();
final int rawContactCount = rawContacts.size();
for (int rawContactIndex = 0; rawContactIndex < rawContactCount; rawContactIndex++) {
@@ -865,7 +866,7 @@
continue; // Already notified for this raw contact.
}
mNotifiedRawContactIds.add(rawContactId);
- final AccountType accountType = rawContact.getAccountType();
+ final AccountType accountType = rawContact.getAccountType(context);
final String serviceName = accountType.getViewContactNotifyServiceClassName();
final String servicePackageName = accountType.getViewContactNotifyServicePackageName();
if (!TextUtils.isEmpty(serviceName) && !TextUtils.isEmpty(servicePackageName)) {
diff --git a/src/com/android/contacts/model/RawContact.java b/src/com/android/contacts/model/RawContact.java
index 6d4a881..9ded00e 100644
--- a/src/com/android/contacts/model/RawContact.java
+++ b/src/com/android/contacts/model/RawContact.java
@@ -20,13 +20,18 @@
import android.content.Context;
import android.content.Entity;
import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
+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.model.dataitem.DataItem;
+import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.List;
@@ -42,20 +47,76 @@
* DataItem objects that represent contact information elements (like phone
* numbers, email, address, etc.).
*/
-public class RawContact {
+final public class RawContact implements Parcelable {
- private final Context mContext;
private AccountTypeManager mAccountTypeManager;
private final ContentValues mValues;
private final ArrayList<NamedDataItem> mDataItems;
- public static class NamedDataItem {
- public final Uri uri;
- public final DataItem dataItem;
+ final public static class NamedDataItem implements Parcelable {
+ public final Uri mUri;
- public NamedDataItem(Uri uri, DataItem dataItem) {
- this.uri = uri;
- this.dataItem = dataItem;
+ // This use to be a DataItem. DataItem creation is now delayed until the point of request
+ // since there is no benefit to storing them here due to the multiple inheritance.
+ // Eventually instanceof still has to be used anyways to determine which sub-class of
+ // DataItem it is. And having parent DataItem's here makes it very difficult to serialize or
+ // parcelable.
+ //
+ // Instead of having a common DataItem super class, we should refactor this to be a generic
+ // Object where the object is a concrete class that no longer relies on ContentValues.
+ // (this will also make the classes easier to use).
+ // Since instanceof is used later anyways, having a list of Objects won't hurt and is no
+ // worse than having a DataItem.
+ public final ContentValues mContentValues;
+
+ public NamedDataItem(Uri uri, ContentValues values) {
+ this.mUri = uri;
+ this.mContentValues = values;
+ }
+
+ public NamedDataItem(Parcel parcel) {
+ this.mUri = parcel.readParcelable(Uri.class.getClassLoader());
+ this.mContentValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int i) {
+ parcel.writeParcelable(mUri, i);
+ parcel.writeParcelable(mContentValues, i);
+ }
+
+ public static final Parcelable.Creator<NamedDataItem> CREATOR
+ = new Parcelable.Creator<NamedDataItem>() {
+
+ @Override
+ public NamedDataItem createFromParcel(Parcel parcel) {
+ return new NamedDataItem(parcel);
+ }
+
+ @Override
+ public NamedDataItem[] newArray(int i) {
+ return new NamedDataItem[i];
+ }
+ };
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(mUri, mContentValues);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) return false;
+ if (getClass() != obj.getClass()) return false;
+
+ final NamedDataItem other = (NamedDataItem) obj;
+ return Objects.equal(mUri, other.mUri) &&
+ Objects.equal(mContentValues, other.mContentValues);
}
}
@@ -63,7 +124,7 @@
final ContentValues values = entity.getEntityValues();
final ArrayList<Entity.NamedContentValues> subValues = entity.getSubValues();
- RawContact rawContact = new RawContact(null, values);
+ RawContact rawContact = new RawContact(values);
for (Entity.NamedContentValues subValue : subValues) {
rawContact.addNamedDataItemValues(subValue.uri, subValue.values);
}
@@ -72,31 +133,60 @@
/**
* A RawContact object can be created with or without a context.
- *
- * The context is used for the buildString() member function in DataItem objects,
- * specifically for retrieving an instance of AccountTypeManager. It is okay to
- * pass in null for the context in which case, you will not be able to call buildString(),
- * getDataKind(), or getAccountType() from a DataItem object.
*/
- public RawContact(Context context) {
- this(context, new ContentValues());
+ public RawContact() {
+ this(new ContentValues());
}
- public RawContact(Context context, ContentValues values) {
- mContext = context;
+ public RawContact(ContentValues values) {
mValues = values;
mDataItems = new ArrayList<NamedDataItem>();
}
- public AccountTypeManager getAccountTypeManager() {
- if (mAccountTypeManager == null) {
- mAccountTypeManager = AccountTypeManager.getInstance(mContext);
- }
- return mAccountTypeManager;
+ /**
+ * Constructor for the parcelable.
+ *
+ * @param parcel The parcel to de-serialize from.
+ */
+ private RawContact(Parcel parcel) {
+ mValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+ mDataItems = Lists.newArrayList();
+ parcel.readTypedList(mDataItems, NamedDataItem.CREATOR);
}
- public Context getContext() {
- return mContext;
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel parcel, int i) {
+ parcel.writeParcelable(mValues, i);
+ parcel.writeTypedList(mDataItems);
+ }
+
+ /**
+ * Create for building the parcelable.
+ */
+ public static final Parcelable.Creator<RawContact> CREATOR
+ = new Parcelable.Creator<RawContact>() {
+
+ @Override
+ public RawContact createFromParcel(Parcel parcel) {
+ return new RawContact(parcel);
+ }
+
+ @Override
+ public RawContact[] newArray(int i) {
+ return new RawContact[i];
+ }
+ };
+
+ public AccountTypeManager getAccountTypeManager(Context context) {
+ if (mAccountTypeManager == null) {
+ mAccountTypeManager = AccountTypeManager.getInstance(context);
+ }
+ return mAccountTypeManager;
}
public ContentValues getValues() {
@@ -182,8 +272,8 @@
return getValues().getAsBoolean(Contacts.STARRED);
}
- public AccountType getAccountType() {
- return getAccountTypeManager().getAccountType(getAccountTypeString(), getDataSet());
+ public AccountType getAccountType(Context context) {
+ return getAccountTypeManager(context).getAccountType(getAccountTypeString(), getDataSet());
}
/**
@@ -231,38 +321,58 @@
/**
* Creates and inserts a DataItem object that wraps the content values, and returns it.
*/
- public DataItem addDataItemValues(ContentValues values) {
- final NamedDataItem namedItem = addNamedDataItemValues(Data.CONTENT_URI, values);
- return namedItem.dataItem;
+ public void addDataItemValues(ContentValues values) {
+ addNamedDataItemValues(Data.CONTENT_URI, values);
}
public NamedDataItem addNamedDataItemValues(Uri uri, ContentValues values) {
- final NamedDataItem namedItem = new NamedDataItem(uri, DataItem.createFrom(this, values));
+ final NamedDataItem namedItem = new NamedDataItem(uri, values);
mDataItems.add(namedItem);
return namedItem;
}
- public List<DataItem> getDataItems() {
- final ArrayList<DataItem> list = new ArrayList<DataItem>();
+ public ArrayList<ContentValues> getContentValues() {
+ final ArrayList<ContentValues> list = Lists.newArrayListWithCapacity(mDataItems.size());
for (NamedDataItem dataItem : mDataItems) {
- if (Data.CONTENT_URI.equals(dataItem.uri)) {
- list.add(dataItem.dataItem);
+ if (Data.CONTENT_URI.equals(dataItem.mUri)) {
+ list.add(dataItem.mContentValues);
}
}
return list;
}
- public List<NamedDataItem> getNamedDataItems() {
- return mDataItems;
+ public List<DataItem> getDataItems() {
+ final ArrayList<DataItem> list = Lists.newArrayListWithCapacity(mDataItems.size());
+ for (NamedDataItem dataItem : mDataItems) {
+ if (Data.CONTENT_URI.equals(dataItem.mUri)) {
+ list.add(DataItem.createFrom(dataItem.mContentValues));
+ }
+ }
+ return list;
}
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("RawContact: ").append(mValues);
for (RawContact.NamedDataItem namedDataItem : mDataItems) {
- sb.append("\n ").append(namedDataItem.uri);
- sb.append("\n -> ").append(namedDataItem.dataItem.getContentValues());
+ sb.append("\n ").append(namedDataItem.mUri);
+ sb.append("\n -> ").append(namedDataItem.mContentValues);
}
return sb.toString();
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(mValues, mDataItems);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) return false;
+ if (getClass() != obj.getClass()) return false;
+
+ RawContact other = (RawContact) obj;
+ return Objects.equal(mValues, other.mValues) &&
+ Objects.equal(mDataItems, other.mDataItems);
+ }
}
diff --git a/src/com/android/contacts/model/RawContactDelta.java b/src/com/android/contacts/model/RawContactDelta.java
index 2ee9d5c..373eabd 100644
--- a/src/com/android/contacts/model/RawContactDelta.java
+++ b/src/com/android/contacts/model/RawContactDelta.java
@@ -24,28 +24,21 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.provider.BaseColumns;
-import android.provider.ContactsContract.CommonDataKinds.Email;
-import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Profile;
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.dataitem.DataItem;
-import com.android.contacts.test.NeededForTesting;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.test.NeededForTesting;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+
/**
* Contains a {@link RawContact} and records any modifications separately so the
* original {@link RawContact} can be swapped out with a newer version and the
@@ -97,8 +90,8 @@
final RawContactDelta rawContactDelta = new RawContactDelta();
rawContactDelta.mValues = ValuesDelta.fromBefore(before.getValues());
rawContactDelta.mValues.setIdColumn(RawContacts._ID);
- for (DataItem dataItem : before.getDataItems()) {
- rawContactDelta.addEntry(ValuesDelta.fromBefore(dataItem.getContentValues()));
+ for (final ContentValues values : before.getContentValues()) {
+ rawContactDelta.addEntry(ValuesDelta.fromBefore(values));
}
return rawContactDelta;
}
@@ -560,544 +553,4 @@
}
};
- /**
- * Type of {@link ContentValues} that maintains both an original state and a
- * modified version of that state. This allows us to build insert, update,
- * or delete operations based on a "before" {@link Entity} snapshot.
- */
- public static class ValuesDelta implements Parcelable {
- protected ContentValues mBefore;
- protected ContentValues mAfter;
- protected String mIdColumn = BaseColumns._ID;
- private boolean mFromTemplate;
-
- /**
- * Next value to assign to {@link #mIdColumn} when building an insert
- * operation through {@link #fromAfter(ContentValues)}. This is used so
- * we can concretely reference this {@link ValuesDelta} before it has
- * been persisted.
- */
- protected static int sNextInsertId = -1;
-
- protected ValuesDelta() {
- }
-
- /**
- * Create {@link ValuesDelta}, using the given object as the
- * "before" state, usually from an {@link Entity}.
- */
- public static ValuesDelta fromBefore(ContentValues before) {
- final ValuesDelta entry = new ValuesDelta();
- entry.mBefore = before;
- entry.mAfter = new ContentValues();
- return entry;
- }
-
- /**
- * Create {@link ValuesDelta}, using the given object as the "after"
- * state, usually when we are inserting a row instead of updating.
- */
- public static ValuesDelta fromAfter(ContentValues after) {
- final ValuesDelta entry = new ValuesDelta();
- entry.mBefore = null;
- entry.mAfter = after;
-
- // Assign temporary id which is dropped before insert.
- entry.mAfter.put(entry.mIdColumn, sNextInsertId--);
- return entry;
- }
-
- @NeededForTesting
- public ContentValues getAfter() {
- return mAfter;
- }
-
- public boolean containsKey(String key) {
- return ((mAfter != null && mAfter.containsKey(key)) ||
- (mBefore != null && mBefore.containsKey(key)));
- }
-
- public String getAsString(String key) {
- if (mAfter != null && mAfter.containsKey(key)) {
- return mAfter.getAsString(key);
- } else if (mBefore != null && mBefore.containsKey(key)) {
- return mBefore.getAsString(key);
- } else {
- return null;
- }
- }
-
- public byte[] getAsByteArray(String key) {
- if (mAfter != null && mAfter.containsKey(key)) {
- return mAfter.getAsByteArray(key);
- } else if (mBefore != null && mBefore.containsKey(key)) {
- return mBefore.getAsByteArray(key);
- } else {
- return null;
- }
- }
-
- public Long getAsLong(String key) {
- if (mAfter != null && mAfter.containsKey(key)) {
- return mAfter.getAsLong(key);
- } else if (mBefore != null && mBefore.containsKey(key)) {
- return mBefore.getAsLong(key);
- } else {
- return null;
- }
- }
-
- public Integer getAsInteger(String key) {
- return getAsInteger(key, null);
- }
-
- public Integer getAsInteger(String key, Integer defaultValue) {
- if (mAfter != null && mAfter.containsKey(key)) {
- return mAfter.getAsInteger(key);
- } else if (mBefore != null && mBefore.containsKey(key)) {
- return mBefore.getAsInteger(key);
- } else {
- return defaultValue;
- }
- }
-
- public boolean isChanged(String key) {
- if (mAfter == null || !mAfter.containsKey(key)) {
- return false;
- }
-
- Object newValue = mAfter.get(key);
- Object oldValue = mBefore.get(key);
-
- if (oldValue == null) {
- return newValue != null;
- }
-
- return !oldValue.equals(newValue);
- }
-
- public String getMimetype() {
- return getAsString(Data.MIMETYPE);
- }
-
- public Long getId() {
- return getAsLong(mIdColumn);
- }
-
- public void setIdColumn(String idColumn) {
- mIdColumn = idColumn;
- }
-
- public boolean isPrimary() {
- final Long isPrimary = getAsLong(Data.IS_PRIMARY);
- return isPrimary == null ? false : isPrimary != 0;
- }
-
- public void setFromTemplate(boolean isFromTemplate) {
- mFromTemplate = isFromTemplate;
- }
-
- public boolean isFromTemplate() {
- return mFromTemplate;
- }
-
- public boolean isSuperPrimary() {
- final Long isSuperPrimary = getAsLong(Data.IS_SUPER_PRIMARY);
- return isSuperPrimary == null ? false : isSuperPrimary != 0;
- }
-
- public boolean beforeExists() {
- return (mBefore != null && mBefore.containsKey(mIdColumn));
- }
-
- /**
- * When "after" is present, then visible
- */
- public boolean isVisible() {
- return (mAfter != null);
- }
-
- /**
- * When "after" is wiped, action is "delete"
- */
- public boolean isDelete() {
- return beforeExists() && (mAfter == null);
- }
-
- /**
- * When no "before" or "after", is transient
- */
- public boolean isTransient() {
- return (mBefore == null) && (mAfter == null);
- }
-
- /**
- * When "after" has some changes, action is "update"
- */
- public boolean isUpdate() {
- if (!beforeExists() || mAfter == null || mAfter.size() == 0) {
- return false;
- }
- for (String key : mAfter.keySet()) {
- Object newValue = mAfter.get(key);
- Object oldValue = mBefore.get(key);
- if (oldValue == null) {
- if (newValue != null) {
- return true;
- }
- } else if (!oldValue.equals(newValue)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * When "after" has no changes, action is no-op
- */
- public boolean isNoop() {
- return beforeExists() && (mAfter != null && mAfter.size() == 0);
- }
-
- /**
- * When no "before" id, and has "after", action is "insert"
- */
- public boolean isInsert() {
- return !beforeExists() && (mAfter != null);
- }
-
- public void markDeleted() {
- mAfter = null;
- }
-
- /**
- * Ensure that our internal structure is ready for storing updates.
- */
- private void ensureUpdate() {
- if (mAfter == null) {
- mAfter = new ContentValues();
- }
- }
-
- public void put(String key, String value) {
- ensureUpdate();
- mAfter.put(key, value);
- }
-
- public void put(String key, byte[] value) {
- ensureUpdate();
- mAfter.put(key, value);
- }
-
- public void put(String key, int value) {
- ensureUpdate();
- mAfter.put(key, value);
- }
-
- public void put(String key, long value) {
- ensureUpdate();
- mAfter.put(key, value);
- }
-
- public void putNull(String key) {
- ensureUpdate();
- mAfter.putNull(key);
- }
-
- public void copyStringFrom(ValuesDelta from, String key) {
- ensureUpdate();
- put(key, from.getAsString(key));
- }
-
- /**
- * Return set of all keys defined through this object.
- */
- public Set<String> keySet() {
- final HashSet<String> keys = Sets.newHashSet();
-
- if (mBefore != null) {
- for (Map.Entry<String, Object> entry : mBefore.valueSet()) {
- keys.add(entry.getKey());
- }
- }
-
- if (mAfter != null) {
- for (Map.Entry<String, Object> entry : mAfter.valueSet()) {
- keys.add(entry.getKey());
- }
- }
-
- return keys;
- }
-
- /**
- * Return complete set of "before" and "after" values mixed together,
- * giving full state regardless of edits.
- */
- public ContentValues getCompleteValues() {
- final ContentValues values = new ContentValues();
- if (mBefore != null) {
- values.putAll(mBefore);
- }
- if (mAfter != null) {
- values.putAll(mAfter);
- }
- if (values.containsKey(GroupMembership.GROUP_ROW_ID)) {
- // Clear to avoid double-definitions, and prefer rows
- values.remove(GroupMembership.GROUP_SOURCE_ID);
- }
-
- return values;
- }
-
- /**
- * Merge the "after" values from the given {@link ValuesDelta},
- * discarding any existing "after" state. This is typically used when
- * re-parenting changes onto an updated {@link Entity}.
- */
- public static ValuesDelta mergeAfter(ValuesDelta local, ValuesDelta remote) {
- // Bail early if trying to merge delete with missing local
- if (local == null && (remote.isDelete() || remote.isTransient())) return null;
-
- // Create local version if none exists yet
- if (local == null) local = new ValuesDelta();
-
- if (!local.beforeExists()) {
- // Any "before" record is missing, so take all values as "insert"
- local.mAfter = remote.getCompleteValues();
- } else {
- // Existing "update" with only "after" values
- local.mAfter = remote.mAfter;
- }
-
- return local;
- }
-
- @Override
- public boolean equals(Object object) {
- if (object instanceof ValuesDelta) {
- // Only exactly equal with both are identical subsets
- final ValuesDelta other = (ValuesDelta)object;
- return this.subsetEquals(other) && other.subsetEquals(this);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- toString(builder);
- return builder.toString();
- }
-
- /**
- * Helper for building string representation, leveraging the given
- * {@link StringBuilder} to minimize allocations.
- */
- public void toString(StringBuilder builder) {
- builder.append("{ ");
- builder.append("IdColumn=");
- builder.append(mIdColumn);
- builder.append(", FromTemplate=");
- builder.append(mFromTemplate);
- builder.append(", ");
- for (String key : this.keySet()) {
- builder.append(key);
- builder.append("=");
- builder.append(this.getAsString(key));
- builder.append(", ");
- }
- builder.append("}");
- }
-
- /**
- * Check if the given {@link ValuesDelta} is both a subset of this
- * object, and any defined keys have equal values.
- */
- public boolean subsetEquals(ValuesDelta other) {
- for (String key : this.keySet()) {
- final String ourValue = this.getAsString(key);
- final String theirValue = other.getAsString(key);
- if (ourValue == null) {
- // If they have value when we're null, no match
- if (theirValue != null) return false;
- } else {
- // If both values defined and aren't equal, no match
- if (!ourValue.equals(theirValue)) return false;
- }
- }
- // All values compared and matched
- return true;
- }
-
- /**
- * Build a {@link ContentProviderOperation} that will transform our
- * "before" state into our "after" state, using insert, update, or
- * delete as needed.
- */
- public ContentProviderOperation.Builder buildDiff(Uri targetUri) {
- Builder builder = null;
- if (isInsert()) {
- // Changed values are "insert" back-referenced to Contact
- mAfter.remove(mIdColumn);
- builder = ContentProviderOperation.newInsert(targetUri);
- builder.withValues(mAfter);
- } else if (isDelete()) {
- // When marked for deletion and "before" exists, then "delete"
- builder = ContentProviderOperation.newDelete(targetUri);
- builder.withSelection(mIdColumn + "=" + getId(), null);
- } else if (isUpdate()) {
- // When has changes and "before" exists, then "update"
- builder = ContentProviderOperation.newUpdate(targetUri);
- builder.withSelection(mIdColumn + "=" + getId(), null);
- builder.withValues(mAfter);
- }
- return builder;
- }
-
- /** {@inheritDoc} */
- public int describeContents() {
- // Nothing special about this parcel
- return 0;
- }
-
- /** {@inheritDoc} */
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeParcelable(mBefore, flags);
- dest.writeParcelable(mAfter, flags);
- dest.writeString(mIdColumn);
- }
-
- public void readFromParcel(Parcel source) {
- final ClassLoader loader = getClass().getClassLoader();
- mBefore = source.<ContentValues> readParcelable(loader);
- mAfter = source.<ContentValues> readParcelable(loader);
- mIdColumn = source.readString();
- }
-
- public static final Parcelable.Creator<ValuesDelta> CREATOR = new Parcelable.Creator<ValuesDelta>() {
- public ValuesDelta createFromParcel(Parcel in) {
- final ValuesDelta values = new ValuesDelta();
- values.readFromParcel(in);
- return values;
- }
-
- public ValuesDelta[] newArray(int size) {
- return new ValuesDelta[size];
- }
- };
-
- public void setGroupRowId(long groupId) {
- put(GroupMembership.GROUP_ROW_ID, groupId);
- }
-
- public Long getGroupRowId() {
- return getAsLong(GroupMembership.GROUP_ROW_ID);
- }
-
- public void setPhoto(byte[] value) {
- put(Photo.PHOTO, value);
- }
-
- public byte[] getPhoto() {
- return getAsByteArray(Photo.PHOTO);
- }
-
- public void setSuperPrimary(boolean val) {
- if (val) {
- put(Data.IS_SUPER_PRIMARY, 1);
- } else {
- put(Data.IS_SUPER_PRIMARY, 0);
- }
- }
-
- public void setPhoneticFamilyName(String value) {
- put(StructuredName.PHONETIC_FAMILY_NAME, value);
- }
-
- public void setPhoneticMiddleName(String value) {
- put(StructuredName.PHONETIC_MIDDLE_NAME, value);
- }
-
- public void setPhoneticGivenName(String value) {
- put(StructuredName.PHONETIC_GIVEN_NAME, value);
- }
-
- public String getPhoneticFamilyName() {
- return getAsString(StructuredName.PHONETIC_FAMILY_NAME);
- }
-
- public String getPhoneticMiddleName() {
- return getAsString(StructuredName.PHONETIC_MIDDLE_NAME);
- }
-
- public String getPhoneticGivenName() {
- return getAsString(StructuredName.PHONETIC_GIVEN_NAME);
- }
-
- public String getDisplayName() {
- return getAsString(StructuredName.DISPLAY_NAME);
- }
-
- public void setDisplayName(String name) {
- if (name == null) {
- putNull(StructuredName.DISPLAY_NAME);
- } else {
- put(StructuredName.DISPLAY_NAME, name);
- }
- }
-
- public void copyStructuredNameFieldsFrom(ValuesDelta name) {
- copyStringFrom(name, StructuredName.DISPLAY_NAME);
-
- copyStringFrom(name, StructuredName.GIVEN_NAME);
- copyStringFrom(name, StructuredName.FAMILY_NAME);
- copyStringFrom(name, StructuredName.PREFIX);
- copyStringFrom(name, StructuredName.MIDDLE_NAME);
- copyStringFrom(name, StructuredName.SUFFIX);
-
- copyStringFrom(name, StructuredName.PHONETIC_GIVEN_NAME);
- copyStringFrom(name, StructuredName.PHONETIC_MIDDLE_NAME);
- copyStringFrom(name, StructuredName.PHONETIC_FAMILY_NAME);
-
- copyStringFrom(name, StructuredName.FULL_NAME_STYLE);
- copyStringFrom(name, StructuredName.PHONETIC_NAME_STYLE);
- }
-
- public String getPhoneNumber() {
- return getAsString(Phone.NUMBER);
- }
-
- public String getPhoneNormalizedNumber() {
- return getAsString(Phone.NORMALIZED_NUMBER);
- }
-
- public boolean phoneHasType() {
- return containsKey(Phone.TYPE);
- }
-
- public int getPhoneType() {
- return getAsInteger(Phone.TYPE);
- }
-
- public String getPhoneLabel() {
- return getAsString(Phone.LABEL);
- }
-
- public String getEmailData() {
- return getAsString(Email.DATA);
- }
-
- public boolean emailHasType() {
- return containsKey(Email.TYPE);
- }
-
- public int getEmailType() {
- return getAsInteger(Email.TYPE);
- }
-
- public String getEmailLabel() {
- return getAsString(Email.LABEL);
- }
- }
}
diff --git a/src/com/android/contacts/model/RawContactDeltaList.java b/src/com/android/contacts/model/RawContactDeltaList.java
index 82dd494..1a9eb71 100644
--- a/src/com/android/contacts/model/RawContactDeltaList.java
+++ b/src/com/android/contacts/model/RawContactDeltaList.java
@@ -30,7 +30,7 @@
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.google.common.collect.Lists;
import java.util.ArrayList;
@@ -49,17 +49,7 @@
private boolean mSplitRawContacts;
private long[] mJoinWithRawContactIds;
- private RawContactDeltaList() {
- }
-
- /**
- * Create an {@link RawContactDeltaList} that contains the given {@link RawContactDelta},
- * usually when inserting a new {@link Contacts} entry.
- */
- public static RawContactDeltaList fromSingle(RawContactDelta delta) {
- final RawContactDeltaList state = new RawContactDeltaList();
- state.add(delta);
- return state;
+ public RawContactDeltaList() {
}
/**
@@ -85,6 +75,11 @@
*/
public static RawContactDeltaList fromIterator(Iterator<?> iterator) {
final RawContactDeltaList state = new RawContactDeltaList();
+ state.addAll(iterator);
+ return state;
+ }
+
+ public void addAll(Iterator<?> iterator) {
// Perform background query to pull contact details
while (iterator.hasNext()) {
// Read all contacts into local deltas to prepare for edits
@@ -93,9 +88,8 @@
? RawContact.createFrom((Entity) nextObject)
: (RawContact) nextObject;
final RawContactDelta rawContactDelta = RawContactDelta.fromBefore(before);
- state.add(rawContactDelta);
+ add(rawContactDelta);
}
- return state;
}
/**
diff --git a/src/com/android/contacts/model/RawContactModifier.java b/src/com/android/contacts/model/RawContactModifier.java
index 0c12c94..f1f5697 100644
--- a/src/com/android/contacts/model/RawContactModifier.java
+++ b/src/com/android/contacts/model/RawContactModifier.java
@@ -47,15 +47,17 @@
import android.util.SparseIntArray;
import com.android.contacts.ContactsUtils;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.ValuesDelta;
+import com.android.contacts.common.util.CommonDateUtils;
import com.android.contacts.editor.EventFieldEditorView;
import com.android.contacts.editor.PhoneticNameEditorView;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.EditField;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.account.AccountType.EventEditType;
-import com.android.contacts.model.account.GoogleAccountType;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditField;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.AccountType.EventEditType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.StructuredNameDataItem;
import com.android.contacts.util.DateUtils;
import com.android.contacts.util.NameConverter;
@@ -1263,10 +1265,10 @@
final ParsePosition position = new ParsePosition(0);
boolean yearOptional = false;
- Date date = DateUtils.DATE_AND_TIME_FORMAT.parse(dateString, position);
+ Date date = CommonDateUtils.DATE_AND_TIME_FORMAT.parse(dateString, position);
if (date == null) {
yearOptional = true;
- date = DateUtils.NO_YEAR_DATE_FORMAT.parse(dateString, position);
+ date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(dateString, position);
}
if (date != null) {
if (yearOptional && !suitableType.isYearOptional()) {
@@ -1283,7 +1285,7 @@
calendar.set(defaultYear, month, day,
EventFieldEditorView.getDefaultHourForBirthday(), 0, 0);
values.put(Event.START_DATE,
- DateUtils.FULL_DATE_FORMAT.format(calendar.getTime()));
+ CommonDateUtils.FULL_DATE_FORMAT.format(calendar.getTime()));
}
}
newState.addEntry(ValuesDelta.fromAfter(values));
diff --git a/src/com/android/contacts/model/account/AccountType.java b/src/com/android/contacts/model/account/AccountType.java
deleted file mode 100644
index edd17a0..0000000
--- a/src/com/android/contacts/model/account/AccountType.java
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.graphics.drawable.Drawable;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.RawContacts;
-import android.view.inputmethod.EditorInfo;
-import android.widget.EditText;
-
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.dataitem.DataKind;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * Internal structure that represents constraints and styles for a specific data
- * source, such as the various data types they support, including details on how
- * those types should be rendered and edited.
- * <p>
- * In the future this may be inflated from XML defined by a data source.
- */
-public abstract class AccountType {
- private static final String TAG = "AccountType";
-
- /**
- * The {@link RawContacts#ACCOUNT_TYPE} these constraints apply to.
- */
- public String accountType = null;
-
- /**
- * The {@link RawContacts#DATA_SET} these constraints apply to.
- */
- public String dataSet = null;
-
- /**
- * Package that resources should be loaded from. Will be null for embedded types, in which
- * case resources are stored in this package itself.
- *
- * TODO Clean up {@link #resourcePackageName}, {@link #syncAdapterPackageName} and
- * {@link #getViewContactNotifyServicePackageName()}.
- *
- * There's the following invariants:
- * - {@link #syncAdapterPackageName} is always set to the actual sync adapter package name.
- * - {@link #resourcePackageName} too is set to the same value, unless {@link #isEmbedded()},
- * in which case it'll be null.
- * There's an unfortunate exception of {@link FallbackAccountType}. Even though it
- * {@link #isEmbedded()}, but we set non-null to {@link #resourcePackageName} for unit tests.
- */
- public String resourcePackageName;
- /**
- * The package name for the authenticator (for the embedded types, i.e. Google and Exchange)
- * or the sync adapter (for external type, including extensions).
- */
- public String syncAdapterPackageName;
-
- public int titleRes;
- public int iconRes;
-
- /**
- * Set of {@link DataKind} supported by this source.
- */
- private ArrayList<DataKind> mKinds = Lists.newArrayList();
-
- /**
- * Lookup map of {@link #mKinds} on {@link DataKind#mimeType}.
- */
- private HashMap<String, DataKind> mMimeKinds = Maps.newHashMap();
-
- protected boolean mIsInitialized;
-
- protected static class DefinitionException extends Exception {
- public DefinitionException(String message) {
- super(message);
- }
-
- public DefinitionException(String message, Exception inner) {
- super(message, inner);
- }
- }
-
- /**
- * Whether this account type was able to be fully initialized. This may be false if
- * (for example) the package name associated with the account type could not be found.
- */
- public final boolean isInitialized() {
- return mIsInitialized;
- }
-
- /**
- * @return Whether this type is an "embedded" type. i.e. any of {@link FallbackAccountType},
- * {@link GoogleAccountType} or {@link ExternalAccountType}.
- *
- * If an embedded type cannot be initialized (i.e. if {@link #isInitialized()} returns
- * {@code false}) it's considered critical, and the application will crash. On the other
- * hand if it's not an embedded type, we just skip loading the type.
- */
- public boolean isEmbedded() {
- return true;
- }
-
- public boolean isExtension() {
- return false;
- }
-
- /**
- * @return True if contacts can be created and edited using this app. If false,
- * there could still be an external editor as provided by
- * {@link #getEditContactActivityClassName()} or {@link #getCreateContactActivityClassName()}
- */
- public abstract boolean areContactsWritable();
-
- /**
- * Returns an optional custom edit activity.
- *
- * Only makes sense for non-embedded account types.
- * The activity class should reside in the sync adapter package as determined by
- * {@link #syncAdapterPackageName}.
- */
- public String getEditContactActivityClassName() {
- return null;
- }
-
- /**
- * Returns an optional custom new contact activity.
- *
- * Only makes sense for non-embedded account types.
- * The activity class should reside in the sync adapter package as determined by
- * {@link #syncAdapterPackageName}.
- */
- public String getCreateContactActivityClassName() {
- return null;
- }
-
- /**
- * Returns an optional custom invite contact activity.
- *
- * Only makes sense for non-embedded account types.
- * The activity class should reside in the sync adapter package as determined by
- * {@link #syncAdapterPackageName}.
- */
- public String getInviteContactActivityClassName() {
- return null;
- }
-
- /**
- * Returns an optional service that can be launched whenever a contact is being looked at.
- * This allows the sync adapter to provide more up-to-date information.
- *
- * The service class should reside in the sync adapter package as determined by
- * {@link #getViewContactNotifyServicePackageName()}.
- */
- public String getViewContactNotifyServiceClassName() {
- return null;
- }
-
- /**
- * TODO This is way too hacky should be removed.
- *
- * This is introduced for {@link GoogleAccountType} where {@link #syncAdapterPackageName}
- * is the authenticator package name but the notification service is in the sync adapter
- * package. See {@link #resourcePackageName} -- we should clean up those.
- */
- public String getViewContactNotifyServicePackageName() {
- return syncAdapterPackageName;
- }
-
- /** Returns an optional Activity string that can be used to view the group. */
- public String getViewGroupActivity() {
- return null;
- }
-
- /** Returns an optional Activity string that can be used to view the stream item. */
- public String getViewStreamItemActivity() {
- return null;
- }
-
- /** Returns an optional Activity string that can be used to view the stream item photo. */
- public String getViewStreamItemPhotoActivity() {
- return null;
- }
-
- public CharSequence getDisplayLabel(Context context) {
- // Note this resource is defined in the sync adapter package, not resourcePackageName.
- return getResourceText(context, syncAdapterPackageName, titleRes, accountType);
- }
-
- /**
- * @return resource ID for the "invite contact" action label, or -1 if not defined.
- */
- protected int getInviteContactActionResId() {
- return -1;
- }
-
- /**
- * @return resource ID for the "view group" label, or -1 if not defined.
- */
- protected int getViewGroupLabelResId() {
- return -1;
- }
-
- /**
- * Returns {@link AccountTypeWithDataSet} for this type.
- */
- public AccountTypeWithDataSet getAccountTypeAndDataSet() {
- return AccountTypeWithDataSet.get(accountType, dataSet);
- }
-
- /**
- * Returns a list of additional package names that should be inspected as additional
- * external account types. This allows for a primary account type to indicate other packages
- * that may not be sync adapters but which still provide contact data, perhaps under a
- * separate data set within the account.
- */
- public List<String> getExtensionPackageNames() {
- return new ArrayList<String>();
- }
-
- /**
- * Returns an optional custom label for the "invite contact" action, which will be shown on
- * the contact card. (If not defined, returns null.)
- */
- public CharSequence getInviteContactActionLabel(Context context) {
- // Note this resource is defined in the sync adapter package, not resourcePackageName.
- return getResourceText(context, syncAdapterPackageName, getInviteContactActionResId(), "");
- }
-
- /**
- * Returns a label for the "view group" action. If not defined, this falls back to our
- * own "View Updates" string
- */
- public CharSequence getViewGroupLabel(Context context) {
- // Note this resource is defined in the sync adapter package, not resourcePackageName.
- final CharSequence customTitle =
- getResourceText(context, syncAdapterPackageName, getViewGroupLabelResId(), null);
-
- return customTitle == null
- ? context.getText(R.string.view_updates_from_group)
- : customTitle;
- }
-
- /**
- * Return a string resource loaded from the given package (or the current package
- * if {@code packageName} is null), unless {@code resId} is -1, in which case it returns
- * {@code defaultValue}.
- *
- * (The behavior is undefined if the resource or package doesn't exist.)
- */
- @VisibleForTesting
- static CharSequence getResourceText(Context context, String packageName, int resId,
- String defaultValue) {
- if (resId != -1 && packageName != null) {
- final PackageManager pm = context.getPackageManager();
- return pm.getText(packageName, resId, null);
- } else if (resId != -1) {
- return context.getText(resId);
- } else {
- return defaultValue;
- }
- }
-
- public Drawable getDisplayIcon(Context context) {
- if (this.titleRes != -1 && this.syncAdapterPackageName != null) {
- final PackageManager pm = context.getPackageManager();
- return pm.getDrawable(this.syncAdapterPackageName, this.iconRes, null);
- } else if (this.titleRes != -1) {
- return context.getResources().getDrawable(this.iconRes);
- } else {
- return null;
- }
- }
-
- /**
- * Whether or not groups created under this account type have editable membership lists.
- */
- abstract public boolean isGroupMembershipEditable();
-
- /**
- * {@link Comparator} to sort by {@link DataKind#weight}.
- */
- private static Comparator<DataKind> sWeightComparator = new Comparator<DataKind>() {
- @Override
- public int compare(DataKind object1, DataKind object2) {
- return object1.weight - object2.weight;
- }
- };
-
- /**
- * Return list of {@link DataKind} supported, sorted by
- * {@link DataKind#weight}.
- */
- public ArrayList<DataKind> getSortedDataKinds() {
- // TODO: optimize by marking if already sorted
- Collections.sort(mKinds, sWeightComparator);
- return mKinds;
- }
-
- /**
- * Find the {@link DataKind} for a specific MIME-type, if it's handled by
- * this data source. If you may need a fallback {@link DataKind}, use
- * {@link AccountTypeManager#getKindOrFallback(String, String, String)}.
- */
- public DataKind getKindForMimetype(String mimeType) {
- return this.mMimeKinds.get(mimeType);
- }
-
- /**
- * Add given {@link DataKind} to list of those provided by this source.
- */
- public DataKind addKind(DataKind kind) throws DefinitionException {
- if (kind.mimeType == null) {
- throw new DefinitionException("null is not a valid mime type");
- }
- if (mMimeKinds.get(kind.mimeType) != null) {
- throw new DefinitionException(
- "mime type '" + kind.mimeType + "' is already registered");
- }
-
- kind.resourcePackageName = this.resourcePackageName;
- this.mKinds.add(kind);
- this.mMimeKinds.put(kind.mimeType, kind);
- return kind;
- }
-
- /**
- * Description of a specific "type" or "label" of a {@link DataKind} row,
- * such as {@link Phone#TYPE_WORK}. Includes constraints on total number of
- * rows a {@link Contacts} may have of this type, and details on how
- * user-defined labels are stored.
- */
- public static class EditType {
- public int rawValue;
- public int labelRes;
- public boolean secondary;
- /**
- * The number of entries allowed for the type. -1 if not specified.
- * @see DataKind#typeOverallMax
- */
- public int specificMax;
- public String customColumn;
-
- public EditType(int rawValue, int labelRes) {
- this.rawValue = rawValue;
- this.labelRes = labelRes;
- this.specificMax = -1;
- }
-
- public EditType setSecondary(boolean secondary) {
- this.secondary = secondary;
- return this;
- }
-
- public EditType setSpecificMax(int specificMax) {
- this.specificMax = specificMax;
- return this;
- }
-
- public EditType setCustomColumn(String customColumn) {
- this.customColumn = customColumn;
- return this;
- }
-
- @Override
- public boolean equals(Object object) {
- if (object instanceof EditType) {
- final EditType other = (EditType)object;
- return other.rawValue == rawValue;
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return rawValue;
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName()
- + " rawValue=" + rawValue
- + " labelRes=" + labelRes
- + " secondary=" + secondary
- + " specificMax=" + specificMax
- + " customColumn=" + customColumn;
- }
- }
-
- public static class EventEditType extends EditType {
- private boolean mYearOptional;
-
- public EventEditType(int rawValue, int labelRes) {
- super(rawValue, labelRes);
- }
-
- public boolean isYearOptional() {
- return mYearOptional;
- }
-
- public EventEditType setYearOptional(boolean yearOptional) {
- mYearOptional = yearOptional;
- return this;
- }
-
- @Override
- public String toString() {
- return super.toString() + " mYearOptional=" + mYearOptional;
- }
- }
-
- /**
- * Description of a user-editable field on a {@link DataKind} row, such as
- * {@link Phone#NUMBER}. Includes flags to apply to an {@link EditText}, and
- * the column where this field is stored.
- */
- public static final class EditField {
- public String column;
- public int titleRes;
- public int inputType;
- public int minLines;
- public boolean optional;
- public boolean shortForm;
- public boolean longForm;
-
- public EditField(String column, int titleRes) {
- this.column = column;
- this.titleRes = titleRes;
- }
-
- public EditField(String column, int titleRes, int inputType) {
- this(column, titleRes);
- this.inputType = inputType;
- }
-
- public EditField setOptional(boolean optional) {
- this.optional = optional;
- return this;
- }
-
- public EditField setShortForm(boolean shortForm) {
- this.shortForm = shortForm;
- return this;
- }
-
- public EditField setLongForm(boolean longForm) {
- this.longForm = longForm;
- return this;
- }
-
- public EditField setMinLines(int minLines) {
- this.minLines = minLines;
- return this;
- }
-
- public boolean isMultiLine() {
- return (inputType & EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE) != 0;
- }
-
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName() + ":"
- + " column=" + column
- + " titleRes=" + titleRes
- + " inputType=" + inputType
- + " minLines=" + minLines
- + " optional=" + optional
- + " shortForm=" + shortForm
- + " longForm=" + longForm;
- }
- }
-
- /**
- * Generic method of inflating a given {@link ContentValues} into a user-readable
- * {@link CharSequence}. For example, an inflater could combine the multiple
- * columns of {@link StructuredPostal} together using a string resource
- * before presenting to the user.
- */
- public interface StringInflater {
- public CharSequence inflateUsing(Context context, ContentValues values);
- }
-
- /**
- * Compare two {@link AccountType} by their {@link AccountType#getDisplayLabel} with the
- * current locale.
- */
- public static class DisplayLabelComparator implements Comparator<AccountType> {
- private final Context mContext;
- /** {@link Comparator} for the current locale. */
- private final Collator mCollator = Collator.getInstance();
-
- public DisplayLabelComparator(Context context) {
- mContext = context;
- }
-
- private String getDisplayLabel(AccountType type) {
- CharSequence label = type.getDisplayLabel(mContext);
- return (label == null) ? "" : label.toString();
- }
-
- @Override
- public int compare(AccountType lhs, AccountType rhs) {
- return mCollator.compare(getDisplayLabel(lhs), getDisplayLabel(rhs));
- }
- }
-}
diff --git a/src/com/android/contacts/model/account/AccountTypeWithDataSet.java b/src/com/android/contacts/model/account/AccountTypeWithDataSet.java
deleted file mode 100644
index ab0a891..0000000
--- a/src/com/android/contacts/model/account/AccountTypeWithDataSet.java
+++ /dev/null
@@ -1,99 +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.model.account;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.BaseColumns;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.RawContacts;
-import android.text.TextUtils;
-
-import com.google.common.base.Objects;
-
-
-/**
- * Encapsulates an "account type" string and a "data set" string.
- */
-public class AccountTypeWithDataSet {
-
- private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
- private static final Uri RAW_CONTACTS_URI_LIMIT_1 = RawContacts.CONTENT_URI.buildUpon()
- .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1").build();
-
- /** account type. Can be null for fallback type. */
- public final String accountType;
-
- /** dataSet may be null, but never be "". */
- public final String dataSet;
-
- private AccountTypeWithDataSet(String accountType, String dataSet) {
- this.accountType = TextUtils.isEmpty(accountType) ? null : accountType;
- this.dataSet = TextUtils.isEmpty(dataSet) ? null : dataSet;
- }
-
- public static AccountTypeWithDataSet get(String accountType, String dataSet) {
- return new AccountTypeWithDataSet(accountType, dataSet);
- }
-
- /**
- * Return true if there are any contacts in the database with this account type and data set.
- * Touches DB. Don't use in the UI thread.
- */
- public boolean hasData(Context context) {
- final String BASE_SELECTION = RawContacts.ACCOUNT_TYPE + " = ?";
- final String selection;
- final String[] args;
- if (TextUtils.isEmpty(dataSet)) {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
- args = new String[] {accountType};
- } else {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
- args = new String[] {accountType, dataSet};
- }
-
- final Cursor c = context.getContentResolver().query(RAW_CONTACTS_URI_LIMIT_1,
- ID_PROJECTION, selection, args, null);
- if (c == null) return false;
- try {
- return c.moveToFirst();
- } finally {
- c.close();
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (!(o instanceof AccountTypeWithDataSet)) return false;
-
- AccountTypeWithDataSet other = (AccountTypeWithDataSet) o;
- return Objects.equal(accountType, other.accountType)
- && Objects.equal(dataSet, other.dataSet);
- }
-
- @Override
- public int hashCode() {
- return (accountType == null ? 0 : accountType.hashCode())
- ^ (dataSet == null ? 0 : dataSet.hashCode());
- }
-
- @Override
- public String toString() {
- return "[" + accountType + "/" + dataSet + "]";
- }
-}
diff --git a/src/com/android/contacts/model/account/AccountWithDataSet.java b/src/com/android/contacts/model/account/AccountWithDataSet.java
deleted file mode 100644
index 03fcc02..0000000
--- a/src/com/android/contacts/model/account/AccountWithDataSet.java
+++ /dev/null
@@ -1,199 +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.model.account;
-
-import android.accounts.Account;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Parcel;
-import android.provider.BaseColumns;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.RawContacts;
-import android.text.TextUtils;
-
-import com.android.internal.util.Objects;
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Wrapper for an account that includes a data set (which may be null).
- */
-public class AccountWithDataSet extends Account {
- private static final String STRINGIFY_SEPARATOR = "\u0001";
- private static final String ARRAY_STRINGIFY_SEPARATOR = "\u0002";
-
- private static final Pattern STRINGIFY_SEPARATOR_PAT =
- Pattern.compile(Pattern.quote(STRINGIFY_SEPARATOR));
- private static final Pattern ARRAY_STRINGIFY_SEPARATOR_PAT =
- Pattern.compile(Pattern.quote(ARRAY_STRINGIFY_SEPARATOR));
-
- public final String dataSet;
- private final AccountTypeWithDataSet mAccountTypeWithDataSet;
-
- private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
- private static final Uri RAW_CONTACTS_URI_LIMIT_1 = RawContacts.CONTENT_URI.buildUpon()
- .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1").build();
-
-
- public AccountWithDataSet(String name, String type, String dataSet) {
- super(name, type);
- this.dataSet = dataSet;
- mAccountTypeWithDataSet = AccountTypeWithDataSet.get(type, dataSet);
- }
-
- public AccountWithDataSet(Parcel in) {
- super(in);
- this.dataSet = in.readString();
- mAccountTypeWithDataSet = AccountTypeWithDataSet.get(type, dataSet);
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- super.writeToParcel(dest, flags);
- dest.writeString(dataSet);
- }
-
- // For Parcelable
- public static final Creator<AccountWithDataSet> CREATOR = new Creator<AccountWithDataSet>() {
- public AccountWithDataSet createFromParcel(Parcel source) {
- return new AccountWithDataSet(source);
- }
-
- public AccountWithDataSet[] newArray(int size) {
- return new AccountWithDataSet[size];
- }
- };
-
- public AccountTypeWithDataSet getAccountTypeWithDataSet() {
- return mAccountTypeWithDataSet;
- }
-
- /**
- * Return {@code true} if this account has any contacts in the database.
- * Touches DB. Don't use in the UI thread.
- */
- public boolean hasData(Context context) {
- final String BASE_SELECTION =
- RawContacts.ACCOUNT_TYPE + " = ?" + " AND " + RawContacts.ACCOUNT_NAME + " = ?";
- final String selection;
- final String[] args;
- if (TextUtils.isEmpty(dataSet)) {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
- args = new String[] {type, name};
- } else {
- selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
- args = new String[] {type, name, dataSet};
- }
-
- final Cursor c = context.getContentResolver().query(RAW_CONTACTS_URI_LIMIT_1,
- ID_PROJECTION, selection, args, null);
- if (c == null) return false;
- try {
- return c.moveToFirst();
- } finally {
- c.close();
- }
- }
-
- @Override
- public boolean equals(Object o) {
- return (o instanceof AccountWithDataSet) && super.equals(o)
- && Objects.equal(((AccountWithDataSet) o).dataSet, dataSet);
- }
-
- @Override
- public int hashCode() {
- return 31 * super.hashCode()
- + (dataSet == null ? 0 : dataSet.hashCode());
- }
-
- @Override
- public String toString() {
- return "AccountWithDataSet {name=" + name + ", type=" + type + ", dataSet=" + dataSet + "}";
- }
-
- private static StringBuilder addStringified(StringBuilder sb, AccountWithDataSet account) {
- sb.append(account.name);
- sb.append(STRINGIFY_SEPARATOR);
- sb.append(account.type);
- sb.append(STRINGIFY_SEPARATOR);
- if (!TextUtils.isEmpty(account.dataSet)) sb.append(account.dataSet);
-
- return sb;
- }
-
- /**
- * Pack the instance into a string.
- */
- public String stringify() {
- return addStringified(new StringBuilder(), this).toString();
- }
-
- /**
- * Unpack a string created by {@link #stringify}.
- *
- * @throws IllegalArgumentException if it's an invalid string.
- */
- public static AccountWithDataSet unstringify(String s) {
- final String[] array = STRINGIFY_SEPARATOR_PAT.split(s, 3);
- if (array.length < 3) {
- throw new IllegalArgumentException("Invalid string " + s);
- }
- return new AccountWithDataSet(array[0], array[1],
- TextUtils.isEmpty(array[2]) ? null : array[2]);
- }
-
- /**
- * Pack a list of {@link AccountWithDataSet} into a string.
- */
- public static String stringifyList(List<AccountWithDataSet> accounts) {
- final StringBuilder sb = new StringBuilder();
-
- for (AccountWithDataSet account : accounts) {
- if (sb.length() > 0) {
- sb.append(ARRAY_STRINGIFY_SEPARATOR);
- }
- addStringified(sb, account);
- }
-
- return sb.toString();
- }
-
- /**
- * Unpack a list of {@link AccountWithDataSet} into a string.
- *
- * @throws IllegalArgumentException if it's an invalid string.
- */
- public static List<AccountWithDataSet> unstringifyList(String s) {
- final ArrayList<AccountWithDataSet> ret = Lists.newArrayList();
- if (TextUtils.isEmpty(s)) {
- return ret;
- }
-
- final String[] array = ARRAY_STRINGIFY_SEPARATOR_PAT.split(s);
-
- for (int i = 0; i < array.length; i++) {
- ret.add(unstringify(array[i]));
- }
-
- return ret;
- }
-}
diff --git a/src/com/android/contacts/model/account/BaseAccountType.java b/src/com/android/contacts/model/account/BaseAccountType.java
deleted file mode 100644
index 7f9e1ef..0000000
--- a/src/com/android/contacts/model/account/BaseAccountType.java
+++ /dev/null
@@ -1,1527 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
-import android.provider.ContactsContract.CommonDataKinds.Email;
-import android.provider.ContactsContract.CommonDataKinds.Event;
-import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
-import android.provider.ContactsContract.CommonDataKinds.Im;
-import android.provider.ContactsContract.CommonDataKinds.Nickname;
-import android.provider.ContactsContract.CommonDataKinds.Note;
-import android.provider.ContactsContract.CommonDataKinds.Organization;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.Relation;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.inputmethod.EditorInfo;
-
-import com.android.contacts.R;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.test.NeededForTesting;
-import com.android.contacts.util.DateUtils;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-public abstract class BaseAccountType extends AccountType {
- private static final String TAG = "BaseAccountType";
-
- protected static final int FLAGS_PHONE = EditorInfo.TYPE_CLASS_PHONE;
- protected static final int FLAGS_EMAIL = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
- protected static final int FLAGS_PERSON_NAME = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
- protected static final int FLAGS_PHONETIC = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_VARIATION_PHONETIC;
- protected static final int FLAGS_GENERIC_NAME = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS;
- protected static final int FLAGS_NOTE = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
- protected static final int FLAGS_EVENT = EditorInfo.TYPE_CLASS_TEXT;
- protected static final int FLAGS_WEBSITE = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_VARIATION_URI;
- protected static final int FLAGS_POSTAL = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_VARIATION_POSTAL_ADDRESS | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS
- | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
- protected static final int FLAGS_SIP_ADDRESS = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; // since SIP addresses have the same
- // basic format as email addresses
- protected static final int FLAGS_RELATION = EditorInfo.TYPE_CLASS_TEXT
- | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
-
- // Specify the maximum number of lines that can be used to display various field types. If no
- // value is specified for a particular type, we use the default value from {@link DataKind}.
- protected static final int MAX_LINES_FOR_POSTAL_ADDRESS = 10;
- protected static final int MAX_LINES_FOR_GROUP = 10;
- protected static final int MAX_LINES_FOR_NOTE = 100;
-
- private interface Tag {
- static final String DATA_KIND = "DataKind";
- static final String TYPE = "Type";
- }
-
- private interface Attr {
- static final String MAX_OCCURRENCE = "maxOccurs";
- static final String DATE_WITH_TIME = "dateWithTime";
- static final String YEAR_OPTIONAL = "yearOptional";
- static final String KIND = "kind";
- static final String TYPE = "type";
- }
-
- private interface Weight {
- static final int NONE = -1;
- static final int ORGANIZATION = 5;
- static final int PHONE = 10;
- static final int EMAIL = 15;
- static final int IM = 20;
- static final int STRUCTURED_POSTAL = 25;
- static final int NOTE = 110;
- static final int NICKNAME = 115;
- static final int WEBSITE = 120;
- static final int SIP_ADDRESS = 130;
- static final int EVENT = 150;
- static final int RELATIONSHIP = 160;
- static final int GROUP_MEMBERSHIP = 999;
- }
-
- public BaseAccountType() {
- this.accountType = null;
- this.dataSet = null;
- this.titleRes = R.string.account_phone;
- this.iconRes = R.mipmap.ic_launcher_contacts;
- }
-
- protected static EditType buildPhoneType(int type) {
- return new EditType(type, Phone.getTypeLabelResource(type));
- }
-
- protected static EditType buildEmailType(int type) {
- return new EditType(type, Email.getTypeLabelResource(type));
- }
-
- protected static EditType buildPostalType(int type) {
- return new EditType(type, StructuredPostal.getTypeLabelResource(type));
- }
-
- protected static EditType buildImType(int type) {
- return new EditType(type, Im.getProtocolLabelResource(type));
- }
-
- protected static EditType buildEventType(int type, boolean yearOptional) {
- return new EventEditType(type, Event.getTypeResource(type)).setYearOptional(yearOptional);
- }
-
- protected static EditType buildRelationType(int type) {
- return new EditType(type, Relation.getTypeLabelResource(type));
- }
-
- protected DataKind addDataKindStructuredName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
- R.string.nameLabelsGroup, -1, true, R.layout.structured_name_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
- R.string.full_name, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC));
-
- return kind;
- }
-
- protected DataKind addDataKindDisplayName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
- R.string.nameLabelsGroup, -1, true, R.layout.text_fields_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
- R.string.full_name, FLAGS_PERSON_NAME).setShortForm(true));
-
- boolean displayOrderPrimary =
- context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
-
- if (!displayOrderPrimary) {
- kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- } else {
- kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- }
-
- return kind;
- }
-
- protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
- R.string.name_phonetic, -1, true, R.layout.phonetic_name_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
- R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
-
- return kind;
- }
-
- protected DataKind addDataKindNickname(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Nickname.CONTENT_ITEM_TYPE,
- R.string.nicknameLabelsGroup, 115, true, R.layout.text_fields_editor_view));
- kind.typeOverallMax = 1;
- kind.actionHeader = new SimpleInflater(R.string.nicknameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Nickname.TYPE, Nickname.TYPE_DEFAULT);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
- FLAGS_PERSON_NAME));
-
- return kind;
- }
-
- protected DataKind addDataKindPhone(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup,
- 10, true, R.layout.text_fields_editor_view));
- kind.iconAltRes = R.drawable.ic_text_holo_light;
- kind.iconAltDescriptionRes = R.string.sms;
- kind.actionHeader = new PhoneActionInflater();
- kind.actionAltHeader = new PhoneActionAltInflater();
- kind.actionBody = new SimpleInflater(Phone.NUMBER);
- kind.typeColumn = Phone.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
- kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
- kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
- kind.typeList.add(
- buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Phone.LABEL));
- kind.typeList.add(buildPhoneType(Phone.TYPE_CALLBACK).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_ISDN).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER_FAX).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_TELEX).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_TTY_TDD).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_MOBILE).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_PAGER).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
-
- return kind;
- }
-
- protected DataKind addDataKindEmail(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Email.CONTENT_ITEM_TYPE, R.string.emailLabelsGroup,
- 15, true, R.layout.text_fields_editor_view));
- kind.actionHeader = new EmailActionInflater();
- kind.actionBody = new SimpleInflater(Email.DATA);
- kind.typeColumn = Email.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildEmailType(Email.TYPE_HOME));
- kind.typeList.add(buildEmailType(Email.TYPE_WORK));
- kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
- kind.typeList.add(buildEmailType(Email.TYPE_MOBILE));
- kind.typeList.add(
- buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Email.LABEL));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
-
- return kind;
- }
-
- protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(StructuredPostal.CONTENT_ITEM_TYPE,
- R.string.postalLabelsGroup, 25, true, R.layout.text_fields_editor_view));
- kind.actionHeader = new PostalActionInflater();
- kind.actionBody = new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS);
- kind.typeColumn = StructuredPostal.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME));
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK));
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER));
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_CUSTOM).setSecondary(true)
- .setCustomColumn(StructuredPostal.LABEL));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(
- new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
- FLAGS_POSTAL));
-
- kind.maxLinesForDisplay = MAX_LINES_FOR_POSTAL_ADDRESS;
-
- return kind;
- }
-
- protected DataKind addDataKindIm(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Im.CONTENT_ITEM_TYPE, R.string.imLabelsGroup, 20, true,
- R.layout.text_fields_editor_view));
- kind.actionHeader = new ImActionInflater();
- kind.actionBody = new SimpleInflater(Im.DATA);
-
- // NOTE: even though a traditional "type" exists, for editing
- // purposes we're using the protocol to pick labels
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
-
- kind.typeColumn = Im.PROTOCOL;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildImType(Im.PROTOCOL_AIM));
- kind.typeList.add(buildImType(Im.PROTOCOL_MSN));
- kind.typeList.add(buildImType(Im.PROTOCOL_YAHOO));
- kind.typeList.add(buildImType(Im.PROTOCOL_SKYPE));
- kind.typeList.add(buildImType(Im.PROTOCOL_QQ));
- kind.typeList.add(buildImType(Im.PROTOCOL_GOOGLE_TALK));
- kind.typeList.add(buildImType(Im.PROTOCOL_ICQ));
- kind.typeList.add(buildImType(Im.PROTOCOL_JABBER));
- kind.typeList.add(buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true).setCustomColumn(
- Im.CUSTOM_PROTOCOL));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
-
- return kind;
- }
-
- protected DataKind addDataKindOrganization(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Organization.CONTENT_ITEM_TYPE,
- R.string.organizationLabelsGroup, 5, true,
- R.layout.text_fields_editor_view));
- kind.actionHeader = new SimpleInflater(Organization.COMPANY);
- kind.actionBody = new SimpleInflater(Organization.TITLE);
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
- FLAGS_GENERIC_NAME));
- kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
- FLAGS_GENERIC_NAME));
-
- return kind;
- }
-
- protected DataKind addDataKindPhoto(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Photo.CONTENT_ITEM_TYPE, -1, -1, true, -1));
- kind.typeOverallMax = 1;
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
- return kind;
- }
-
- protected DataKind addDataKindNote(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Note.CONTENT_ITEM_TYPE,
- R.string.label_notes, 110, true, R.layout.text_fields_editor_view));
- kind.typeOverallMax = 1;
- kind.actionHeader = new SimpleInflater(R.string.label_notes);
- kind.actionBody = new SimpleInflater(Note.NOTE);
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
-
- kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
-
- return kind;
- }
-
- protected DataKind addDataKindWebsite(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Website.CONTENT_ITEM_TYPE,
- R.string.websiteLabelsGroup, 120, true, R.layout.text_fields_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.websiteLabelsGroup);
- kind.actionBody = new SimpleInflater(Website.URL);
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Website.TYPE, Website.TYPE_OTHER);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
-
- return kind;
- }
-
- protected DataKind addDataKindSipAddress(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(SipAddress.CONTENT_ITEM_TYPE,
- R.string.label_sip_address, 130, true, R.layout.text_fields_editor_view));
-
- kind.typeOverallMax = 1;
- kind.actionHeader = new SimpleInflater(R.string.label_sip_address);
- kind.actionBody = new SimpleInflater(SipAddress.SIP_ADDRESS);
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(SipAddress.SIP_ADDRESS,
- R.string.label_sip_address, FLAGS_SIP_ADDRESS));
-
- return kind;
- }
-
- protected DataKind addDataKindGroupMembership(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(GroupMembership.CONTENT_ITEM_TYPE,
- R.string.groupsLabel, 999, true, -1));
-
- kind.typeOverallMax = 1;
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
-
- kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
-
- return kind;
- }
-
- /**
- * Simple inflater that assumes a string resource has a "%s" that will be
- * filled from the given column.
- */
- public static class SimpleInflater implements StringInflater {
- private final int mStringRes;
- private final String mColumnName;
-
- public SimpleInflater(int stringRes) {
- this(stringRes, null);
- }
-
- public SimpleInflater(String columnName) {
- this(-1, columnName);
- }
-
- public SimpleInflater(int stringRes, String columnName) {
- mStringRes = stringRes;
- mColumnName = columnName;
- }
-
- @Override
- public CharSequence inflateUsing(Context context, ContentValues values) {
- final boolean validColumn = values.containsKey(mColumnName);
- final boolean validString = mStringRes > 0;
-
- final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
- final CharSequence columnValue = validColumn ? values.getAsString(mColumnName) : null;
-
- if (validString && validColumn) {
- return String.format(stringValue.toString(), columnValue);
- } else if (validString) {
- return stringValue;
- } else if (validColumn) {
- return columnValue;
- } else {
- return null;
- }
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName()
- + " mStringRes=" + mStringRes
- + " mColumnName" + mColumnName;
- }
-
- @NeededForTesting
- public String getColumnNameForTest() {
- return mColumnName;
- }
- }
-
- public static abstract class CommonInflater implements StringInflater {
- protected abstract int getTypeLabelResource(Integer type);
-
- protected boolean isCustom(Integer type) {
- return type == BaseTypes.TYPE_CUSTOM;
- }
-
- protected String getTypeColumn() {
- return Phone.TYPE;
- }
-
- protected String getLabelColumn() {
- return Phone.LABEL;
- }
-
- protected CharSequence getTypeLabel(Resources res, Integer type, CharSequence label) {
- final int labelRes = getTypeLabelResource(type);
- if (type == null) {
- return res.getText(labelRes);
- } else if (isCustom(type)) {
- return res.getString(labelRes, label == null ? "" : label);
- } else {
- return res.getText(labelRes);
- }
- }
-
- @Override
- public CharSequence inflateUsing(Context context, ContentValues values) {
- final Integer type = values.getAsInteger(getTypeColumn());
- final String label = values.getAsString(getLabelColumn());
- return getTypeLabel(context.getResources(), type, label);
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName();
- }
- }
-
- public static class PhoneActionInflater extends CommonInflater {
- @Override
- protected boolean isCustom(Integer type) {
- return type == Phone.TYPE_CUSTOM || type == Phone.TYPE_ASSISTANT;
- }
-
- @Override
- protected int getTypeLabelResource(Integer type) {
- if (type == null) return R.string.call_other;
- switch (type) {
- case Phone.TYPE_HOME: return R.string.call_home;
- case Phone.TYPE_MOBILE: return R.string.call_mobile;
- case Phone.TYPE_WORK: return R.string.call_work;
- case Phone.TYPE_FAX_WORK: return R.string.call_fax_work;
- case Phone.TYPE_FAX_HOME: return R.string.call_fax_home;
- case Phone.TYPE_PAGER: return R.string.call_pager;
- case Phone.TYPE_OTHER: return R.string.call_other;
- case Phone.TYPE_CALLBACK: return R.string.call_callback;
- case Phone.TYPE_CAR: return R.string.call_car;
- case Phone.TYPE_COMPANY_MAIN: return R.string.call_company_main;
- case Phone.TYPE_ISDN: return R.string.call_isdn;
- case Phone.TYPE_MAIN: return R.string.call_main;
- case Phone.TYPE_OTHER_FAX: return R.string.call_other_fax;
- case Phone.TYPE_RADIO: return R.string.call_radio;
- case Phone.TYPE_TELEX: return R.string.call_telex;
- case Phone.TYPE_TTY_TDD: return R.string.call_tty_tdd;
- case Phone.TYPE_WORK_MOBILE: return R.string.call_work_mobile;
- case Phone.TYPE_WORK_PAGER: return R.string.call_work_pager;
- case Phone.TYPE_ASSISTANT: return R.string.call_assistant;
- case Phone.TYPE_MMS: return R.string.call_mms;
- default: return R.string.call_custom;
- }
- }
- }
-
- public static class PhoneActionAltInflater extends CommonInflater {
- @Override
- protected boolean isCustom(Integer type) {
- return (type == Phone.TYPE_CUSTOM || type == Phone.TYPE_ASSISTANT);
- }
-
- @Override
- protected int getTypeLabelResource(Integer type) {
- if (type == null) return R.string.sms_other;
- switch (type) {
- case Phone.TYPE_HOME: return R.string.sms_home;
- case Phone.TYPE_MOBILE: return R.string.sms_mobile;
- case Phone.TYPE_WORK: return R.string.sms_work;
- case Phone.TYPE_FAX_WORK: return R.string.sms_fax_work;
- case Phone.TYPE_FAX_HOME: return R.string.sms_fax_home;
- case Phone.TYPE_PAGER: return R.string.sms_pager;
- case Phone.TYPE_OTHER: return R.string.sms_other;
- case Phone.TYPE_CALLBACK: return R.string.sms_callback;
- case Phone.TYPE_CAR: return R.string.sms_car;
- case Phone.TYPE_COMPANY_MAIN: return R.string.sms_company_main;
- case Phone.TYPE_ISDN: return R.string.sms_isdn;
- case Phone.TYPE_MAIN: return R.string.sms_main;
- case Phone.TYPE_OTHER_FAX: return R.string.sms_other_fax;
- case Phone.TYPE_RADIO: return R.string.sms_radio;
- case Phone.TYPE_TELEX: return R.string.sms_telex;
- case Phone.TYPE_TTY_TDD: return R.string.sms_tty_tdd;
- case Phone.TYPE_WORK_MOBILE: return R.string.sms_work_mobile;
- case Phone.TYPE_WORK_PAGER: return R.string.sms_work_pager;
- case Phone.TYPE_ASSISTANT: return R.string.sms_assistant;
- case Phone.TYPE_MMS: return R.string.sms_mms;
- default: return R.string.sms_custom;
- }
- }
- }
-
- public static class EmailActionInflater extends CommonInflater {
- @Override
- protected int getTypeLabelResource(Integer type) {
- if (type == null) return R.string.email;
- switch (type) {
- case Email.TYPE_HOME: return R.string.email_home;
- case Email.TYPE_WORK: return R.string.email_work;
- case Email.TYPE_OTHER: return R.string.email_other;
- case Email.TYPE_MOBILE: return R.string.email_mobile;
- default: return R.string.email_custom;
- }
- }
- }
-
- public static class EventActionInflater extends CommonInflater {
- @Override
- protected int getTypeLabelResource(Integer type) {
- return Event.getTypeResource(type);
- }
- }
-
- public static class RelationActionInflater extends CommonInflater {
- @Override
- protected int getTypeLabelResource(Integer type) {
- return Relation.getTypeLabelResource(type == null ? Relation.TYPE_CUSTOM : type);
- }
- }
-
- public static class PostalActionInflater extends CommonInflater {
- @Override
- protected int getTypeLabelResource(Integer type) {
- if (type == null) return R.string.map_other;
- switch (type) {
- case StructuredPostal.TYPE_HOME: return R.string.map_home;
- case StructuredPostal.TYPE_WORK: return R.string.map_work;
- case StructuredPostal.TYPE_OTHER: return R.string.map_other;
- default: return R.string.map_custom;
- }
- }
- }
-
- public static class ImActionInflater extends CommonInflater {
- @Override
- protected String getTypeColumn() {
- return Im.PROTOCOL;
- }
-
- @Override
- protected String getLabelColumn() {
- return Im.CUSTOM_PROTOCOL;
- }
-
- @Override
- protected int getTypeLabelResource(Integer type) {
- if (type == null) return R.string.chat;
- switch (type) {
- case Im.PROTOCOL_AIM: return R.string.chat_aim;
- case Im.PROTOCOL_MSN: return R.string.chat_msn;
- case Im.PROTOCOL_YAHOO: return R.string.chat_yahoo;
- case Im.PROTOCOL_SKYPE: return R.string.chat_skype;
- case Im.PROTOCOL_QQ: return R.string.chat_qq;
- case Im.PROTOCOL_GOOGLE_TALK: return R.string.chat_gtalk;
- case Im.PROTOCOL_ICQ: return R.string.chat_icq;
- case Im.PROTOCOL_JABBER: return R.string.chat_jabber;
- case Im.PROTOCOL_NETMEETING: return R.string.chat;
- default: return R.string.chat;
- }
- }
- }
-
- @Override
- public boolean isGroupMembershipEditable() {
- return false;
- }
-
- /**
- * Parses the content of the EditSchema tag in contacts.xml.
- */
- protected final void parseEditSchema(Context context, XmlPullParser parser, AttributeSet attrs)
- throws XmlPullParserException, IOException, DefinitionException {
-
- final int outerDepth = parser.getDepth();
- int type;
- while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
- && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
- final int depth = parser.getDepth();
- if (type != XmlPullParser.START_TAG || depth != outerDepth + 1) {
- continue; // Not direct child tag
- }
-
- final String tag = parser.getName();
-
- if (Tag.DATA_KIND.equals(tag)) {
- for (DataKind kind : KindParser.INSTANCE.parseDataKindTag(context, parser, attrs)) {
- addKind(kind);
- }
- } else {
- Log.w(TAG, "Skipping unknown tag " + tag);
- }
- }
- }
-
- // Utility methods to keep code shorter.
- private static boolean getAttr(AttributeSet attrs, String attribute, boolean defaultValue) {
- return attrs.getAttributeBooleanValue(null, attribute, defaultValue);
- }
-
- private static int getAttr(AttributeSet attrs, String attribute, int defaultValue) {
- return attrs.getAttributeIntValue(null, attribute, defaultValue);
- }
-
- private static String getAttr(AttributeSet attrs, String attribute) {
- return attrs.getAttributeValue(null, attribute);
- }
-
- // TODO Extract it to its own class, and move all KindBuilders to it as well.
- private static class KindParser {
- public static final KindParser INSTANCE = new KindParser();
-
- private final Map<String, KindBuilder> mBuilders = Maps.newHashMap();
-
- private KindParser() {
- addBuilder(new NameKindBuilder());
- addBuilder(new NicknameKindBuilder());
- addBuilder(new PhoneKindBuilder());
- addBuilder(new EmailKindBuilder());
- addBuilder(new StructuredPostalKindBuilder());
- addBuilder(new ImKindBuilder());
- addBuilder(new OrganizationKindBuilder());
- addBuilder(new PhotoKindBuilder());
- addBuilder(new NoteKindBuilder());
- addBuilder(new WebsiteKindBuilder());
- addBuilder(new SipAddressKindBuilder());
- addBuilder(new GroupMembershipKindBuilder());
- addBuilder(new EventKindBuilder());
- addBuilder(new RelationshipKindBuilder());
- }
-
- private void addBuilder(KindBuilder builder) {
- mBuilders.put(builder.getTagName(), builder);
- }
-
- /**
- * Takes a {@link XmlPullParser} at the start of a DataKind tag, parses it and returns
- * {@link DataKind}s. (Usually just one, but there are three for the "name" kind.)
- *
- * This method returns a list, because we need to add 3 kinds for the name data kind.
- * (structured, display and phonetic)
- */
- public List<DataKind> parseDataKindTag(Context context, XmlPullParser parser,
- AttributeSet attrs)
- throws DefinitionException, XmlPullParserException, IOException {
- final String kind = getAttr(attrs, Attr.KIND);
- final KindBuilder builder = mBuilders.get(kind);
- if (builder != null) {
- return builder.parseDataKind(context, parser, attrs);
- } else {
- throw new DefinitionException("Undefined data kind '" + kind + "'");
- }
- }
- }
-
- private static abstract class KindBuilder {
-
- public abstract String getTagName();
-
- /**
- * DataKind tag parser specific to each kind. Subclasses must implement it.
- */
- public abstract List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException, IOException;
-
- /**
- * Creates a new {@link DataKind}, and also parses the child Type tags in the DataKind
- * tag.
- */
- protected final DataKind newDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs, boolean isPseudo, String mimeType, String typeColumn,
- int titleRes, int weight, int editorLayoutResourceId,
- StringInflater actionHeader, StringInflater actionBody)
- throws DefinitionException, XmlPullParserException, IOException {
-
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, "Adding DataKind: " + mimeType);
- }
-
- final DataKind kind = new DataKind(mimeType, titleRes, weight, true,
- editorLayoutResourceId);
- kind.typeColumn = typeColumn;
- kind.actionHeader = actionHeader;
- kind.actionBody = actionBody;
- kind.fieldList = Lists.newArrayList();
-
- // Get more information from the tag...
- // A pseudo data kind doesn't have corresponding tag the XML, so we skip this.
- if (!isPseudo) {
- kind.typeOverallMax = getAttr(attrs, Attr.MAX_OCCURRENCE, -1);
-
- // Process "Type" tags.
- // If a kind has the type column, contacts.xml must have at least one type
- // definition. Otherwise, it mustn't have a type definition.
- if (kind.typeColumn != null) {
- // Parse and add types.
- kind.typeList = Lists.newArrayList();
- parseTypes(context, parser, attrs, kind, true);
- if (kind.typeList.size() == 0) {
- throw new DefinitionException(
- "Kind " + kind.mimeType + " must have at least one type");
- }
- } else {
- // Make sure it has no types.
- parseTypes(context, parser, attrs, kind, false /* can't have types */);
- }
- }
-
- return kind;
- }
-
- /**
- * Parses Type elements in a DataKind element, and if {@code canHaveTypes} is true adds
- * them to the given {@link DataKind}. Otherwise the {@link DataKind} can't have a type,
- * so throws {@link DefinitionException}.
- */
- private void parseTypes(Context context, XmlPullParser parser, AttributeSet attrs,
- DataKind kind, boolean canHaveTypes)
- throws DefinitionException, XmlPullParserException, IOException {
- final int outerDepth = parser.getDepth();
- int type;
- while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
- && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
- final int depth = parser.getDepth();
- if (type != XmlPullParser.START_TAG || depth != outerDepth + 1) {
- continue; // Not direct child tag
- }
-
- final String tag = parser.getName();
- if (Tag.TYPE.equals(tag)) {
- if (canHaveTypes) {
- kind.typeList.add(parseTypeTag(parser, attrs, kind));
- } else {
- throw new DefinitionException(
- "Kind " + kind.mimeType + " can't have types");
- }
- } else {
- throw new DefinitionException("Unknown tag: " + tag);
- }
- }
- }
-
- /**
- * Parses a single Type element and returns an {@link EditType} built from it. Uses
- * {@link #buildEditTypeForTypeTag} defined in subclasses to actually build an
- * {@link EditType}.
- */
- private EditType parseTypeTag(XmlPullParser parser, AttributeSet attrs, DataKind kind)
- throws DefinitionException {
-
- final String typeName = getAttr(attrs, Attr.TYPE);
-
- final EditType et = buildEditTypeForTypeTag(attrs, typeName);
- if (et == null) {
- throw new DefinitionException(
- "Undefined type '" + typeName + "' for data kind '" + kind.mimeType + "'");
- }
- et.specificMax = getAttr(attrs, Attr.MAX_OCCURRENCE, -1);
-
- return et;
- }
-
- /**
- * Returns an {@link EditType} for the given "type". Subclasses may optionally use
- * the attributes in the tag to set optional values.
- * (e.g. "yearOptional" for the event kind)
- */
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- return null;
- }
-
- protected final void throwIfList(DataKind kind) throws DefinitionException {
- if (kind.typeOverallMax != 1) {
- throw new DefinitionException(
- "Kind " + kind.mimeType + " must have 'overallMax=\"1\"'");
- }
- }
- }
-
- /**
- * DataKind parser for Name. (structured, display, phonetic)
- */
- private static class NameKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "name";
- }
-
- private static void checkAttributeTrue(boolean value, String attrName)
- throws DefinitionException {
- if (!value) {
- throw new DefinitionException(attrName + " must be true");
- }
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
-
- // Build 3 data kinds:
- // - StructuredName.CONTENT_ITEM_TYPE
- // - DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME
- // - DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME
-
- final boolean displayOrderPrimary =
- context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
-
- final boolean supportsDisplayName = getAttr(attrs, "supportsDisplayName", false);
- final boolean supportsPrefix = getAttr(attrs, "supportsPrefix", false);
- final boolean supportsMiddleName = getAttr(attrs, "supportsMiddleName", false);
- final boolean supportsSuffix = getAttr(attrs, "supportsSuffix", false);
- final boolean supportsPhoneticFamilyName =
- getAttr(attrs, "supportsPhoneticFamilyName", false);
- final boolean supportsPhoneticMiddleName =
- getAttr(attrs, "supportsPhoneticMiddleName", false);
- final boolean supportsPhoneticGivenName =
- getAttr(attrs, "supportsPhoneticGivenName", false);
-
- // For now, every things must be supported.
- checkAttributeTrue(supportsDisplayName, "supportsDisplayName");
- checkAttributeTrue(supportsPrefix, "supportsPrefix");
- checkAttributeTrue(supportsMiddleName, "supportsMiddleName");
- checkAttributeTrue(supportsSuffix, "supportsSuffix");
- checkAttributeTrue(supportsPhoneticFamilyName, "supportsPhoneticFamilyName");
- checkAttributeTrue(supportsPhoneticMiddleName, "supportsPhoneticMiddleName");
- checkAttributeTrue(supportsPhoneticGivenName, "supportsPhoneticGivenName");
-
- final List<DataKind> kinds = Lists.newArrayList();
-
- // Structured name
- final DataKind ks = newDataKind(context, parser, attrs, false,
- StructuredName.CONTENT_ITEM_TYPE, null, R.string.nameLabelsGroup, Weight.NONE,
- R.layout.structured_name_editor_view,
- new SimpleInflater(R.string.nameLabelsGroup),
- new SimpleInflater(Nickname.NAME));
-
- throwIfList(ks);
- kinds.add(ks);
-
- // Note about setLongForm/setShortForm below.
- // We need to set this only when the type supports display name. (=supportsDisplayName)
- // Otherwise (i.e. Exchange) we don't set these flags, but instead make some fields
- // "optional".
-
- ks.fieldList.add(new EditField(StructuredName.DISPLAY_NAME, R.string.full_name,
- FLAGS_PERSON_NAME));
- ks.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- ks.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- ks.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- ks.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- ks.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- ks.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC));
- ks.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC));
- ks.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC));
-
- // Display name
- final DataKind kd = newDataKind(context, parser, attrs, true,
- DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME, null,
- R.string.nameLabelsGroup, Weight.NONE, R.layout.text_fields_editor_view,
- new SimpleInflater(R.string.nameLabelsGroup),
- new SimpleInflater(Nickname.NAME));
- kd.typeOverallMax = 1;
- kinds.add(kd);
-
- kd.fieldList.add(new EditField(StructuredName.DISPLAY_NAME,
- R.string.full_name, FLAGS_PERSON_NAME).setShortForm(true));
-
- if (!displayOrderPrimary) {
- kd.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- } else {
- kd.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME).setLongForm(true));
- kd.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
- FLAGS_PERSON_NAME).setLongForm(true));
- }
-
- // Phonetic name
- final DataKind kp = newDataKind(context, parser, attrs, true,
- DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME, null,
- R.string.name_phonetic, Weight.NONE, R.layout.phonetic_name_editor_view,
- new SimpleInflater(R.string.nameLabelsGroup),
- new SimpleInflater(Nickname.NAME));
- kp.typeOverallMax = 1;
- kinds.add(kp);
-
- // We may want to change the order depending on displayOrderPrimary too.
- kp.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
- R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
- kp.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
- kp.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
- kp.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
- return kinds;
- }
- }
-
- private static class NicknameKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "nickname";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Nickname.CONTENT_ITEM_TYPE, null, R.string.nicknameLabelsGroup, Weight.NICKNAME,
- R.layout.text_fields_editor_view,
- new SimpleInflater(R.string.nicknameLabelsGroup),
- new SimpleInflater(Nickname.NAME));
-
- kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
- FLAGS_PERSON_NAME));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Nickname.TYPE, Nickname.TYPE_DEFAULT);
-
- throwIfList(kind);
- return Lists.newArrayList(kind);
- }
- }
-
- private static class PhoneKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "phone";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Phone.CONTENT_ITEM_TYPE, Phone.TYPE, R.string.phoneLabelsGroup, Weight.PHONE,
- R.layout.text_fields_editor_view,
- new PhoneActionInflater(), new SimpleInflater(Phone.NUMBER));
-
- kind.iconAltRes = R.drawable.ic_text_holo_light;
- kind.iconAltDescriptionRes = R.string.sms;
- kind.actionAltHeader = new PhoneActionAltInflater();
-
- kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
-
- return Lists.newArrayList(kind);
- }
-
- /** Just to avoid line-wrapping... */
- protected static EditType build(int type, boolean secondary) {
- return new EditType(type, Phone.getTypeLabelResource(type)).setSecondary(secondary);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- if ("home".equals(type)) return build(Phone.TYPE_HOME, false);
- if ("mobile".equals(type)) return build(Phone.TYPE_MOBILE, false);
- if ("work".equals(type)) return build(Phone.TYPE_WORK, false);
- if ("fax_work".equals(type)) return build(Phone.TYPE_FAX_WORK, true);
- if ("fax_home".equals(type)) return build(Phone.TYPE_FAX_HOME, true);
- if ("pager".equals(type)) return build(Phone.TYPE_PAGER, true);
- if ("other".equals(type)) return build(Phone.TYPE_OTHER, false);
- if ("callback".equals(type)) return build(Phone.TYPE_CALLBACK, true);
- if ("car".equals(type)) return build(Phone.TYPE_CAR, true);
- if ("company_main".equals(type)) return build(Phone.TYPE_COMPANY_MAIN, true);
- if ("isdn".equals(type)) return build(Phone.TYPE_ISDN, true);
- if ("main".equals(type)) return build(Phone.TYPE_MAIN, true);
- if ("other_fax".equals(type)) return build(Phone.TYPE_OTHER_FAX, true);
- if ("radio".equals(type)) return build(Phone.TYPE_RADIO, true);
- if ("telex".equals(type)) return build(Phone.TYPE_TELEX, true);
- if ("tty_tdd".equals(type)) return build(Phone.TYPE_TTY_TDD, true);
- if ("work_mobile".equals(type)) return build(Phone.TYPE_WORK_MOBILE, true);
- if ("work_pager".equals(type)) return build(Phone.TYPE_WORK_PAGER, true);
-
- // Note "assistant" used to be a custom column for the fallback type, but not anymore.
- if ("assistant".equals(type)) return build(Phone.TYPE_ASSISTANT, true);
- if ("mms".equals(type)) return build(Phone.TYPE_MMS, true);
- if ("custom".equals(type)) {
- return build(Phone.TYPE_CUSTOM, true).setCustomColumn(Phone.LABEL);
- }
- return null;
- }
- }
-
- private static class EmailKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "email";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Email.CONTENT_ITEM_TYPE, Email.TYPE, R.string.emailLabelsGroup, Weight.EMAIL,
- R.layout.text_fields_editor_view,
- new EmailActionInflater(), new SimpleInflater(Email.DATA));
- kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
-
- return Lists.newArrayList(kind);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- // EditType is mutable, so we need to create a new instance every time.
- if ("home".equals(type)) return buildEmailType(Email.TYPE_HOME);
- if ("work".equals(type)) return buildEmailType(Email.TYPE_WORK);
- if ("other".equals(type)) return buildEmailType(Email.TYPE_OTHER);
- if ("mobile".equals(type)) return buildEmailType(Email.TYPE_MOBILE);
- if ("custom".equals(type)) {
- return buildEmailType(Email.TYPE_CUSTOM)
- .setSecondary(true).setCustomColumn(Email.LABEL);
- }
- return null;
- }
- }
-
- private static class StructuredPostalKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "postal";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- StructuredPostal.CONTENT_ITEM_TYPE, StructuredPostal.TYPE,
- R.string.postalLabelsGroup, Weight.STRUCTURED_POSTAL,
- R.layout.text_fields_editor_view, new PostalActionInflater(),
- new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS));
-
- if (getAttr(attrs, "needsStructured", false)) {
- if (Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage())) {
- // Japanese order
- kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
- R.string.postal_country, FLAGS_POSTAL).setOptional(true));
- kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
- R.string.postal_postcode, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.REGION,
- R.string.postal_region, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.CITY,
- R.string.postal_city,FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.STREET,
- R.string.postal_street, FLAGS_POSTAL));
- } else {
- // Generic order
- kind.fieldList.add(new EditField(StructuredPostal.STREET,
- R.string.postal_street, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.CITY,
- R.string.postal_city,FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.REGION,
- R.string.postal_region, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
- R.string.postal_postcode, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
- R.string.postal_country, FLAGS_POSTAL).setOptional(true));
- }
- } else {
- kind.maxLinesForDisplay= MAX_LINES_FOR_POSTAL_ADDRESS;
- kind.fieldList.add(
- new EditField(StructuredPostal.FORMATTED_ADDRESS, R.string.postal_address,
- FLAGS_POSTAL));
- }
-
- return Lists.newArrayList(kind);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- // EditType is mutable, so we need to create a new instance every time.
- if ("home".equals(type)) return buildPostalType(StructuredPostal.TYPE_HOME);
- if ("work".equals(type)) return buildPostalType(StructuredPostal.TYPE_WORK);
- if ("other".equals(type)) return buildPostalType(StructuredPostal.TYPE_OTHER);
- if ("custom".equals(type)) {
- return buildPostalType(StructuredPostal.TYPE_CUSTOM)
- .setSecondary(true).setCustomColumn(Email.LABEL);
- }
- return null;
- }
- }
-
- private static class ImKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "im";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
-
- // IM is special:
- // - It uses "protocol" as the custom label field
- // - Its TYPE is fixed to TYPE_OTHER
-
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Im.CONTENT_ITEM_TYPE, Im.PROTOCOL, R.string.imLabelsGroup, Weight.IM,
- R.layout.text_fields_editor_view,
- new ImActionInflater(), new SimpleInflater(Im.DATA) // header / action
- );
- kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
-
- return Lists.newArrayList(kind);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- if ("aim".equals(type)) return buildImType(Im.PROTOCOL_AIM);
- if ("msn".equals(type)) return buildImType(Im.PROTOCOL_MSN);
- if ("yahoo".equals(type)) return buildImType(Im.PROTOCOL_YAHOO);
- if ("skype".equals(type)) return buildImType(Im.PROTOCOL_SKYPE);
- if ("qq".equals(type)) return buildImType(Im.PROTOCOL_QQ);
- if ("google_talk".equals(type)) return buildImType(Im.PROTOCOL_GOOGLE_TALK);
- if ("icq".equals(type)) return buildImType(Im.PROTOCOL_ICQ);
- if ("jabber".equals(type)) return buildImType(Im.PROTOCOL_JABBER);
- if ("custom".equals(type)) {
- return buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true)
- .setCustomColumn(Im.CUSTOM_PROTOCOL);
- }
- return null;
- }
- }
-
- private static class OrganizationKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "organization";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Organization.CONTENT_ITEM_TYPE, null, R.string.organizationLabelsGroup,
- Weight.ORGANIZATION, R.layout.text_fields_editor_view ,
- new SimpleInflater(Organization.COMPANY),
- new SimpleInflater(Organization.TITLE));
-
- kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
- FLAGS_GENERIC_NAME));
- kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
- FLAGS_GENERIC_NAME));
-
- throwIfList(kind);
-
- return Lists.newArrayList(kind);
- }
- }
-
- private static class PhotoKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "photo";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Photo.CONTENT_ITEM_TYPE, null /* no type */, -1, Weight.NONE, -1,
- null, null // no header, no body
- );
-
- kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
-
- throwIfList(kind);
-
- return Lists.newArrayList(kind);
- }
- }
-
- private static class NoteKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "note";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Note.CONTENT_ITEM_TYPE, null, R.string.label_notes, Weight.NOTE,
- R.layout.text_fields_editor_view,
- new SimpleInflater(R.string.label_notes), new SimpleInflater(Note.NOTE));
-
- kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
- kind.maxLinesForDisplay = MAX_LINES_FOR_NOTE;
-
- throwIfList(kind);
-
- return Lists.newArrayList(kind);
- }
- }
-
- private static class WebsiteKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "website";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Website.CONTENT_ITEM_TYPE, null, R.string.websiteLabelsGroup, Weight.WEBSITE,
- R.layout.text_fields_editor_view,
- new SimpleInflater(R.string.websiteLabelsGroup),
- new SimpleInflater(Website.URL));
-
- kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup,
- FLAGS_WEBSITE));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Website.TYPE, Website.TYPE_OTHER);
-
- return Lists.newArrayList(kind);
- }
- }
-
- private static class SipAddressKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "sip_address";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- SipAddress.CONTENT_ITEM_TYPE, null, R.string.label_sip_address,
- Weight.SIP_ADDRESS, R.layout.text_fields_editor_view,
- new SimpleInflater(R.string.label_sip_address),
- new SimpleInflater(SipAddress.SIP_ADDRESS));
-
- kind.fieldList.add(new EditField(SipAddress.SIP_ADDRESS,
- R.string.label_sip_address, FLAGS_SIP_ADDRESS));
-
- throwIfList(kind);
-
- return Lists.newArrayList(kind);
- }
- }
-
- private static class GroupMembershipKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "group_membership";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- GroupMembership.CONTENT_ITEM_TYPE, null,
- R.string.groupsLabel, Weight.GROUP_MEMBERSHIP, -1, null, null);
-
- kind.fieldList.add(new EditField(GroupMembership.GROUP_ROW_ID, -1, -1));
- kind.maxLinesForDisplay = MAX_LINES_FOR_GROUP;
-
- throwIfList(kind);
-
- return Lists.newArrayList(kind);
- }
- }
-
- /**
- * Event DataKind parser.
- *
- * Event DataKind is used only for Google/Exchange types, so this parser is not used for now.
- */
- private static class EventKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "event";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Event.CONTENT_ITEM_TYPE, Event.TYPE, R.string.eventLabelsGroup, Weight.EVENT,
- R.layout.event_field_editor_view,
- new EventActionInflater(), new SimpleInflater(Event.START_DATE));
-
- kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
-
- if (getAttr(attrs, Attr.DATE_WITH_TIME, false)) {
- kind.dateFormatWithoutYear = DateUtils.NO_YEAR_DATE_AND_TIME_FORMAT;
- kind.dateFormatWithYear = DateUtils.DATE_AND_TIME_FORMAT;
- } else {
- kind.dateFormatWithoutYear = DateUtils.NO_YEAR_DATE_FORMAT;
- kind.dateFormatWithYear = DateUtils.FULL_DATE_FORMAT;
- }
-
- return Lists.newArrayList(kind);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- final boolean yo = getAttr(attrs, Attr.YEAR_OPTIONAL, false);
-
- if ("birthday".equals(type)) {
- return buildEventType(Event.TYPE_BIRTHDAY, yo).setSpecificMax(1);
- }
- if ("anniversary".equals(type)) return buildEventType(Event.TYPE_ANNIVERSARY, yo);
- if ("other".equals(type)) return buildEventType(Event.TYPE_OTHER, yo);
- if ("custom".equals(type)) {
- return buildEventType(Event.TYPE_CUSTOM, yo)
- .setSecondary(true).setCustomColumn(Event.LABEL);
- }
- return null;
- }
- }
-
- /**
- * Relationship DataKind parser.
- *
- * Relationship DataKind is used only for Google/Exchange types, so this parser is not used for
- * now.
- */
- private static class RelationshipKindBuilder extends KindBuilder {
- @Override
- public String getTagName() {
- return "relationship";
- }
-
- @Override
- public List<DataKind> parseDataKind(Context context, XmlPullParser parser,
- AttributeSet attrs) throws DefinitionException, XmlPullParserException,
- IOException {
- final DataKind kind = newDataKind(context, parser, attrs, false,
- Relation.CONTENT_ITEM_TYPE, Relation.TYPE,
- R.string.relationLabelsGroup, Weight.RELATIONSHIP,
- R.layout.text_fields_editor_view,
- new RelationActionInflater(), new SimpleInflater(Relation.NAME));
-
- kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
- FLAGS_RELATION));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
-
- return Lists.newArrayList(kind);
- }
-
- @Override
- protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
- // EditType is mutable, so we need to create a new instance every time.
- if ("assistant".equals(type)) return buildRelationType(Relation.TYPE_ASSISTANT);
- if ("brother".equals(type)) return buildRelationType(Relation.TYPE_BROTHER);
- if ("child".equals(type)) return buildRelationType(Relation.TYPE_CHILD);
- if ("domestic_partner".equals(type)) {
- return buildRelationType(Relation.TYPE_DOMESTIC_PARTNER);
- }
- if ("father".equals(type)) return buildRelationType(Relation.TYPE_FATHER);
- if ("friend".equals(type)) return buildRelationType(Relation.TYPE_FRIEND);
- if ("manager".equals(type)) return buildRelationType(Relation.TYPE_MANAGER);
- if ("mother".equals(type)) return buildRelationType(Relation.TYPE_MOTHER);
- if ("parent".equals(type)) return buildRelationType(Relation.TYPE_PARENT);
- if ("partner".equals(type)) return buildRelationType(Relation.TYPE_PARTNER);
- if ("referred_by".equals(type)) return buildRelationType(Relation.TYPE_REFERRED_BY);
- if ("relative".equals(type)) return buildRelationType(Relation.TYPE_RELATIVE);
- if ("sister".equals(type)) return buildRelationType(Relation.TYPE_SISTER);
- if ("spouse".equals(type)) return buildRelationType(Relation.TYPE_SPOUSE);
- if ("custom".equals(type)) {
- return buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
- .setCustomColumn(Relation.LABEL);
- }
- return null;
- }
- }
-}
diff --git a/src/com/android/contacts/model/account/ExchangeAccountType.java b/src/com/android/contacts/model/account/ExchangeAccountType.java
deleted file mode 100644
index 28b1f5c..0000000
--- a/src/com/android/contacts/model/account/ExchangeAccountType.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Email;
-import android.provider.ContactsContract.CommonDataKinds.Event;
-import android.provider.ContactsContract.CommonDataKinds.Im;
-import android.provider.ContactsContract.CommonDataKinds.Nickname;
-import android.provider.ContactsContract.CommonDataKinds.Note;
-import android.provider.ContactsContract.CommonDataKinds.Organization;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
-import android.util.Log;
-
-import com.android.contacts.R;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.util.DateUtils;
-import com.google.common.collect.Lists;
-
-import java.util.Locale;
-
-public class ExchangeAccountType extends BaseAccountType {
- private static final String TAG = "ExchangeAccountType";
-
- public static final String ACCOUNT_TYPE_AOSP = "com.android.exchange";
- public static final String ACCOUNT_TYPE_GOOGLE = "com.google.android.exchange";
-
- public ExchangeAccountType(Context context, String authenticatorPackageName, String type) {
- this.accountType = type;
- this.resourcePackageName = null;
- this.syncAdapterPackageName = authenticatorPackageName;
-
- try {
- addDataKindStructuredName(context);
- addDataKindDisplayName(context);
- addDataKindPhoneticName(context);
- addDataKindNickname(context);
- addDataKindPhone(context);
- addDataKindEmail(context);
- addDataKindStructuredPostal(context);
- addDataKindIm(context);
- addDataKindOrganization(context);
- addDataKindPhoto(context);
- addDataKindNote(context);
- addDataKindEvent(context);
- addDataKindWebsite(context);
- addDataKindGroupMembership(context);
-
- mIsInitialized = true;
- } catch (DefinitionException e) {
- Log.e(TAG, "Problem building account type", e);
- }
- }
-
- public static boolean isExchangeType(String type) {
- return ACCOUNT_TYPE_AOSP.equals(type) || ACCOUNT_TYPE_GOOGLE.equals(type);
- }
-
- @Override
- protected DataKind addDataKindStructuredName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
- R.string.nameLabelsGroup, -1, true, R.layout.structured_name_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setOptional(true));
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
- R.string.name_family, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
- R.string.name_middle, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
- R.string.name_given, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.SUFFIX,
- R.string.name_suffix, FLAGS_PERSON_NAME));
-
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindDisplayName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
- R.string.nameLabelsGroup, -1, true, R.layout.text_fields_editor_view));
-
- boolean displayOrderPrimary =
- context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
- FLAGS_PERSON_NAME).setOptional(true));
- if (!displayOrderPrimary) {
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
- R.string.name_family, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
- R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
- R.string.name_given, FLAGS_PERSON_NAME));
- } else {
- kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
- R.string.name_given, FLAGS_PERSON_NAME));
- kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
- R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
- kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
- R.string.name_family, FLAGS_PERSON_NAME));
- }
- kind.fieldList.add(new EditField(StructuredName.SUFFIX,
- R.string.name_suffix, FLAGS_PERSON_NAME).setOptional(true));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
- R.string.name_phonetic, -1, true, R.layout.phonetic_name_editor_view));
- kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
- kind.actionBody = new SimpleInflater(Nickname.NAME);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC));
- kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindNickname(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindNickname(context);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
- FLAGS_PERSON_NAME));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindPhone(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindPhone(context);
-
- kind.typeColumn = Phone.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2));
- kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)
- .setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true)
- .setSpecificMax(1));
- kind.typeList
- .add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true).setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true).setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true)
- .setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true).setSpecificMax(1));
- kind.typeList
- .add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true).setSpecificMax(1));
- kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true)
- .setSpecificMax(1));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindEmail(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindEmail(context);
-
- kind.typeOverallMax = 3;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindStructuredPostal(context);
-
- final boolean useJapaneseOrder =
- Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
- kind.typeColumn = StructuredPostal.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1));
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1));
- kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1));
-
- kind.fieldList = Lists.newArrayList();
- if (useJapaneseOrder) {
- kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
- R.string.postal_country, FLAGS_POSTAL).setOptional(true));
- kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
- R.string.postal_postcode, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.REGION,
- R.string.postal_region, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.CITY,
- R.string.postal_city,FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.STREET,
- R.string.postal_street, FLAGS_POSTAL));
- } else {
- kind.fieldList.add(new EditField(StructuredPostal.STREET,
- R.string.postal_street, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.CITY,
- R.string.postal_city,FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.REGION,
- R.string.postal_region, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
- R.string.postal_postcode, FLAGS_POSTAL));
- kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
- R.string.postal_country, FLAGS_POSTAL).setOptional(true));
- }
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindIm(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindIm(context);
-
- // Types are not supported for IM. There can be 3 IMs, but OWA only shows only the first
- kind.typeOverallMax = 3;
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindOrganization(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindOrganization(context);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
- FLAGS_GENERIC_NAME));
- kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
- FLAGS_GENERIC_NAME));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindPhoto(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindPhoto(context);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindNote(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindNote(context);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
-
- return kind;
- }
-
- protected DataKind addDataKindEvent(Context context) throws DefinitionException {
- DataKind kind = addKind(
- new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup, 150, true,
- R.layout.event_field_editor_view));
- kind.actionHeader = new EventActionInflater();
- kind.actionBody = new SimpleInflater(Event.START_DATE);
-
- kind.typeOverallMax = 1;
-
- kind.typeColumn = Event.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, false).setSpecificMax(1));
-
- kind.dateFormatWithYear = DateUtils.DATE_AND_TIME_FORMAT;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindWebsite(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindWebsite(context);
-
- kind.typeOverallMax = 1;
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
-
- return kind;
- }
-
- @Override
- public boolean isGroupMembershipEditable() {
- return true;
- }
-
- @Override
- public boolean areContactsWritable() {
- return true;
- }
-}
diff --git a/src/com/android/contacts/model/account/ExternalAccountType.java b/src/com/android/contacts/model/account/ExternalAccountType.java
deleted file mode 100644
index 71dbebf..0000000
--- a/src/com/android/contacts/model/account/ExternalAccountType.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ServiceInfo;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.Xml;
-
-import com.android.contacts.model.dataitem.DataKind;
-import com.google.common.annotations.VisibleForTesting;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A general contacts account type descriptor.
- */
-public class ExternalAccountType extends BaseAccountType {
- private static final String TAG = "ExternalAccountType";
-
- private static final String METADATA_CONTACTS = "android.provider.CONTACTS_STRUCTURE";
-
- private static final String TAG_CONTACTS_SOURCE_LEGACY = "ContactsSource";
- private static final String TAG_CONTACTS_ACCOUNT_TYPE = "ContactsAccountType";
- private static final String TAG_CONTACTS_DATA_KIND = "ContactsDataKind";
- private static final String TAG_EDIT_SCHEMA = "EditSchema";
-
- private static final String ATTR_EDIT_CONTACT_ACTIVITY = "editContactActivity";
- private static final String ATTR_CREATE_CONTACT_ACTIVITY = "createContactActivity";
- private static final String ATTR_INVITE_CONTACT_ACTIVITY = "inviteContactActivity";
- private static final String ATTR_INVITE_CONTACT_ACTION_LABEL = "inviteContactActionLabel";
- private static final String ATTR_VIEW_CONTACT_NOTIFY_SERVICE = "viewContactNotifyService";
- private static final String ATTR_VIEW_GROUP_ACTIVITY = "viewGroupActivity";
- private static final String ATTR_VIEW_GROUP_ACTION_LABEL = "viewGroupActionLabel";
- private static final String ATTR_VIEW_STREAM_ITEM_ACTIVITY = "viewStreamItemActivity";
- private static final String ATTR_VIEW_STREAM_ITEM_PHOTO_ACTIVITY =
- "viewStreamItemPhotoActivity";
- private static final String ATTR_DATA_SET = "dataSet";
- private static final String ATTR_EXTENSION_PACKAGE_NAMES = "extensionPackageNames";
-
- // The following attributes should only be set in non-sync-adapter account types. They allow
- // for the account type and resource IDs to be specified without an associated authenticator.
- private static final String ATTR_ACCOUNT_TYPE = "accountType";
- private static final String ATTR_ACCOUNT_LABEL = "accountTypeLabel";
- private static final String ATTR_ACCOUNT_ICON = "accountTypeIcon";
-
- private final boolean mIsExtension;
-
- private String mEditContactActivityClassName;
- private String mCreateContactActivityClassName;
- private String mInviteContactActivity;
- private String mInviteActionLabelAttribute;
- private int mInviteActionLabelResId;
- private String mViewContactNotifyService;
- private String mViewGroupActivity;
- private String mViewGroupLabelAttribute;
- private int mViewGroupLabelResId;
- private String mViewStreamItemActivity;
- private String mViewStreamItemPhotoActivity;
- private List<String> mExtensionPackageNames;
- private String mAccountTypeLabelAttribute;
- private String mAccountTypeIconAttribute;
- private boolean mHasContactsMetadata;
- private boolean mHasEditSchema;
-
- public ExternalAccountType(Context context, String resPackageName, boolean isExtension) {
- this(context, resPackageName, isExtension, null);
- }
-
- /**
- * Constructor used for testing to initialize with any arbitrary XML.
- *
- * @param injectedMetadata If non-null, it'll be used to initialize the type. Only set by
- * tests. If null, the metadata is loaded from the specified package.
- */
- ExternalAccountType(Context context, String packageName, boolean isExtension,
- XmlResourceParser injectedMetadata) {
- this.mIsExtension = isExtension;
- this.resourcePackageName = packageName;
- this.syncAdapterPackageName = packageName;
-
- final PackageManager pm = context.getPackageManager();
- final XmlResourceParser parser;
- if (injectedMetadata == null) {
- try {
- parser = loadContactsXml(context, packageName);
- } catch (NameNotFoundException e1) {
- // If the package name is not found, we can't initialize this account type.
- return;
- }
- } else {
- parser = injectedMetadata;
- }
- boolean needLineNumberInErrorLog = true;
- try {
- if (parser != null) {
- inflate(context, parser);
- }
-
- // Done parsing; line number no longer needed in error log.
- needLineNumberInErrorLog = false;
- if (mHasEditSchema) {
- checkKindExists(StructuredName.CONTENT_ITEM_TYPE);
- checkKindExists(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME);
- checkKindExists(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME);
- checkKindExists(Photo.CONTENT_ITEM_TYPE);
- } else {
- // Bring in name and photo from fallback source, which are non-optional
- addDataKindStructuredName(context);
- addDataKindDisplayName(context);
- addDataKindPhoneticName(context);
- addDataKindPhoto(context);
- }
- } catch (DefinitionException e) {
- final StringBuilder error = new StringBuilder();
- error.append("Problem reading XML");
- if (needLineNumberInErrorLog && (parser != null)) {
- error.append(" in line ");
- error.append(parser.getLineNumber());
- }
- error.append(" for external package ");
- error.append(packageName);
-
- Log.e(TAG, error.toString(), e);
- return;
- } finally {
- if (parser != null) {
- parser.close();
- }
- }
-
- mExtensionPackageNames = new ArrayList<String>();
- mInviteActionLabelResId = resolveExternalResId(context, mInviteActionLabelAttribute,
- syncAdapterPackageName, ATTR_INVITE_CONTACT_ACTION_LABEL);
- mViewGroupLabelResId = resolveExternalResId(context, mViewGroupLabelAttribute,
- syncAdapterPackageName, ATTR_VIEW_GROUP_ACTION_LABEL);
- titleRes = resolveExternalResId(context, mAccountTypeLabelAttribute,
- syncAdapterPackageName, ATTR_ACCOUNT_LABEL);
- iconRes = resolveExternalResId(context, mAccountTypeIconAttribute,
- syncAdapterPackageName, ATTR_ACCOUNT_ICON);
-
- // If we reach this point, the account type has been successfully initialized.
- mIsInitialized = true;
- }
-
- /**
- * Returns the CONTACTS_STRUCTURE metadata (aka "contacts.xml") in the given apk package.
- *
- * Unfortunately, there's no public way to determine which service defines a sync service for
- * which account type, so this method looks through all services in the package, and just
- * returns the first CONTACTS_STRUCTURE metadata defined in any of them.
- *
- * Returns {@code null} if the package has no CONTACTS_STRUCTURE metadata. In this case
- * the account type *will* be initialized with minimal configuration.
- *
- * On the other hand, if the package is not found, it throws a {@link NameNotFoundException},
- * in which case the account type will *not* be initialized.
- */
- private XmlResourceParser loadContactsXml(Context context, String resPackageName)
- throws NameNotFoundException {
- final PackageManager pm = context.getPackageManager();
- PackageInfo packageInfo = pm.getPackageInfo(resPackageName,
- PackageManager.GET_SERVICES|PackageManager.GET_META_DATA);
- for (ServiceInfo serviceInfo : packageInfo.services) {
- final XmlResourceParser parser = serviceInfo.loadXmlMetaData(pm,
- METADATA_CONTACTS);
- if (parser != null) {
- return parser;
- }
- }
- // Package was found, but that doesn't contain the CONTACTS_STRUCTURE metadata.
- return null;
- }
-
- private void checkKindExists(String mimeType) throws DefinitionException {
- if (getKindForMimetype(mimeType) == null) {
- throw new DefinitionException(mimeType + " must be supported");
- }
- }
-
- @Override
- public boolean isEmbedded() {
- return false;
- }
-
- @Override
- public boolean isExtension() {
- return mIsExtension;
- }
-
- @Override
- public boolean areContactsWritable() {
- return mHasEditSchema;
- }
-
- /**
- * Whether this account type has the android.provider.CONTACTS_STRUCTURE metadata xml.
- */
- public boolean hasContactsMetadata() {
- return mHasContactsMetadata;
- }
-
- @Override
- public String getEditContactActivityClassName() {
- return mEditContactActivityClassName;
- }
-
- @Override
- public String getCreateContactActivityClassName() {
- return mCreateContactActivityClassName;
- }
-
- @Override
- public String getInviteContactActivityClassName() {
- return mInviteContactActivity;
- }
-
- @Override
- protected int getInviteContactActionResId() {
- return mInviteActionLabelResId;
- }
-
- @Override
- public String getViewContactNotifyServiceClassName() {
- return mViewContactNotifyService;
- }
-
- @Override
- public String getViewGroupActivity() {
- return mViewGroupActivity;
- }
-
- @Override
- protected int getViewGroupLabelResId() {
- return mViewGroupLabelResId;
- }
-
- @Override
- public String getViewStreamItemActivity() {
- return mViewStreamItemActivity;
- }
-
- @Override
- public String getViewStreamItemPhotoActivity() {
- return mViewStreamItemPhotoActivity;
- }
-
- @Override
- public List<String> getExtensionPackageNames() {
- return mExtensionPackageNames;
- }
-
- /**
- * Inflate this {@link AccountType} from the given parser. This may only
- * load details matching the publicly-defined schema.
- */
- protected void inflate(Context context, XmlPullParser parser) throws DefinitionException {
- final AttributeSet attrs = Xml.asAttributeSet(parser);
-
- try {
- int type;
- while ((type = parser.next()) != XmlPullParser.START_TAG
- && type != XmlPullParser.END_DOCUMENT) {
- // Drain comments and whitespace
- }
-
- if (type != XmlPullParser.START_TAG) {
- throw new IllegalStateException("No start tag found");
- }
-
- String rootTag = parser.getName();
- if (!TAG_CONTACTS_ACCOUNT_TYPE.equals(rootTag) &&
- !TAG_CONTACTS_SOURCE_LEGACY.equals(rootTag)) {
- throw new IllegalStateException("Top level element must be "
- + TAG_CONTACTS_ACCOUNT_TYPE + ", not " + rootTag);
- }
-
- mHasContactsMetadata = true;
-
- int attributeCount = parser.getAttributeCount();
- for (int i = 0; i < attributeCount; i++) {
- String attr = parser.getAttributeName(i);
- String value = parser.getAttributeValue(i);
- if (Log.isLoggable(TAG, Log.DEBUG)) {
- Log.d(TAG, attr + "=" + value);
- }
- if (ATTR_EDIT_CONTACT_ACTIVITY.equals(attr)) {
- mEditContactActivityClassName = value;
- } else if (ATTR_CREATE_CONTACT_ACTIVITY.equals(attr)) {
- mCreateContactActivityClassName = value;
- } else if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
- mInviteContactActivity = value;
- } else if (ATTR_INVITE_CONTACT_ACTION_LABEL.equals(attr)) {
- mInviteActionLabelAttribute = value;
- } else if (ATTR_VIEW_CONTACT_NOTIFY_SERVICE.equals(attr)) {
- mViewContactNotifyService = value;
- } else if (ATTR_VIEW_GROUP_ACTIVITY.equals(attr)) {
- mViewGroupActivity = value;
- } else if (ATTR_VIEW_GROUP_ACTION_LABEL.equals(attr)) {
- mViewGroupLabelAttribute = value;
- } else if (ATTR_VIEW_STREAM_ITEM_ACTIVITY.equals(attr)) {
- mViewStreamItemActivity = value;
- } else if (ATTR_VIEW_STREAM_ITEM_PHOTO_ACTIVITY.equals(attr)) {
- mViewStreamItemPhotoActivity = value;
- } else if (ATTR_DATA_SET.equals(attr)) {
- dataSet = value;
- } else if (ATTR_EXTENSION_PACKAGE_NAMES.equals(attr)) {
- mExtensionPackageNames.add(value);
- } else if (ATTR_ACCOUNT_TYPE.equals(attr)) {
- accountType = value;
- } else if (ATTR_ACCOUNT_LABEL.equals(attr)) {
- mAccountTypeLabelAttribute = value;
- } else if (ATTR_ACCOUNT_ICON.equals(attr)) {
- mAccountTypeIconAttribute = value;
- } else {
- Log.e(TAG, "Unsupported attribute " + attr);
- }
- }
-
- // Parse all children kinds
- final int startDepth = parser.getDepth();
- while (((type = parser.next()) != XmlPullParser.END_TAG
- || parser.getDepth() > startDepth)
- && type != XmlPullParser.END_DOCUMENT) {
-
- if (type != XmlPullParser.START_TAG || parser.getDepth() != startDepth + 1) {
- continue; // Not a direct child tag
- }
-
- String tag = parser.getName();
- if (TAG_EDIT_SCHEMA.equals(tag)) {
- mHasEditSchema = true;
- parseEditSchema(context, parser, attrs);
- } else if (TAG_CONTACTS_DATA_KIND.equals(tag)) {
- final TypedArray a = context.obtainStyledAttributes(attrs,
- android.R.styleable.ContactsDataKind);
- final DataKind kind = new DataKind();
-
- kind.mimeType = a
- .getString(com.android.internal.R.styleable.ContactsDataKind_mimeType);
-
- final String summaryColumn = a.getString(
- com.android.internal.R.styleable.ContactsDataKind_summaryColumn);
- if (summaryColumn != null) {
- // Inflate a specific column as summary when requested
- kind.actionHeader = new SimpleInflater(summaryColumn);
- }
-
- final String detailColumn = a.getString(
- com.android.internal.R.styleable.ContactsDataKind_detailColumn);
- final boolean detailSocialSummary = a.getBoolean(
- com.android.internal.R.styleable.ContactsDataKind_detailSocialSummary,
- false);
-
- if (detailSocialSummary) {
- // Inflate social summary when requested
- kind.actionBodySocial = true;
- }
-
- if (detailColumn != null) {
- // Inflate specific column as summary
- kind.actionBody = new SimpleInflater(detailColumn);
- }
-
- a.recycle();
-
- addKind(kind);
- }
- }
- } catch (XmlPullParserException e) {
- throw new DefinitionException("Problem reading XML", e);
- } catch (IOException e) {
- throw new DefinitionException("Problem reading XML", e);
- }
- }
-
- /**
- * Takes a string in the "@xxx/yyy" format and return the resource ID for the resource in
- * the resource package.
- *
- * If the argument is in the invalid format or isn't a resource name, it returns -1.
- *
- * @param context context
- * @param resourceName Resource name in the "@xxx/yyy" format, e.g. "@string/invite_lavbel"
- * @param packageName name of the package containing the resource.
- * @param xmlAttributeName attribute name which the resource came from. Used for logging.
- */
- @VisibleForTesting
- static int resolveExternalResId(Context context, String resourceName,
- String packageName, String xmlAttributeName) {
- if (TextUtils.isEmpty(resourceName)) {
- return -1; // Empty text is okay.
- }
- if (resourceName.charAt(0) != '@') {
- Log.e(TAG, xmlAttributeName + " must be a resource name beginnig with '@'");
- return -1;
- }
- final String name = resourceName.substring(1);
- final Resources res;
- try {
- res = context.getPackageManager().getResourcesForApplication(packageName);
- } catch (NameNotFoundException e) {
- Log.e(TAG, "Unable to load package " + packageName);
- return -1;
- }
- final int resId = res.getIdentifier(name, null, packageName);
- if (resId == 0) {
- Log.e(TAG, "Unable to load " + resourceName + " from package " + packageName);
- return -1;
- }
- return resId;
- }
-}
diff --git a/src/com/android/contacts/model/account/FallbackAccountType.java b/src/com/android/contacts/model/account/FallbackAccountType.java
deleted file mode 100644
index dae288d..0000000
--- a/src/com/android/contacts/model/account/FallbackAccountType.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.android.contacts.R;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.test.NeededForTesting;
-
-public class FallbackAccountType extends BaseAccountType {
- private static final String TAG = "FallbackAccountType";
-
- private FallbackAccountType(Context context, String resPackageName) {
- this.accountType = null;
- this.dataSet = null;
- this.titleRes = R.string.account_phone;
- this.iconRes = R.mipmap.ic_launcher_contacts;
-
- // Note those are only set for unit tests.
- this.resourcePackageName = resPackageName;
- this.syncAdapterPackageName = resPackageName;
-
- try {
- addDataKindStructuredName(context);
- addDataKindDisplayName(context);
- addDataKindPhoneticName(context);
- addDataKindNickname(context);
- addDataKindPhone(context);
- addDataKindEmail(context);
- addDataKindStructuredPostal(context);
- addDataKindIm(context);
- addDataKindOrganization(context);
- addDataKindPhoto(context);
- addDataKindNote(context);
- addDataKindWebsite(context);
- addDataKindSipAddress(context);
-
- mIsInitialized = true;
- } catch (DefinitionException e) {
- Log.e(TAG, "Problem building account type", e);
- }
- }
-
- public FallbackAccountType(Context context) {
- this(context, null);
- }
-
- /**
- * Used to compare with an {@link ExternalAccountType} built from a test contacts.xml.
- * In order to build {@link DataKind}s with the same resource package name,
- * {@code resPackageName} is injectable.
- */
- @NeededForTesting
- static AccountType createWithPackageNameForTest(Context context, String resPackageName) {
- return new FallbackAccountType(context, resPackageName);
- }
-
- @Override
- public boolean areContactsWritable() {
- return true;
- }
-}
diff --git a/src/com/android/contacts/model/account/GoogleAccountType.java b/src/com/android/contacts/model/account/GoogleAccountType.java
deleted file mode 100644
index 192c3d0..0000000
--- a/src/com/android/contacts/model/account/GoogleAccountType.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.model.account;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Email;
-import android.provider.ContactsContract.CommonDataKinds.Event;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.Relation;
-import android.util.Log;
-
-import com.android.contacts.R;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.util.DateUtils;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-public class GoogleAccountType extends BaseAccountType {
- private static final String TAG = "GoogleAccountType";
-
- public static final String ACCOUNT_TYPE = "com.google";
-
- private static final List<String> mExtensionPackages =
- Lists.newArrayList("com.google.android.apps.plus");
-
- public GoogleAccountType(Context context, String authenticatorPackageName) {
- this.accountType = ACCOUNT_TYPE;
- this.resourcePackageName = null;
- this.syncAdapterPackageName = authenticatorPackageName;
-
- try {
- addDataKindStructuredName(context);
- addDataKindDisplayName(context);
- addDataKindPhoneticName(context);
- addDataKindNickname(context);
- addDataKindPhone(context);
- addDataKindEmail(context);
- addDataKindStructuredPostal(context);
- addDataKindIm(context);
- addDataKindOrganization(context);
- addDataKindPhoto(context);
- addDataKindNote(context);
- addDataKindWebsite(context);
- addDataKindSipAddress(context);
- addDataKindGroupMembership(context);
- addDataKindRelation(context);
- addDataKindEvent(context);
-
- mIsInitialized = true;
- } catch (DefinitionException e) {
- Log.e(TAG, "Problem building account type", e);
- }
- }
-
- @Override
- public List<String> getExtensionPackageNames() {
- return mExtensionPackages;
- }
-
- @Override
- protected DataKind addDataKindPhone(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindPhone(context);
-
- kind.typeColumn = Phone.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
- kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
- kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
- kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
- kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
- kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true)
- .setCustomColumn(Phone.LABEL));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
-
- return kind;
- }
-
- @Override
- protected DataKind addDataKindEmail(Context context) throws DefinitionException {
- final DataKind kind = super.addDataKindEmail(context);
-
- kind.typeColumn = Email.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildEmailType(Email.TYPE_HOME));
- kind.typeList.add(buildEmailType(Email.TYPE_WORK));
- kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
- kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
- Email.LABEL));
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
-
- return kind;
- }
-
- private DataKind addDataKindRelation(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE,
- R.string.relationLabelsGroup, 160, true, R.layout.text_fields_editor_view));
- kind.actionHeader = new RelationActionInflater();
- kind.actionBody = new SimpleInflater(Relation.NAME);
-
- kind.typeColumn = Relation.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT));
- kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER));
- kind.typeList.add(buildRelationType(Relation.TYPE_CHILD));
- kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER));
- kind.typeList.add(buildRelationType(Relation.TYPE_FATHER));
- kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND));
- kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER));
- kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER));
- kind.typeList.add(buildRelationType(Relation.TYPE_PARENT));
- kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER));
- kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY));
- kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE));
- kind.typeList.add(buildRelationType(Relation.TYPE_SISTER));
- kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE));
- kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true)
- .setCustomColumn(Relation.LABEL));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup,
- FLAGS_RELATION));
-
- return kind;
- }
-
- private DataKind addDataKindEvent(Context context) throws DefinitionException {
- DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
- R.string.eventLabelsGroup, 150, true, R.layout.event_field_editor_view));
- kind.actionHeader = new EventActionInflater();
- kind.actionBody = new SimpleInflater(Event.START_DATE);
-
- kind.typeColumn = Event.TYPE;
- kind.typeList = Lists.newArrayList();
- kind.dateFormatWithoutYear = DateUtils.NO_YEAR_DATE_FORMAT;
- kind.dateFormatWithYear = DateUtils.FULL_DATE_FORMAT;
- kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1));
- kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false));
- kind.typeList.add(buildEventType(Event.TYPE_OTHER, false));
- kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true)
- .setCustomColumn(Event.LABEL));
-
- kind.defaultValues = new ContentValues();
- kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY);
-
- kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT));
-
- return kind;
- }
-
- @Override
- public boolean isGroupMembershipEditable() {
- return true;
- }
-
- @Override
- public boolean areContactsWritable() {
- return true;
- }
-
- @Override
- public String getViewContactNotifyServiceClassName() {
- return "com.google.android.syncadapters.contacts." +
- "SyncHighResPhotoIntentService";
- }
-
- @Override
- public String getViewContactNotifyServicePackageName() {
- return "com.google.android.syncadapters.contacts";
- }
-}
diff --git a/src/com/android/contacts/model/dataitem/DataItem.java b/src/com/android/contacts/model/dataitem/DataItem.java
index 391c657..f1b2ccc 100644
--- a/src/com/android/contacts/model/dataitem/DataItem.java
+++ b/src/com/android/contacts/model/dataitem/DataItem.java
@@ -17,6 +17,7 @@
package com.android.contacts.model.dataitem;
import android.content.ContentValues;
+import android.content.Context;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
@@ -34,9 +35,7 @@
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Contacts.Data;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.RawContact;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
/**
* This is the base class for data items, which represents a row from the Data table.
@@ -45,67 +44,56 @@
private final ContentValues mContentValues;
- /**
- * The raw contact that this data item is associated with. This can be null.
- */
- private final RawContact mRawContact;
- private DataKind mDataKind;
-
- protected DataItem(RawContact rawContact, ContentValues values) {
+ protected DataItem(ContentValues values) {
mContentValues = values;
- mRawContact = rawContact;
}
/**
* Factory for creating subclasses of DataItem objects based on the mimetype in the
* content values. Raw contact is the raw contact that this data item is associated with.
*/
- public static DataItem createFrom(RawContact rawContact, ContentValues values) {
+ public static DataItem createFrom(ContentValues values) {
final String mimeType = values.getAsString(Data.MIMETYPE);
if (GroupMembership.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new GroupMembershipDataItem(rawContact, values);
+ return new GroupMembershipDataItem(values);
} else if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new StructuredNameDataItem(rawContact, values);
+ return new StructuredNameDataItem(values);
} else if (Phone.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new PhoneDataItem(rawContact, values);
+ return new PhoneDataItem(values);
} else if (Email.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new EmailDataItem(rawContact, values);
+ return new EmailDataItem(values);
} else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new StructuredPostalDataItem(rawContact, values);
+ return new StructuredPostalDataItem(values);
} else if (Im.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new ImDataItem(rawContact, values);
+ return new ImDataItem(values);
} else if (Organization.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new OrganizationDataItem(rawContact, values);
+ return new OrganizationDataItem(values);
} else if (Nickname.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new NicknameDataItem(rawContact, values);
+ return new NicknameDataItem(values);
} else if (Note.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new NoteDataItem(rawContact, values);
+ return new NoteDataItem(values);
} else if (Website.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new WebsiteDataItem(rawContact, values);
+ return new WebsiteDataItem(values);
} else if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new SipAddressDataItem(rawContact, values);
+ return new SipAddressDataItem(values);
} else if (Event.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new EventDataItem(rawContact, values);
+ return new EventDataItem(values);
} else if (Relation.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new RelationDataItem(rawContact, values);
+ return new RelationDataItem(values);
} else if (Identity.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new IdentityDataItem(rawContact, values);
+ return new IdentityDataItem(values);
} else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
- return new PhotoDataItem(rawContact, values);
+ return new PhotoDataItem(values);
}
// generic
- return new DataItem(rawContact, values);
+ return new DataItem(values);
}
public ContentValues getContentValues() {
return mContentValues;
}
- protected RawContact getRawContact() {
- return mRawContact;
- }
-
public void setRawContactId(long rawContactId) {
mContentValues.put(Data.RAW_CONTACT_ID, rawContactId);
}
@@ -145,64 +133,25 @@
return mContentValues.getAsInteger(Data.DATA_VERSION);
}
- public AccountTypeManager getAccountTypeManager() {
- if (mRawContact == null) {
- return null;
- } else {
- return mRawContact.getAccountTypeManager();
- }
- }
-
- public AccountType getAccountType() {
- if (mRawContact == null) {
- return null;
- } else {
- return mRawContact.getAccountType();
- }
- }
-
- /**
- * This method can only be invoked if the raw contact is non-null.
- */
- public DataKind getDataKind() {
- if (mRawContact == null) {
- throw new IllegalStateException("mRawContact must be non-null to call getDataKind()");
- }
-
- if (mDataKind == null) {
- mDataKind = getAccountTypeManager().getKindOrFallback(
- mRawContact.getAccountTypeString(), mRawContact.getDataSet(), getMimeType());
- }
-
- return mDataKind;
- }
-
- public boolean hasKindTypeColumn() {
- final String key = getDataKind().typeColumn;
+ public boolean hasKindTypeColumn(DataKind kind) {
+ final String key = kind.typeColumn;
return key != null && mContentValues.containsKey(key);
}
- public int getKindTypeColumn() {
- final String key = getDataKind().typeColumn;
+ public int getKindTypeColumn(DataKind kind) {
+ final String key = kind.typeColumn;
return mContentValues.getAsInteger(key);
}
/**
* This builds the data string depending on the type of data item by using the generic
- * DataKind object underneath. This DataItem object must be associated with a raw contact
- * for this function to work.
+ * DataKind object underneath.
*/
- public String buildDataString() {
- if (mRawContact == null) {
- throw new IllegalStateException("mRawContact must be non-null to call getDataKind()");
- }
- final DataKind kind = getDataKind();
-
+ public String buildDataString(Context context, DataKind kind) {
if (kind.actionBody == null) {
return null;
}
- CharSequence actionBody = kind.actionBody.inflateUsing(mRawContact.getContext(),
- mContentValues);
+ CharSequence actionBody = kind.actionBody.inflateUsing(context, mContentValues);
return actionBody == null ? null : actionBody.toString();
}
@@ -213,13 +162,7 @@
*
* @return Data string representing the data item, possibly formatted for display
*/
- public String buildDataStringForDisplay() {
- return buildDataString();
- }
-
- public String getKindString() {
- final DataKind kind = getDataKind();
- return (kind.titleRes == -1 || kind.titleRes == 0) ? ""
- : mRawContact.getContext().getString(kind.titleRes);
+ public String buildDataStringForDisplay(Context context, DataKind kind) {
+ return buildDataString(context, kind);
}
}
diff --git a/src/com/android/contacts/model/dataitem/DataKind.java b/src/com/android/contacts/model/dataitem/DataKind.java
deleted file mode 100644
index 8707012..0000000
--- a/src/com/android/contacts/model/dataitem/DataKind.java
+++ /dev/null
@@ -1,147 +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.model.dataitem;
-
-import android.content.ContentValues;
-import android.provider.ContactsContract.Data;
-
-import com.android.contacts.R;
-import com.android.contacts.model.account.AccountType.EditField;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.account.AccountType.StringInflater;
-import com.google.common.collect.Iterators;
-
-import java.text.SimpleDateFormat;
-import java.util.List;
-
-/**
- * Description of a specific data type, usually marked by a unique
- * {@link Data#MIMETYPE}. Includes details about how to view and edit
- * {@link Data} rows of this kind, including the possible {@link EditType}
- * labels and editable {@link EditField}.
- */
-public final class DataKind {
-
- public static final String PSEUDO_MIME_TYPE_DISPLAY_NAME = "#displayName";
- public static final String PSEUDO_MIME_TYPE_PHONETIC_NAME = "#phoneticName";
- public static final String PSEUDO_COLUMN_PHONETIC_NAME = "#phoneticName";
-
- public String resourcePackageName;
- public String mimeType;
- public int titleRes;
- public int iconAltRes;
- public int iconAltDescriptionRes;
- public int weight;
- public boolean editable;
-
- public StringInflater actionHeader;
- public StringInflater actionAltHeader;
- public StringInflater actionBody;
-
- public boolean actionBodySocial = false;
-
- public String typeColumn;
-
- /**
- * Maximum number of values allowed in the list. -1 represents infinity.
- */
- public int typeOverallMax;
-
- public List<EditType> typeList;
- public List<EditField> fieldList;
-
- public ContentValues defaultValues;
-
- /** Layout resource id for an editor view to edit this {@link DataKind}. */
- public final int editorLayoutResourceId;
-
- /**
- * If this is a date field, this specifies the format of the date when saving. The
- * date includes year, month and day. If this is not a date field or the date field is not
- * editable, this value should be ignored.
- */
- public SimpleDateFormat dateFormatWithoutYear;
-
- /**
- * If this is a date field, this specifies the format of the date when saving. The
- * date includes month and day. If this is not a date field, the field is not editable or
- * dates without year are not supported, this value should be ignored.
- */
- public SimpleDateFormat dateFormatWithYear;
-
- /**
- * The number of lines available for displaying this kind of data in a
- * {@link ContactDetailFragment} (and possibly elsewhere)
- * Defaults to 1.
- */
- public int maxLinesForDisplay;
-
- public DataKind() {
- editorLayoutResourceId = R.layout.text_fields_editor_view;
- maxLinesForDisplay = 1;
- }
-
- public DataKind(String mimeType, int titleRes, int weight, boolean editable,
- int editorLayoutResourceId) {
- this.mimeType = mimeType;
- this.titleRes = titleRes;
- this.weight = weight;
- this.editable = editable;
- this.typeOverallMax = -1;
- this.editorLayoutResourceId = editorLayoutResourceId;
- maxLinesForDisplay = 1;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("DataKind:");
- sb.append(" resPackageName=").append(resourcePackageName);
- sb.append(" mimeType=").append(mimeType);
- sb.append(" titleRes=").append(titleRes);
- sb.append(" iconAltRes=").append(iconAltRes);
- sb.append(" iconAltDescriptionRes=").append(iconAltDescriptionRes);
- sb.append(" weight=").append(weight);
- sb.append(" editable=").append(editable);
- sb.append(" actionHeader=").append(actionHeader);
- sb.append(" actionAltHeader=").append(actionAltHeader);
- sb.append(" actionBody=").append(actionBody);
- sb.append(" actionBodySocial=").append(actionBodySocial);
- sb.append(" typeColumn=").append(typeColumn);
- sb.append(" typeOverallMax=").append(typeOverallMax);
- sb.append(" typeList=").append(toString(typeList));
- sb.append(" fieldList=").append(toString(fieldList));
- sb.append(" defaultValues=").append(defaultValues);
- sb.append(" editorLayoutResourceId=").append(editorLayoutResourceId);
- sb.append(" dateFormatWithoutYear=").append(toString(dateFormatWithoutYear));
- sb.append(" dateFormatWithYear=").append(toString(dateFormatWithYear));
-
- return sb.toString();
- }
-
- public static String toString(SimpleDateFormat format) {
- return format == null ? "(null)" : format.toPattern();
- }
-
- public static String toString(Iterable<?> list) {
- if (list == null) {
- return "(null)";
- } else {
- return Iterators.toString(list.iterator());
- }
- }
-}
diff --git a/src/com/android/contacts/model/dataitem/EmailDataItem.java b/src/com/android/contacts/model/dataitem/EmailDataItem.java
index a535c73..cb93395 100644
--- a/src/com/android/contacts/model/dataitem/EmailDataItem.java
+++ b/src/com/android/contacts/model/dataitem/EmailDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
-import com.android.contacts.model.RawContact;
-
/**
* Represents an email data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Email}.
*/
public class EmailDataItem extends DataItem {
- /* package */ EmailDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ EmailDataItem(ContentValues values) {
+ super(values);
}
public String getAddress() {
diff --git a/src/com/android/contacts/model/dataitem/EventDataItem.java b/src/com/android/contacts/model/dataitem/EventDataItem.java
index 2114279..1b34a17 100644
--- a/src/com/android/contacts/model/dataitem/EventDataItem.java
+++ b/src/com/android/contacts/model/dataitem/EventDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Event;
-import com.android.contacts.model.RawContact;
-
/**
* Represents an event data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Event}.
*/
public class EventDataItem extends DataItem {
- /* package */ EventDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ EventDataItem(ContentValues values) {
+ super(values);
}
public String getStartDate() {
diff --git a/src/com/android/contacts/model/dataitem/GroupMembershipDataItem.java b/src/com/android/contacts/model/dataitem/GroupMembershipDataItem.java
index aea9bca..a3db7f9 100644
--- a/src/com/android/contacts/model/dataitem/GroupMembershipDataItem.java
+++ b/src/com/android/contacts/model/dataitem/GroupMembershipDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a group memebership data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.GroupMembership}.
*/
public class GroupMembershipDataItem extends DataItem {
- /* package */ GroupMembershipDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ GroupMembershipDataItem(ContentValues values) {
+ super(values);
}
public long getGroupRowId() {
diff --git a/src/com/android/contacts/model/dataitem/IdentityDataItem.java b/src/com/android/contacts/model/dataitem/IdentityDataItem.java
index fd4b836..045867a 100644
--- a/src/com/android/contacts/model/dataitem/IdentityDataItem.java
+++ b/src/com/android/contacts/model/dataitem/IdentityDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Identity;
-import com.android.contacts.model.RawContact;
-
/**
* Represents an identity data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Identity}.
*/
public class IdentityDataItem extends DataItem {
- /* package */ IdentityDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ IdentityDataItem(ContentValues values) {
+ super(values);
}
public String getIdentity() {
diff --git a/src/com/android/contacts/model/dataitem/ImDataItem.java b/src/com/android/contacts/model/dataitem/ImDataItem.java
index 3a08325..00473e5 100644
--- a/src/com/android/contacts/model/dataitem/ImDataItem.java
+++ b/src/com/android/contacts/model/dataitem/ImDataItem.java
@@ -21,8 +21,6 @@
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
-import com.android.contacts.model.RawContact;
-
/**
* Represents an IM data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Im}.
@@ -31,20 +29,18 @@
private final boolean mCreatedFromEmail;
- /* package */ ImDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ ImDataItem(ContentValues values) {
+ super(values);
mCreatedFromEmail = false;
}
- private ImDataItem(RawContact rawContact, ContentValues values,
- boolean createdFromEmail) {
- super(rawContact, values);
+ private ImDataItem(ContentValues values, boolean createdFromEmail) {
+ super(values);
mCreatedFromEmail = createdFromEmail;
}
public static ImDataItem createFromEmail(EmailDataItem item) {
- ImDataItem im = new ImDataItem(item.getRawContact(),
- new ContentValues(item.getContentValues()), true);
+ ImDataItem im = new ImDataItem(new ContentValues(item.getContentValues()), true);
im.setMimeType(Im.CONTENT_ITEM_TYPE);
return im;
}
diff --git a/src/com/android/contacts/model/dataitem/NicknameDataItem.java b/src/com/android/contacts/model/dataitem/NicknameDataItem.java
index 7b52510..79c2c50 100644
--- a/src/com/android/contacts/model/dataitem/NicknameDataItem.java
+++ b/src/com/android/contacts/model/dataitem/NicknameDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a nickname data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Nickname}.
*/
public class NicknameDataItem extends DataItem {
- public NicknameDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ public NicknameDataItem(ContentValues values) {
+ super(values);
}
public String getName() {
diff --git a/src/com/android/contacts/model/dataitem/NoteDataItem.java b/src/com/android/contacts/model/dataitem/NoteDataItem.java
index 0d0fa24..9a572cb 100644
--- a/src/com/android/contacts/model/dataitem/NoteDataItem.java
+++ b/src/com/android/contacts/model/dataitem/NoteDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Note;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a note data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Note}.
*/
public class NoteDataItem extends DataItem {
- /* package */ NoteDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ NoteDataItem(ContentValues values) {
+ super(values);
}
public String getNote() {
diff --git a/src/com/android/contacts/model/dataitem/OrganizationDataItem.java b/src/com/android/contacts/model/dataitem/OrganizationDataItem.java
index 1326bdb..0fbcd01 100644
--- a/src/com/android/contacts/model/dataitem/OrganizationDataItem.java
+++ b/src/com/android/contacts/model/dataitem/OrganizationDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Organization;
-import com.android.contacts.model.RawContact;
-
/**
* Represents an organization data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Organization}.
*/
public class OrganizationDataItem extends DataItem {
- /* package */ OrganizationDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ OrganizationDataItem(ContentValues values) {
+ super(values);
}
public String getCompany() {
diff --git a/src/com/android/contacts/model/dataitem/PhoneDataItem.java b/src/com/android/contacts/model/dataitem/PhoneDataItem.java
index 3931563..c69bee1 100644
--- a/src/com/android/contacts/model/dataitem/PhoneDataItem.java
+++ b/src/com/android/contacts/model/dataitem/PhoneDataItem.java
@@ -17,11 +17,12 @@
package com.android.contacts.model.dataitem;
import android.content.ContentValues;
+import android.content.Context;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.telephony.PhoneNumberUtils;
-import com.android.contacts.model.RawContact;
+import com.android.contacts.common.model.dataitem.DataKind;
/**
* Represents a phone data item, wrapping the columns in
@@ -31,8 +32,8 @@
public static final String KEY_FORMATTED_PHONE_NUMBER = "formattedPhoneNumber";
- /* package */ PhoneDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ PhoneDataItem(ContentValues values) {
+ super(values);
}
public String getNumber() {
@@ -75,7 +76,7 @@
* #computeFormattedPhoneNumber}). Otherwise this method returns the unformatted phone number.
*/
@Override
- public String buildDataStringForDisplay() {
+ public String buildDataStringForDisplay(Context context, DataKind kind) {
final String formatted = getFormattedPhoneNumber();
if (formatted != null) {
return formatted;
diff --git a/src/com/android/contacts/model/dataitem/PhotoDataItem.java b/src/com/android/contacts/model/dataitem/PhotoDataItem.java
index 5e355fa..62eab8f 100644
--- a/src/com/android/contacts/model/dataitem/PhotoDataItem.java
+++ b/src/com/android/contacts/model/dataitem/PhotoDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts.Photo;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a photo data item, wrapping the columns in
* {@link ContactsContract.Contacts.Photo}.
*/
public class PhotoDataItem extends DataItem {
- /* package */ PhotoDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ PhotoDataItem(ContentValues values) {
+ super(values);
}
public long getPhotoFileId() {
diff --git a/src/com/android/contacts/model/dataitem/RelationDataItem.java b/src/com/android/contacts/model/dataitem/RelationDataItem.java
index 7c22cf5..86967f5 100644
--- a/src/com/android/contacts/model/dataitem/RelationDataItem.java
+++ b/src/com/android/contacts/model/dataitem/RelationDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Relation;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a relation data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Relation}.
*/
public class RelationDataItem extends DataItem {
- /* package */ RelationDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ RelationDataItem(ContentValues values) {
+ super(values);
}
public String getName() {
diff --git a/src/com/android/contacts/model/dataitem/SipAddressDataItem.java b/src/com/android/contacts/model/dataitem/SipAddressDataItem.java
index 6b8e93d..3457fb2 100644
--- a/src/com/android/contacts/model/dataitem/SipAddressDataItem.java
+++ b/src/com/android/contacts/model/dataitem/SipAddressDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a sip address data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.SipAddress}.
*/
public class SipAddressDataItem extends DataItem {
- /* package */ SipAddressDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ SipAddressDataItem(ContentValues values) {
+ super(values);
}
public String getSipAddress() {
diff --git a/src/com/android/contacts/model/dataitem/StructuredNameDataItem.java b/src/com/android/contacts/model/dataitem/StructuredNameDataItem.java
index 4654a6f..7d1a44d 100644
--- a/src/com/android/contacts/model/dataitem/StructuredNameDataItem.java
+++ b/src/com/android/contacts/model/dataitem/StructuredNameDataItem.java
@@ -21,8 +21,6 @@
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Contacts.Data;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a structured name data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.StructuredName}.
@@ -30,12 +28,12 @@
public class StructuredNameDataItem extends DataItem {
public StructuredNameDataItem() {
- super(null, new ContentValues());
+ super(new ContentValues());
getContentValues().put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
}
- /* package */ StructuredNameDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ StructuredNameDataItem(ContentValues values) {
+ super(values);
}
public String getDisplayName() {
diff --git a/src/com/android/contacts/model/dataitem/StructuredPostalDataItem.java b/src/com/android/contacts/model/dataitem/StructuredPostalDataItem.java
index cc2cf56..b571bd3 100644
--- a/src/com/android/contacts/model/dataitem/StructuredPostalDataItem.java
+++ b/src/com/android/contacts/model/dataitem/StructuredPostalDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a structured postal data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.StructuredPostal}.
*/
public class StructuredPostalDataItem extends DataItem {
- /* package */ StructuredPostalDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ StructuredPostalDataItem(ContentValues values) {
+ super(values);
}
public String getFormattedAddress() {
diff --git a/src/com/android/contacts/model/dataitem/WebsiteDataItem.java b/src/com/android/contacts/model/dataitem/WebsiteDataItem.java
index c3aadf3..33935fb 100644
--- a/src/com/android/contacts/model/dataitem/WebsiteDataItem.java
+++ b/src/com/android/contacts/model/dataitem/WebsiteDataItem.java
@@ -20,16 +20,14 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Website;
-import com.android.contacts.model.RawContact;
-
/**
* Represents a website data item, wrapping the columns in
* {@link ContactsContract.CommonDataKinds.Website}.
*/
public class WebsiteDataItem extends DataItem {
- /* package */ WebsiteDataItem(RawContact rawContact, ContentValues values) {
- super(rawContact, values);
+ /* package */ WebsiteDataItem(ContentValues values) {
+ super(values);
}
public String getUrl() {
diff --git a/src/com/android/contacts/preference/ContactsPreferences.java b/src/com/android/contacts/preference/ContactsPreferences.java
deleted file mode 100644
index e88417f..0000000
--- a/src/com/android/contacts/preference/ContactsPreferences.java
+++ /dev/null
@@ -1,160 +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.preference;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.os.Handler;
-import android.provider.ContactsContract;
-import android.provider.Settings;
-import android.provider.Settings.SettingNotFoundException;
-
-import com.android.contacts.R;
-
-/**
- * Manages user preferences for contacts.
- */
-public final class ContactsPreferences extends ContentObserver {
-
- public static final String PREF_DISPLAY_ONLY_PHONES = "only_phones";
- public static final boolean PREF_DISPLAY_ONLY_PHONES_DEFAULT = false;
-
- private Context mContext;
- private int mSortOrder = -1;
- private int mDisplayOrder = -1;
- private ChangeListener mListener = null;
- private Handler mHandler;
-
- public ContactsPreferences(Context context) {
- super(null);
- mContext = context;
- mHandler = new Handler();
- }
-
- public boolean isSortOrderUserChangeable() {
- return mContext.getResources().getBoolean(R.bool.config_sort_order_user_changeable);
- }
-
- public int getDefaultSortOrder() {
- if (mContext.getResources().getBoolean(R.bool.config_default_sort_order_primary)) {
- return ContactsContract.Preferences.SORT_ORDER_PRIMARY;
- } else {
- return ContactsContract.Preferences.SORT_ORDER_ALTERNATIVE;
- }
- }
-
- public int getSortOrder() {
- if (!isSortOrderUserChangeable()) {
- return getDefaultSortOrder();
- }
-
- if (mSortOrder == -1) {
- try {
- mSortOrder = Settings.System.getInt(mContext.getContentResolver(),
- ContactsContract.Preferences.SORT_ORDER);
- } catch (SettingNotFoundException e) {
- mSortOrder = getDefaultSortOrder();
- }
- }
- return mSortOrder;
- }
-
- public void setSortOrder(int sortOrder) {
- mSortOrder = sortOrder;
- Settings.System.putInt(mContext.getContentResolver(),
- ContactsContract.Preferences.SORT_ORDER, sortOrder);
- }
-
- public boolean isDisplayOrderUserChangeable() {
- return mContext.getResources().getBoolean(R.bool.config_display_order_user_changeable);
- }
-
- public int getDefaultDisplayOrder() {
- if (mContext.getResources().getBoolean(R.bool.config_default_display_order_primary)) {
- return ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY;
- } else {
- return ContactsContract.Preferences.DISPLAY_ORDER_ALTERNATIVE;
- }
- }
-
- public int getDisplayOrder() {
- if (!isDisplayOrderUserChangeable()) {
- return getDefaultDisplayOrder();
- }
-
- if (mDisplayOrder == -1) {
- try {
- mDisplayOrder = Settings.System.getInt(mContext.getContentResolver(),
- ContactsContract.Preferences.DISPLAY_ORDER);
- } catch (SettingNotFoundException e) {
- mDisplayOrder = getDefaultDisplayOrder();
- }
- }
- return mDisplayOrder;
- }
-
- public void setDisplayOrder(int displayOrder) {
- mDisplayOrder = displayOrder;
- Settings.System.putInt(mContext.getContentResolver(),
- ContactsContract.Preferences.DISPLAY_ORDER, displayOrder);
- }
-
- public void registerChangeListener(ChangeListener listener) {
- if (mListener != null) unregisterChangeListener();
-
- mListener = listener;
-
- // Reset preferences to "unknown" because they may have changed while the
- // observer was unregistered.
- mDisplayOrder = -1;
- mSortOrder = -1;
-
- final ContentResolver contentResolver = mContext.getContentResolver();
- contentResolver.registerContentObserver(
- Settings.System.getUriFor(
- ContactsContract.Preferences.SORT_ORDER), false, this);
- contentResolver.registerContentObserver(
- Settings.System.getUriFor(
- ContactsContract.Preferences.DISPLAY_ORDER), false, this);
- }
-
- public void unregisterChangeListener() {
- if (mListener != null) {
- mContext.getContentResolver().unregisterContentObserver(this);
- mListener = null;
- }
- }
-
- @Override
- public void onChange(boolean selfChange) {
- // This notification is not sent on the Ui thread. Use the previously created Handler
- // to switch to the Ui thread
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mSortOrder = -1;
- mDisplayOrder = -1;
- if (mListener != null) mListener.onChange();
- }
- });
- }
-
- public interface ChangeListener {
- void onChange();
- }
-}
diff --git a/src/com/android/contacts/preference/DisplayOrderPreference.java b/src/com/android/contacts/preference/DisplayOrderPreference.java
index 8629384..81489a0 100644
--- a/src/com/android/contacts/preference/DisplayOrderPreference.java
+++ b/src/com/android/contacts/preference/DisplayOrderPreference.java
@@ -23,6 +23,7 @@
import android.util.AttributeSet;
import com.android.contacts.R;
+import com.android.contacts.common.preference.ContactsPreferences;
/**
* Custom preference: view-name-as (first name first or last name first).
diff --git a/src/com/android/contacts/preference/SortOrderPreference.java b/src/com/android/contacts/preference/SortOrderPreference.java
index 6ad4aad..da51eed 100644
--- a/src/com/android/contacts/preference/SortOrderPreference.java
+++ b/src/com/android/contacts/preference/SortOrderPreference.java
@@ -23,6 +23,7 @@
import android.util.AttributeSet;
import com.android.contacts.R;
+import com.android.contacts.common.preference.ContactsPreferences;
/**
* Custom preference: sort-by.
diff --git a/src/com/android/contacts/quickcontact/Action.java b/src/com/android/contacts/quickcontact/Action.java
index 08fbce4..fa23286 100644
--- a/src/com/android/contacts/quickcontact/Action.java
+++ b/src/com/android/contacts/quickcontact/Action.java
@@ -20,7 +20,7 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import com.android.contacts.Collapser;
+import com.android.contacts.common.Collapser;
/**
* Abstract definition of an action that could be performed, along with
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index 829475f..0750a1d 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -28,18 +28,19 @@
import android.text.TextUtils;
import android.util.Log;
+import com.android.contacts.common.CallUtil;
import com.android.contacts.ContactsUtils;
import com.android.contacts.R;
-import com.android.contacts.model.account.AccountType.EditType;
+import com.android.contacts.common.MoreContactUtils;
+import com.android.contacts.common.model.account.AccountType.EditType;
import com.android.contacts.model.dataitem.DataItem;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.EmailDataItem;
import com.android.contacts.model.dataitem.ImDataItem;
import com.android.contacts.model.dataitem.PhoneDataItem;
import com.android.contacts.model.dataitem.SipAddressDataItem;
import com.android.contacts.model.dataitem.StructuredPostalDataItem;
import com.android.contacts.model.dataitem.WebsiteDataItem;
-import com.android.contacts.util.Constants;
import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.util.StructuredPostalUtils;
@@ -69,18 +70,18 @@
/**
* Create an action from common {@link Data} elements.
*/
- public DataAction(Context context, DataItem item) {
+ public DataAction(Context context, DataItem item, DataKind kind) {
mContext = context;
- mKind = item.getDataKind();
+ mKind = kind;
mMimeType = item.getMimeType();
// Determine type for subtitle
mSubtitle = "";
- if (item.hasKindTypeColumn()) {
- final int typeValue = item.getKindTypeColumn();
+ if (item.hasKindTypeColumn(kind)) {
+ final int typeValue = item.getKindTypeColumn(kind);
// get type string
- for (EditType type : item.getDataKind().typeList) {
+ for (EditType type : kind.typeList) {
if (type.rawValue == typeValue) {
if (type.customColumn == null) {
// Non-custom type. Get its description from the resource
@@ -95,7 +96,7 @@
}
mIsPrimary = item.isSuperPrimary();
- mBody = item.buildDataStringForDisplay();
+ mBody = item.buildDataStringForDisplay(context, kind);
mDataId = item.getId();
mDataUri = ContentUris.withAppendedId(Data.CONTENT_URI, mDataId);
@@ -110,17 +111,17 @@
final String number = phone.getNumber();
if (!TextUtils.isEmpty(number)) {
- final Intent phoneIntent = hasPhone ? ContactsUtils.getCallIntent(number)
+ final Intent phoneIntent = hasPhone ? CallUtil.getCallIntent(number)
: null;
final Intent smsIntent = hasSms ? new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts(Constants.SCHEME_SMSTO, number, null)) : null;
+ Uri.fromParts(CallUtil.SCHEME_SMSTO, number, null)) : null;
// Configure Icons and Intents. Notice actionIcon is already set to the phone
if (hasPhone && hasSms) {
mIntent = phoneIntent;
mAlternateIntent = smsIntent;
- mAlternateIconRes = phone.getDataKind().iconAltRes;
- mAlternateIconDescriptionRes = phone.getDataKind().iconAltDescriptionRes;
+ mAlternateIconRes = kind.iconAltRes;
+ mAlternateIconDescriptionRes = kind.iconAltDescriptionRes;
} else if (hasPhone) {
mIntent = phoneIntent;
} else if (hasSms) {
@@ -133,8 +134,8 @@
final SipAddressDataItem sip = (SipAddressDataItem) item;
final String address = sip.getSipAddress();
if (!TextUtils.isEmpty(address)) {
- final Uri callUri = Uri.fromParts(Constants.SCHEME_SIP, address, null);
- mIntent = ContactsUtils.getCallIntent(callUri);
+ final Uri callUri = Uri.fromParts(CallUtil.SCHEME_SIP, address, null);
+ mIntent = CallUtil.getCallIntent(callUri);
// Note that this item will get a SIP-specific variant
// of the "call phone" icon, rather than the standard
// app icon for the Phone app (which we show for
@@ -147,7 +148,7 @@
final EmailDataItem email = (EmailDataItem) item;
final String address = email.getData();
if (!TextUtils.isEmpty(address)) {
- final Uri mailUri = Uri.fromParts(Constants.SCHEME_MAILTO, address, null);
+ final Uri mailUri = Uri.fromParts(CallUtil.SCHEME_MAILTO, address, null);
mIntent = new Intent(Intent.ACTION_SENDTO, mailUri);
}
@@ -182,7 +183,7 @@
if (!TextUtils.isEmpty(host) && !TextUtils.isEmpty(data)) {
final String authority = host.toLowerCase();
- final Uri imUri = new Uri.Builder().scheme(Constants.SCHEME_IMTO).authority(
+ final Uri imUri = new Uri.Builder().scheme(CallUtil.SCHEME_IMTO).authority(
authority).appendPath(data).build();
mIntent = new Intent(Intent.ACTION_SENDTO, imUri);
@@ -292,11 +293,8 @@
}
@Override
- public boolean collapseWith(Action other) {
- if (!shouldCollapseWith(other)) {
- return false;
- }
- return true;
+ public void collapseWith(Action other) {
+ // No-op
}
@Override
@@ -309,7 +307,7 @@
return false;
}
DataAction that = (DataAction)t;
- if (!ContactsUtils.shouldCollapse(mMimeType, mBody, that.mMimeType, that.mBody)) {
+ if (!MoreContactUtils.shouldCollapse(mMimeType, mBody, that.mMimeType, that.mBody)) {
return false;
}
if (!TextUtils.equals(mMimeType, that.mMimeType)
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index d39b380..f8d4405 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -40,6 +40,7 @@
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.text.TextUtils;
@@ -56,20 +57,22 @@
import android.widget.TextView;
import android.widget.Toast;
-import com.android.contacts.Collapser;
+import com.android.contacts.common.Collapser;
import com.android.contacts.R;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.Contact;
import com.android.contacts.model.ContactLoader;
import com.android.contacts.model.RawContact;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.model.dataitem.DataItem;
-import com.android.contacts.model.dataitem.DataKind;
+import com.android.contacts.common.model.dataitem.DataKind;
import com.android.contacts.model.dataitem.EmailDataItem;
import com.android.contacts.model.dataitem.ImDataItem;
-import com.android.contacts.util.Constants;
+import com.android.contacts.common.util.Constants;
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.ImageViewDrawableSetter;
import com.android.contacts.util.SchedulingUtils;
-import com.android.contacts.util.StopWatch;
+import com.android.contacts.common.util.StopWatch;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
@@ -112,6 +115,7 @@
private ImageView mOpenDetailsImage;
private ImageButton mOpenDetailsPushLayerButton;
private ViewPager mListPager;
+ private ViewPagerAdapter mPagerAdapter;
private ContactLoader mContactLoader;
@@ -221,7 +225,8 @@
}
};
mOpenDetailsPushLayerButton.setOnClickListener(openDetailsClickHandler);
- mListPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
+ mPagerAdapter = new ViewPagerAdapter(getFragmentManager());
+ mListPager.setAdapter(mPagerAdapter);
mListPager.setOnPageChangeListener(new PageChangeListener());
final Rect sourceBounds = intent.getSourceBounds();
@@ -347,6 +352,9 @@
for (RawContact rawContact : data.getRawContacts()) {
for (DataItem dataItem : rawContact.getDataItems()) {
final String mimeType = dataItem.getMimeType();
+ final AccountType accountType = rawContact.getAccountType(this);
+ final DataKind dataKind = AccountTypeManager.getInstance(this)
+ .getKindOrFallback(accountType, mimeType);
// Skip this data item if MIME-type excluded
if (isMimeExcluded(mimeType)) continue;
@@ -355,11 +363,11 @@
final boolean isPrimary = dataItem.isPrimary();
final boolean isSuperPrimary = dataItem.isSuperPrimary();
- if (dataItem.getDataKind() != null) {
+ if (dataKind != null) {
// 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);
+ final Action action = new DataAction(context, dataItem, dataKind);
final boolean wasAdded = considerAdd(action, cache, isSuperPrimary);
if (wasAdded) {
// Remember the default
@@ -374,8 +382,8 @@
if (status != null && dataItem instanceof EmailDataItem) {
final EmailDataItem email = (EmailDataItem) dataItem;
final ImDataItem im = ImDataItem.createFromEmail(email);
- if (im.getDataKind() != null) {
- final DataAction action = new DataAction(context, im);
+ if (dataKind != null) {
+ final DataAction action = new DataAction(context, im, dataKind);
action.setPresence(status.getPresence());
considerAdd(action, cache, isSuperPrimary);
}
@@ -420,13 +428,14 @@
mSortedActionMimeTypes.add(mimeType);
}
}
+ mPagerAdapter.notifyDataSetChanged();
mStopWatch.lap("mt"); // Mime types initialized
// Add buttons for each mimetype
mTrack.removeAllViews();
for (String mimeType : mSortedActionMimeTypes) {
- final View actionView = inflateAction(mimeType, cache, mTrack);
+ final View actionView = inflateAction(mimeType, cache, mTrack, data.getDisplayName());
mTrack.addView(actionView);
}
@@ -460,7 +469,8 @@
* 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) {
+ private View inflateAction(String mimeType, ResolveCache resolveCache,
+ ViewGroup root, String name) {
final CheckableImageView typeView = (CheckableImageView) getLayoutInflater().inflate(
R.layout.quickcontact_track_button, root, false);
@@ -469,7 +479,7 @@
final Action firstInfo = children.get(0);
// Set icon and listen for clicks
- final CharSequence descrip = resolveCache.getDescription(firstInfo);
+ final CharSequence descrip = resolveCache.getDescription(firstInfo, name);
final Drawable icon = resolveCache.getIcon(firstInfo);
typeView.setChecked(false);
typeView.setContentDescription(descrip);
@@ -571,8 +581,8 @@
@Override
public Fragment getItem(int position) {
- QuickContactListFragment fragment = new QuickContactListFragment();
final String mimeType = mSortedActionMimeTypes.get(position);
+ QuickContactListFragment fragment = new QuickContactListFragment(mimeType);
final List<Action> actions = mActions.get(mimeType);
fragment.setActions(actions);
return fragment;
@@ -582,15 +592,38 @@
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;
+ }
+ }
+ return PagerAdapter.POSITION_NONE;
+ }
}
private class PageChangeListener extends SimpleOnPageChangeListener {
+ private int mScrollingState = ViewPager.SCROLL_STATE_IDLE;
+
@Override
public void onPageSelected(int position) {
final CheckableImageView actionView = getActionViewAt(position);
mTrackScroller.requestChildRectangleOnScreen(actionView,
new Rect(0, 0, actionView.getWidth(), actionView.getHeight()), false);
- renderSelectedRectangle(position, 0);
+ // Don't render rectangle if we are currently scrolling to prevent it from flickering
+ if (mScrollingState == ViewPager.SCROLL_STATE_IDLE) {
+ renderSelectedRectangle(position, 0);
+ }
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ super.onPageScrollStateChanged(state);
+ mScrollingState = state;
}
@Override
@@ -602,7 +635,7 @@
final RelativeLayout.LayoutParams layoutParams =
(RelativeLayout.LayoutParams) mSelectedTabRectangle.getLayoutParams();
final int width = layoutParams.width;
- layoutParams.leftMargin = (int) ((position + positionOffset) * width);
+ layoutParams.setMarginStart((int) ((position + positionOffset) * width));
mSelectedTabRectangle.setLayoutParams(layoutParams);
}
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index 6fed31d..6a0b27b 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -32,7 +32,7 @@
import android.widget.RelativeLayout;
import android.widget.TextView;
-import com.android.contacts.ContactPresenceIconUtil;
+import com.android.contacts.common.ContactPresenceIconUtil;
import com.android.contacts.R;
import java.util.List;
@@ -43,9 +43,11 @@
private List<Action> mActions;
private RelativeLayout mFragmentContainer;
private Listener mListener;
+ private String mMimeType;
- public QuickContactListFragment() {
+ public QuickContactListFragment(String mimeType) {
setRetainInstance(true);
+ this.mMimeType = mimeType;
}
@Override
@@ -60,6 +62,10 @@
return mFragmentContainer;
}
+ public String getMimeType() {
+ return mMimeType;
+ }
+
public void setActions(List<Action> actions) {
mActions = actions;
configureAdapter();
@@ -125,8 +131,11 @@
alternateActionButton.setContentDescription(action.getAlternateIconDescription());
alternateActionButton.setVisibility(hasAlternateAction ? View.VISIBLE : View.GONE);
- // Special case for phone numbers in accessibility mode
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) {
diff --git a/src/com/android/contacts/quickcontact/ResolveCache.java b/src/com/android/contacts/quickcontact/ResolveCache.java
index ec59b94..af5d160 100644
--- a/src/com/android/contacts/quickcontact/ResolveCache.java
+++ b/src/com/android/contacts/quickcontact/ResolveCache.java
@@ -206,16 +206,18 @@
* Find the best description for the given {@link Action}, usually used
* for accessibility purposes.
*/
- public CharSequence getDescription(Action action) {
- final CharSequence actionSubtitle = action.getSubtitle();
+ public CharSequence getDescription(Action action, String name) {
final ResolveInfo info = getEntry(action).bestResolve;
- if (info != null) {
- return info.loadLabel(mPackageManager);
- } else if (!TextUtils.isEmpty(actionSubtitle)) {
- return actionSubtitle;
+ final CharSequence infoStr = info != null ? info.loadLabel(mPackageManager) : null;
+ CharSequence actionDesc = action.getSubtitle();
+ CharSequence strs[];
+ if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(actionDesc)) {
+ strs = new CharSequence[]{infoStr, name, actionDesc};
} else {
- return null;
+ strs = new CharSequence[]{infoStr, action.getBody()};
}
+ CharSequence desc = TextUtils.join(" ", strs);
+ return !TextUtils.isEmpty(desc) ? desc : null;
}
/**
diff --git a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
index 259f38d..40c29b9 100644
--- a/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
+++ b/src/com/android/contacts/socialwidget/SocialWidgetProvider.java
@@ -38,10 +38,10 @@
import android.widget.RemoteViews;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.Contact;
import com.android.contacts.model.ContactLoader;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.quickcontact.QuickContactBroadcastReceiver;
import com.android.contacts.util.ContactBadgeUtil;
import com.android.contacts.util.HtmlUtils;
diff --git a/src/com/android/contacts/test/FragmentTestActivity.java b/src/com/android/contacts/test/FragmentTestActivity.java
deleted file mode 100644
index 80c6731..0000000
--- a/src/com/android/contacts/test/FragmentTestActivity.java
+++ /dev/null
@@ -1,44 +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.test;
-
-import android.os.Bundle;
-import android.view.Window;
-import android.view.WindowManager;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-
-/**
- * An activity that is used for testing fragments. A unit test starts this
- * activity, adds a fragment and then tests the fragment.
- */
-public class FragmentTestActivity extends ContactsActivity {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Normally fragment/activity onStart() methods will not be called when screen is locked.
- // Use the following flags to ensure that activities can be show for testing.
- Window window = getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
- WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
-
- setContentView(R.layout.fragment_test);
- }
-}
diff --git a/src/com/android/contacts/test/NeededForTesting.java b/src/com/android/contacts/test/NeededForTesting.java
deleted file mode 100644
index f40fe2c..0000000
--- a/src/com/android/contacts/test/NeededForTesting.java
+++ /dev/null
@@ -1,30 +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.test;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Denotes that the class, constructor, method or field is used by tests and therefore cannot be
- * removed by tools like ProGuard.
- */
-@Retention(RetentionPolicy.CLASS)
-@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.FIELD})
-public @interface NeededForTesting {}
diff --git a/src/com/android/contacts/util/AccountFilterUtil.java b/src/com/android/contacts/util/AccountFilterUtil.java
deleted file mode 100644
index b95972c..0000000
--- a/src/com/android/contacts/util/AccountFilterUtil.java
+++ /dev/null
@@ -1,166 +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.app.Activity;
-import android.app.Fragment;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.list.AccountFilterActivity;
-import com.android.contacts.list.ContactListFilter;
-import com.android.contacts.list.ContactListFilterController;
-
-/**
- * Utility class for account filter manipulation.
- */
-public class AccountFilterUtil {
- private static final String TAG = AccountFilterUtil.class.getSimpleName();
-
- /**
- * Find TextView with the id "account_filter_header" and set correct text for the account
- * filter header.
- *
- * @param filterContainer View containing TextView with id "account_filter_header"
- * @return true when header text is set in the call. You may use this for conditionally
- * showing or hiding this entire view.
- */
- public static boolean updateAccountFilterTitleForPeople(View filterContainer,
- ContactListFilter filter, boolean showTitleForAllAccounts) {
- return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, false);
- }
-
- /**
- * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean,
- * boolean)}, but for Phone UI.
- */
- public static boolean updateAccountFilterTitleForPhone(View filterContainer,
- ContactListFilter filter, boolean showTitleForAllAccounts) {
- return updateAccountFilterTitle(
- filterContainer, filter, showTitleForAllAccounts, true);
- }
-
- private static boolean updateAccountFilterTitle(View filterContainer,
- ContactListFilter filter, boolean showTitleForAllAccounts,
- boolean forPhone) {
- final Context context = filterContainer.getContext();
- final TextView headerTextView = (TextView)
- filterContainer.findViewById(R.id.account_filter_header);
-
- boolean textWasSet = false;
- if (filter != null) {
- if (forPhone) {
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
- if (showTitleForAllAccounts) {
- headerTextView.setText(R.string.list_filter_phones);
- textWasSet = true;
- }
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
- headerTextView.setText(context.getString(
- R.string.listAllContactsInAccount, filter.accountName));
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- headerTextView.setText(R.string.listCustomView);
- textWasSet = true;
- } else {
- Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected.");
- }
- } else {
- if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
- if (showTitleForAllAccounts) {
- headerTextView.setText(R.string.list_filter_all_accounts);
- textWasSet = true;
- }
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
- headerTextView.setText(context.getString(
- R.string.listAllContactsInAccount, filter.accountName));
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- headerTextView.setText(R.string.listCustomView);
- textWasSet = true;
- } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
- headerTextView.setText(R.string.listSingleContact);
- textWasSet = true;
- } else {
- Log.w(TAG, "Filter type \"" + filter.filterType + "\" isn't expected.");
- }
- }
- } else {
- Log.w(TAG, "Filter is null.");
- }
- return textWasSet;
- }
-
- /**
- * Launches account filter setting Activity using
- * {@link Activity#startActivityForResult(Intent, int)}.
- *
- * @param activity
- * @param requestCode requestCode for {@link Activity#startActivityForResult(Intent, int)}
- * @param currentFilter currently-selected filter, so that it can be displayed as activated.
- */
- public static void startAccountFilterActivityForResult(
- Activity activity, int requestCode, ContactListFilter currentFilter) {
- final Intent intent = new Intent(activity, AccountFilterActivity.class);
- intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter);
- activity.startActivityForResult(intent, requestCode);
- }
-
- /**
- * Very similar to
- * {@link #startAccountFilterActivityForResult(Activity, int, ContactListFilter)}
- * but uses Fragment instead.
- */
- public static void startAccountFilterActivityForResult(
- Fragment fragment, int requestCode, ContactListFilter currentFilter) {
- final Activity activity = fragment.getActivity();
- if (activity != null) {
- final Intent intent = new Intent(activity, AccountFilterActivity.class);
- intent.putExtra(AccountFilterActivity.KEY_EXTRA_CURRENT_FILTER, currentFilter);
- fragment.startActivityForResult(intent, requestCode);
- } else {
- Log.w(TAG, "getActivity() returned null. Ignored");
- }
- }
-
- /**
- * Useful method to handle onActivityResult() for
- * {@link #startAccountFilterActivityForResult(Activity, int)} or
- * {@link #startAccountFilterActivityForResult(Fragment, int)}.
- *
- * This will update filter via a given ContactListFilterController.
- */
- public static void handleAccountFilterResult(
- ContactListFilterController filterController, int resultCode, Intent data) {
- if (resultCode == Activity.RESULT_OK) {
- final ContactListFilter filter = (ContactListFilter)
- data.getParcelableExtra(AccountFilterActivity.KEY_EXTRA_CONTACT_LIST_FILTER);
- if (filter == null) {
- return;
- }
- if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
- filterController.selectCustomFilter();
- } else {
- filterController.setContactListFilter(filter, true);
- }
- }
- }
-}
diff --git a/src/com/android/contacts/util/AccountPromptUtils.java b/src/com/android/contacts/util/AccountPromptUtils.java
index cdefda0..979176b 100644
--- a/src/com/android/contacts/util/AccountPromptUtils.java
+++ b/src/com/android/contacts/util/AccountPromptUtils.java
@@ -30,7 +30,7 @@
import android.util.Log;
import com.android.contacts.R;
-import com.android.contacts.model.account.GoogleAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
import java.io.IOException;
diff --git a/src/com/android/contacts/util/AccountSelectionUtil.java b/src/com/android/contacts/util/AccountSelectionUtil.java
deleted file mode 100644
index d83cb41..0000000
--- a/src/com/android/contacts/util/AccountSelectionUtil.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.Uri;
-import android.util.Log;
-import android.view.ContextThemeWrapper;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-
-import java.util.List;
-
-/**
- * Utility class for selectiong an Account for importing contact(s)
- */
-public class AccountSelectionUtil {
- // TODO: maybe useful for EditContactActivity.java...
- private static final String LOG_TAG = "AccountSelectionUtil";
-
- public static boolean mVCardShare = false;
-
- public static Uri mPath;
-
- public static class AccountSelectedListener
- implements DialogInterface.OnClickListener {
-
- final private Context mContext;
- final private int mResId;
-
- final protected List<AccountWithDataSet> mAccountList;
-
- public AccountSelectedListener(Context context, List<AccountWithDataSet> accountList,
- int resId) {
- if (accountList == null || accountList.size() == 0) {
- Log.e(LOG_TAG, "The size of Account list is 0.");
- }
- mContext = context;
- mAccountList = accountList;
- mResId = resId;
- }
-
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- doImport(mContext, mResId, mAccountList.get(which));
- }
- }
-
- public static Dialog getSelectAccountDialog(Context context, int resId) {
- return getSelectAccountDialog(context, resId, null, null);
- }
-
- public static Dialog getSelectAccountDialog(Context context, int resId,
- DialogInterface.OnClickListener onClickListener) {
- return getSelectAccountDialog(context, resId, onClickListener, null);
- }
-
- /**
- * When OnClickListener or OnCancelListener is null, uses a default listener.
- * The default OnCancelListener just closes itself with {@link Dialog#dismiss()}.
- */
- public static Dialog getSelectAccountDialog(Context context, int resId,
- DialogInterface.OnClickListener onClickListener,
- DialogInterface.OnCancelListener onCancelListener) {
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(context);
- final List<AccountWithDataSet> writableAccountList = accountTypes.getAccounts(true);
-
- Log.i(LOG_TAG, "The number of available accounts: " + writableAccountList.size());
-
- // Assume accountList.size() > 1
-
- // Wrap our context to inflate list items using correct theme
- final Context dialogContext = new ContextThemeWrapper(
- context, android.R.style.Theme_Light);
- final LayoutInflater dialogInflater = (LayoutInflater)dialogContext
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final ArrayAdapter<AccountWithDataSet> accountAdapter =
- new ArrayAdapter<AccountWithDataSet>(context, android.R.layout.simple_list_item_2,
- writableAccountList) {
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = dialogInflater.inflate(
- android.R.layout.simple_list_item_2,
- parent, false);
- }
-
- // TODO: show icon along with title
- final TextView text1 =
- (TextView)convertView.findViewById(android.R.id.text1);
- final TextView text2 =
- (TextView)convertView.findViewById(android.R.id.text2);
-
- final AccountWithDataSet account = this.getItem(position);
- final AccountType accountType = accountTypes.getAccountType(
- account.type, account.dataSet);
- final Context context = getContext();
-
- text1.setText(account.name);
- text2.setText(accountType.getDisplayLabel(context));
-
- return convertView;
- }
- };
-
- if (onClickListener == null) {
- AccountSelectedListener accountSelectedListener =
- new AccountSelectedListener(context, writableAccountList, resId);
- onClickListener = accountSelectedListener;
- }
- if (onCancelListener == null) {
- onCancelListener = new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- dialog.dismiss();
- }
- };
- }
- return new AlertDialog.Builder(context)
- .setTitle(R.string.dialog_new_contact_account)
- .setSingleChoiceItems(accountAdapter, 0, onClickListener)
- .setOnCancelListener(onCancelListener)
- .create();
- }
-
- public static void doImport(Context context, int resId, AccountWithDataSet account) {
- switch (resId) {
- case R.string.import_from_sim: {
- doImportFromSim(context, account);
- break;
- }
- case R.string.import_from_sdcard: {
- doImportFromSdCard(context, account);
- break;
- }
- }
- }
-
- public static void doImportFromSim(Context context, AccountWithDataSet account) {
- Intent importIntent = new Intent(Intent.ACTION_VIEW);
- importIntent.setType("vnd.android.cursor.item/sim-contact");
- if (account != null) {
- importIntent.putExtra("account_name", account.name);
- importIntent.putExtra("account_type", account.type);
- importIntent.putExtra("data_set", account.dataSet);
- }
- importIntent.setClassName("com.android.phone", "com.android.phone.SimContacts");
- context.startActivity(importIntent);
- }
-
- public static void doImportFromSdCard(Context context, AccountWithDataSet account) {
- Intent importIntent = new Intent(context,
- com.android.contacts.vcard.ImportVCardActivity.class);
- if (account != null) {
- importIntent.putExtra("account_name", account.name);
- importIntent.putExtra("account_type", account.type);
- importIntent.putExtra("data_set", account.dataSet);
- }
-
- if (mVCardShare) {
- importIntent.setAction(Intent.ACTION_VIEW);
- importIntent.setData(mPath);
- }
- mVCardShare = false;
- mPath = null;
- context.startActivity(importIntent);
- }
-}
diff --git a/src/com/android/contacts/util/AccountsListAdapter.java b/src/com/android/contacts/util/AccountsListAdapter.java
deleted file mode 100644
index 4355cba..0000000
--- a/src/com/android/contacts/util/AccountsListAdapter.java
+++ /dev/null
@@ -1,123 +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.text.TextUtils.TruncateAt;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * List-Adapter for Account selection
- */
-public final class AccountsListAdapter extends BaseAdapter {
- private final LayoutInflater mInflater;
- private final List<AccountWithDataSet> mAccounts;
- private final AccountTypeManager mAccountTypes;
- private final Context mContext;
-
- /**
- * Filters that affect the list of accounts that is displayed by this adapter.
- */
- public enum AccountListFilter {
- ALL_ACCOUNTS, // All read-only and writable accounts
- ACCOUNTS_CONTACT_WRITABLE, // Only where the account type is contact writable
- ACCOUNTS_GROUP_WRITABLE // Only accounts where the account type is group writable
- }
-
- public AccountsListAdapter(Context context, AccountListFilter accountListFilter) {
- this(context, accountListFilter, null);
- }
-
- /**
- * @param currentAccount the Account currently selected by the user, which should come
- * first in the list. Can be null.
- */
- public AccountsListAdapter(Context context, AccountListFilter accountListFilter,
- AccountWithDataSet currentAccount) {
- mContext = context;
- mAccountTypes = AccountTypeManager.getInstance(context);
- mAccounts = getAccounts(accountListFilter);
- if (currentAccount != null
- && !mAccounts.isEmpty()
- && !mAccounts.get(0).equals(currentAccount)
- && mAccounts.remove(currentAccount)) {
- mAccounts.add(0, currentAccount);
- }
- mInflater = LayoutInflater.from(context);
- }
-
- private List<AccountWithDataSet> getAccounts(AccountListFilter accountListFilter) {
- if (accountListFilter == AccountListFilter.ACCOUNTS_GROUP_WRITABLE) {
- return new ArrayList<AccountWithDataSet>(mAccountTypes.getGroupWritableAccounts());
- }
- return new ArrayList<AccountWithDataSet>(mAccountTypes.getAccounts(
- accountListFilter == AccountListFilter.ACCOUNTS_CONTACT_WRITABLE));
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final View resultView = convertView != null ? convertView
- : mInflater.inflate(R.layout.account_selector_list_item, parent, false);
-
- final TextView text1 = (TextView) resultView.findViewById(android.R.id.text1);
- final TextView text2 = (TextView) resultView.findViewById(android.R.id.text2);
- final ImageView icon = (ImageView) resultView.findViewById(android.R.id.icon);
-
- final AccountWithDataSet account = mAccounts.get(position);
- final AccountType accountType = mAccountTypes.getAccountType(account.type, account.dataSet);
-
- text1.setText(accountType.getDisplayLabel(mContext));
-
- // For email addresses, we don't want to truncate at end, which might cut off the domain
- // name.
- text2.setText(account.name);
- text2.setEllipsize(TruncateAt.MIDDLE);
-
- icon.setImageDrawable(accountType.getDisplayIcon(mContext));
-
- return resultView;
- }
-
- @Override
- public int getCount() {
- return mAccounts.size();
- }
-
- @Override
- public AccountWithDataSet getItem(int position) {
- return mAccounts.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-}
-
diff --git a/src/com/android/contacts/util/AsyncTaskExecutor.java b/src/com/android/contacts/util/AsyncTaskExecutor.java
deleted file mode 100644
index f202949..0000000
--- a/src/com/android/contacts/util/AsyncTaskExecutor.java
+++ /dev/null
@@ -1,48 +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.os.AsyncTask;
-
-import java.util.concurrent.Executor;
-
-/**
- * Interface used to submit {@link AsyncTask} objects to run in the background.
- * <p>
- * This interface has a direct parallel with the {@link Executor} interface. It exists to decouple
- * the mechanics of AsyncTask submission from the description of how that AsyncTask will execute.
- * <p>
- * One immediate benefit of this approach is that testing becomes much easier, since it is easy to
- * introduce a mock or fake AsyncTaskExecutor in unit/integration tests, and thus inspect which
- * tasks have been submitted and control their execution in an orderly manner.
- * <p>
- * Another benefit in due course will be the management of the submitted tasks. An extension to this
- * interface is planned to allow Activities to easily cancel all the submitted tasks that are still
- * pending in the onDestroy() method of the Activity.
- */
-public interface AsyncTaskExecutor {
- /**
- * Executes the given AsyncTask with the default Executor.
- * <p>
- * This method <b>must only be called from the ui thread</b>.
- * <p>
- * The identifier supplied is any Object that can be used to identify the task later. Most
- * commonly this will be an enum which the tests can also refer to. {@code null} is also
- * accepted, though of course this won't help in identifying the task later.
- */
- <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params);
-}
diff --git a/src/com/android/contacts/util/AsyncTaskExecutors.java b/src/com/android/contacts/util/AsyncTaskExecutors.java
deleted file mode 100644
index 36b05c7..0000000
--- a/src/com/android/contacts/util/AsyncTaskExecutors.java
+++ /dev/null
@@ -1,100 +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.os.AsyncTask;
-import android.os.Looper;
-
-import com.android.contacts.test.NeededForTesting;
-import com.google.common.base.Preconditions;
-
-import java.util.concurrent.Executor;
-
-/**
- * Factory methods for creating AsyncTaskExecutors.
- * <p>
- * All of the factory methods on this class check first to see if you have set a static
- * {@link AsyncTaskExecutorFactory} set through the
- * {@link #setFactoryForTest(AsyncTaskExecutorFactory)} method, and if so delegate to that instead,
- * which is one way of injecting dependencies for testing classes whose construction cannot be
- * controlled such as {@link android.app.Activity}.
- */
-public final class AsyncTaskExecutors {
- /**
- * A single instance of the {@link AsyncTaskExecutorFactory}, to which we delegate if it is
- * non-null, for injecting when testing.
- */
- private static AsyncTaskExecutorFactory mInjectedAsyncTaskExecutorFactory = null;
-
- /**
- * Creates an AsyncTaskExecutor that submits tasks to run with
- * {@link AsyncTask#SERIAL_EXECUTOR}.
- */
- public static AsyncTaskExecutor createAsyncTaskExecutor() {
- synchronized (AsyncTaskExecutors.class) {
- if (mInjectedAsyncTaskExecutorFactory != null) {
- return mInjectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
- }
- return new SimpleAsyncTaskExecutor(AsyncTask.SERIAL_EXECUTOR);
- }
- }
-
- /**
- * Creates an AsyncTaskExecutor that submits tasks to run with
- * {@link AsyncTask#THREAD_POOL_EXECUTOR}.
- */
- public static AsyncTaskExecutor createThreadPoolExecutor() {
- synchronized (AsyncTaskExecutors.class) {
- if (mInjectedAsyncTaskExecutorFactory != null) {
- return mInjectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
- }
- return new SimpleAsyncTaskExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
- }
-
- /** Interface for creating AsyncTaskExecutor objects. */
- public interface AsyncTaskExecutorFactory {
- AsyncTaskExecutor createAsyncTaskExeuctor();
- }
-
- @NeededForTesting
- public static void setFactoryForTest(AsyncTaskExecutorFactory factory) {
- synchronized (AsyncTaskExecutors.class) {
- mInjectedAsyncTaskExecutorFactory = factory;
- }
- }
-
- public static void checkCalledFromUiThread() {
- Preconditions.checkState(Thread.currentThread() == Looper.getMainLooper().getThread(),
- "submit method must be called from ui thread, was: " + Thread.currentThread());
- }
-
- private static class SimpleAsyncTaskExecutor implements AsyncTaskExecutor {
- private final Executor mExecutor;
-
- public SimpleAsyncTaskExecutor(Executor executor) {
- mExecutor = executor;
- }
-
- @Override
- public <T> AsyncTask<T, ?, ?> submit(Object identifer, AsyncTask<T, ?, ?> task,
- T... params) {
- checkCalledFromUiThread();
- return task.executeOnExecutor(mExecutor, params);
- }
- }
-}
diff --git a/src/com/android/contacts/util/BitmapUtil.java b/src/com/android/contacts/util/BitmapUtil.java
deleted file mode 100644
index 87eeb3c..0000000
--- a/src/com/android/contacts/util/BitmapUtil.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-
-/**
- * Provides static functions to decode bitmaps at the optimal size
- */
-public class BitmapUtil {
- private BitmapUtil() {}
-
- /**
- * Returns Width or Height of the picture, depending on which size is smaller. Doesn't actually
- * decode the picture, so it is pretty efficient to run.
- */
- public static int getSmallerExtentFromBytes(byte[] bytes) {
- final BitmapFactory.Options options = new BitmapFactory.Options();
-
- // don't actually decode the picture, just return its bounds
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
-
- // test what the best sample size is
- return Math.min(options.outWidth, options.outHeight);
- }
-
- /**
- * Finds the optimal sampleSize for loading the picture
- * @param originalSmallerExtent Width or height of the picture, whichever is smaller
- * @param targetExtent Width or height of the target view, whichever is bigger.
- *
- * If either one of the parameters is 0 or smaller, no sampling is applied
- */
- public static int findOptimalSampleSize(int originalSmallerExtent, int targetExtent) {
- // If we don't know sizes, we can't do sampling.
- if (targetExtent < 1) return 1;
- if (originalSmallerExtent < 1) return 1;
-
- // Test what the best sample size is. To do that, we find the sample size that gives us
- // the best trade-off between resulting image size and memory requirement. We allow
- // the down-sampled image to be 20% smaller than the target size. That way we can get around
- // unfortunate cases where e.g. a 720 picture is requested for 362 and not down-sampled at
- // all. Why 20%? Why not. Prove me wrong.
- int extent = originalSmallerExtent;
- int sampleSize = 1;
- while ((extent >> 1) >= targetExtent * 0.8f) {
- sampleSize <<= 1;
- extent >>= 1;
- }
-
- return sampleSize;
- }
-
- /**
- * Decodes the bitmap with the given sample size
- */
- public static Bitmap decodeBitmapFromBytes(byte[] bytes, int sampleSize) {
- final BitmapFactory.Options options;
- if (sampleSize <= 1) {
- options = null;
- } else {
- options = new BitmapFactory.Options();
- options.inSampleSize = sampleSize;
- }
- return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
- }
-}
diff --git a/src/com/android/contacts/util/ClipboardUtils.java b/src/com/android/contacts/util/ClipboardUtils.java
deleted file mode 100644
index 1d0a3c1..0000000
--- a/src/com/android/contacts/util/ClipboardUtils.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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
- */
-
-package com.android.contacts.util;
-
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.text.TextUtils;
-import android.widget.Toast;
-
-import com.android.contacts.R;
-
-public class ClipboardUtils {
- private static final String TAG = "ClipboardUtils";
-
- private ClipboardUtils() { }
-
- /**
- * Copy a text to clipboard.
- *
- * @param context Context
- * @param label Label to show to the user describing this clip.
- * @param text Text to copy.
- * @param showToast If {@code true}, a toast is shown to the user.
- */
- public static void copyText(Context context, CharSequence label, CharSequence text,
- boolean showToast) {
- if (TextUtils.isEmpty(text)) return;
-
- ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(
- Context.CLIPBOARD_SERVICE);
- ClipData clipData = ClipData.newPlainText(label == null ? "" : label, text);
- clipboardManager.setPrimaryClip(clipData);
-
- if (showToast) {
- String toastText = context.getString(R.string.toast_text_copied);
- Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
- }
- }
-}
diff --git a/src/com/android/contacts/util/Constants.java b/src/com/android/contacts/util/Constants.java
deleted file mode 100644
index eb68f5a..0000000
--- a/src/com/android/contacts/util/Constants.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-public class Constants {
- public static final String MIME_TYPE_VIDEO_CHAT = "vnd.android.cursor.item/video-chat-address";
-
- public static final String SCHEME_TEL = "tel";
- public static final String SCHEME_SMSTO = "smsto";
- public static final String SCHEME_MAILTO = "mailto";
- public static final String SCHEME_IMTO = "imto";
- public static final String SCHEME_SIP = "sip";
-
- /**
- * Log tag for performance measurement.
- * To enable: adb shell setprop log.tag.ContactsPerf VERBOSE
- */
- public static final String PERFORMANCE_TAG = "ContactsPerf";
-
- /**
- * Log tag for enabling/disabling StrictMode violation log.
- * To enable: adb shell setprop log.tag.ContactsStrictMode DEBUG
- */
- public static final String STRICT_MODE_TAG = "ContactsStrictMode";
-}
diff --git a/src/com/android/contacts/util/ContactBadgeUtil.java b/src/com/android/contacts/util/ContactBadgeUtil.java
index 5c2cc65..fa1a60c 100644
--- a/src/com/android/contacts/util/ContactBadgeUtil.java
+++ b/src/com/android/contacts/util/ContactBadgeUtil.java
@@ -26,7 +26,7 @@
import android.text.format.DateUtils;
import android.util.Log;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.R;
/**
diff --git a/src/com/android/contacts/util/DateUtils.java b/src/com/android/contacts/util/DateUtils.java
index 89127c9..e20aadf 100644
--- a/src/com/android/contacts/util/DateUtils.java
+++ b/src/com/android/contacts/util/DateUtils.java
@@ -19,10 +19,13 @@
import android.content.Context;
import android.text.format.DateFormat;
+import com.android.contacts.common.util.CommonDateUtils;
+
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
@@ -32,26 +35,17 @@
public class DateUtils {
public static final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC");
- // All the SimpleDateFormats in this class use the UTC timezone
- public static final SimpleDateFormat NO_YEAR_DATE_FORMAT =
- new SimpleDateFormat("--MM-dd", Locale.US);
/**
* When parsing a date without a year, the system assumes 1970, which wasn't a leap-year.
* Let's add a one-off hack for that day of the year
*/
public static final String NO_YEAR_DATE_FEB29TH = "--02-29";
- public static final SimpleDateFormat FULL_DATE_FORMAT =
- new SimpleDateFormat("yyyy-MM-dd", Locale.US);
- public static final SimpleDateFormat DATE_AND_TIME_FORMAT =
- new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
- public static final SimpleDateFormat NO_YEAR_DATE_AND_TIME_FORMAT =
- new SimpleDateFormat("--MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
// Variations of ISO 8601 date format. Do not change the order - it does affect the
// result in ambiguous cases.
private static final SimpleDateFormat[] DATE_FORMATS = {
- FULL_DATE_FORMAT,
- DATE_AND_TIME_FORMAT,
+ CommonDateUtils.FULL_DATE_FORMAT,
+ CommonDateUtils.DATE_AND_TIME_FORMAT,
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'", Locale.US),
new SimpleDateFormat("yyyyMMdd", Locale.US),
new SimpleDateFormat("yyyyMMdd'T'HHmmssSSS'Z'", Locale.US),
@@ -59,55 +53,105 @@
new SimpleDateFormat("yyyyMMdd'T'HHmm'Z'", Locale.US),
};
- private static final java.text.DateFormat FORMAT_WITHOUT_YEAR_MONTH_FIRST =
- new SimpleDateFormat("MMMM dd");
-
- private static final java.text.DateFormat FORMAT_WITHOUT_YEAR_DAY_FIRST =
- new SimpleDateFormat("dd MMMM");
-
static {
for (SimpleDateFormat format : DATE_FORMATS) {
format.setLenient(true);
format.setTimeZone(UTC_TIMEZONE);
}
- NO_YEAR_DATE_FORMAT.setTimeZone(UTC_TIMEZONE);
- FORMAT_WITHOUT_YEAR_MONTH_FIRST.setTimeZone(UTC_TIMEZONE);
- FORMAT_WITHOUT_YEAR_DAY_FIRST.setTimeZone(UTC_TIMEZONE);
+ CommonDateUtils.NO_YEAR_DATE_FORMAT.setTimeZone(UTC_TIMEZONE);
}
/**
- * Parses the supplied string to see if it looks like a date. If so,
- * returns the date. Otherwise, returns null.
+ * Parses the supplied string to see if it looks like a date.
+ *
+ * @param string The string representation of the provided date
+ * @param mustContainYear If true, the string is parsed as a date containing a year. If false,
+ * the string is parsed into a valid date even if the year field is missing.
+ * @return A Calendar object corresponding to the date if the string is successfully parsed.
+ * If not, null is returned.
*/
- public static Date parseDate(String string) {
+ public static Calendar parseDate(String string, boolean mustContainYear) {
ParsePosition parsePosition = new ParsePosition(0);
+ Date date;
+ if (!mustContainYear) {
+ final boolean noYearParsed;
+ // Unfortunately, we can't parse Feb 29th correctly, so let's handle this day seperately
+ if (NO_YEAR_DATE_FEB29TH.equals(string)) {
+ return getUtcDate(0, Calendar.FEBRUARY, 29);
+ } else {
+ synchronized (CommonDateUtils.NO_YEAR_DATE_FORMAT) {
+ date = CommonDateUtils.NO_YEAR_DATE_FORMAT.parse(string, parsePosition);
+ }
+ noYearParsed = parsePosition.getIndex() == string.length();
+ }
+
+ if (noYearParsed) {
+ return getUtcDate(date, true);
+ }
+ }
for (int i = 0; i < DATE_FORMATS.length; i++) {
SimpleDateFormat f = DATE_FORMATS[i];
synchronized (f) {
parsePosition.setIndex(0);
- Date date = f.parse(string, parsePosition);
+ date = f.parse(string, parsePosition);
if (parsePosition.getIndex() == string.length()) {
- return date;
+ return getUtcDate(date, false);
}
}
}
return null;
}
- private static final Date getUtcDate(int year, int month, int dayOfMonth) {
+ private static final Calendar getUtcDate(Date date, boolean noYear) {
final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US);
+ calendar.setTime(date);
+ if (noYear) {
+ calendar.set(Calendar.YEAR, 0);
+ }
+ return calendar;
+ }
+
+ private static final Calendar getUtcDate(int year, int month, int dayOfMonth) {
+ final Calendar calendar = Calendar.getInstance(UTC_TIMEZONE, Locale.US);
+ calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
- return calendar.getTime();
+ return calendar;
+ }
+
+ public static boolean isYearSet(Calendar cal) {
+ // use the Calendar.YEAR field to track whether or not the year is set instead of
+ // Calendar.isSet() because doing Calendar.get() causes Calendar.isSet() to become
+ // true irregardless of what the previous value was
+ return cal.get(Calendar.YEAR) > 1;
}
/**
- * Parses the supplied string to see if it looks like a date. If so,
- * returns the same date in a cleaned-up format for the user. Otherwise, returns
- * the supplied string unchanged.
+ * Same as {@link #formatDate(Context context, String string, boolean longForm)}, with
+ * longForm set to {@code true} by default.
+ *
+ * @param context Valid context
+ * @param string String representation of a date to parse
+ * @return Returns the same date in a cleaned up format. If the supplied string does not look
+ * like a date, return it unchanged.
*/
+
public static String formatDate(Context context, String string) {
+ return formatDate(context, string, true);
+ }
+
+ /**
+ * Parses the supplied string to see if it looks like a date.
+ *
+ * @param context Valid context
+ * @param string String representation of a date to parse
+ * @param longForm If true, return the date formatted into its long string representation.
+ * If false, return the date formatted using its short form representation (i.e. 12/11/2012)
+ * @return Returns the same date in a cleaned up format. If the supplied string does not look
+ * like a date, return it unchanged.
+ */
+ public static String formatDate(Context context, String string, boolean longForm) {
if (string == null) {
return null;
}
@@ -116,45 +160,26 @@
if (string.length() == 0) {
return string;
}
+ final Calendar cal = parseDate(string, false);
- ParsePosition parsePosition = new ParsePosition(0);
+ // we weren't able to parse the string successfully so just return it unchanged
+ if (cal == null) {
+ return string;
+ }
- final boolean noYearParsed;
- Date date;
-
- // Unfortunately, we can't parse Feb 29th correctly, so let's handle this day seperately
- if (NO_YEAR_DATE_FEB29TH.equals(string)) {
- date = getUtcDate(0, Calendar.FEBRUARY, 29);
- noYearParsed = true;
+ final boolean isYearSet = isYearSet(cal);
+ final java.text.DateFormat outFormat;
+ if (!isYearSet) {
+ outFormat = getLocalizedDateFormatWithoutYear(context);
} else {
- synchronized (NO_YEAR_DATE_FORMAT) {
- date = NO_YEAR_DATE_FORMAT.parse(string, parsePosition);
- }
- noYearParsed = parsePosition.getIndex() == string.length();
+ outFormat =
+ longForm ? DateFormat.getLongDateFormat(context) :
+ DateFormat.getDateFormat(context);
}
-
- if (noYearParsed) {
- java.text.DateFormat outFormat = isMonthBeforeDay(context)
- ? FORMAT_WITHOUT_YEAR_MONTH_FIRST
- : FORMAT_WITHOUT_YEAR_DAY_FIRST;
- synchronized (outFormat) {
- return outFormat.format(date);
- }
+ synchronized (outFormat) {
+ outFormat.setTimeZone(UTC_TIMEZONE);
+ return outFormat.format(cal.getTime());
}
-
- for (int i = 0; i < DATE_FORMATS.length; i++) {
- SimpleDateFormat f = DATE_FORMATS[i];
- synchronized (f) {
- parsePosition.setIndex(0);
- date = f.parse(string, parsePosition);
- if (parsePosition.getIndex() == string.length()) {
- java.text.DateFormat outFormat = DateFormat.getDateFormat(context);
- outFormat.setTimeZone(UTC_TIMEZONE);
- return outFormat.format(date);
- }
- }
- }
- return string;
}
public static boolean isMonthBeforeDay(Context context) {
@@ -169,4 +194,79 @@
}
return false;
}
+
+ /**
+ * Returns a SimpleDateFormat object without the year fields by using a regular expression
+ * to eliminate the year in the string pattern. In the rare occurence that the resulting
+ * pattern cannot be reconverted into a SimpleDateFormat, it uses the provided context to
+ * determine whether the month field should be displayed before the day field, and returns
+ * either "MMMM dd" or "dd MMMM" converted into a SimpleDateFormat.
+ */
+ public static java.text.DateFormat getLocalizedDateFormatWithoutYear(Context context) {
+ final String pattern = ((SimpleDateFormat) SimpleDateFormat.getDateInstance(
+ java.text.DateFormat.LONG)).toPattern();
+ // Determine the correct regex pattern for year.
+ // Special case handling for Spanish locale by checking for "de"
+ final String yearPattern = pattern.contains(
+ "de") ? "[^Mm]*[Yy]+[^Mm]*" : "[^DdMm]*[Yy]+[^DdMm]*";
+ try {
+ // Eliminate the substring in pattern that matches the format for that of year
+ return new SimpleDateFormat(pattern.replaceAll(yearPattern, ""));
+ } catch (IllegalArgumentException e) {
+ return new SimpleDateFormat(
+ DateUtils.isMonthBeforeDay(context) ? "MMMM dd" : "dd MMMM");
+ }
+ }
+
+ /**
+ * Given a calendar (possibly containing only a day of the year), returns the earliest possible
+ * anniversary of the date that is equal to or after the current point in time if the date
+ * does not contain a year, or the date converted to the local time zone (if the date contains
+ * a year.
+ *
+ * @param target The date we wish to convert(in the UTC time zone).
+ * @return If date does not contain a year (year < 1900), returns the next earliest anniversary
+ * that is after the current point in time (in the local time zone). Otherwise, returns the
+ * adjusted Date in the local time zone.
+ */
+ public static Date getNextAnnualDate(Calendar target) {
+ final Calendar today = Calendar.getInstance();
+ today.setTime(new Date());
+
+ // Round the current time to the exact start of today so that when we compare
+ // today against the target date, both dates are set to exactly 0000H.
+ today.set(Calendar.HOUR_OF_DAY, 0);
+ today.set(Calendar.MINUTE, 0);
+ today.set(Calendar.SECOND, 0);
+ today.set(Calendar.MILLISECOND, 0);
+
+ final boolean isYearSet = isYearSet(target);
+ final int targetYear = target.get(Calendar.YEAR);
+ final int targetMonth = target.get(Calendar.MONTH);
+ final int targetDay = target.get(Calendar.DAY_OF_MONTH);
+ final boolean isFeb29 = (targetMonth == Calendar.FEBRUARY && targetDay == 29);
+ final GregorianCalendar anniversary = new GregorianCalendar();
+ // Convert from the UTC date to the local date. Set the year to today's year if the
+ // there is no provided year (targetYear < 1900)
+ anniversary.set(!isYearSet ? today.get(Calendar.YEAR) : targetYear,
+ targetMonth, targetDay);
+ // If the anniversary's date is before the start of today and there is no year set,
+ // increment the year by 1 so that the returned date is always equal to or greater than
+ // today. If the day is a leap year, keep going until we get the next leap year anniversary
+ // Otherwise if there is already a year set, simply return the exact date.
+ if (!isYearSet) {
+ int anniversaryYear = today.get(Calendar.YEAR);
+ if (anniversary.before(today) ||
+ (isFeb29 && !anniversary.isLeapYear(anniversaryYear))) {
+ // If the target date is not Feb 29, then set the anniversary to the next year.
+ // Otherwise, keep going until we find the next leap year (this is not guaranteed
+ // to be in 4 years time).
+ do {
+ anniversaryYear +=1;
+ } while (isFeb29 && !anniversary.isLeapYear(anniversaryYear));
+ anniversary.set(anniversaryYear, targetMonth, targetDay);
+ }
+ }
+ return anniversary.getTime();
+ }
}
diff --git a/src/com/android/contacts/util/EmptyLoader.java b/src/com/android/contacts/util/EmptyLoader.java
deleted file mode 100644
index 97478bd..0000000
--- a/src/com/android/contacts/util/EmptyLoader.java
+++ /dev/null
@@ -1,60 +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.app.LoaderManager.LoaderCallbacks;
-import android.content.Context;
-import android.content.Loader;
-import android.os.Bundle;
-
-/**
- * A {@link Loader} only used to make use of the {@link android.app.Fragment#setStartDeferred}
- * feature from an old-style fragment which doesn't use {@link Loader}s to load data.
- *
- * This loader never delivers results. A caller fragment must destroy it when deferred fragments
- * should be started.
- */
-public class EmptyLoader extends Loader<Object> {
- public EmptyLoader(Context context) {
- super(context);
- }
-
- /**
- * {@link LoaderCallbacks} which just generates {@link EmptyLoader}. {@link #onLoadFinished}
- * and {@link #onLoaderReset} are no-op.
- */
- public static class Callback implements LoaderCallbacks<Object> {
- private final Context mContext;
-
- public Callback(Context context) {
- mContext = context.getApplicationContext();
- }
-
- @Override
- public Loader<Object> onCreateLoader(int id, Bundle args) {
- return new EmptyLoader(mContext);
- }
-
- @Override
- public void onLoadFinished(Loader<Object> loader, Object data) {
- }
-
- @Override
- public void onLoaderReset(Loader<Object> loader) {
- }
- }
-}
diff --git a/src/com/android/contacts/util/EmptyService.java b/src/com/android/contacts/util/EmptyService.java
deleted file mode 100644
index 2e6a159..0000000
--- a/src/com/android/contacts/util/EmptyService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-
-/**
- * Background {@link Service} that is used to keep our process alive long enough
- * for background threads to finish. Started and stopped directly by specific
- * background tasks when needed.
- */
-public class EmptyService extends Service {
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
-}
diff --git a/src/com/android/contacts/util/ExpirableCache.java b/src/com/android/contacts/util/ExpirableCache.java
deleted file mode 100644
index 3f19a26..0000000
--- a/src/com/android/contacts/util/ExpirableCache.java
+++ /dev/null
@@ -1,266 +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.util.LruCache;
-
-import com.android.contacts.test.NeededForTesting;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.annotation.concurrent.Immutable;
-import javax.annotation.concurrent.ThreadSafe;
-
-/**
- * An LRU cache in which all items can be marked as expired at a given time and it is possible to
- * query whether a particular cached value is expired or not.
- * <p>
- * A typical use case for this is caching of values which are expensive to compute but which are
- * still useful when out of date.
- * <p>
- * Consider a cache for contact information:
- * <pre>{@code
- * private ExpirableCache<String, Contact> mContactCache;}</pre>
- * which stores the contact information for a given phone number.
- * <p>
- * When we need to store contact information for a given phone number, we can look up the info in
- * the cache:
- * <pre>{@code
- * CachedValue<Contact> cachedContact = mContactCache.getCachedValue(phoneNumber);
- * }</pre>
- * We might also want to fetch the contact information again if the item is expired.
- * <pre>
- * if (cachedContact.isExpired()) {
- * fetchContactForNumber(phoneNumber,
- * new FetchListener() {
- * @Override
- * public void onFetched(Contact contact) {
- * mContactCache.put(phoneNumber, contact);
- * }
- * });
- * }</pre>
- * and insert it back into the cache when the fetch completes.
- * <p>
- * At a certain point we want to expire the content of the cache because we know the content may
- * no longer be up-to-date, for instance, when resuming the activity this is shown into:
- * <pre>
- * @Override
- * protected onResume() {
- * // We were paused for some time, the cached value might no longer be up to date.
- * mContactCache.expireAll();
- * super.onResume();
- * }
- * </pre>
- * The values will be still available from the cache, but they will be expired.
- * <p>
- * If interested only in the value itself, not whether it is expired or not, one should use the
- * {@link #getPossiblyExpired(Object)} method. If interested only in non-expired values, one should
- * use the {@link #get(Object)} method instead.
- * <p>
- * This class wraps around an {@link LruCache} instance: it follows the {@link LruCache} behavior
- * for evicting items when the cache is full. It is possible to supply your own subclass of LruCache
- * by using the {@link #create(LruCache)} method, which can define a custom expiration policy.
- * Since the underlying cache maps keys to cached values it can determine which items are expired
- * and which are not, allowing for an implementation that evicts expired items before non expired
- * ones.
- * <p>
- * This class is thread-safe.
- *
- * @param <K> the type of the keys
- * @param <V> the type of the values
- */
-@ThreadSafe
-public class ExpirableCache<K, V> {
- /**
- * A cached value stored inside the cache.
- * <p>
- * It provides access to the value stored in the cache but also allows to check whether the
- * value is expired.
- *
- * @param <V> the type of value stored in the cache
- */
- public interface CachedValue<V> {
- /** Returns the value stored in the cache for a given key. */
- public V getValue();
-
- /**
- * Checks whether the value, while still being present in the cache, is expired.
- *
- * @return true if the value is expired
- */
- public boolean isExpired();
- }
-
- /**
- * Cached values storing the generation at which they were added.
- */
- @Immutable
- private static class GenerationalCachedValue<V> implements ExpirableCache.CachedValue<V> {
- /** The value stored in the cache. */
- public final V mValue;
- /** The generation at which the value was added to the cache. */
- private final int mGeneration;
- /** The atomic integer storing the current generation of the cache it belongs to. */
- private final AtomicInteger mCacheGeneration;
-
- /**
- * @param cacheGeneration the atomic integer storing the generation of the cache in which
- * this value will be stored
- */
- public GenerationalCachedValue(V value, AtomicInteger cacheGeneration) {
- mValue = value;
- mCacheGeneration = cacheGeneration;
- // Snapshot the current generation.
- mGeneration = mCacheGeneration.get();
- }
-
- @Override
- public V getValue() {
- return mValue;
- }
-
- @Override
- public boolean isExpired() {
- return mGeneration != mCacheGeneration.get();
- }
- }
-
- /** The underlying cache used to stored the cached values. */
- private LruCache<K, CachedValue<V>> mCache;
-
- /**
- * The current generation of items added to the cache.
- * <p>
- * Items in the cache can belong to a previous generation, but in that case they would be
- * expired.
- *
- * @see ExpirableCache.CachedValue#isExpired()
- */
- private final AtomicInteger mGeneration;
-
- private ExpirableCache(LruCache<K, CachedValue<V>> cache) {
- mCache = cache;
- mGeneration = new AtomicInteger(0);
- }
-
- /**
- * Returns the cached value for the given key, or null if no value exists.
- * <p>
- * The cached value gives access both to the value associated with the key and whether it is
- * expired or not.
- * <p>
- * If not interested in whether the value is expired, use {@link #getPossiblyExpired(Object)}
- * instead.
- * <p>
- * If only wants values that are not expired, use {@link #get(Object)} instead.
- *
- * @param key the key to look up
- */
- public CachedValue<V> getCachedValue(K key) {
- return mCache.get(key);
- }
-
- /**
- * Returns the value for the given key, or null if no value exists.
- * <p>
- * When using this method, it is not possible to determine whether the value is expired or not.
- * Use {@link #getCachedValue(Object)} to achieve that instead. However, if using
- * {@link #getCachedValue(Object)} to determine if an item is expired, one should use the item
- * within the {@link CachedValue} and not call {@link #getPossiblyExpired(Object)} to get the
- * value afterwards, since that is not guaranteed to return the same value or that the newly
- * returned value is in the same state.
- *
- * @param key the key to look up
- */
- public V getPossiblyExpired(K key) {
- CachedValue<V> cachedValue = getCachedValue(key);
- return cachedValue == null ? null : cachedValue.getValue();
- }
-
- /**
- * Returns the value for the given key only if it is not expired, or null if no value exists or
- * is expired.
- * <p>
- * This method will return null if either there is no value associated with this key or if the
- * associated value is expired.
- *
- * @param key the key to look up
- */
- @NeededForTesting
- public V get(K key) {
- CachedValue<V> cachedValue = getCachedValue(key);
- return cachedValue == null || cachedValue.isExpired() ? null : cachedValue.getValue();
- }
-
- /**
- * Puts an item in the cache.
- * <p>
- * Newly added item will not be expired until {@link #expireAll()} is next called.
- *
- * @param key the key to look up
- * @param value the value to associate with the key
- */
- public void put(K key, V value) {
- mCache.put(key, newCachedValue(value));
- }
-
- /**
- * Mark all items currently in the cache as expired.
- * <p>
- * Newly added items after this call will be marked as not expired.
- * <p>
- * Expiring the items in the cache does not imply they will be evicted.
- */
- public void expireAll() {
- mGeneration.incrementAndGet();
- }
-
- /**
- * Creates a new {@link CachedValue} instance to be stored in this cache.
- * <p>
- * Implementation of {@link LruCache#create(K)} can use this method to create a new entry.
- */
- public CachedValue<V> newCachedValue(V value) {
- return new GenerationalCachedValue<V>(value, mGeneration);
- }
-
- /**
- * Creates a new {@link ExpirableCache} that wraps the given {@link LruCache}.
- * <p>
- * The created cache takes ownership of the cache passed in as an argument.
- *
- * @param <K> the type of the keys
- * @param <V> the type of the values
- * @param cache the cache to store the value in
- * @return the newly created expirable cache
- * @throws IllegalArgumentException if the cache is not empty
- */
- public static <K, V> ExpirableCache<K, V> create(LruCache<K, CachedValue<V>> cache) {
- return new ExpirableCache<K, V>(cache);
- }
-
- /**
- * Creates a new {@link ExpirableCache} with the given maximum size.
- *
- * @param <K> the type of the keys
- * @param <V> the type of the values
- * @return the newly created expirable cache
- */
- public static <K, V> ExpirableCache<K, V> create(int maxSize) {
- return create(new LruCache<K, CachedValue<V>>(maxSize));
- }
-}
diff --git a/src/com/android/contacts/util/ImageViewDrawableSetter.java b/src/com/android/contacts/util/ImageViewDrawableSetter.java
index b231572..91ecd61 100644
--- a/src/com/android/contacts/util/ImageViewDrawableSetter.java
+++ b/src/com/android/contacts/util/ImageViewDrawableSetter.java
@@ -26,7 +26,7 @@
import android.util.Log;
import android.widget.ImageView;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.model.Contact;
import java.util.Arrays;
diff --git a/src/com/android/contacts/util/LocalizedNameResolver.java b/src/com/android/contacts/util/LocalizedNameResolver.java
deleted file mode 100644
index ec0b812..0000000
--- a/src/com/android/contacts/util/LocalizedNameResolver.java
+++ /dev/null
@@ -1,161 +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.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ServiceInfo;
-import android.content.res.Resources;
-import android.content.res.Resources.NotFoundException;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.Xml;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-/**
- * Retrieves localized names per account type. This allows customizing texts like
- * "All Contacts" for certain account types, but e.g. "All Friends" or "All Connections" for others.
- */
-public class LocalizedNameResolver {
- private static final String TAG = "LocalizedNameResolver";
-
- /**
- * Meta-data key for the contacts configuration associated with a sync service.
- */
- private static final String METADATA_CONTACTS = "android.provider.CONTACTS_STRUCTURE";
-
- private static final String CONTACTS_DATA_KIND = "ContactsDataKind";
-
- /**
- * Returns the name for All Contacts for the specified account type.
- */
- public static String getAllContactsName(Context context, String accountType) {
- if (context == null) throw new IllegalArgumentException("Context must not be null");
- if (accountType == null) return null;
-
- return resolveAllContactsName(context, accountType);
- }
-
- /**
- * Finds "All Contacts"-Name for the specified account type.
- */
- private static String resolveAllContactsName(Context context, String accountType) {
- final AccountManager am = AccountManager.get(context);
-
- for (AuthenticatorDescription auth : am.getAuthenticatorTypes()) {
- if (accountType.equals(auth.type)) {
- return resolveAllContactsNameFromMetaData(context, auth.packageName);
- }
- }
-
- return null;
- }
-
- /**
- * Finds the meta-data XML containing the contacts configuration and
- * reads the picture priority from that file.
- */
- private static String resolveAllContactsNameFromMetaData(Context context, String packageName) {
- final PackageManager pm = context.getPackageManager();
- try {
- PackageInfo pi = pm.getPackageInfo(packageName, PackageManager.GET_SERVICES
- | PackageManager.GET_META_DATA);
- if (pi != null && pi.services != null) {
- for (ServiceInfo si : pi.services) {
- final XmlResourceParser parser = si.loadXmlMetaData(pm, METADATA_CONTACTS);
- if (parser != null) {
- return loadAllContactsNameFromXml(context, parser, packageName);
- }
- }
- }
- } catch (NameNotFoundException e) {
- Log.w(TAG, "Problem loading \"All Contacts\"-name: " + e.toString());
- }
- return null;
- }
-
- private static String loadAllContactsNameFromXml(Context context, XmlPullParser parser,
- String packageName) {
- try {
- final AttributeSet attrs = Xml.asAttributeSet(parser);
- int type;
- while ((type = parser.next()) != XmlPullParser.START_TAG
- && type != XmlPullParser.END_DOCUMENT) {
- // Drain comments and whitespace
- }
-
- if (type != XmlPullParser.START_TAG) {
- throw new IllegalStateException("No start tag found");
- }
-
- final int depth = parser.getDepth();
- while (((type = parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth)
- && type != XmlPullParser.END_DOCUMENT) {
- String name = parser.getName();
- if (type == XmlPullParser.START_TAG && CONTACTS_DATA_KIND.equals(name)) {
- final TypedArray typedArray = context.obtainStyledAttributes(attrs,
- android.R.styleable.ContactsDataKind);
- try {
- // See if a string has been hardcoded directly into the xml
- final String nonResourceString = typedArray.getNonResourceString(
- android.R.styleable.ContactsDataKind_allContactsName);
- if (nonResourceString != null) {
- return nonResourceString;
- }
-
- // See if a resource is referenced. We can't rely on getString
- // to automatically resolve it as the resource lives in a different package
- int id = typedArray.getResourceId(
- android.R.styleable.ContactsDataKind_allContactsName, 0);
- if (id == 0) return null;
-
- // Resolve the resource Id
- final PackageManager packageManager = context.getPackageManager();
- final Resources resources;
- try {
- resources = packageManager.getResourcesForApplication(packageName);
- } catch (NameNotFoundException e) {
- return null;
- }
- try {
- return resources.getString(id);
- } catch (NotFoundException e) {
- return null;
- }
- } finally {
- typedArray.recycle();
- }
- }
- }
- return null;
- } catch (XmlPullParserException e) {
- throw new IllegalStateException("Problem reading XML", e);
- } catch (IOException e) {
- throw new IllegalStateException("Problem reading XML", e);
- }
- }
-}
diff --git a/src/com/android/contacts/util/MemoryUtils.java b/src/com/android/contacts/util/MemoryUtils.java
deleted file mode 100644
index f634151..0000000
--- a/src/com/android/contacts/util/MemoryUtils.java
+++ /dev/null
@@ -1,39 +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 com.android.internal.util.MemInfoReader;
-
-public final class MemoryUtils {
- private MemoryUtils() {
- }
-
- private static long sTotalMemorySize = -1;
-
- public static long getTotalMemorySize() {
- if (sTotalMemorySize < 0) {
- MemInfoReader reader = new MemInfoReader();
- reader.readMemInfo();
-
- // getTotalSize() returns the "MemTotal" value from /proc/meminfo.
- // Because the linux kernel doesn't see all the RAM on the system (e.g. GPU takes some),
- // this is usually smaller than the actual RAM size.
- sTotalMemorySize = reader.getTotalSize();
- }
- return sTotalMemorySize;
- }
-}
diff --git a/src/com/android/contacts/util/PhoneCapabilityTester.java b/src/com/android/contacts/util/PhoneCapabilityTester.java
index 421341c..5f73418 100644
--- a/src/com/android/contacts/util/PhoneCapabilityTester.java
+++ b/src/com/android/contacts/util/PhoneCapabilityTester.java
@@ -22,8 +22,10 @@
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.net.sip.SipManager;
+import android.provider.MediaStore;
import android.telephony.TelephonyManager;
+import com.android.contacts.common.CallUtil;
import com.android.contacts.R;
import java.util.List;
@@ -78,7 +80,15 @@
public static boolean isSmsIntentRegistered(Context context) {
// Don't cache the result as the user might install third party apps to send SMS
final Intent intent = new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts(Constants.SCHEME_SMSTO, "", null));
+ Uri.fromParts(CallUtil.SCHEME_SMSTO, "", null));
+ return isIntentRegistered(context, intent);
+ }
+
+ /**
+ * Returns true if there is a camera on the device
+ */
+ public static boolean isCameraIntentRegistered(Context context) {
+ final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
return isIntentRegistered(context, intent);
}
diff --git a/src/com/android/contacts/util/PhoneNumberFormatter.java b/src/com/android/contacts/util/PhoneNumberFormatter.java
deleted file mode 100644
index 7ae28db..0000000
--- a/src/com/android/contacts/util/PhoneNumberFormatter.java
+++ /dev/null
@@ -1,73 +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.os.AsyncTask;
-import android.telephony.PhoneNumberFormattingTextWatcher;
-import android.widget.TextView;
-
-import com.android.contacts.ContactsUtils;
-
-public final class PhoneNumberFormatter {
- private PhoneNumberFormatter() {}
-
- /**
- * Load {@link TextWatcherLoadAsyncTask} in a worker thread and set it to a {@link TextView}.
- */
- private static class TextWatcherLoadAsyncTask extends
- AsyncTask<Void, Void, PhoneNumberFormattingTextWatcher> {
- private final String mCountryCode;
- private final TextView mTextView;
-
- public TextWatcherLoadAsyncTask(String countryCode, TextView textView) {
- mCountryCode = countryCode;
- mTextView = textView;
- }
-
- @Override
- protected PhoneNumberFormattingTextWatcher doInBackground(Void... params) {
- return new PhoneNumberFormattingTextWatcher(mCountryCode);
- }
-
- @Override
- protected void onPostExecute(PhoneNumberFormattingTextWatcher watcher) {
- if (watcher == null || isCancelled()) {
- return; // May happen if we cancel the task.
- }
- // Setting a text changed listener is safe even after the view is detached.
- mTextView.addTextChangedListener(watcher);
-
- // Note changes the user made before onPostExecute() will not be formatted, but
- // once they type the next letter we format the entire text, so it's not a big deal.
- // (And loading PhoneNumberFormattingTextWatcher is usually fast enough.)
- // We could use watcher.afterTextChanged(mTextView.getEditableText()) to force format
- // the existing content here, but that could cause unwanted results.
- // (e.g. the contact editor thinks the user changed the content, and would save
- // when closed even when the user didn't make other changes.)
- }
- }
-
- /**
- * Delay-set {@link PhoneNumberFormattingTextWatcher} to a {@link TextView}.
- */
- public static final void setPhoneNumberFormattingTextWatcher(Context context,
- TextView textView) {
- new TextWatcherLoadAsyncTask(ContactsUtils.getCurrentCountryIso(context), textView)
- .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
- }
-}
diff --git a/src/com/android/contacts/util/PhonebookCollatorFactory.java b/src/com/android/contacts/util/PhonebookCollatorFactory.java
index 08ce27a..f9847ee 100644
--- a/src/com/android/contacts/util/PhonebookCollatorFactory.java
+++ b/src/com/android/contacts/util/PhonebookCollatorFactory.java
@@ -25,19 +25,6 @@
*/
public final class PhonebookCollatorFactory {
public static final Collator getCollator() {
- final Locale defaultLocale = Locale.getDefault();
- final String defaultLocaleString = defaultLocale.toString();
- // For Japanese we use a special collator that puts japanese characters before foreign
- // ones (this is called a dictionary collator)
- // Warning: This function has to match the behavior in sqlite3_android.cpp (located in
- // the framework)
- final Locale locale;
- if ("ja".equals(defaultLocaleString) || "ja_JP".equals(defaultLocaleString)) {
- locale = new Locale("ja@collation=phonebook");
- } else {
- locale = defaultLocale;
- }
-
- return Collator.getInstance(locale);
+ return Collator.getInstance(Locale.getDefault());
}
}
diff --git a/src/com/android/contacts/util/StopWatch.java b/src/com/android/contacts/util/StopWatch.java
deleted file mode 100644
index c53f346..0000000
--- a/src/com/android/contacts/util/StopWatch.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.util.Log;
-
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-
-/**
- * A {@link StopWatch} records start, laps and stop, and print them to logcat.
- */
-public class StopWatch {
-
- private final String mLabel;
-
- private final ArrayList<Long> mTimes = Lists.newArrayList();
- private final ArrayList<String> mLapLabels = Lists.newArrayList();
-
- private StopWatch(String label) {
- mLabel = label;
- lap("");
- }
-
- /**
- * Create a new instance and start it.
- */
- public static StopWatch start(String label) {
- return new StopWatch(label);
- }
-
- /**
- * Record a lap.
- */
- public void lap(String lapLabel) {
- mTimes.add(System.currentTimeMillis());
- mLapLabels.add(lapLabel);
- }
-
- /**
- * Stop it and log the result, if the total time >= {@code timeThresholdToLog}.
- */
- public void stopAndLog(String TAG, int timeThresholdToLog) {
-
- lap("");
-
- final long start = mTimes.get(0);
- final long stop = mTimes.get(mTimes.size() - 1);
-
- final long total = stop - start;
- if (total < timeThresholdToLog) return;
-
- final StringBuilder sb = new StringBuilder();
- sb.append(mLabel);
- sb.append(",");
- sb.append(total);
- sb.append(": ");
-
- long last = start;
- for (int i = 1; i < mTimes.size(); i++) {
- final long current = mTimes.get(i);
- sb.append(mLapLabels.get(i));
- sb.append(",");
- sb.append((current - last));
- sb.append(" ");
- last = current;
- }
- Log.v(TAG, sb.toString());
- }
-
- /**
- * Return a dummy instance that does no operations.
- */
- public static StopWatch getNullStopWatch() {
- return NullStopWatch.INSTANCE;
- }
-
- private static class NullStopWatch extends StopWatch {
- public static final NullStopWatch INSTANCE = new NullStopWatch();
-
- public NullStopWatch() {
- super(null);
- }
-
- @Override
- public void lap(String lapLabel) {
- // noop
- }
-
- @Override
- public void stopAndLog(String TAG, int timeThresholdToLog) {
- // noop
- }
- }
-}
diff --git a/src/com/android/contacts/util/StreamItemEntry.java b/src/com/android/contacts/util/StreamItemEntry.java
index b15bae9..2332c0e 100644
--- a/src/com/android/contacts/util/StreamItemEntry.java
+++ b/src/com/android/contacts/util/StreamItemEntry.java
@@ -22,7 +22,7 @@
import android.text.Html;
import com.android.contacts.detail.ContactDetailDisplayUtils;
-import com.android.contacts.test.NeededForTesting;
+import com.android.contacts.common.test.NeededForTesting;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/com/android/contacts/util/UiClosables.java b/src/com/android/contacts/util/UiClosables.java
new file mode 100644
index 0000000..3f960b1
--- /dev/null
+++ b/src/com/android/contacts/util/UiClosables.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+package com.android.contacts.util;
+
+import android.widget.ListPopupWindow;
+
+/**
+ * Methods for closing various objects
+ */
+public class UiClosables {
+
+ /**
+ * Close a {@link ListPopupWindow}.
+ *
+ * @param popup The popup window to close.
+ * @return {@code true} if the popup was showing. {@code false} otherwise.
+ */
+ public static boolean closeQuietly(ListPopupWindow popup) {
+ if (popup != null && popup.isShowing()) {
+ popup.dismiss();
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/com/android/contacts/util/UriUtils.java b/src/com/android/contacts/util/UriUtils.java
deleted file mode 100644
index c70d923..0000000
--- a/src/com/android/contacts/util/UriUtils.java
+++ /dev/null
@@ -1,51 +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.net.Uri;
-
-/**
- * Utility methods for dealing with URIs.
- */
-public class UriUtils {
- /** Static helper, not instantiable. */
- private UriUtils() {}
-
- /** Checks whether two URI are equal, taking care of the case where either is null. */
- public static boolean areEqual(Uri uri1, Uri uri2) {
- if (uri1 == null && uri2 == null) {
- return true;
- }
- if (uri1 == null || uri2 == null) {
- return false;
- }
- return uri1.equals(uri2);
- }
-
- /** Parses a string into a URI and returns null if the given string is null. */
- public static Uri parseUriOrNull(String uriString) {
- if (uriString == null) {
- return null;
- }
- return Uri.parse(uriString);
- }
-
- /** Converts a URI into a string, returns null if the given URI is null. */
- public static String uriToString(Uri uri) {
- return uri == null ? null : uri.toString();
- }
-}
diff --git a/src/com/android/contacts/util/ViewUtil.java b/src/com/android/contacts/util/ViewUtil.java
deleted file mode 100644
index 89ab73d..0000000
--- a/src/com/android/contacts/util/ViewUtil.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * Provides static functions to work with views
- */
-public class ViewUtil {
- private ViewUtil() {}
-
- /**
- * Returns the width as specified in the LayoutParams
- * @throws IllegalStateException Thrown if the view's width is unknown before a layout pass
- * s
- */
- public static int getConstantPreLayoutWidth(View view) {
- // We haven't been layed out yet, so get the size from the LayoutParams
- final ViewGroup.LayoutParams p = view.getLayoutParams();
- if (p.width < 0) {
- throw new IllegalStateException("Expecting view's width to be a constant rather " +
- "than a result of the layout pass");
- }
- return p.width;
- }
-}
diff --git a/src/com/android/contacts/util/WeakAsyncTask.java b/src/com/android/contacts/util/WeakAsyncTask.java
deleted file mode 100644
index f60cfd7..0000000
--- a/src/com/android/contacts/util/WeakAsyncTask.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.os.AsyncTask;
-
-import java.lang.ref.WeakReference;
-
-public abstract class WeakAsyncTask<Params, Progress, Result, WeakTarget> extends
- AsyncTask<Params, Progress, Result> {
- protected WeakReference<WeakTarget> mTarget;
-
- public WeakAsyncTask(WeakTarget target) {
- mTarget = new WeakReference<WeakTarget>(target);
- }
-
- /** {@inheritDoc} */
- @Override
- protected final void onPreExecute() {
- final WeakTarget target = mTarget.get();
- if (target != null) {
- this.onPreExecute(target);
- }
- }
-
- /** {@inheritDoc} */
- @Override
- protected final Result doInBackground(Params... params) {
- final WeakTarget target = mTarget.get();
- if (target != null) {
- return this.doInBackground(target, params);
- } else {
- return null;
- }
- }
-
- /** {@inheritDoc} */
- @Override
- protected final void onPostExecute(Result result) {
- final WeakTarget target = mTarget.get();
- if (target != null) {
- this.onPostExecute(target, result);
- }
- }
-
- protected void onPreExecute(WeakTarget target) {
- // No default action
- }
-
- protected abstract Result doInBackground(WeakTarget target, Params... params);
-
- protected void onPostExecute(WeakTarget target, Result result) {
- // No default action
- }
-}
diff --git a/src/com/android/contacts/vcard/CancelActivity.java b/src/com/android/contacts/vcard/CancelActivity.java
deleted file mode 100644
index ff8512b..0000000
--- a/src/com/android/contacts/vcard/CancelActivity.java
+++ /dev/null
@@ -1,133 +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.vcard;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.util.Log;
-
-import com.android.contacts.R;
-
-/**
- * The Activity for canceling vCard import/export.
- */
-public class CancelActivity extends Activity implements ServiceConnection {
- private final String LOG_TAG = "VCardCancel";
-
- /* package */ final static String JOB_ID = "job_id";
- /* package */ final static String DISPLAY_NAME = "display_name";
-
- /**
- * Type of the process to be canceled. Only used for choosing appropriate title/message.
- * Must be {@link VCardService#TYPE_IMPORT} or {@link VCardService#TYPE_EXPORT}.
- */
- /* package */ final static String TYPE = "type";
-
- private class RequestCancelListener implements DialogInterface.OnClickListener {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- bindService(new Intent(CancelActivity.this,
- VCardService.class), CancelActivity.this, Context.BIND_AUTO_CREATE);
- }
- }
-
- private class CancelListener
- implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- finish();
- }
- @Override
- public void onCancel(DialogInterface dialog) {
- finish();
- }
- }
-
- private final CancelListener mCancelListener = new CancelListener();
- private int mJobId;
- private String mDisplayName;
- private int mType;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- final Uri uri = getIntent().getData();
- mJobId = Integer.parseInt(uri.getQueryParameter(JOB_ID));
- mDisplayName = uri.getQueryParameter(DISPLAY_NAME);
- mType = Integer.parseInt(uri.getQueryParameter(TYPE));
- showDialog(R.id.dialog_cancel_confirmation);
- }
-
- @Override
- protected Dialog onCreateDialog(int id, Bundle bundle) {
- switch (id) {
- case R.id.dialog_cancel_confirmation: {
- final String message;
- if (mType == VCardService.TYPE_IMPORT) {
- message = getString(R.string.cancel_import_confirmation_message, mDisplayName);
- } else {
- message = getString(R.string.cancel_export_confirmation_message, mDisplayName);
- }
- final AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setMessage(message)
- .setPositiveButton(android.R.string.ok, new RequestCancelListener())
- .setOnCancelListener(mCancelListener)
- .setNegativeButton(android.R.string.cancel, mCancelListener);
- return builder.create();
- }
- case R.id.dialog_cancel_failed:
- final AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setTitle(R.string.cancel_vcard_import_or_export_failed)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(getString(R.string.fail_reason_unknown))
- .setOnCancelListener(mCancelListener)
- .setPositiveButton(android.R.string.ok, mCancelListener);
- return builder.create();
- default:
- Log.w(LOG_TAG, "Unknown dialog id: " + id);
- break;
- }
- return super.onCreateDialog(id, bundle);
- }
-
- @Override
- public void onServiceConnected(ComponentName name, IBinder binder) {
- VCardService service = ((VCardService.MyBinder) binder).getService();
-
- try {
- final CancelRequest request = new CancelRequest(mJobId, mDisplayName);
- service.handleCancelRequest(request, null);
- } finally {
- unbindService(this);
- }
-
- finish();
- }
-
- @Override
- public void onServiceDisconnected(ComponentName name) {
- // do nothing
- }
-}
diff --git a/src/com/android/contacts/vcard/CancelRequest.java b/src/com/android/contacts/vcard/CancelRequest.java
deleted file mode 100644
index 85893ba..0000000
--- a/src/com/android/contacts/vcard/CancelRequest.java
+++ /dev/null
@@ -1,32 +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.vcard;
-
-/**
- * Class representing one request for canceling vCard import/export.
- */
-public class CancelRequest {
- public final int jobId;
- /**
- * Name used for showing users some useful info. Typically a file name.
- * Must not be used to do some actual operations.
- */
- public final String displayName;
- public CancelRequest(int jobId, String displayName) {
- this.jobId = jobId;
- this.displayName = displayName;
- }
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/vcard/ExportProcessor.java b/src/com/android/contacts/vcard/ExportProcessor.java
deleted file mode 100644
index 12f9e24..0000000
--- a/src/com/android/contacts/vcard/ExportProcessor.java
+++ /dev/null
@@ -1,288 +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.vcard;
-
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.RawContactsEntity;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.contacts.R;
-import com.android.contacts.activities.PeopleActivity;
-import com.android.vcard.VCardComposer;
-import com.android.vcard.VCardConfig;
-
-import java.io.BufferedWriter;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-
-/**
- * Class for processing one export request from a user. Dropped after exporting requested Uri(s).
- * {@link VCardService} will create another object when there is another export request.
- */
-public class ExportProcessor extends ProcessorBase {
- private static final String LOG_TAG = "VCardExport";
- private static final boolean DEBUG = VCardService.DEBUG;
-
- private final VCardService mService;
- private final ContentResolver mResolver;
- private final NotificationManager mNotificationManager;
- private final ExportRequest mExportRequest;
- private final int mJobId;
-
- private volatile boolean mCanceled;
- private volatile boolean mDone;
-
- public ExportProcessor(VCardService service, ExportRequest exportRequest, int jobId) {
- mService = service;
- mResolver = service.getContentResolver();
- mNotificationManager =
- (NotificationManager)mService.getSystemService(Context.NOTIFICATION_SERVICE);
- mExportRequest = exportRequest;
- mJobId = jobId;
- }
-
- @Override
- public final int getType() {
- return VCardService.TYPE_EXPORT;
- }
-
- @Override
- public void run() {
- // ExecutorService ignores RuntimeException, so we need to show it here.
- try {
- runInternal();
-
- if (isCancelled()) {
- doCancelNotification();
- }
- } catch (OutOfMemoryError e) {
- Log.e(LOG_TAG, "OutOfMemoryError thrown during import", e);
- throw e;
- } catch (RuntimeException e) {
- Log.e(LOG_TAG, "RuntimeException thrown during export", e);
- throw e;
- } finally {
- synchronized (this) {
- mDone = true;
- }
- }
- }
-
- private void runInternal() {
- if (DEBUG) Log.d(LOG_TAG, String.format("vCard export (id: %d) has started.", mJobId));
- final ExportRequest request = mExportRequest;
- VCardComposer composer = null;
- Writer writer = null;
- boolean successful = false;
- try {
- if (isCancelled()) {
- Log.i(LOG_TAG, "Export request is cancelled before handling the request");
- return;
- }
- final Uri uri = request.destUri;
- final OutputStream outputStream;
- try {
- outputStream = mResolver.openOutputStream(uri);
- } catch (FileNotFoundException e) {
- Log.w(LOG_TAG, "FileNotFoundException thrown", e);
- // Need concise title.
-
- final String errorReason =
- mService.getString(R.string.fail_reason_could_not_open_file,
- uri, e.getMessage());
- doFinishNotification(errorReason, null);
- return;
- }
-
- final String exportType = request.exportType;
- final int vcardType;
- if (TextUtils.isEmpty(exportType)) {
- vcardType = VCardConfig.getVCardTypeFromString(
- mService.getString(R.string.config_export_vcard_type));
- } else {
- vcardType = VCardConfig.getVCardTypeFromString(exportType);
- }
-
- composer = new VCardComposer(mService, vcardType, true);
-
- // for test
- // int vcardType = (VCardConfig.VCARD_TYPE_V21_GENERIC |
- // VCardConfig.FLAG_USE_QP_TO_PRIMARY_PROPERTIES);
- // composer = new VCardComposer(ExportVCardActivity.this, vcardType, true);
-
- writer = new BufferedWriter(new OutputStreamWriter(outputStream));
- final Uri contentUriForRawContactsEntity = RawContactsEntity.CONTENT_URI.buildUpon()
- .appendQueryParameter(RawContactsEntity.FOR_EXPORT_ONLY, "1")
- .build();
- // TODO: should provide better selection.
- if (!composer.init(Contacts.CONTENT_URI, new String[] {Contacts._ID},
- null, null,
- null, contentUriForRawContactsEntity)) {
- final String errorReason = composer.getErrorReason();
- Log.e(LOG_TAG, "initialization of vCard composer failed: " + errorReason);
- final String translatedErrorReason =
- translateComposerError(errorReason);
- final String title =
- mService.getString(R.string.fail_reason_could_not_initialize_exporter,
- translatedErrorReason);
- doFinishNotification(title, null);
- return;
- }
-
- final int total = composer.getCount();
- if (total == 0) {
- final String title =
- mService.getString(R.string.fail_reason_no_exportable_contact);
- doFinishNotification(title, null);
- return;
- }
-
- int current = 1; // 1-origin
- while (!composer.isAfterLast()) {
- if (isCancelled()) {
- Log.i(LOG_TAG, "Export request is cancelled during composing vCard");
- return;
- }
- try {
- writer.write(composer.createOneEntry());
- } catch (IOException e) {
- final String errorReason = composer.getErrorReason();
- Log.e(LOG_TAG, "Failed to read a contact: " + errorReason);
- final String translatedErrorReason =
- translateComposerError(errorReason);
- final String title =
- mService.getString(R.string.fail_reason_error_occurred_during_export,
- translatedErrorReason);
- doFinishNotification(title, null);
- return;
- }
-
- // vCard export is quite fast (compared to import), and frequent notifications
- // bother notification bar too much.
- if (current % 100 == 1) {
- doProgressNotification(uri, total, current);
- }
- current++;
- }
- Log.i(LOG_TAG, "Successfully finished exporting vCard " + request.destUri);
-
- if (DEBUG) {
- Log.d(LOG_TAG, "Ask MediaScanner to scan the file: " + request.destUri.getPath());
- }
- mService.updateMediaScanner(request.destUri.getPath());
-
- successful = true;
- final String filename = uri.getLastPathSegment();
- final String title = mService.getString(R.string.exporting_vcard_finished_title,
- filename);
- doFinishNotification(title, null);
- } finally {
- if (composer != null) {
- composer.terminate();
- }
- if (writer != null) {
- try {
- writer.close();
- } catch (IOException e) {
- Log.w(LOG_TAG, "IOException is thrown during close(). Ignored. " + e);
- }
- }
- mService.handleFinishExportNotification(mJobId, successful);
- }
- }
-
- private String translateComposerError(String errorMessage) {
- final Resources resources = mService.getResources();
- if (VCardComposer.FAILURE_REASON_FAILED_TO_GET_DATABASE_INFO.equals(errorMessage)) {
- return resources.getString(R.string.composer_failed_to_get_database_infomation);
- } else if (VCardComposer.FAILURE_REASON_NO_ENTRY.equals(errorMessage)) {
- return resources.getString(R.string.composer_has_no_exportable_contact);
- } else if (VCardComposer.FAILURE_REASON_NOT_INITIALIZED.equals(errorMessage)) {
- return resources.getString(R.string.composer_not_initialized);
- } else {
- return errorMessage;
- }
- }
-
- private void doProgressNotification(Uri uri, int totalCount, int currentCount) {
- final String displayName = uri.getLastPathSegment();
- final String description =
- mService.getString(R.string.exporting_contact_list_message, displayName);
- final String tickerText =
- mService.getString(R.string.exporting_contact_list_title);
- final Notification notification =
- NotificationImportExportListener.constructProgressNotification(mService,
- VCardService.TYPE_EXPORT, description, tickerText, mJobId, displayName,
- totalCount, currentCount);
- mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
- mJobId, notification);
- }
-
- private void doCancelNotification() {
- if (DEBUG) Log.d(LOG_TAG, "send cancel notification");
- final String description = mService.getString(R.string.exporting_vcard_canceled_title,
- mExportRequest.destUri.getLastPathSegment());
- final Notification notification =
- NotificationImportExportListener.constructCancelNotification(mService, description);
- mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
- mJobId, notification);
- }
-
- private void doFinishNotification(final String title, final String description) {
- if (DEBUG) Log.d(LOG_TAG, "send finish notification: " + title + ", " + description);
- final Intent intent = new Intent(mService, PeopleActivity.class);
- final Notification notification =
- NotificationImportExportListener.constructFinishNotification(mService, title,
- description, intent);
- mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
- mJobId, notification);
- }
-
- @Override
- public synchronized boolean cancel(boolean mayInterruptIfRunning) {
- if (DEBUG) Log.d(LOG_TAG, "received cancel request");
- if (mDone || mCanceled) {
- return false;
- }
- mCanceled = true;
- return true;
- }
-
- @Override
- public synchronized boolean isCancelled() {
- return mCanceled;
- }
-
- @Override
- public synchronized boolean isDone() {
- return mDone;
- }
-
- public ExportRequest getRequest() {
- return mExportRequest;
- }
-}
diff --git a/src/com/android/contacts/vcard/ExportRequest.java b/src/com/android/contacts/vcard/ExportRequest.java
deleted file mode 100644
index fae2d07..0000000
--- a/src/com/android/contacts/vcard/ExportRequest.java
+++ /dev/null
@@ -1,35 +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.vcard;
-
-import android.net.Uri;
-
-public class ExportRequest {
- public final Uri destUri;
- /**
- * Can be null.
- */
- public final String exportType;
-
- public ExportRequest(Uri destUri) {
- this(destUri, null);
- }
-
- public ExportRequest(Uri destUri, String exportType) {
- this.destUri = destUri;
- this.exportType = exportType;
- }
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/vcard/ExportVCardActivity.java b/src/com/android/contacts/vcard/ExportVCardActivity.java
deleted file mode 100644
index 6bed577..0000000
--- a/src/com/android/contacts/vcard/ExportVCardActivity.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * 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.
- */
-package com.android.contacts.vcard;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.contacts.R;
-
-import java.io.File;
-
-/**
- * Shows a dialog confirming the export and asks actual vCard export to {@link VCardService}
- *
- * This Activity first connects to VCardService and ask an available file name and shows it to
- * a user. After the user's confirmation, it send export request with the file name, assuming the
- * file name is not reserved yet.
- */
-public class ExportVCardActivity extends Activity implements ServiceConnection,
- DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
- private static final String LOG_TAG = "VCardExport";
- private static final boolean DEBUG = VCardService.DEBUG;
-
- /**
- * Handler used when some Message has come from {@link VCardService}.
- */
- private class IncomingHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- if (DEBUG) Log.d(LOG_TAG, "IncomingHandler received message.");
-
- if (msg.arg1 != 0) {
- Log.i(LOG_TAG, "Message returned from vCard server contains error code.");
- if (msg.obj != null) {
- mErrorReason = (String)msg.obj;
- }
- showDialog(msg.arg1);
- return;
- }
-
- switch (msg.what) {
- case VCardService.MSG_SET_AVAILABLE_EXPORT_DESTINATION:
- if (msg.obj == null) {
- Log.w(LOG_TAG, "Message returned from vCard server doesn't contain valid path");
- mErrorReason = getString(R.string.fail_reason_unknown);
- showDialog(R.id.dialog_fail_to_export_with_reason);
- } else {
- mTargetFileName = (String)msg.obj;
- if (TextUtils.isEmpty(mTargetFileName)) {
- Log.w(LOG_TAG, "Destination file name coming from vCard service is empty.");
- mErrorReason = getString(R.string.fail_reason_unknown);
- showDialog(R.id.dialog_fail_to_export_with_reason);
- } else {
- if (DEBUG) {
- Log.d(LOG_TAG,
- String.format("Target file name is set (%s). " +
- "Show confirmation dialog", mTargetFileName));
- }
- showDialog(R.id.dialog_export_confirmation);
- }
- }
- break;
- default:
- Log.w(LOG_TAG, "Unknown message type: " + msg.what);
- super.handleMessage(msg);
- }
- }
- }
-
- /**
- * True when this Activity is connected to {@link VCardService}.
- *
- * Should be touched inside synchronized block.
- */
- private boolean mConnected;
-
- /**
- * True when users need to do something and this Activity should not disconnect from
- * VCardService. False when all necessary procedures are done (including sending export request)
- * or there's some error occured.
- */
- private volatile boolean mProcessOngoing = true;
-
- private VCardService mService;
- private final Messenger mIncomingMessenger = new Messenger(new IncomingHandler());
-
- // Used temporarily when asking users to confirm the file name
- private String mTargetFileName;
-
- // String for storing error reason temporarily.
- private String mErrorReason;
-
- private class ExportConfirmationListener implements DialogInterface.OnClickListener {
- private final Uri mDestinationUri;
-
- public ExportConfirmationListener(String path) {
- this(Uri.parse("file://" + path));
- }
-
- public ExportConfirmationListener(Uri uri) {
- mDestinationUri = uri;
- }
-
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- if (DEBUG) {
- Log.d(LOG_TAG,
- String.format("Try sending export request (uri: %s)", mDestinationUri));
- }
- final ExportRequest request = new ExportRequest(mDestinationUri);
- // The connection object will call finish().
- mService.handleExportRequest(request, new NotificationImportExportListener(
- ExportVCardActivity.this));
- }
- unbindAndFinish();
- }
- }
-
- @Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
-
- // Check directory is available.
- if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
- Log.w(LOG_TAG, "External storage is in state " + Environment.getExternalStorageState() +
- ". Cancelling export");
- showDialog(R.id.dialog_sdcard_not_found);
- return;
- }
-
- final File targetDirectory = Environment.getExternalStorageDirectory();
- if (!(targetDirectory.exists() &&
- targetDirectory.isDirectory() &&
- targetDirectory.canRead()) &&
- !targetDirectory.mkdirs()) {
- showDialog(R.id.dialog_sdcard_not_found);
- return;
- }
-
- Intent intent = new Intent(this, VCardService.class);
-
- if (startService(intent) == null) {
- Log.e(LOG_TAG, "Failed to start vCard service");
- mErrorReason = getString(R.string.fail_reason_unknown);
- showDialog(R.id.dialog_fail_to_export_with_reason);
- return;
- }
-
- if (!bindService(intent, this, Context.BIND_AUTO_CREATE)) {
- Log.e(LOG_TAG, "Failed to connect to vCard service.");
- mErrorReason = getString(R.string.fail_reason_unknown);
- showDialog(R.id.dialog_fail_to_export_with_reason);
- }
- // Continued to onServiceConnected()
- }
-
- @Override
- public synchronized void onServiceConnected(ComponentName name, IBinder binder) {
- if (DEBUG) Log.d(LOG_TAG, "connected to service, requesting a destination file name");
- mConnected = true;
- mService = ((VCardService.MyBinder) binder).getService();
- mService.handleRequestAvailableExportDestination(mIncomingMessenger);
- // Wait until MSG_SET_AVAILABLE_EXPORT_DESTINATION message is available.
- }
-
- // Use synchronized since we don't want to call unbindAndFinish() just after this call.
- @Override
- public synchronized void onServiceDisconnected(ComponentName name) {
- if (DEBUG) Log.d(LOG_TAG, "onServiceDisconnected()");
- mService = null;
- mConnected = false;
- if (mProcessOngoing) {
- // Unexpected disconnect event.
- Log.w(LOG_TAG, "Disconnected from service during the process ongoing.");
- mErrorReason = getString(R.string.fail_reason_unknown);
- showDialog(R.id.dialog_fail_to_export_with_reason);
- }
- }
-
- @Override
- protected Dialog onCreateDialog(int id, Bundle bundle) {
- switch (id) {
- case R.id.dialog_export_confirmation: {
- return new AlertDialog.Builder(this)
- .setTitle(R.string.confirm_export_title)
- .setMessage(getString(R.string.confirm_export_message, mTargetFileName))
- .setPositiveButton(android.R.string.ok,
- new ExportConfirmationListener(mTargetFileName))
- .setNegativeButton(android.R.string.cancel, this)
- .setOnCancelListener(this)
- .create();
- }
- case R.string.fail_reason_too_many_vcard: {
- mProcessOngoing = false;
- return new AlertDialog.Builder(this)
- .setTitle(R.string.exporting_contact_failed_title)
- .setMessage(getString(R.string.exporting_contact_failed_message,
- getString(R.string.fail_reason_too_many_vcard)))
- .setPositiveButton(android.R.string.ok, this)
- .create();
- }
- case R.id.dialog_fail_to_export_with_reason: {
- mProcessOngoing = false;
- return new AlertDialog.Builder(this)
- .setTitle(R.string.exporting_contact_failed_title)
- .setMessage(getString(R.string.exporting_contact_failed_message,
- mErrorReason != null ? mErrorReason :
- getString(R.string.fail_reason_unknown)))
- .setPositiveButton(android.R.string.ok, this)
- .setOnCancelListener(this)
- .create();
- }
- case R.id.dialog_sdcard_not_found: {
- mProcessOngoing = false;
- return new AlertDialog.Builder(this)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(R.string.no_sdcard_message)
- .setPositiveButton(android.R.string.ok, this).create();
- }
- }
- return super.onCreateDialog(id, bundle);
- }
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
- if (id == R.id.dialog_fail_to_export_with_reason) {
- ((AlertDialog)dialog).setMessage(mErrorReason);
- } else if (id == R.id.dialog_export_confirmation) {
- ((AlertDialog)dialog).setMessage(
- getString(R.string.confirm_export_message, mTargetFileName));
- } else {
- super.onPrepareDialog(id, dialog, args);
- }
- }
-
- @Override
- protected void onStop() {
- super.onStop();
-
- if (!isFinishing()) {
- unbindAndFinish();
- }
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (DEBUG) Log.d(LOG_TAG, "ExportVCardActivity#onClick() is called");
- unbindAndFinish();
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- if (DEBUG) Log.d(LOG_TAG, "ExportVCardActivity#onCancel() is called");
- mProcessOngoing = false;
- unbindAndFinish();
- }
-
- @Override
- public void unbindService(ServiceConnection conn) {
- mProcessOngoing = false;
- super.unbindService(conn);
- }
-
- private synchronized void unbindAndFinish() {
- if (mConnected) {
- unbindService(this);
- mConnected = false;
- }
- finish();
- }
-}
diff --git a/src/com/android/contacts/vcard/ImportProcessor.java b/src/com/android/contacts/vcard/ImportProcessor.java
deleted file mode 100644
index a2e8a48..0000000
--- a/src/com/android/contacts/vcard/ImportProcessor.java
+++ /dev/null
@@ -1,305 +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.vcard;
-
-import android.accounts.Account;
-import android.content.ContentResolver;
-import android.net.Uri;
-import android.util.Log;
-
-import com.android.vcard.VCardEntry;
-import com.android.vcard.VCardEntryCommitter;
-import com.android.vcard.VCardEntryConstructor;
-import com.android.vcard.VCardEntryHandler;
-import com.android.vcard.VCardInterpreter;
-import com.android.vcard.VCardParser;
-import com.android.vcard.VCardParser_V21;
-import com.android.vcard.VCardParser_V30;
-import com.android.vcard.exception.VCardException;
-import com.android.vcard.exception.VCardNestedException;
-import com.android.vcard.exception.VCardNotSupportedException;
-import com.android.vcard.exception.VCardVersionException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class for processing one import request from a user. Dropped after importing requested Uri(s).
- * {@link VCardService} will create another object when there is another import request.
- */
-public class ImportProcessor extends ProcessorBase implements VCardEntryHandler {
- private static final String LOG_TAG = "VCardImport";
- private static final boolean DEBUG = VCardService.DEBUG;
-
- private final VCardService mService;
- private final ContentResolver mResolver;
- private final ImportRequest mImportRequest;
- private final int mJobId;
- private final VCardImportExportListener mListener;
-
- // TODO: remove and show appropriate message instead.
- private final List<Uri> mFailedUris = new ArrayList<Uri>();
-
- private VCardParser mVCardParser;
-
- private volatile boolean mCanceled;
- private volatile boolean mDone;
-
- private int mCurrentCount = 0;
- private int mTotalCount = 0;
-
- public ImportProcessor(final VCardService service, final VCardImportExportListener listener,
- final ImportRequest request, final int jobId) {
- mService = service;
- mResolver = mService.getContentResolver();
- mListener = listener;
-
- mImportRequest = request;
- mJobId = jobId;
- }
-
- @Override
- public void onStart() {
- // do nothing
- }
-
- @Override
- public void onEnd() {
- // do nothing
- }
-
- @Override
- public void onEntryCreated(VCardEntry entry) {
- mCurrentCount++;
- if (mListener != null) {
- mListener.onImportParsed(mImportRequest, mJobId, entry, mCurrentCount, mTotalCount);
- }
- }
-
- @Override
- public final int getType() {
- return VCardService.TYPE_IMPORT;
- }
-
- @Override
- public void run() {
- // ExecutorService ignores RuntimeException, so we need to show it here.
- try {
- runInternal();
-
- if (isCancelled() && mListener != null) {
- mListener.onImportCanceled(mImportRequest, mJobId);
- }
- } catch (OutOfMemoryError e) {
- Log.e(LOG_TAG, "OutOfMemoryError thrown during import", e);
- throw e;
- } catch (RuntimeException e) {
- Log.e(LOG_TAG, "RuntimeException thrown during import", e);
- throw e;
- } finally {
- synchronized (this) {
- mDone = true;
- }
- }
- }
-
- private void runInternal() {
- Log.i(LOG_TAG, String.format("vCard import (id: %d) has started.", mJobId));
- final ImportRequest request = mImportRequest;
- if (isCancelled()) {
- Log.i(LOG_TAG, "Canceled before actually handling parameter (" + request.uri + ")");
- return;
- }
- final int[] possibleVCardVersions;
- if (request.vcardVersion == ImportVCardActivity.VCARD_VERSION_AUTO_DETECT) {
- /**
- * Note: this code assumes that a given Uri is able to be opened more than once,
- * which may not be true in certain conditions.
- */
- possibleVCardVersions = new int[] {
- ImportVCardActivity.VCARD_VERSION_V21,
- ImportVCardActivity.VCARD_VERSION_V30
- };
- } else {
- possibleVCardVersions = new int[] {
- request.vcardVersion
- };
- }
-
- final Uri uri = request.uri;
- final Account account = request.account;
- final int estimatedVCardType = request.estimatedVCardType;
- final String estimatedCharset = request.estimatedCharset;
- final int entryCount = request.entryCount;
- mTotalCount += entryCount;
-
- final VCardEntryConstructor constructor =
- new VCardEntryConstructor(estimatedVCardType, account, estimatedCharset);
- final VCardEntryCommitter committer = new VCardEntryCommitter(mResolver);
- constructor.addEntryHandler(committer);
- constructor.addEntryHandler(this);
-
- InputStream is = null;
- boolean successful = false;
- try {
- if (uri != null) {
- Log.i(LOG_TAG, "start importing one vCard (Uri: " + uri + ")");
- is = mResolver.openInputStream(uri);
- } else if (request.data != null){
- Log.i(LOG_TAG, "start importing one vCard (byte[])");
- is = new ByteArrayInputStream(request.data);
- }
-
- if (is != null) {
- successful = readOneVCard(is, estimatedVCardType, estimatedCharset, constructor,
- possibleVCardVersions);
- }
- } catch (IOException e) {
- successful = false;
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (Exception e) {
- // ignore
- }
- }
- }
-
- mService.handleFinishImportNotification(mJobId, successful);
-
- if (successful) {
- // TODO: successful becomes true even when cancelled. Should return more appropriate
- // value
- if (isCancelled()) {
- Log.i(LOG_TAG, "vCard import has been canceled (uri: " + uri + ")");
- // Cancel notification will be done outside this method.
- } else {
- Log.i(LOG_TAG, "Successfully finished importing one vCard file: " + uri);
- List<Uri> uris = committer.getCreatedUris();
- if (mListener != null) {
- if (uris != null && uris.size() > 0) {
- // TODO: construct intent showing a list of imported contact list.
- mListener.onImportFinished(mImportRequest, mJobId, uris.get(0));
- } else {
- // Not critical, but suspicious.
- Log.w(LOG_TAG,
- "Created Uris is null or 0 length " +
- "though the creation itself is successful.");
- mListener.onImportFinished(mImportRequest, mJobId, null);
- }
- }
- }
- } else {
- Log.w(LOG_TAG, "Failed to read one vCard file: " + uri);
- mFailedUris.add(uri);
- }
- }
-
- private boolean readOneVCard(InputStream is, int vcardType, String charset,
- final VCardInterpreter interpreter,
- final int[] possibleVCardVersions) {
- boolean successful = false;
- final int length = possibleVCardVersions.length;
- for (int i = 0; i < length; i++) {
- final int vcardVersion = possibleVCardVersions[i];
- try {
- if (i > 0 && (interpreter instanceof VCardEntryConstructor)) {
- // Let the object clean up internal temporary objects,
- ((VCardEntryConstructor) interpreter).clear();
- }
-
- // We need synchronized block here,
- // since we need to handle mCanceled and mVCardParser at once.
- // In the worst case, a user may call cancel() just before creating
- // mVCardParser.
- synchronized (this) {
- mVCardParser = (vcardVersion == ImportVCardActivity.VCARD_VERSION_V30 ?
- new VCardParser_V30(vcardType) :
- new VCardParser_V21(vcardType));
- if (isCancelled()) {
- Log.i(LOG_TAG, "ImportProcessor already recieves cancel request, so " +
- "send cancel request to vCard parser too.");
- mVCardParser.cancel();
- }
- }
- mVCardParser.parse(is, interpreter);
-
- successful = true;
- break;
- } catch (IOException e) {
- Log.e(LOG_TAG, "IOException was emitted: " + e.getMessage());
- } catch (VCardNestedException e) {
- // This exception should not be thrown here. We should instead handle it
- // in the preprocessing session in ImportVCardActivity, as we don't try
- // to detect the type of given vCard here.
- //
- // TODO: Handle this case appropriately, which should mean we have to have
- // code trying to auto-detect the type of given vCard twice (both in
- // ImportVCardActivity and ImportVCardService).
- Log.e(LOG_TAG, "Nested Exception is found.");
- } catch (VCardNotSupportedException e) {
- Log.e(LOG_TAG, e.toString());
- } catch (VCardVersionException e) {
- if (i == length - 1) {
- Log.e(LOG_TAG, "Appropriate version for this vCard is not found.");
- } else {
- // We'll try the other (v30) version.
- }
- } catch (VCardException e) {
- Log.e(LOG_TAG, e.toString());
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException e) {
- }
- }
- }
- }
-
- return successful;
- }
-
- @Override
- public synchronized boolean cancel(boolean mayInterruptIfRunning) {
- if (DEBUG) Log.d(LOG_TAG, "ImportProcessor received cancel request");
- if (mDone || mCanceled) {
- return false;
- }
- mCanceled = true;
- synchronized (this) {
- if (mVCardParser != null) {
- mVCardParser.cancel();
- }
- }
- return true;
- }
-
- @Override
- public synchronized boolean isCancelled() {
- return mCanceled;
- }
-
-
- @Override
- public synchronized boolean isDone() {
- return mDone;
- }
-}
diff --git a/src/com/android/contacts/vcard/ImportRequest.java b/src/com/android/contacts/vcard/ImportRequest.java
deleted file mode 100644
index 68b5424..0000000
--- a/src/com/android/contacts/vcard/ImportRequest.java
+++ /dev/null
@@ -1,110 +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.vcard;
-
-import android.accounts.Account;
-import android.net.Uri;
-
-import com.android.vcard.VCardSourceDetector;
-
-/**
- * Class representing one request for importing vCard (given as a Uri).
- *
- * Mainly used when {@link ImportVCardActivity} requests {@link VCardService}
- * to import some specific Uri.
- *
- * Note: This object's accepting only One Uri does NOT mean that
- * there's only one vCard entry inside the instance, as one Uri often has multiple
- * vCard entries inside it.
- */
-public class ImportRequest {
- /**
- * Can be null (typically when there's no Account available in the system).
- */
- public final Account account;
-
- /**
- * Uri to be imported. May have different content than originally given from users, so
- * when displaying user-friendly information (e.g. "importing xxx.vcf"), use
- * {@link #displayName} instead.
- *
- * If this is null {@link #data} contains the byte stream of the vcard.
- */
- public final Uri uri;
-
- /**
- * Holds the byte stream of the vcard, if {@link #uri} is null.
- */
- public final byte[] data;
-
- /**
- * String to be displayed to the user to indicate the source of the VCARD.
- */
- public final String displayName;
-
- /**
- * Can be {@link VCardSourceDetector#PARSE_TYPE_UNKNOWN}.
- */
- public final int estimatedVCardType;
-
- /**
- * Can be null, meaning no preferable charset is available.
- */
- public final String estimatedCharset;
-
- /**
- * Assumes that one Uri contains only one version, while there's a (tiny) possibility
- * we may have two types in one vCard.
- *
- * e.g.
- * BEGIN:VCARD
- * VERSION:2.1
- * ...
- * END:VCARD
- * BEGIN:VCARD
- * VERSION:3.0
- * ...
- * END:VCARD
- *
- * We've never seen this kind of a file, but we may have to cope with it in the future.
- */
- public final int vcardVersion;
-
- /**
- * The count of vCard entries in {@link #uri}. A receiver of this object can use it
- * when showing the progress of import. Thus a receiver must be able to torelate this
- * variable being invalid because of vCard's limitation.
- *
- * vCard does not let us know this count without looking over a whole file content,
- * which means we have to open and scan over {@link #uri} to know this value, while
- * it may not be opened more than once (Uri does not require it to be opened multiple times
- * and may become invalid after its close() request).
- */
- public final int entryCount;
-
- public ImportRequest(Account account,
- byte[] data, Uri uri, String displayName, int estimatedType, String estimatedCharset,
- int vcardVersion, int entryCount) {
- this.account = account;
- this.data = data;
- this.uri = uri;
- this.displayName = displayName;
- this.estimatedVCardType = estimatedType;
- this.estimatedCharset = estimatedCharset;
- this.vcardVersion = vcardVersion;
- this.entryCount = entryCount;
- }
-}
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
deleted file mode 100644
index 9af2d52..0000000
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ /dev/null
@@ -1,1042 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.vcard;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.ProgressDialog;
-import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.DialogInterface.OnClickListener;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.res.Configuration;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.PowerManager;
-import android.provider.OpenableColumns;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.RelativeSizeSpan;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountSelectionUtil;
-import com.android.vcard.VCardEntryCounter;
-import com.android.vcard.VCardParser;
-import com.android.vcard.VCardParser_V21;
-import com.android.vcard.VCardParser_V30;
-import com.android.vcard.VCardSourceDetector;
-import com.android.vcard.exception.VCardException;
-import com.android.vcard.exception.VCardNestedException;
-import com.android.vcard.exception.VCardVersionException;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.ReadableByteChannel;
-import java.nio.channels.WritableByteChannel;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-/**
- * The class letting users to import vCard. This includes the UI part for letting them select
- * an Account and posssibly a file if there's no Uri is given from its caller Activity.
- *
- * Note that this Activity assumes that the instance is a "one-shot Activity", which will be
- * finished (with the method {@link Activity#finish()}) after the import and never reuse
- * any Dialog in the instance. So this code is careless about the management around managed
- * dialogs stuffs (like how onCreateDialog() is used).
- */
-public class ImportVCardActivity extends ContactsActivity {
- private static final String LOG_TAG = "VCardImport";
-
- private static final int SELECT_ACCOUNT = 0;
-
- /* package */ static final String VCARD_URI_ARRAY = "vcard_uri";
- /* package */ static final String ESTIMATED_VCARD_TYPE_ARRAY = "estimated_vcard_type";
- /* package */ static final String ESTIMATED_CHARSET_ARRAY = "estimated_charset";
- /* package */ static final String VCARD_VERSION_ARRAY = "vcard_version";
- /* package */ static final String ENTRY_COUNT_ARRAY = "entry_count";
-
- /* package */ final static int VCARD_VERSION_AUTO_DETECT = 0;
- /* package */ final static int VCARD_VERSION_V21 = 1;
- /* package */ final static int VCARD_VERSION_V30 = 2;
-
- private static final String SECURE_DIRECTORY_NAME = ".android_secure";
-
- /**
- * Notification id used when error happened before sending an import request to VCardServer.
- */
- private static final int FAILURE_NOTIFICATION_ID = 1;
-
- final static String CACHED_URIS = "cached_uris";
-
- private AccountSelectionUtil.AccountSelectedListener mAccountSelectionListener;
-
- private AccountWithDataSet mAccount;
-
- private ProgressDialog mProgressDialogForScanVCard;
- private ProgressDialog mProgressDialogForCachingVCard;
-
- private List<VCardFile> mAllVCardFileList;
- private VCardScanThread mVCardScanThread;
-
- private VCardCacheThread mVCardCacheThread;
- private ImportRequestConnection mConnection;
- /* package */ VCardImportExportListener mListener;
-
- private String mErrorMessage;
-
- private Handler mHandler = new Handler();
-
- private static class VCardFile {
- private final String mName;
- private final String mCanonicalPath;
- private final long mLastModified;
-
- public VCardFile(String name, String canonicalPath, long lastModified) {
- mName = name;
- mCanonicalPath = canonicalPath;
- mLastModified = lastModified;
- }
-
- public String getName() {
- return mName;
- }
-
- public String getCanonicalPath() {
- return mCanonicalPath;
- }
-
- public long getLastModified() {
- return mLastModified;
- }
- }
-
- // Runs on the UI thread.
- private class DialogDisplayer implements Runnable {
- private final int mResId;
- public DialogDisplayer(int resId) {
- mResId = resId;
- }
- public DialogDisplayer(String errorMessage) {
- mResId = R.id.dialog_error_with_message;
- mErrorMessage = errorMessage;
- }
- @Override
- public void run() {
- if (!isFinishing()) {
- showDialog(mResId);
- }
- }
- }
-
- private class CancelListener
- implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- finish();
- }
- @Override
- public void onCancel(DialogInterface dialog) {
- finish();
- }
- }
-
- private CancelListener mCancelListener = new CancelListener();
-
- private class ImportRequestConnection implements ServiceConnection {
- private VCardService mService;
-
- public void sendImportRequest(final List<ImportRequest> requests) {
- Log.i(LOG_TAG, "Send an import request");
- mService.handleImportRequest(requests, mListener);
- }
-
- @Override
- public void onServiceConnected(ComponentName name, IBinder binder) {
- mService = ((VCardService.MyBinder) binder).getService();
- Log.i(LOG_TAG,
- String.format("Connected to VCardService. Kick a vCard cache thread (uri: %s)",
- Arrays.toString(mVCardCacheThread.getSourceUris())));
- mVCardCacheThread.start();
- }
-
- @Override
- public void onServiceDisconnected(ComponentName name) {
- Log.i(LOG_TAG, "Disconnected from VCardService");
- }
- }
-
- /**
- * Caches given vCard files into a local directory, and sends actual import request to
- * {@link VCardService}.
- *
- * We need to cache given files into local storage. One of reasons is that some data (as Uri)
- * may have special permissions. Callers may allow only this Activity to access that content,
- * not what this Activity launched (like {@link VCardService}).
- */
- private class VCardCacheThread extends Thread
- implements DialogInterface.OnCancelListener {
- private boolean mCanceled;
- private PowerManager.WakeLock mWakeLock;
- private VCardParser mVCardParser;
- private final Uri[] mSourceUris; // Given from a caller.
- private final byte[] mSource;
- private final String mDisplayName;
-
- public VCardCacheThread(final Uri[] sourceUris) {
- mSourceUris = sourceUris;
- mSource = null;
- final Context context = ImportVCardActivity.this;
- final PowerManager powerManager =
- (PowerManager)context.getSystemService(Context.POWER_SERVICE);
- mWakeLock = powerManager.newWakeLock(
- PowerManager.SCREEN_DIM_WAKE_LOCK |
- PowerManager.ON_AFTER_RELEASE, LOG_TAG);
- mDisplayName = null;
- }
-
- @Override
- public void finalize() {
- if (mWakeLock != null && mWakeLock.isHeld()) {
- Log.w(LOG_TAG, "WakeLock is being held.");
- mWakeLock.release();
- }
- }
-
- @Override
- public void run() {
- Log.i(LOG_TAG, "vCard cache thread starts running.");
- if (mConnection == null) {
- throw new NullPointerException("vCard cache thread must be launched "
- + "after a service connection is established");
- }
-
- mWakeLock.acquire();
- try {
- if (mCanceled == true) {
- Log.i(LOG_TAG, "vCard cache operation is canceled.");
- return;
- }
-
- final Context context = ImportVCardActivity.this;
- // Uris given from caller applications may not be opened twice: consider when
- // it is not from local storage (e.g. "file:///...") but from some special
- // provider (e.g. "content://...").
- // Thus we have to once copy the content of Uri into local storage, and read
- // it after it.
- //
- // We may be able to read content of each vCard file during copying them
- // to local storage, but currently vCard code does not allow us to do so.
- int cache_index = 0;
- ArrayList<ImportRequest> requests = new ArrayList<ImportRequest>();
- if (mSource != null) {
- try {
- requests.add(constructImportRequest(mSource, null, mDisplayName));
- } catch (VCardException e) {
- Log.e(LOG_TAG, "Maybe the file is in wrong format", e);
- showFailureNotification(R.string.fail_reason_not_supported);
- return;
- }
- } else {
- final ContentResolver resolver =
- ImportVCardActivity.this.getContentResolver();
- for (Uri sourceUri : mSourceUris) {
- String filename = null;
- // Note: caches are removed by VCardService.
- while (true) {
- filename = VCardService.CACHE_FILE_PREFIX + cache_index + ".vcf";
- final File file = context.getFileStreamPath(filename);
- if (!file.exists()) {
- break;
- } else {
- if (cache_index == Integer.MAX_VALUE) {
- throw new RuntimeException("Exceeded cache limit");
- }
- cache_index++;
- }
- }
- final Uri localDataUri = copyTo(sourceUri, filename);
- if (mCanceled) {
- Log.i(LOG_TAG, "vCard cache operation is canceled.");
- break;
- }
- if (localDataUri == null) {
- Log.w(LOG_TAG, "destUri is null");
- break;
- }
-
- String displayName = null;
- Cursor cursor = null;
- // Try to get a display name from the given Uri. If it fails, we just
- // pick up the last part of the Uri.
- try {
- cursor = resolver.query(sourceUri,
- new String[] { OpenableColumns.DISPLAY_NAME },
- null, null, null);
- if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {
- if (cursor.getCount() > 1) {
- Log.w(LOG_TAG, "Unexpected multiple rows: "
- + cursor.getCount());
- }
- int index = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
- if (index >= 0) {
- displayName = cursor.getString(index);
- }
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- if (TextUtils.isEmpty(displayName)){
- displayName = sourceUri.getLastPathSegment();
- }
-
- final ImportRequest request;
- try {
- request = constructImportRequest(null, localDataUri, displayName);
- } catch (VCardException e) {
- Log.e(LOG_TAG, "Maybe the file is in wrong format", e);
- showFailureNotification(R.string.fail_reason_not_supported);
- return;
- } catch (IOException e) {
- Log.e(LOG_TAG, "Unexpected IOException", e);
- showFailureNotification(R.string.fail_reason_io_error);
- return;
- }
- if (mCanceled) {
- Log.i(LOG_TAG, "vCard cache operation is canceled.");
- return;
- }
- requests.add(request);
- }
- }
- if (!requests.isEmpty()) {
- mConnection.sendImportRequest(requests);
- } else {
- Log.w(LOG_TAG, "Empty import requests. Ignore it.");
- }
- } catch (OutOfMemoryError e) {
- Log.e(LOG_TAG, "OutOfMemoryError occured during caching vCard");
- System.gc();
- runOnUiThread(new DialogDisplayer(
- getString(R.string.fail_reason_low_memory_during_import)));
- } catch (IOException e) {
- Log.e(LOG_TAG, "IOException during caching vCard", e);
- runOnUiThread(new DialogDisplayer(
- getString(R.string.fail_reason_io_error)));
- } finally {
- Log.i(LOG_TAG, "Finished caching vCard.");
- mWakeLock.release();
- unbindService(mConnection);
- mProgressDialogForCachingVCard.dismiss();
- mProgressDialogForCachingVCard = null;
- finish();
- }
- }
-
- /**
- * Copy the content of sourceUri to the destination.
- */
- private Uri copyTo(final Uri sourceUri, String filename) throws IOException {
- Log.i(LOG_TAG, String.format("Copy a Uri to app local storage (%s -> %s)",
- sourceUri, filename));
- final Context context = ImportVCardActivity.this;
- final ContentResolver resolver = context.getContentResolver();
- ReadableByteChannel inputChannel = null;
- WritableByteChannel outputChannel = null;
- Uri destUri = null;
- try {
- inputChannel = Channels.newChannel(resolver.openInputStream(sourceUri));
- destUri = Uri.parse(context.getFileStreamPath(filename).toURI().toString());
- outputChannel = context.openFileOutput(filename, Context.MODE_PRIVATE).getChannel();
- final ByteBuffer buffer = ByteBuffer.allocateDirect(8192);
- while (inputChannel.read(buffer) != -1) {
- if (mCanceled) {
- Log.d(LOG_TAG, "Canceled during caching " + sourceUri);
- return null;
- }
- buffer.flip();
- outputChannel.write(buffer);
- buffer.compact();
- }
- buffer.flip();
- while (buffer.hasRemaining()) {
- outputChannel.write(buffer);
- }
- } finally {
- if (inputChannel != null) {
- try {
- inputChannel.close();
- } catch (IOException e) {
- Log.w(LOG_TAG, "Failed to close inputChannel.");
- }
- }
- if (outputChannel != null) {
- try {
- outputChannel.close();
- } catch(IOException e) {
- Log.w(LOG_TAG, "Failed to close outputChannel");
- }
- }
- }
- return destUri;
- }
-
- /**
- * Reads localDataUri (possibly multiple times) and constructs {@link ImportRequest} from
- * its content.
- *
- * @arg localDataUri Uri actually used for the import. Should be stored in
- * app local storage, as we cannot guarantee other types of Uris can be read
- * multiple times. This variable populates {@link ImportRequest#uri}.
- * @arg displayName Used for displaying information to the user. This variable populates
- * {@link ImportRequest#displayName}.
- */
- private ImportRequest constructImportRequest(final byte[] data,
- final Uri localDataUri, final String displayName)
- throws IOException, VCardException {
- final ContentResolver resolver = ImportVCardActivity.this.getContentResolver();
- VCardEntryCounter counter = null;
- VCardSourceDetector detector = null;
- int vcardVersion = VCARD_VERSION_V21;
- try {
- boolean shouldUseV30 = false;
- InputStream is;
- if (data != null) {
- is = new ByteArrayInputStream(data);
- } else {
- is = resolver.openInputStream(localDataUri);
- }
- mVCardParser = new VCardParser_V21();
- try {
- counter = new VCardEntryCounter();
- detector = new VCardSourceDetector();
- mVCardParser.addInterpreter(counter);
- mVCardParser.addInterpreter(detector);
- mVCardParser.parse(is);
- } catch (VCardVersionException e1) {
- try {
- is.close();
- } catch (IOException e) {
- }
-
- shouldUseV30 = true;
- if (data != null) {
- is = new ByteArrayInputStream(data);
- } else {
- is = resolver.openInputStream(localDataUri);
- }
- mVCardParser = new VCardParser_V30();
- try {
- counter = new VCardEntryCounter();
- detector = new VCardSourceDetector();
- mVCardParser.addInterpreter(counter);
- mVCardParser.addInterpreter(detector);
- mVCardParser.parse(is);
- } catch (VCardVersionException e2) {
- throw new VCardException("vCard with unspported version.");
- }
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException e) {
- }
- }
- }
-
- vcardVersion = shouldUseV30 ? VCARD_VERSION_V30 : VCARD_VERSION_V21;
- } catch (VCardNestedException e) {
- Log.w(LOG_TAG, "Nested Exception is found (it may be false-positive).");
- // Go through without throwing the Exception, as we may be able to detect the
- // version before it
- }
- return new ImportRequest(mAccount,
- data, localDataUri, displayName,
- detector.getEstimatedType(),
- detector.getEstimatedCharset(),
- vcardVersion, counter.getCount());
- }
-
- public Uri[] getSourceUris() {
- return mSourceUris;
- }
-
- public void cancel() {
- mCanceled = true;
- if (mVCardParser != null) {
- mVCardParser.cancel();
- }
- }
-
- @Override
- public void onCancel(DialogInterface dialog) {
- Log.i(LOG_TAG, "Cancel request has come. Abort caching vCard.");
- cancel();
- }
- }
-
- private class ImportTypeSelectedListener implements
- DialogInterface.OnClickListener {
- public static final int IMPORT_ONE = 0;
- public static final int IMPORT_MULTIPLE = 1;
- public static final int IMPORT_ALL = 2;
- public static final int IMPORT_TYPE_SIZE = 3;
-
- private int mCurrentIndex;
-
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- switch (mCurrentIndex) {
- case IMPORT_ALL:
- importVCardFromSDCard(mAllVCardFileList);
- break;
- case IMPORT_MULTIPLE:
- showDialog(R.id.dialog_select_multiple_vcard);
- break;
- default:
- showDialog(R.id.dialog_select_one_vcard);
- break;
- }
- } else if (which == DialogInterface.BUTTON_NEGATIVE) {
- finish();
- } else {
- mCurrentIndex = which;
- }
- }
- }
-
- private class VCardSelectedListener implements
- DialogInterface.OnClickListener, DialogInterface.OnMultiChoiceClickListener {
- private int mCurrentIndex;
- private Set<Integer> mSelectedIndexSet;
-
- public VCardSelectedListener(boolean multipleSelect) {
- mCurrentIndex = 0;
- if (multipleSelect) {
- mSelectedIndexSet = new HashSet<Integer>();
- }
- }
-
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- if (mSelectedIndexSet != null) {
- List<VCardFile> selectedVCardFileList = new ArrayList<VCardFile>();
- final int size = mAllVCardFileList.size();
- // We'd like to sort the files by its index, so we do not use Set iterator.
- for (int i = 0; i < size; i++) {
- if (mSelectedIndexSet.contains(i)) {
- selectedVCardFileList.add(mAllVCardFileList.get(i));
- }
- }
- importVCardFromSDCard(selectedVCardFileList);
- } else {
- importVCardFromSDCard(mAllVCardFileList.get(mCurrentIndex));
- }
- } else if (which == DialogInterface.BUTTON_NEGATIVE) {
- finish();
- } else {
- // Some file is selected.
- mCurrentIndex = which;
- if (mSelectedIndexSet != null) {
- if (mSelectedIndexSet.contains(which)) {
- mSelectedIndexSet.remove(which);
- } else {
- mSelectedIndexSet.add(which);
- }
- }
- }
- }
-
- public void onClick(DialogInterface dialog, int which, boolean isChecked) {
- if (mSelectedIndexSet == null || (mSelectedIndexSet.contains(which) == isChecked)) {
- Log.e(LOG_TAG, String.format("Inconsist state in index %d (%s)", which,
- mAllVCardFileList.get(which).getCanonicalPath()));
- } else {
- onClick(dialog, which);
- }
- }
- }
-
- /**
- * Thread scanning VCard from SDCard. After scanning, the dialog which lets a user select
- * a vCard file is shown. After the choice, VCardReadThread starts running.
- */
- private class VCardScanThread extends Thread implements OnCancelListener, OnClickListener {
- private boolean mCanceled;
- private boolean mGotIOException;
- private File mRootDirectory;
-
- // To avoid recursive link.
- private Set<String> mCheckedPaths;
- private PowerManager.WakeLock mWakeLock;
-
- private class CanceledException extends Exception {
- }
-
- public VCardScanThread(File sdcardDirectory) {
- mCanceled = false;
- mGotIOException = false;
- mRootDirectory = sdcardDirectory;
- mCheckedPaths = new HashSet<String>();
- PowerManager powerManager = (PowerManager)ImportVCardActivity.this.getSystemService(
- Context.POWER_SERVICE);
- mWakeLock = powerManager.newWakeLock(
- PowerManager.SCREEN_DIM_WAKE_LOCK |
- PowerManager.ON_AFTER_RELEASE, LOG_TAG);
- }
-
- @Override
- public void run() {
- mAllVCardFileList = new Vector<VCardFile>();
- try {
- mWakeLock.acquire();
- getVCardFileRecursively(mRootDirectory);
- } catch (CanceledException e) {
- mCanceled = true;
- } catch (IOException e) {
- mGotIOException = true;
- } finally {
- mWakeLock.release();
- }
-
- if (mCanceled) {
- mAllVCardFileList = null;
- }
-
- mProgressDialogForScanVCard.dismiss();
- mProgressDialogForScanVCard = null;
-
- if (mGotIOException) {
- runOnUiThread(new DialogDisplayer(R.id.dialog_io_exception));
- } else if (mCanceled) {
- finish();
- } else {
- int size = mAllVCardFileList.size();
- final Context context = ImportVCardActivity.this;
- if (size == 0) {
- runOnUiThread(new DialogDisplayer(R.id.dialog_vcard_not_found));
- } else {
- startVCardSelectAndImport();
- }
- }
- }
-
- private void getVCardFileRecursively(File directory)
- throws CanceledException, IOException {
- if (mCanceled) {
- throw new CanceledException();
- }
-
- // e.g. secured directory may return null toward listFiles().
- final File[] files = directory.listFiles();
- if (files == null) {
- final String currentDirectoryPath = directory.getCanonicalPath();
- final String secureDirectoryPath =
- mRootDirectory.getCanonicalPath().concat(SECURE_DIRECTORY_NAME);
- if (!TextUtils.equals(currentDirectoryPath, secureDirectoryPath)) {
- Log.w(LOG_TAG, "listFiles() returned null (directory: " + directory + ")");
- }
- return;
- }
- for (File file : directory.listFiles()) {
- if (mCanceled) {
- throw new CanceledException();
- }
- String canonicalPath = file.getCanonicalPath();
- if (mCheckedPaths.contains(canonicalPath)) {
- continue;
- }
-
- mCheckedPaths.add(canonicalPath);
-
- if (file.isDirectory()) {
- getVCardFileRecursively(file);
- } else if (canonicalPath.toLowerCase().endsWith(".vcf") &&
- file.canRead()){
- String fileName = file.getName();
- VCardFile vcardFile = new VCardFile(
- fileName, canonicalPath, file.lastModified());
- mAllVCardFileList.add(vcardFile);
- }
- }
- }
-
- public void onCancel(DialogInterface dialog) {
- mCanceled = true;
- }
-
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_NEGATIVE) {
- mCanceled = true;
- }
- }
- }
-
- private void startVCardSelectAndImport() {
- int size = mAllVCardFileList.size();
- if (getResources().getBoolean(R.bool.config_import_all_vcard_from_sdcard_automatically) ||
- size == 1) {
- importVCardFromSDCard(mAllVCardFileList);
- } else if (getResources().getBoolean(R.bool.config_allow_users_select_all_vcard_import)) {
- runOnUiThread(new DialogDisplayer(R.id.dialog_select_import_type));
- } else {
- runOnUiThread(new DialogDisplayer(R.id.dialog_select_one_vcard));
- }
- }
-
- private void importVCardFromSDCard(final List<VCardFile> selectedVCardFileList) {
- final int size = selectedVCardFileList.size();
- String[] uriStrings = new String[size];
- int i = 0;
- for (VCardFile vcardFile : selectedVCardFileList) {
- uriStrings[i] = "file://" + vcardFile.getCanonicalPath();
- i++;
- }
- importVCard(uriStrings);
- }
-
- private void importVCardFromSDCard(final VCardFile vcardFile) {
- importVCard(new Uri[] {Uri.parse("file://" + vcardFile.getCanonicalPath())});
- }
-
- private void importVCard(final Uri uri) {
- importVCard(new Uri[] {uri});
- }
-
- private void importVCard(final String[] uriStrings) {
- final int length = uriStrings.length;
- final Uri[] uris = new Uri[length];
- for (int i = 0; i < length; i++) {
- uris[i] = Uri.parse(uriStrings[i]);
- }
- importVCard(uris);
- }
-
- private void importVCard(final Uri[] uris) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (!isFinishing()) {
- mVCardCacheThread = new VCardCacheThread(uris);
- mListener = new NotificationImportExportListener(ImportVCardActivity.this);
- showDialog(R.id.dialog_cache_vcard);
- }
- }
- });
- }
-
- private Dialog getSelectImportTypeDialog() {
- final DialogInterface.OnClickListener listener = new ImportTypeSelectedListener();
- final AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setTitle(R.string.select_vcard_title)
- .setPositiveButton(android.R.string.ok, listener)
- .setOnCancelListener(mCancelListener)
- .setNegativeButton(android.R.string.cancel, mCancelListener);
-
- final String[] items = new String[ImportTypeSelectedListener.IMPORT_TYPE_SIZE];
- items[ImportTypeSelectedListener.IMPORT_ONE] =
- getString(R.string.import_one_vcard_string);
- items[ImportTypeSelectedListener.IMPORT_MULTIPLE] =
- getString(R.string.import_multiple_vcard_string);
- items[ImportTypeSelectedListener.IMPORT_ALL] =
- getString(R.string.import_all_vcard_string);
- builder.setSingleChoiceItems(items, ImportTypeSelectedListener.IMPORT_ONE, listener);
- return builder.create();
- }
-
- private Dialog getVCardFileSelectDialog(boolean multipleSelect) {
- final int size = mAllVCardFileList.size();
- final VCardSelectedListener listener = new VCardSelectedListener(multipleSelect);
- final AlertDialog.Builder builder =
- new AlertDialog.Builder(this)
- .setTitle(R.string.select_vcard_title)
- .setPositiveButton(android.R.string.ok, listener)
- .setOnCancelListener(mCancelListener)
- .setNegativeButton(android.R.string.cancel, mCancelListener);
-
- CharSequence[] items = new CharSequence[size];
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- for (int i = 0; i < size; i++) {
- VCardFile vcardFile = mAllVCardFileList.get(i);
- SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
- stringBuilder.append(vcardFile.getName());
- stringBuilder.append('\n');
- int indexToBeSpanned = stringBuilder.length();
- // Smaller date text looks better, since each file name becomes easier to read.
- // The value set to RelativeSizeSpan is arbitrary. You can change it to any other
- // value (but the value bigger than 1.0f would not make nice appearance :)
- stringBuilder.append(
- "(" + dateFormat.format(new Date(vcardFile.getLastModified())) + ")");
- stringBuilder.setSpan(
- new RelativeSizeSpan(0.7f), indexToBeSpanned, stringBuilder.length(),
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- items[i] = stringBuilder;
- }
- if (multipleSelect) {
- builder.setMultiChoiceItems(items, (boolean[])null, listener);
- } else {
- builder.setSingleChoiceItems(items, 0, listener);
- }
- return builder.create();
- }
-
- @Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
-
- String accountName = null;
- String accountType = null;
- String dataSet = null;
- final Intent intent = getIntent();
- if (intent != null) {
- accountName = intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME);
- accountType = intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE);
- dataSet = intent.getStringExtra(SelectAccountActivity.DATA_SET);
- } else {
- Log.e(LOG_TAG, "intent does not exist");
- }
-
- if (!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) {
- mAccount = new AccountWithDataSet(accountName, accountType, dataSet);
- } else {
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
- final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
- if (accountList.size() == 0) {
- mAccount = null;
- } else if (accountList.size() == 1) {
- mAccount = accountList.get(0);
- } else {
- startActivityForResult(new Intent(this, SelectAccountActivity.class),
- SELECT_ACCOUNT);
- return;
- }
- }
-
- startImport();
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == SELECT_ACCOUNT) {
- if (resultCode == RESULT_OK) {
- mAccount = new AccountWithDataSet(
- intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME),
- intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE),
- intent.getStringExtra(SelectAccountActivity.DATA_SET));
- startImport();
- } else {
- if (resultCode != RESULT_CANCELED) {
- Log.w(LOG_TAG, "Result code was not OK nor CANCELED: " + resultCode);
- }
- finish();
- }
- }
- }
-
- private void startImport() {
- Intent intent = getIntent();
- // Handle inbound files
- Uri uri = intent.getData();
- if (uri != null) {
- Log.i(LOG_TAG, "Starting vCard import using Uri " + uri);
- importVCard(uri);
- } else {
- Log.i(LOG_TAG, "Start vCard without Uri. The user will select vCard manually.");
- doScanExternalStorageAndImportVCard();
- }
- }
-
- @Override
- protected Dialog onCreateDialog(int resId, Bundle bundle) {
- switch (resId) {
- case R.string.import_from_sdcard: {
- if (mAccountSelectionListener == null) {
- throw new NullPointerException(
- "mAccountSelectionListener must not be null.");
- }
- return AccountSelectionUtil.getSelectAccountDialog(this, resId,
- mAccountSelectionListener, mCancelListener);
- }
- case R.id.dialog_searching_vcard: {
- if (mProgressDialogForScanVCard == null) {
- String message = getString(R.string.searching_vcard_message);
- mProgressDialogForScanVCard =
- ProgressDialog.show(this, "", message, true, false);
- mProgressDialogForScanVCard.setOnCancelListener(mVCardScanThread);
- mVCardScanThread.start();
- }
- return mProgressDialogForScanVCard;
- }
- case R.id.dialog_sdcard_not_found: {
- AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(R.string.no_sdcard_message)
- .setOnCancelListener(mCancelListener)
- .setPositiveButton(android.R.string.ok, mCancelListener);
- return builder.create();
- }
- case R.id.dialog_vcard_not_found: {
- final String message = getString(R.string.import_failure_no_vcard_file);
- AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setMessage(message)
- .setOnCancelListener(mCancelListener)
- .setPositiveButton(android.R.string.ok, mCancelListener);
- return builder.create();
- }
- case R.id.dialog_select_import_type: {
- return getSelectImportTypeDialog();
- }
- case R.id.dialog_select_multiple_vcard: {
- return getVCardFileSelectDialog(true);
- }
- case R.id.dialog_select_one_vcard: {
- return getVCardFileSelectDialog(false);
- }
- case R.id.dialog_cache_vcard: {
- if (mProgressDialogForCachingVCard == null) {
- final String title = getString(R.string.caching_vcard_title);
- final String message = getString(R.string.caching_vcard_message);
- mProgressDialogForCachingVCard = new ProgressDialog(this);
- mProgressDialogForCachingVCard.setTitle(title);
- mProgressDialogForCachingVCard.setMessage(message);
- mProgressDialogForCachingVCard.setProgressStyle(ProgressDialog.STYLE_SPINNER);
- mProgressDialogForCachingVCard.setOnCancelListener(mVCardCacheThread);
- startVCardService();
- }
- return mProgressDialogForCachingVCard;
- }
- case R.id.dialog_io_exception: {
- String message = (getString(R.string.scanning_sdcard_failed_message,
- getString(R.string.fail_reason_io_error)));
- AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(message)
- .setOnCancelListener(mCancelListener)
- .setPositiveButton(android.R.string.ok, mCancelListener);
- return builder.create();
- }
- case R.id.dialog_error_with_message: {
- String message = mErrorMessage;
- if (TextUtils.isEmpty(message)) {
- Log.e(LOG_TAG, "Error message is null while it must not.");
- message = getString(R.string.fail_reason_unknown);
- }
- final AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setTitle(getString(R.string.reading_vcard_failed_title))
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .setMessage(message)
- .setOnCancelListener(mCancelListener)
- .setPositiveButton(android.R.string.ok, mCancelListener);
- return builder.create();
- }
- }
-
- return super.onCreateDialog(resId, bundle);
- }
-
- /* package */ void startVCardService() {
- mConnection = new ImportRequestConnection();
-
- Log.i(LOG_TAG, "Bind to VCardService.");
- // We don't want the service finishes itself just after this connection.
- Intent intent = new Intent(this, VCardService.class);
- startService(intent);
- bindService(new Intent(this, VCardService.class),
- mConnection, Context.BIND_AUTO_CREATE);
- }
-
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- if (mProgressDialogForCachingVCard != null) {
- Log.i(LOG_TAG, "Cache thread is still running. Show progress dialog again.");
- showDialog(R.id.dialog_cache_vcard);
- }
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- // This Activity should finish itself on orientation change, and give the main screen back
- // to the caller Activity.
- finish();
- }
-
- /**
- * Scans vCard in external storage (typically SDCard) and tries to import it.
- * - When there's no SDCard available, an error dialog is shown.
- * - When multiple vCard files are available, asks a user to select one.
- */
- private void doScanExternalStorageAndImportVCard() {
- // TODO: should use getExternalStorageState().
- final File file = Environment.getExternalStorageDirectory();
- if (!file.exists() || !file.isDirectory() || !file.canRead()) {
- showDialog(R.id.dialog_sdcard_not_found);
- } else {
- mVCardScanThread = new VCardScanThread(file);
- showDialog(R.id.dialog_searching_vcard);
- }
- }
-
- /* package */ void showFailureNotification(int reasonId) {
- final NotificationManager notificationManager =
- (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
- final Notification notification =
- NotificationImportExportListener.constructImportFailureNotification(
- ImportVCardActivity.this,
- getString(reasonId));
- notificationManager.notify(NotificationImportExportListener.FAILURE_NOTIFICATION_TAG,
- FAILURE_NOTIFICATION_ID, notification);
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(ImportVCardActivity.this,
- getString(R.string.vcard_import_failed), Toast.LENGTH_LONG).show();
- }
- });
- }
-}
diff --git a/src/com/android/contacts/vcard/NfcImportVCardActivity.java b/src/com/android/contacts/vcard/NfcImportVCardActivity.java
deleted file mode 100644
index 035be60..0000000
--- a/src/com/android/contacts/vcard/NfcImportVCardActivity.java
+++ /dev/null
@@ -1,266 +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.vcard;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.net.Uri;
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-import android.nfc.NfcAdapter;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.provider.ContactsContract.RawContacts;
-import android.util.Log;
-
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.vcard.VCardEntry;
-import com.android.vcard.VCardEntryCounter;
-import com.android.vcard.VCardParser;
-import com.android.vcard.VCardParser_V21;
-import com.android.vcard.VCardParser_V30;
-import com.android.vcard.VCardSourceDetector;
-import com.android.vcard.exception.VCardException;
-import com.android.vcard.exception.VCardNestedException;
-import com.android.vcard.exception.VCardVersionException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class NfcImportVCardActivity extends Activity implements ServiceConnection,
- VCardImportExportListener {
- private static final String TAG = "NfcImportVCardActivity";
-
- private static final int SELECT_ACCOUNT = 1;
-
- private NdefRecord mRecord;
- private AccountWithDataSet mAccount;
-
- /* package */ class ImportTask extends AsyncTask<VCardService, Void, ImportRequest> {
- @Override
- public ImportRequest doInBackground(VCardService... services) {
- ImportRequest request = createImportRequest();
- if (request == null) {
- return null;
- }
-
- ArrayList<ImportRequest> requests = new ArrayList<ImportRequest>();
- requests.add(request);
- services[0].handleImportRequest(requests, NfcImportVCardActivity.this);
- return request;
- }
-
- @Override
- public void onCancelled() {
- unbindService(NfcImportVCardActivity.this);
- }
-
- @Override
- public void onPostExecute(ImportRequest request) {
- unbindService(NfcImportVCardActivity.this);
- }
- }
-
- /* package */ ImportRequest createImportRequest() {
- VCardParser parser;
- VCardEntryCounter counter = null;
- VCardSourceDetector detector = null;
- int vcardVersion = ImportVCardActivity.VCARD_VERSION_V21;
- try {
- ByteArrayInputStream is = new ByteArrayInputStream(mRecord.getPayload());
- is.mark(0);
- parser = new VCardParser_V21();
- try {
- counter = new VCardEntryCounter();
- detector = new VCardSourceDetector();
- parser.addInterpreter(counter);
- parser.addInterpreter(detector);
- parser.parse(is);
- } catch (VCardVersionException e1) {
- is.reset();
- vcardVersion = ImportVCardActivity.VCARD_VERSION_V30;
- parser = new VCardParser_V30();
- try {
- counter = new VCardEntryCounter();
- detector = new VCardSourceDetector();
- parser.addInterpreter(counter);
- parser.addInterpreter(detector);
- parser.parse(is);
- } catch (VCardVersionException e2) {
- return null;
- }
- } finally {
- try {
- if (is != null) is.close();
- } catch (IOException e) {
- }
- }
- } catch (IOException e) {
- Log.e(TAG, "Failed reading vcard data", e);
- return null;
- } catch (VCardNestedException e) {
- Log.w(TAG, "Nested Exception is found (it may be false-positive).");
- // Go through without throwing the Exception, as we may be able to detect the
- // version before it
- } catch (VCardException e) {
- Log.e(TAG, "Error parsing vcard", e);
- return null;
- }
-
- return new ImportRequest(mAccount, mRecord.getPayload(), null,
- getString(R.string.nfc_vcard_file_name), detector.getEstimatedType(),
- detector.getEstimatedCharset(), vcardVersion, counter.getCount());
- }
-
- @Override
- public void onServiceConnected(ComponentName name, IBinder binder) {
- VCardService service = ((VCardService.MyBinder) binder).getService();
- new ImportTask().execute(service);
- }
-
- @Override
- public void onServiceDisconnected(ComponentName name) {
- // Do nothing
- }
-
- @Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
-
- Intent intent = getIntent();
- if (!NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
- Log.w(TAG, "Unknowon intent " + intent);
- finish();
- return;
- }
-
- String type = intent.getType();
- if (type == null ||
- (!"text/x-vcard".equals(type) && !"text/vcard".equals(type))) {
- Log.w(TAG, "Not a vcard");
- //setStatus(getString(R.string.fail_reason_not_supported));
- finish();
- return;
- }
- NdefMessage msg = (NdefMessage) intent.getParcelableArrayExtra(
- NfcAdapter.EXTRA_NDEF_MESSAGES)[0];
- mRecord = msg.getRecords()[0];
-
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
- final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
- if (accountList.size() == 0) {
- mAccount = null;
- } else if (accountList.size() == 1) {
- mAccount = accountList.get(0);
- } else {
- startActivityForResult(new Intent(this, SelectAccountActivity.class), SELECT_ACCOUNT);
- return;
- }
-
- startImport();
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == SELECT_ACCOUNT) {
- if (resultCode == RESULT_OK) {
- mAccount = new AccountWithDataSet(
- intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME),
- intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE),
- intent.getStringExtra(SelectAccountActivity.DATA_SET));
- startImport();
- } else {
- finish();
- }
- }
- }
-
- private void startImport() {
- // We don't want the service finishes itself just after this connection.
- Intent intent = new Intent(this, VCardService.class);
- startService(intent);
- bindService(intent, this, Context.BIND_AUTO_CREATE);
- }
-
- @Override
- public void onImportProcessed(ImportRequest request, int jobId, int sequence) {
- // do nothing
- }
-
- @Override
- public void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
- int totalCount) {
- // do nothing
- }
-
- @Override
- public void onImportFinished(ImportRequest request, int jobId, Uri uri) {
- if (isFinishing()) {
- Log.i(TAG, "Late import -- ignoring");
- return;
- }
-
- if (uri != null) {
- Uri contactUri = RawContacts.getContactLookupUri(getContentResolver(), uri);
- Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
- startActivity(intent);
- finish();
- }
- }
-
- @Override
- public void onImportFailed(ImportRequest request) {
- if (isFinishing()) {
- Log.i(TAG, "Late import failure -- ignoring");
- return;
- }
- // TODO: report failure
- }
-
- @Override
- public void onImportCanceled(ImportRequest request, int jobId) {
- // do nothing
- }
-
- @Override
- public void onExportProcessed(ExportRequest request, int jobId) {
- // do nothing
- }
-
- @Override
- public void onExportFailed(ExportRequest request) {
- // do nothing
- }
-
- @Override
- public void onCancelRequest(CancelRequest request, int type) {
- // do nothing
- }
-
- @Override
- public void onComplete() {
- // do nothing
- }
-}
diff --git a/src/com/android/contacts/vcard/NotificationImportExportListener.java b/src/com/android/contacts/vcard/NotificationImportExportListener.java
deleted file mode 100644
index 855f680..0000000
--- a/src/com/android/contacts/vcard/NotificationImportExportListener.java
+++ /dev/null
@@ -1,289 +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.vcard;
-
-import android.app.Activity;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.ContactsContract.RawContacts;
-import android.widget.Toast;
-
-import com.android.contacts.R;
-import com.android.vcard.VCardEntry;
-
-public class NotificationImportExportListener implements VCardImportExportListener,
- Handler.Callback {
- /** The tag used by vCard-related notifications. */
- /* package */ static final String DEFAULT_NOTIFICATION_TAG = "VCardServiceProgress";
- /**
- * The tag used by vCard-related failure notifications.
- * <p>
- * Use a different tag from {@link #DEFAULT_NOTIFICATION_TAG} so that failures do not get
- * replaced by other notifications and vice-versa.
- */
- /* package */ static final String FAILURE_NOTIFICATION_TAG = "VCardServiceFailure";
-
- private final NotificationManager mNotificationManager;
- private final Activity mContext;
- private final Handler mHandler;
-
- public NotificationImportExportListener(Activity activity) {
- mContext = activity;
- mNotificationManager = (NotificationManager) activity.getSystemService(
- Context.NOTIFICATION_SERVICE);
- mHandler = new Handler(this);
- }
-
- @Override
- public boolean handleMessage(Message msg) {
- String text = (String) msg.obj;
- Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
- return true;
- }
-
- @Override
- public void onImportProcessed(ImportRequest request, int jobId, int sequence) {
- // Show a notification about the status
- final String displayName;
- final String message;
- if (request.displayName != null) {
- displayName = request.displayName;
- message = mContext.getString(R.string.vcard_import_will_start_message, displayName);
- } else {
- displayName = mContext.getString(R.string.vcard_unknown_filename);
- message = mContext.getString(
- R.string.vcard_import_will_start_message_with_default_name);
- }
-
- // We just want to show notification for the first vCard.
- if (sequence == 0) {
- // TODO: Ideally we should detect the current status of import/export and
- // show "started" when we can import right now and show "will start" when
- // we cannot.
- mHandler.obtainMessage(0, message).sendToTarget();
- }
-
- final Notification notification = constructProgressNotification(mContext,
- VCardService.TYPE_IMPORT, message, message, jobId, displayName, -1, 0);
- mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
- }
-
- @Override
- public void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
- int totalCount) {
- if (entry.isIgnorable()) {
- return;
- }
-
- final String totalCountString = String.valueOf(totalCount);
- final String tickerText =
- mContext.getString(R.string.progress_notifier_message,
- String.valueOf(currentCount),
- totalCountString,
- entry.getDisplayName());
- final String description = mContext.getString(R.string.importing_vcard_description,
- entry.getDisplayName());
-
- final Notification notification = constructProgressNotification(
- mContext.getApplicationContext(), VCardService.TYPE_IMPORT, description, tickerText,
- jobId, request.displayName, totalCount, currentCount);
- mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
- }
-
- @Override
- public void onImportFinished(ImportRequest request, int jobId, Uri createdUri) {
- final String description = mContext.getString(R.string.importing_vcard_finished_title,
- request.displayName);
- final Intent intent;
- if (createdUri != null) {
- final long rawContactId = ContentUris.parseId(createdUri);
- final Uri contactUri = RawContacts.getContactLookupUri(
- mContext.getContentResolver(), ContentUris.withAppendedId(
- RawContacts.CONTENT_URI, rawContactId));
- intent = new Intent(Intent.ACTION_VIEW, contactUri);
- } else {
- intent = null;
- }
- final Notification notification =
- NotificationImportExportListener.constructFinishNotification(mContext,
- description, null, intent);
- mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
- jobId, notification);
- }
-
- @Override
- public void onImportFailed(ImportRequest request) {
- // TODO: a little unkind to show Toast in this case, which is shown just a moment.
- // Ideally we should show some persistent something users can notice more easily.
- mHandler.obtainMessage(0,
- mContext.getString(R.string.vcard_import_request_rejected_message)).sendToTarget();
- }
-
- @Override
- public void onImportCanceled(ImportRequest request, int jobId) {
- final String description = mContext.getString(R.string.importing_vcard_canceled_title,
- request.displayName);
- final Notification notification =
- NotificationImportExportListener.constructCancelNotification(mContext, description);
- mNotificationManager.notify(NotificationImportExportListener.DEFAULT_NOTIFICATION_TAG,
- jobId, notification);
- }
-
- @Override
- public void onExportProcessed(ExportRequest request, int jobId) {
- final String displayName = request.destUri.getLastPathSegment();
- final String message = mContext.getString(R.string.vcard_export_will_start_message,
- displayName);
-
- mHandler.obtainMessage(0, message).sendToTarget();
- final Notification notification =
- NotificationImportExportListener.constructProgressNotification(mContext,
- VCardService.TYPE_EXPORT, message, message, jobId, displayName, -1, 0);
- mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, jobId, notification);
- }
-
- @Override
- public void onExportFailed(ExportRequest request) {
- mHandler.obtainMessage(0,
- mContext.getString(R.string.vcard_export_request_rejected_message)).sendToTarget();
- }
-
- @Override
- public void onCancelRequest(CancelRequest request, int type) {
- final String description = type == VCardService.TYPE_IMPORT ?
- mContext.getString(R.string.importing_vcard_canceled_title, request.displayName) :
- mContext.getString(R.string.exporting_vcard_canceled_title, request.displayName);
- final Notification notification = constructCancelNotification(mContext, description);
- mNotificationManager.notify(DEFAULT_NOTIFICATION_TAG, request.jobId, notification);
- }
-
- /**
- * Constructs a {@link Notification} showing the current status of import/export.
- * Users can cancel the process with the Notification.
- *
- * @param context
- * @param type import/export
- * @param description Content of the Notification.
- * @param tickerText
- * @param jobId
- * @param displayName Name to be shown to the Notification (e.g. "finished importing XXXX").
- * Typycally a file name.
- * @param totalCount The number of vCard entries to be imported. Used to show progress bar.
- * -1 lets the system show the progress bar with "indeterminate" state.
- * @param currentCount The index of current vCard. Used to show progress bar.
- */
- /* package */ static Notification constructProgressNotification(
- Context context, int type, String description, String tickerText,
- int jobId, String displayName, int totalCount, int currentCount) {
- // Note: We cannot use extra values here (like setIntExtra()), as PendingIntent doesn't
- // preserve them across multiple Notifications. PendingIntent preserves the first extras
- // (when flag is not set), or update them when PendingIntent#getActivity() is called
- // (See PendingIntent#FLAG_UPDATE_CURRENT). In either case, we cannot preserve extras as we
- // expect (for each vCard import/export request).
- //
- // We use query parameter in Uri instead.
- // Scheme and Authority is arbitorary, assuming CancelActivity never refers them.
- final Intent intent = new Intent(context, CancelActivity.class);
- final Uri uri = (new Uri.Builder())
- .scheme("invalidscheme")
- .authority("invalidauthority")
- .appendQueryParameter(CancelActivity.JOB_ID, String.valueOf(jobId))
- .appendQueryParameter(CancelActivity.DISPLAY_NAME, displayName)
- .appendQueryParameter(CancelActivity.TYPE, String.valueOf(type)).build();
- intent.setData(uri);
-
- final Notification.Builder builder = new Notification.Builder(context);
- builder.setOngoing(true)
- .setProgress(totalCount, currentCount, totalCount == - 1)
- .setTicker(tickerText)
- .setContentTitle(description)
- .setSmallIcon(type == VCardService.TYPE_IMPORT
- ? android.R.drawable.stat_sys_download
- : android.R.drawable.stat_sys_upload)
- .setContentIntent(PendingIntent.getActivity(context, 0, intent, 0));
- if (totalCount > 0) {
- builder.setContentText(context.getString(R.string.percentage,
- String.valueOf(currentCount * 100 / totalCount)));
- }
- return builder.getNotification();
- }
-
- /**
- * Constructs a Notification telling users the process is canceled.
- *
- * @param context
- * @param description Content of the Notification
- */
- /* package */ static Notification constructCancelNotification(
- Context context, String description) {
- return new Notification.Builder(context)
- .setAutoCancel(true)
- .setSmallIcon(android.R.drawable.stat_notify_error)
- .setContentTitle(description)
- .setContentText(description)
- .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(), 0))
- .getNotification();
- }
-
- /**
- * Constructs a Notification telling users the process is finished.
- *
- * @param context
- * @param description Content of the Notification
- * @param intent Intent to be launched when the Notification is clicked. Can be null.
- */
- /* package */ static Notification constructFinishNotification(
- Context context, String title, String description, Intent intent) {
- return new Notification.Builder(context)
- .setAutoCancel(true)
- .setSmallIcon(android.R.drawable.stat_sys_download_done)
- .setContentTitle(title)
- .setContentText(description)
- .setContentIntent(PendingIntent.getActivity(context, 0,
- (intent != null ? intent : new Intent()), 0))
- .getNotification();
- }
-
- /**
- * Constructs a Notification telling the vCard import has failed.
- *
- * @param context
- * @param reason The reason why the import has failed. Shown in description field.
- */
- /* package */ static Notification constructImportFailureNotification(
- Context context, String reason) {
- return new Notification.Builder(context)
- .setAutoCancel(true)
- .setSmallIcon(android.R.drawable.stat_notify_error)
- .setContentTitle(context.getString(R.string.vcard_import_failed))
- .setContentText(reason)
- .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(), 0))
- .getNotification();
- }
-
- @Override
- public void onComplete() {
- mContext.finish();
- }
-}
diff --git a/src/com/android/contacts/vcard/ProcessorBase.java b/src/com/android/contacts/vcard/ProcessorBase.java
deleted file mode 100644
index 073bcbb..0000000
--- a/src/com/android/contacts/vcard/ProcessorBase.java
+++ /dev/null
@@ -1,75 +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.vcard;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.RunnableFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A base processor class. One instance processes vCard one import/export request (imports a given
- * vCard or exports a vCard). Expected to be used with {@link ExecutorService}.
- *
- * This instance starts itself with {@link #run()} method, and can be cancelled with
- * {@link #cancel(boolean)}. Users can check the processor's status using {@link #isCancelled()}
- * and {@link #isDone()} asynchronously.
- *
- * {@link #get()} and {@link #get(long, TimeUnit)}, which are form {@link Future}, aren't
- * supported and {@link UnsupportedOperationException} will be just thrown when they are called.
- */
-public abstract class ProcessorBase implements RunnableFuture<Object> {
-
- /**
- * @return the type of the processor. Must be {@link VCardService#TYPE_IMPORT} or
- * {@link VCardService#TYPE_EXPORT}.
- */
- public abstract int getType();
-
- @Override
- public abstract void run();
-
- /**
- * Cancels this operation.
- *
- * @param mayInterruptIfRunning ignored. When this method is called, the instance
- * stops processing and finish itself even if the thread is running.
- *
- * @see Future#cancel(boolean)
- */
- @Override
- public abstract boolean cancel(boolean mayInterruptIfRunning);
- @Override
- public abstract boolean isCancelled();
- @Override
- public abstract boolean isDone();
-
- /**
- * Just throws {@link UnsupportedOperationException}.
- */
- @Override
- public final Object get() {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Just throws {@link UnsupportedOperationException}.
- */
- @Override
- public final Object get(long timeout, TimeUnit unit) {
- throw new UnsupportedOperationException();
- }
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/vcard/SelectAccountActivity.java b/src/com/android/contacts/vcard/SelectAccountActivity.java
deleted file mode 100644
index 0e9c5a8..0000000
--- a/src/com/android/contacts/vcard/SelectAccountActivity.java
+++ /dev/null
@@ -1,114 +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.vcard;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.android.contacts.ContactsActivity;
-import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.util.AccountSelectionUtil;
-
-import java.util.List;
-
-public class SelectAccountActivity extends ContactsActivity {
- private static final String LOG_TAG = "SelectAccountActivity";
-
- public static final String ACCOUNT_NAME = "account_name";
- public static final String ACCOUNT_TYPE = "account_type";
- public static final String DATA_SET = "data_set";
-
- private class CancelListener
- implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
- public void onClick(DialogInterface dialog, int which) {
- finish();
- }
- public void onCancel(DialogInterface dialog) {
- finish();
- }
- }
-
- private AccountSelectionUtil.AccountSelectedListener mAccountSelectionListener;
-
- @Override
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
-
- // There's three possibilities:
- // - more than one accounts -> ask the user
- // - just one account -> use the account without asking the user
- // - no account -> use phone-local storage without asking the user
- final int resId = R.string.import_from_sdcard;
- final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
- final List<AccountWithDataSet> accountList = accountTypes.getAccounts(true);
- if (accountList.size() == 0) {
- Log.w(LOG_TAG, "Account does not exist");
- finish();
- return;
- } else if (accountList.size() == 1) {
- final AccountWithDataSet account = accountList.get(0);
- final Intent intent = new Intent();
- intent.putExtra(ACCOUNT_NAME, account.name);
- intent.putExtra(ACCOUNT_TYPE, account.type);
- intent.putExtra(DATA_SET, account.dataSet);
- setResult(RESULT_OK, intent);
- finish();
- return;
- }
-
- Log.i(LOG_TAG, "The number of available accounts: " + accountList.size());
-
- // Multiple accounts. Let users to select one.
- mAccountSelectionListener =
- new AccountSelectionUtil.AccountSelectedListener(
- this, accountList, resId) {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- final AccountWithDataSet account = mAccountList.get(which);
- final Intent intent = new Intent();
- intent.putExtra(ACCOUNT_NAME, account.name);
- intent.putExtra(ACCOUNT_TYPE, account.type);
- intent.putExtra(DATA_SET, account.dataSet);
- setResult(RESULT_OK, intent);
- finish();
- }
- };
- showDialog(resId);
- return;
- }
-
- @Override
- protected Dialog onCreateDialog(int resId, Bundle bundle) {
- switch (resId) {
- case R.string.import_from_sdcard: {
- if (mAccountSelectionListener == null) {
- throw new NullPointerException(
- "mAccountSelectionListener must not be null.");
- }
- return AccountSelectionUtil.getSelectAccountDialog(this, resId,
- mAccountSelectionListener,
- new CancelListener());
- }
- }
- return super.onCreateDialog(resId, bundle);
- }
-}
diff --git a/src/com/android/contacts/vcard/ThreadStarter.java b/src/com/android/contacts/vcard/ThreadStarter.java
deleted file mode 100644
index d7adad6..0000000
--- a/src/com/android/contacts/vcard/ThreadStarter.java
+++ /dev/null
@@ -1,20 +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.vcard;
-
-public interface ThreadStarter {
- public void start();
-}
\ No newline at end of file
diff --git a/src/com/android/contacts/vcard/VCardImportExportListener.java b/src/com/android/contacts/vcard/VCardImportExportListener.java
deleted file mode 100644
index 82d7c21..0000000
--- a/src/com/android/contacts/vcard/VCardImportExportListener.java
+++ /dev/null
@@ -1,36 +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.vcard;
-
-import android.net.Uri;
-
-import com.android.vcard.VCardEntry;
-
-interface VCardImportExportListener {
- void onImportProcessed(ImportRequest request, int jobId, int sequence);
- void onImportParsed(ImportRequest request, int jobId, VCardEntry entry, int currentCount,
- int totalCount);
- void onImportFinished(ImportRequest request, int jobId, Uri uri);
- void onImportFailed(ImportRequest request);
- void onImportCanceled(ImportRequest request, int jobId);
-
- void onExportProcessed(ExportRequest request, int jobId);
- void onExportFailed(ExportRequest request);
-
- void onCancelRequest(CancelRequest request, int type);
- void onComplete();
-}
diff --git a/src/com/android/contacts/vcard/VCardService.java b/src/com/android/contacts/vcard/VCardService.java
deleted file mode 100644
index 74ce69c..0000000
--- a/src/com/android/contacts/vcard/VCardService.java
+++ /dev/null
@@ -1,533 +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.vcard;
-
-import android.app.Service;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.media.MediaScannerConnection;
-import android.media.MediaScannerConnection.MediaScannerConnectionClient;
-import android.net.Uri;
-import android.os.Binder;
-import android.os.Environment;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
-import android.os.RemoteException;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.SparseArray;
-
-import com.android.contacts.R;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.RejectedExecutionException;
-
-/**
- * The class responsible for handling vCard import/export requests.
- *
- * This Service creates one ImportRequest/ExportRequest object (as Runnable) per request and push
- * it to {@link ExecutorService} with single thread executor. The executor handles each request
- * one by one, and notifies users when needed.
- */
-// TODO: Using IntentService looks simpler than using Service + ServiceConnection though this
-// works fine enough. Investigate the feasibility.
-public class VCardService extends Service {
- private final static String LOG_TAG = "VCardService";
-
- /* package */ final static boolean DEBUG = false;
-
- /* package */ static final int MSG_IMPORT_REQUEST = 1;
- /* package */ static final int MSG_EXPORT_REQUEST = 2;
- /* package */ static final int MSG_CANCEL_REQUEST = 3;
- /* package */ static final int MSG_REQUEST_AVAILABLE_EXPORT_DESTINATION = 4;
- /* package */ static final int MSG_SET_AVAILABLE_EXPORT_DESTINATION = 5;
-
- /**
- * Specifies the type of operation. Used when constructing a notification, canceling
- * some operation, etc.
- */
- /* package */ static final int TYPE_IMPORT = 1;
- /* package */ static final int TYPE_EXPORT = 2;
-
- /* package */ static final String CACHE_FILE_PREFIX = "import_tmp_";
-
-
- private class CustomMediaScannerConnectionClient implements MediaScannerConnectionClient {
- final MediaScannerConnection mConnection;
- final String mPath;
-
- public CustomMediaScannerConnectionClient(String path) {
- mConnection = new MediaScannerConnection(VCardService.this, this);
- mPath = path;
- }
-
- public void start() {
- mConnection.connect();
- }
-
- @Override
- public void onMediaScannerConnected() {
- if (DEBUG) { Log.d(LOG_TAG, "Connected to MediaScanner. Start scanning."); }
- mConnection.scanFile(mPath, null);
- }
-
- @Override
- public void onScanCompleted(String path, Uri uri) {
- if (DEBUG) { Log.d(LOG_TAG, "scan completed: " + path); }
- mConnection.disconnect();
- removeConnectionClient(this);
- }
- }
-
- // Should be single thread, as we don't want to simultaneously handle import and export
- // requests.
- private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
-
- private int mCurrentJobId;
-
- // Stores all unfinished import/export jobs which will be executed by mExecutorService.
- // Key is jobId.
- private final SparseArray<ProcessorBase> mRunningJobMap = new SparseArray<ProcessorBase>();
- // Stores ScannerConnectionClient objects until they finish scanning requested files.
- // Uses List class for simplicity. It's not costly as we won't have multiple objects in
- // almost all cases.
- private final List<CustomMediaScannerConnectionClient> mRemainingScannerConnections =
- new ArrayList<CustomMediaScannerConnectionClient>();
-
- /* ** vCard exporter params ** */
- // If true, VCardExporter is able to emits files longer than 8.3 format.
- private static final boolean ALLOW_LONG_FILE_NAME = false;
-
- private File mTargetDirectory;
- private String mFileNamePrefix;
- private String mFileNameSuffix;
- private int mFileIndexMinimum;
- private int mFileIndexMaximum;
- private String mFileNameExtension;
- private Set<String> mExtensionsToConsider;
- private String mErrorReason;
- private MyBinder mBinder;
-
- // File names currently reserved by some export job.
- private final Set<String> mReservedDestination = new HashSet<String>();
- /* ** end of vCard exporter params ** */
-
- public class MyBinder extends Binder {
- public VCardService getService() {
- return VCardService.this;
- }
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
- mBinder = new MyBinder();
- if (DEBUG) Log.d(LOG_TAG, "vCard Service is being created.");
- initExporterParams();
- }
-
- private void initExporterParams() {
- mTargetDirectory = Environment.getExternalStorageDirectory();
- mFileNamePrefix = getString(R.string.config_export_file_prefix);
- mFileNameSuffix = getString(R.string.config_export_file_suffix);
- mFileNameExtension = getString(R.string.config_export_file_extension);
-
- mExtensionsToConsider = new HashSet<String>();
- mExtensionsToConsider.add(mFileNameExtension);
-
- final String additionalExtensions =
- getString(R.string.config_export_extensions_to_consider);
- if (!TextUtils.isEmpty(additionalExtensions)) {
- for (String extension : additionalExtensions.split(",")) {
- String trimed = extension.trim();
- if (trimed.length() > 0) {
- mExtensionsToConsider.add(trimed);
- }
- }
- }
-
- final Resources resources = getResources();
- mFileIndexMinimum = resources.getInteger(R.integer.config_export_file_min_index);
- mFileIndexMaximum = resources.getInteger(R.integer.config_export_file_max_index);
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int id) {
- return START_STICKY;
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- return mBinder;
- }
-
- @Override
- public void onDestroy() {
- if (DEBUG) Log.d(LOG_TAG, "VCardService is being destroyed.");
- cancelAllRequestsAndShutdown();
- clearCache();
- super.onDestroy();
- }
-
- public synchronized void handleImportRequest(List<ImportRequest> requests,
- VCardImportExportListener listener) {
- if (DEBUG) {
- final ArrayList<String> uris = new ArrayList<String>();
- final ArrayList<String> displayNames = new ArrayList<String>();
- for (ImportRequest request : requests) {
- uris.add(request.uri.toString());
- displayNames.add(request.displayName);
- }
- Log.d(LOG_TAG,
- String.format("received multiple import request (uri: %s, displayName: %s)",
- uris.toString(), displayNames.toString()));
- }
- final int size = requests.size();
- for (int i = 0; i < size; i++) {
- ImportRequest request = requests.get(i);
-
- if (tryExecute(new ImportProcessor(this, listener, request, mCurrentJobId))) {
- if (listener != null) {
- listener.onImportProcessed(request, mCurrentJobId, i);
- }
- mCurrentJobId++;
- } else {
- if (listener != null) {
- listener.onImportFailed(request);
- }
- // A rejection means executor doesn't run any more. Exit.
- break;
- }
- }
- }
-
- public synchronized void handleExportRequest(ExportRequest request,
- VCardImportExportListener listener) {
- if (tryExecute(new ExportProcessor(this, request, mCurrentJobId))) {
- final String path = request.destUri.getEncodedPath();
- if (DEBUG) Log.d(LOG_TAG, "Reserve the path " + path);
- if (!mReservedDestination.add(path)) {
- Log.w(LOG_TAG,
- String.format("The path %s is already reserved. Reject export request",
- path));
- if (listener != null) {
- listener.onExportFailed(request);
- }
- return;
- }
-
- if (listener != null) {
- listener.onExportProcessed(request, mCurrentJobId);
- }
- mCurrentJobId++;
- } else {
- if (listener != null) {
- listener.onExportFailed(request);
- }
- }
- }
-
- /**
- * Tries to call {@link ExecutorService#execute(Runnable)} toward a given processor.
- * @return true when successful.
- */
- private synchronized boolean tryExecute(ProcessorBase processor) {
- try {
- if (DEBUG) {
- Log.d(LOG_TAG, "Executor service status: shutdown: " + mExecutorService.isShutdown()
- + ", terminated: " + mExecutorService.isTerminated());
- }
- mExecutorService.execute(processor);
- mRunningJobMap.put(mCurrentJobId, processor);
- return true;
- } catch (RejectedExecutionException e) {
- Log.w(LOG_TAG, "Failed to excetute a job.", e);
- return false;
- }
- }
-
- public synchronized void handleCancelRequest(CancelRequest request,
- VCardImportExportListener listener) {
- final int jobId = request.jobId;
- if (DEBUG) Log.d(LOG_TAG, String.format("Received cancel request. (id: %d)", jobId));
-
- final ProcessorBase processor = mRunningJobMap.get(jobId);
- mRunningJobMap.remove(jobId);
-
- if (processor != null) {
- processor.cancel(true);
- final int type = processor.getType();
- if (listener != null) {
- listener.onCancelRequest(request, type);
- }
- if (type == TYPE_EXPORT) {
- final String path =
- ((ExportProcessor)processor).getRequest().destUri.getEncodedPath();
- Log.i(LOG_TAG,
- String.format("Cancel reservation for the path %s if appropriate", path));
- if (!mReservedDestination.remove(path)) {
- Log.w(LOG_TAG, "Not reserved.");
- }
- }
- } else {
- Log.w(LOG_TAG, String.format("Tried to remove unknown job (id: %d)", jobId));
- }
- stopServiceIfAppropriate();
- }
-
- public synchronized void handleRequestAvailableExportDestination(final Messenger messenger) {
- if (DEBUG) Log.d(LOG_TAG, "Received available export destination request.");
- final String path = getAppropriateDestination(mTargetDirectory);
- final Message message;
- if (path != null) {
- message = Message.obtain(null,
- VCardService.MSG_SET_AVAILABLE_EXPORT_DESTINATION, 0, 0, path);
- } else {
- message = Message.obtain(null,
- VCardService.MSG_SET_AVAILABLE_EXPORT_DESTINATION,
- R.id.dialog_fail_to_export_with_reason, 0, mErrorReason);
- }
- try {
- messenger.send(message);
- } catch (RemoteException e) {
- Log.w(LOG_TAG, "Failed to send reply for available export destination request.", e);
- }
- }
-
- /**
- * Checks job list and call {@link #stopSelf()} when there's no job and no scanner connection
- * is remaining.
- * A new job (import/export) cannot be submitted any more after this call.
- */
- private synchronized void stopServiceIfAppropriate() {
- if (mRunningJobMap.size() > 0) {
- final int size = mRunningJobMap.size();
-
- // Check if there are processors which aren't finished yet. If we still have ones to
- // process, we cannot stop the service yet. Also clean up already finished processors
- // here.
-
- // Job-ids to be removed. At first all elements in the array are invalid and will
- // be filled with real job-ids from the array's top. When we find a not-yet-finished
- // processor, then we start removing those finished jobs. In that case latter half of
- // this array will be invalid.
- final int[] toBeRemoved = new int[size];
- for (int i = 0; i < size; i++) {
- final int jobId = mRunningJobMap.keyAt(i);
- final ProcessorBase processor = mRunningJobMap.valueAt(i);
- if (!processor.isDone()) {
- Log.i(LOG_TAG, String.format("Found unfinished job (id: %d)", jobId));
-
- // Remove processors which are already "done", all of which should be before
- // processors which aren't done yet.
- for (int j = 0; j < i; j++) {
- mRunningJobMap.remove(toBeRemoved[j]);
- }
- return;
- }
-
- // Remember the finished processor.
- toBeRemoved[i] = jobId;
- }
-
- // We're sure we can remove all. Instead of removing one by one, just call clear().
- mRunningJobMap.clear();
- }
-
- if (!mRemainingScannerConnections.isEmpty()) {
- Log.i(LOG_TAG, "MediaScanner update is in progress.");
- return;
- }
-
- Log.i(LOG_TAG, "No unfinished job. Stop this service.");
- mExecutorService.shutdown();
- stopSelf();
- }
-
- /* package */ synchronized void updateMediaScanner(String path) {
- if (DEBUG) {
- Log.d(LOG_TAG, "MediaScanner is being updated: " + path);
- }
-
- if (mExecutorService.isShutdown()) {
- Log.w(LOG_TAG, "MediaScanner update is requested after executor's being shut down. " +
- "Ignoring the update request");
- return;
- }
- final CustomMediaScannerConnectionClient client =
- new CustomMediaScannerConnectionClient(path);
- mRemainingScannerConnections.add(client);
- client.start();
- }
-
- private synchronized void removeConnectionClient(
- CustomMediaScannerConnectionClient client) {
- if (DEBUG) {
- Log.d(LOG_TAG, "Removing custom MediaScannerConnectionClient.");
- }
- mRemainingScannerConnections.remove(client);
- stopServiceIfAppropriate();
- }
-
- /* package */ synchronized void handleFinishImportNotification(
- int jobId, boolean successful) {
- if (DEBUG) {
- Log.d(LOG_TAG, String.format("Received vCard import finish notification (id: %d). "
- + "Result: %b", jobId, (successful ? "success" : "failure")));
- }
- mRunningJobMap.remove(jobId);
- stopServiceIfAppropriate();
- }
-
- /* package */ synchronized void handleFinishExportNotification(
- int jobId, boolean successful) {
- if (DEBUG) {
- Log.d(LOG_TAG, String.format("Received vCard export finish notification (id: %d). "
- + "Result: %b", jobId, (successful ? "success" : "failure")));
- }
- final ProcessorBase job = mRunningJobMap.get(jobId);
- mRunningJobMap.remove(jobId);
- if (job == null) {
- Log.w(LOG_TAG, String.format("Tried to remove unknown job (id: %d)", jobId));
- } else if (!(job instanceof ExportProcessor)) {
- Log.w(LOG_TAG,
- String.format("Removed job (id: %s) isn't ExportProcessor", jobId));
- } else {
- final String path = ((ExportProcessor)job).getRequest().destUri.getEncodedPath();
- if (DEBUG) Log.d(LOG_TAG, "Remove reserved path " + path);
- mReservedDestination.remove(path);
- }
-
- stopServiceIfAppropriate();
- }
-
- /**
- * Cancels all the import/export requests and calls {@link ExecutorService#shutdown()}, which
- * means this Service becomes no longer ready for import/export requests.
- *
- * Mainly called from onDestroy().
- */
- private synchronized void cancelAllRequestsAndShutdown() {
- for (int i = 0; i < mRunningJobMap.size(); i++) {
- mRunningJobMap.valueAt(i).cancel(true);
- }
- mRunningJobMap.clear();
- mExecutorService.shutdown();
- }
-
- /**
- * Removes import caches stored locally.
- */
- private void clearCache() {
- for (final String fileName : fileList()) {
- if (fileName.startsWith(CACHE_FILE_PREFIX)) {
- // We don't want to keep all the caches so we remove cache files old enough.
- Log.i(LOG_TAG, "Remove a temporary file: " + fileName);
- deleteFile(fileName);
- }
- }
- }
-
- /**
- * Returns an appropriate file name for vCard export. Returns null when impossible.
- *
- * @return destination path for a vCard file to be exported. null on error and mErrorReason
- * is correctly set.
- */
- private String getAppropriateDestination(final File destDirectory) {
- /*
- * Here, file names have 5 parts: directory, prefix, index, suffix, and extension.
- * e.g. "/mnt/sdcard/prfx00001sfx.vcf" -> "/mnt/sdcard", "prfx", "00001", "sfx", and ".vcf"
- * (In default, prefix and suffix is empty, so usually the destination would be
- * /mnt/sdcard/00001.vcf.)
- *
- * This method increments "index" part from 1 to maximum, and checks whether any file name
- * following naming rule is available. If there's no file named /mnt/sdcard/00001.vcf, the
- * name will be returned to a caller. If there are 00001.vcf 00002.vcf, 00003.vcf is
- * returned.
- *
- * There may not be any appropriate file name. If there are 99999 vCard files in the
- * storage, for example, there's no appropriate name, so this method returns
- * null.
- */
-
- // Count the number of digits of mFileIndexMaximum
- // e.g. When mFileIndexMaximum is 99999, fileIndexDigit becomes 5, as we will count the
- int fileIndexDigit = 0;
- {
- // Calling Math.Log10() is costly.
- int tmp;
- for (fileIndexDigit = 0, tmp = mFileIndexMaximum; tmp > 0;
- fileIndexDigit++, tmp /= 10) {
- }
- }
-
- // %s05d%s (e.g. "p00001s")
- final String bodyFormat = "%s%0" + fileIndexDigit + "d%s";
-
- if (!ALLOW_LONG_FILE_NAME) {
- final String possibleBody =
- String.format(bodyFormat, mFileNamePrefix, 1, mFileNameSuffix);
- if (possibleBody.length() > 8 || mFileNameExtension.length() > 3) {
- Log.e(LOG_TAG, "This code does not allow any long file name.");
- mErrorReason = getString(R.string.fail_reason_too_long_filename,
- String.format("%s.%s", possibleBody, mFileNameExtension));
- Log.w(LOG_TAG, "File name becomes too long.");
- return null;
- }
- }
-
- for (int i = mFileIndexMinimum; i <= mFileIndexMaximum; i++) {
- boolean numberIsAvailable = true;
- final String body = String.format(bodyFormat, mFileNamePrefix, i, mFileNameSuffix);
- // Make sure that none of the extensions of mExtensionsToConsider matches. If this
- // number is free, we'll go ahead with mFileNameExtension (which is included in
- // mExtensionsToConsider)
- for (String possibleExtension : mExtensionsToConsider) {
- final File file = new File(destDirectory, body + "." + possibleExtension);
- final String path = file.getAbsolutePath();
- synchronized (this) {
- // Is this being exported right now? Skip this number
- if (mReservedDestination.contains(path)) {
- if (DEBUG) {
- Log.d(LOG_TAG, String.format("%s is already being exported.", path));
- }
- numberIsAvailable = false;
- break;
- }
- }
- if (file.exists()) {
- numberIsAvailable = false;
- break;
- }
- }
- if (numberIsAvailable) {
- return new File(destDirectory, body + "." + mFileNameExtension).getAbsolutePath();
- }
- }
-
- Log.w(LOG_TAG, "Reached vCard number limit. Maybe there are too many vCard in the storage");
- mErrorReason = getString(R.string.fail_reason_too_many_vcard);
- return null;
- }
-}
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java b/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
deleted file mode 100644
index 5973387..0000000
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
+++ /dev/null
@@ -1,474 +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.voicemail;
-
-import static com.android.contacts.CallDetailActivity.EXTRA_VOICEMAIL_START_PLAYBACK;
-import static com.android.contacts.CallDetailActivity.EXTRA_VOICEMAIL_URI;
-
-import android.app.Activity;
-import android.app.Fragment;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.media.AudioManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.PowerManager;
-import android.provider.VoicemailContract;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageButton;
-import android.widget.SeekBar;
-import android.widget.TextView;
-
-import com.android.common.io.MoreCloseables;
-import com.android.contacts.ProximitySensorAware;
-import com.android.contacts.R;
-import com.android.contacts.util.AsyncTaskExecutors;
-import com.android.ex.variablespeed.MediaPlayerProxy;
-import com.android.ex.variablespeed.VariableSpeed;
-import com.google.common.base.Preconditions;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.NotThreadSafe;
-
-/**
- * Displays and plays back a single voicemail.
- * <p>
- * When the Activity containing this Fragment is created, voicemail playback
- * will begin immediately. The Activity is expected to be started via an intent
- * containing a suitable voicemail uri to playback.
- * <p>
- * This class is not thread-safe, it is thread-confined. All calls to all public
- * methods on this class are expected to come from the main ui thread.
- */
-@NotThreadSafe
-public class VoicemailPlaybackFragment extends Fragment {
- private static final String TAG = "VoicemailPlayback";
- private static final int NUMBER_OF_THREADS_IN_POOL = 2;
- private static final String[] HAS_CONTENT_PROJECTION = new String[] {
- VoicemailContract.Voicemails.HAS_CONTENT,
- };
-
- private VoicemailPlaybackPresenter mPresenter;
- private ScheduledExecutorService mScheduledExecutorService;
- private View mPlaybackLayout;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- mPlaybackLayout = inflater.inflate(R.layout.playback_layout, null);
- return mPlaybackLayout;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- mScheduledExecutorService = createScheduledExecutorService();
- Bundle arguments = getArguments();
- Preconditions.checkNotNull(arguments, "fragment must be started with arguments");
- Uri voicemailUri = arguments.getParcelable(EXTRA_VOICEMAIL_URI);
- Preconditions.checkNotNull(voicemailUri, "fragment must contain EXTRA_VOICEMAIL_URI");
- boolean startPlayback = arguments.getBoolean(EXTRA_VOICEMAIL_START_PLAYBACK, false);
- PowerManager powerManager =
- (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE);
- PowerManager.WakeLock wakeLock =
- powerManager.newWakeLock(
- PowerManager.SCREEN_DIM_WAKE_LOCK, getClass().getSimpleName());
- mPresenter = new VoicemailPlaybackPresenter(createPlaybackViewImpl(),
- createMediaPlayer(mScheduledExecutorService), voicemailUri,
- mScheduledExecutorService, startPlayback,
- AsyncTaskExecutors.createAsyncTaskExecutor(), wakeLock);
- mPresenter.onCreate(savedInstanceState);
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- mPresenter.onSaveInstanceState(outState);
- super.onSaveInstanceState(outState);
- }
-
- @Override
- public void onDestroy() {
- mPresenter.onDestroy();
- mScheduledExecutorService.shutdown();
- super.onDestroy();
- }
-
- @Override
- public void onPause() {
- mPresenter.onPause();
- super.onPause();
- }
-
- private PlaybackViewImpl createPlaybackViewImpl() {
- return new PlaybackViewImpl(new ActivityReference(), getActivity().getApplicationContext(),
- mPlaybackLayout);
- }
-
- private MediaPlayerProxy createMediaPlayer(ExecutorService executorService) {
- return VariableSpeed.createVariableSpeed(executorService);
- }
-
- private ScheduledExecutorService createScheduledExecutorService() {
- return Executors.newScheduledThreadPool(NUMBER_OF_THREADS_IN_POOL);
- }
-
- /**
- * Formats a number of milliseconds as something that looks like {@code 00:05}.
- * <p>
- * We always use four digits, two for minutes two for seconds. In the very unlikely event
- * that the voicemail duration exceeds 99 minutes, the display is capped at 99 minutes.
- */
- private static String formatAsMinutesAndSeconds(int millis) {
- int seconds = millis / 1000;
- int minutes = seconds / 60;
- seconds -= minutes * 60;
- if (minutes > 99) {
- minutes = 99;
- }
- return String.format("%02d:%02d", minutes, seconds);
- }
-
- /**
- * An object that can provide us with an Activity.
- * <p>
- * Fragments suffer the drawback that the Activity they belong to may sometimes be null. This
- * can happen if the Fragment is detached, for example. In that situation a call to
- * {@link Fragment#getString(int)} will throw and {@link IllegalStateException}. Also, calling
- * {@link Fragment#getActivity()} is dangerous - it may sometimes return null. And thus blindly
- * calling a method on the result of getActivity() is dangerous too.
- * <p>
- * To work around this, I have made the {@link PlaybackViewImpl} class static, so that it does
- * not have access to any Fragment methods directly. Instead it uses an application Context for
- * things like accessing strings, accessing system services. It only uses the Activity when it
- * absolutely needs it - and does so through this class. This makes it easy to see where we have
- * to check for null properly.
- */
- private final class ActivityReference {
- /** Gets this Fragment's Activity: <b>may be null</b>. */
- public final Activity get() {
- return getActivity();
- }
- }
-
- /** Methods required by the PlaybackView for the VoicemailPlaybackPresenter. */
- private static final class PlaybackViewImpl implements VoicemailPlaybackPresenter.PlaybackView {
- private final ActivityReference mActivityReference;
- private final Context mApplicationContext;
- private final SeekBar mPlaybackSeek;
- private final ImageButton mStartStopButton;
- private final ImageButton mPlaybackSpeakerphone;
- private final ImageButton mRateDecreaseButton;
- private final ImageButton mRateIncreaseButton;
- private final TextViewWithMessagesController mTextController;
-
- public PlaybackViewImpl(ActivityReference activityReference, Context applicationContext,
- View playbackLayout) {
- Preconditions.checkNotNull(activityReference);
- Preconditions.checkNotNull(applicationContext);
- Preconditions.checkNotNull(playbackLayout);
- mActivityReference = activityReference;
- mApplicationContext = applicationContext;
- mPlaybackSeek = (SeekBar) playbackLayout.findViewById(R.id.playback_seek);
- mStartStopButton = (ImageButton) playbackLayout.findViewById(
- R.id.playback_start_stop);
- mPlaybackSpeakerphone = (ImageButton) playbackLayout.findViewById(
- R.id.playback_speakerphone);
- mRateDecreaseButton = (ImageButton) playbackLayout.findViewById(
- R.id.rate_decrease_button);
- mRateIncreaseButton = (ImageButton) playbackLayout.findViewById(
- R.id.rate_increase_button);
- mTextController = new TextViewWithMessagesController(
- (TextView) playbackLayout.findViewById(R.id.playback_position_text),
- (TextView) playbackLayout.findViewById(R.id.playback_speed_text));
- }
-
- @Override
- public void finish() {
- Activity activity = mActivityReference.get();
- if (activity != null) {
- activity.finish();
- }
- }
-
- @Override
- public void runOnUiThread(Runnable runnable) {
- Activity activity = mActivityReference.get();
- if (activity != null) {
- activity.runOnUiThread(runnable);
- }
- }
-
- @Override
- public Context getDataSourceContext() {
- return mApplicationContext;
- }
-
- @Override
- public void setRateDecreaseButtonListener(View.OnClickListener listener) {
- mRateDecreaseButton.setOnClickListener(listener);
- }
-
- @Override
- public void setRateIncreaseButtonListener(View.OnClickListener listener) {
- mRateIncreaseButton.setOnClickListener(listener);
- }
-
- @Override
- public void setStartStopListener(View.OnClickListener listener) {
- mStartStopButton.setOnClickListener(listener);
- }
-
- @Override
- public void setSpeakerphoneListener(View.OnClickListener listener) {
- mPlaybackSpeakerphone.setOnClickListener(listener);
- }
-
- @Override
- public void setRateDisplay(float rate, int stringResourceId) {
- mTextController.setTemporaryText(
- mApplicationContext.getString(stringResourceId), 1, TimeUnit.SECONDS);
- }
-
- @Override
- public void setPositionSeekListener(SeekBar.OnSeekBarChangeListener listener) {
- mPlaybackSeek.setOnSeekBarChangeListener(listener);
- }
-
- @Override
- public void playbackStarted() {
- mStartStopButton.setImageResource(R.drawable.ic_hold_pause_holo_dark);
- }
-
- @Override
- public void playbackStopped() {
- mStartStopButton.setImageResource(R.drawable.ic_play);
- }
-
- @Override
- public void enableProximitySensor() {
- // Only change the state if the activity is still around.
- Activity activity = mActivityReference.get();
- if (activity != null && activity instanceof ProximitySensorAware) {
- ((ProximitySensorAware) activity).enableProximitySensor();
- }
- }
-
- @Override
- public void disableProximitySensor() {
- // Only change the state if the activity is still around.
- Activity activity = mActivityReference.get();
- if (activity != null && activity instanceof ProximitySensorAware) {
- ((ProximitySensorAware) activity).disableProximitySensor(true);
- }
- }
-
- @Override
- public void registerContentObserver(Uri uri, ContentObserver observer) {
- mApplicationContext.getContentResolver().registerContentObserver(uri, false, observer);
- }
-
- @Override
- public void unregisterContentObserver(ContentObserver observer) {
- mApplicationContext.getContentResolver().unregisterContentObserver(observer);
- }
-
- @Override
- public void setClipPosition(int clipPositionInMillis, int clipLengthInMillis) {
- int seekBarPosition = Math.max(0, clipPositionInMillis);
- int seekBarMax = Math.max(seekBarPosition, clipLengthInMillis);
- if (mPlaybackSeek.getMax() != seekBarMax) {
- mPlaybackSeek.setMax(seekBarMax);
- }
- mPlaybackSeek.setProgress(seekBarPosition);
- mTextController.setPermanentText(
- formatAsMinutesAndSeconds(seekBarMax - seekBarPosition));
- }
-
- private String getString(int resId) {
- return mApplicationContext.getString(resId);
- }
-
- @Override
- public void setIsBuffering() {
- disableUiElements();
- mTextController.setPermanentText(getString(R.string.voicemail_buffering));
- }
-
- @Override
- public void setIsFetchingContent() {
- disableUiElements();
- mTextController.setPermanentText(getString(R.string.voicemail_fetching_content));
- }
-
- @Override
- public void setFetchContentTimeout() {
- disableUiElements();
- mTextController.setPermanentText(getString(R.string.voicemail_fetching_timout));
- }
-
- @Override
- public int getDesiredClipPosition() {
- return mPlaybackSeek.getProgress();
- }
-
- @Override
- public void disableUiElements() {
- mRateIncreaseButton.setEnabled(false);
- mRateDecreaseButton.setEnabled(false);
- mStartStopButton.setEnabled(false);
- mPlaybackSpeakerphone.setEnabled(false);
- mPlaybackSeek.setProgress(0);
- mPlaybackSeek.setEnabled(false);
- }
-
- @Override
- public void playbackError(Exception e) {
- disableUiElements();
- mTextController.setPermanentText(getString(R.string.voicemail_playback_error));
- Log.e(TAG, "Could not play voicemail", e);
- }
-
- @Override
- public void enableUiElements() {
- mRateIncreaseButton.setEnabled(true);
- mRateDecreaseButton.setEnabled(true);
- mStartStopButton.setEnabled(true);
- mPlaybackSpeakerphone.setEnabled(true);
- mPlaybackSeek.setEnabled(true);
- }
-
- @Override
- public void sendFetchVoicemailRequest(Uri voicemailUri) {
- Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, voicemailUri);
- mApplicationContext.sendBroadcast(intent);
- }
-
- @Override
- public boolean queryHasContent(Uri voicemailUri) {
- ContentResolver contentResolver = mApplicationContext.getContentResolver();
- Cursor cursor = contentResolver.query(
- voicemailUri, HAS_CONTENT_PROJECTION, null, null, null);
- try {
- if (cursor != null && cursor.moveToNext()) {
- return cursor.getInt(cursor.getColumnIndexOrThrow(
- VoicemailContract.Voicemails.HAS_CONTENT)) == 1;
- }
- } finally {
- MoreCloseables.closeQuietly(cursor);
- }
- return false;
- }
-
- private AudioManager getAudioManager() {
- return (AudioManager) mApplicationContext.getSystemService(Context.AUDIO_SERVICE);
- }
-
- @Override
- public boolean isSpeakerPhoneOn() {
- return getAudioManager().isSpeakerphoneOn();
- }
-
- @Override
- public void setSpeakerPhoneOn(boolean on) {
- getAudioManager().setSpeakerphoneOn(on);
- if (on) {
- mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_on);
- } else {
- mPlaybackSpeakerphone.setImageResource(R.drawable.ic_speakerphone_off);
- }
- }
-
- @Override
- public void setVolumeControlStream(int streamType) {
- Activity activity = mActivityReference.get();
- if (activity != null) {
- activity.setVolumeControlStream(streamType);
- }
- }
- }
-
- /**
- * Controls a TextView with dynamically changing text.
- * <p>
- * There are two methods here of interest,
- * {@link TextViewWithMessagesController#setPermanentText(String)} and
- * {@link TextViewWithMessagesController#setTemporaryText(String, long, TimeUnit)}. The
- * former is used to set the text on the text view immediately, and is used in our case for
- * the countdown of duration remaining during voicemail playback. The second is used to
- * temporarily replace this countdown with a message, in our case faster voicemail speed or
- * slower voicemail speed, before returning to the countdown display.
- * <p>
- * All the methods on this class must be called from the ui thread.
- */
- private static final class TextViewWithMessagesController {
- private static final float VISIBLE = 1;
- private static final float INVISIBLE = 0;
- private static final long SHORT_ANIMATION_MS = 200;
- private static final long LONG_ANIMATION_MS = 400;
- private final Object mLock = new Object();
- private final TextView mPermanentTextView;
- private final TextView mTemporaryTextView;
- @GuardedBy("mLock") private Runnable mRunnable;
-
- public TextViewWithMessagesController(TextView permanentTextView,
- TextView temporaryTextView) {
- mPermanentTextView = permanentTextView;
- mTemporaryTextView = temporaryTextView;
- }
-
- public void setPermanentText(String text) {
- mPermanentTextView.setText(text);
- }
-
- public void setTemporaryText(String text, long duration, TimeUnit units) {
- synchronized (mLock) {
- mTemporaryTextView.setText(text);
- mTemporaryTextView.animate().alpha(VISIBLE).setDuration(SHORT_ANIMATION_MS);
- mPermanentTextView.animate().alpha(INVISIBLE).setDuration(SHORT_ANIMATION_MS);
- mRunnable = new Runnable() {
- @Override
- public void run() {
- synchronized (mLock) {
- // We check for (mRunnable == this) becuase if not true, then another
- // setTemporaryText call has taken place in the meantime, and this
- // one is now defunct and needs to take no action.
- if (mRunnable == this) {
- mRunnable = null;
- mTemporaryTextView.animate()
- .alpha(INVISIBLE).setDuration(LONG_ANIMATION_MS);
- mPermanentTextView.animate()
- .alpha(VISIBLE).setDuration(LONG_ANIMATION_MS);
- }
- }
- }
- };
- mTemporaryTextView.postDelayed(mRunnable, units.toMillis(duration));
- }
- }
- }
-}
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
deleted file mode 100644
index 2c7ba52..0000000
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
+++ /dev/null
@@ -1,630 +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.voicemail;
-
-import static android.util.MathUtils.constrain;
-
-import android.content.Context;
-import android.database.ContentObserver;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.PowerManager;
-import android.view.View;
-import android.widget.SeekBar;
-
-import com.android.contacts.R;
-import com.android.contacts.util.AsyncTaskExecutor;
-import com.android.ex.variablespeed.MediaPlayerProxy;
-import com.android.ex.variablespeed.SingleThreadedMediaPlayerProxy;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.NotThreadSafe;
-import javax.annotation.concurrent.ThreadSafe;
-
-/**
- * Contains the controlling logic for a voicemail playback ui.
- * <p>
- * Specifically right now this class is used to control the
- * {@link com.android.contacts.voicemail.VoicemailPlaybackFragment}.
- * <p>
- * This class is not thread safe. The thread policy for this class is
- * thread-confinement, all calls into this class from outside must be done from
- * the main ui thread.
- */
-@NotThreadSafe
-@VisibleForTesting
-public class VoicemailPlaybackPresenter {
- /** The stream used to playback voicemail. */
- private static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
-
- /** Contract describing the behaviour we need from the ui we are controlling. */
- public interface PlaybackView {
- Context getDataSourceContext();
- void runOnUiThread(Runnable runnable);
- void setStartStopListener(View.OnClickListener listener);
- void setPositionSeekListener(SeekBar.OnSeekBarChangeListener listener);
- void setSpeakerphoneListener(View.OnClickListener listener);
- void setIsBuffering();
- void setClipPosition(int clipPositionInMillis, int clipLengthInMillis);
- int getDesiredClipPosition();
- void playbackStarted();
- void playbackStopped();
- void playbackError(Exception e);
- boolean isSpeakerPhoneOn();
- void setSpeakerPhoneOn(boolean on);
- void finish();
- void setRateDisplay(float rate, int stringResourceId);
- void setRateIncreaseButtonListener(View.OnClickListener listener);
- void setRateDecreaseButtonListener(View.OnClickListener listener);
- void setIsFetchingContent();
- void disableUiElements();
- void enableUiElements();
- void sendFetchVoicemailRequest(Uri voicemailUri);
- boolean queryHasContent(Uri voicemailUri);
- void setFetchContentTimeout();
- void registerContentObserver(Uri uri, ContentObserver observer);
- void unregisterContentObserver(ContentObserver observer);
- void enableProximitySensor();
- void disableProximitySensor();
- void setVolumeControlStream(int streamType);
- }
-
- /** The enumeration of {@link AsyncTask} objects we use in this class. */
- public enum Tasks {
- CHECK_FOR_CONTENT,
- CHECK_CONTENT_AFTER_CHANGE,
- PREPARE_MEDIA_PLAYER,
- RESET_PREPARE_START_MEDIA_PLAYER,
- }
-
- /** Update rate for the slider, 30fps. */
- private static final int SLIDER_UPDATE_PERIOD_MILLIS = 1000 / 30;
- /** Time our ui will wait for content to be fetched before reporting not available. */
- private static final long FETCH_CONTENT_TIMEOUT_MS = 20000;
- /**
- * If present in the saved instance bundle, we should not resume playback on
- * create.
- */
- private static final String PAUSED_STATE_KEY = VoicemailPlaybackPresenter.class.getName()
- + ".PAUSED_STATE_KEY";
- /**
- * If present in the saved instance bundle, indicates where to set the
- * playback slider.
- */
- private static final String CLIP_POSITION_KEY = VoicemailPlaybackPresenter.class.getName()
- + ".CLIP_POSITION_KEY";
-
- /** The preset variable-speed rates. Each is greater than the previous by 25%. */
- private static final float[] PRESET_RATES = new float[] {
- 0.64f, 0.8f, 1.0f, 1.25f, 1.5625f
- };
- /** The string resource ids corresponding to the names given to the above preset rates. */
- private static final int[] PRESET_NAMES = new int[] {
- R.string.voicemail_speed_slowest,
- R.string.voicemail_speed_slower,
- R.string.voicemail_speed_normal,
- R.string.voicemail_speed_faster,
- R.string.voicemail_speed_fastest,
- };
-
- /**
- * Pointer into the {@link VoicemailPlaybackPresenter#PRESET_RATES} array.
- * <p>
- * This doesn't need to be synchronized, it's used only by the {@link RateChangeListener}
- * which in turn is only executed on the ui thread. This can't be encapsulated inside the
- * rate change listener since multiple rate change listeners must share the same value.
- */
- private int mRateIndex = 2;
-
- /**
- * The most recently calculated duration.
- * <p>
- * We cache this in a field since we don't want to keep requesting it from the player, as
- * this can easily lead to throwing {@link IllegalStateException} (any time the player is
- * released, it's illegal to ask for the duration).
- */
- private final AtomicInteger mDuration = new AtomicInteger(0);
-
- private final PlaybackView mView;
- private final MediaPlayerProxy mPlayer;
- private final PositionUpdater mPositionUpdater;
-
- /** Voicemail uri to play. */
- private final Uri mVoicemailUri;
- /** Start playing in onCreate iff this is true. */
- private final boolean mStartPlayingImmediately;
- /** Used to run async tasks that need to interact with the ui. */
- private final AsyncTaskExecutor mAsyncTaskExecutor;
-
- /**
- * Used to handle the result of a successful or time-out fetch result.
- * <p>
- * This variable is thread-contained, accessed only on the ui thread.
- */
- private FetchResultHandler mFetchResultHandler;
- private PowerManager.WakeLock mWakeLock;
- private AsyncTask<Void, ?, ?> mPrepareTask;
-
- public VoicemailPlaybackPresenter(PlaybackView view, MediaPlayerProxy player,
- Uri voicemailUri, ScheduledExecutorService executorService,
- boolean startPlayingImmediately, AsyncTaskExecutor asyncTaskExecutor,
- PowerManager.WakeLock wakeLock) {
- mView = view;
- mPlayer = player;
- mVoicemailUri = voicemailUri;
- mStartPlayingImmediately = startPlayingImmediately;
- mAsyncTaskExecutor = asyncTaskExecutor;
- mPositionUpdater = new PositionUpdater(executorService, SLIDER_UPDATE_PERIOD_MILLIS);
- mWakeLock = wakeLock;
- }
-
- public void onCreate(Bundle bundle) {
- mView.setVolumeControlStream(PLAYBACK_STREAM);
- checkThatWeHaveContent();
- }
-
- /**
- * Checks to see if we have content available for this voicemail.
- * <p>
- * This method will be called once, after the fragment has been created, before we know if the
- * voicemail we've been asked to play has any content available.
- * <p>
- * This method will notify the user through the ui that we are fetching the content, then check
- * to see if the content field in the db is set. If set, we proceed to
- * {@link #postSuccessfullyFetchedContent()} method. If not set, we will make a request to fetch
- * the content asynchronously via {@link #makeRequestForContent()}.
- */
- private void checkThatWeHaveContent() {
- mView.setIsFetchingContent();
- mAsyncTaskExecutor.submit(Tasks.CHECK_FOR_CONTENT, new AsyncTask<Void, Void, Boolean>() {
- @Override
- public Boolean doInBackground(Void... params) {
- return mView.queryHasContent(mVoicemailUri);
- }
-
- @Override
- public void onPostExecute(Boolean hasContent) {
- if (hasContent) {
- postSuccessfullyFetchedContent();
- } else {
- makeRequestForContent();
- }
- }
- });
- }
-
- /**
- * Makes a broadcast request to ask that a voicemail source fetch this content.
- * <p>
- * This method <b>must be called on the ui thread</b>.
- * <p>
- * This method will be called when we realise that we don't have content for this voicemail. It
- * will trigger a broadcast to request that the content be downloaded. It will add a listener to
- * the content resolver so that it will be notified when the has_content field changes. It will
- * also set a timer. If the has_content field changes to true within the allowed time, we will
- * proceed to {@link #postSuccessfullyFetchedContent()}. If the has_content field does not
- * become true within the allowed time, we will update the ui to reflect the fact that content
- * was not available.
- */
- private void makeRequestForContent() {
- Handler handler = new Handler();
- Preconditions.checkState(mFetchResultHandler == null, "mFetchResultHandler should be null");
- mFetchResultHandler = new FetchResultHandler(handler);
- mView.registerContentObserver(mVoicemailUri, mFetchResultHandler);
- handler.postDelayed(mFetchResultHandler.getTimeoutRunnable(), FETCH_CONTENT_TIMEOUT_MS);
- mView.sendFetchVoicemailRequest(mVoicemailUri);
- }
-
- @ThreadSafe
- private class FetchResultHandler extends ContentObserver implements Runnable {
- private AtomicBoolean mResultStillPending = new AtomicBoolean(true);
- private final Handler mHandler;
-
- public FetchResultHandler(Handler handler) {
- super(handler);
- mHandler = handler;
- }
-
- public Runnable getTimeoutRunnable() {
- return this;
- }
-
- @Override
- public void run() {
- if (mResultStillPending.getAndSet(false)) {
- mView.unregisterContentObserver(FetchResultHandler.this);
- mView.setFetchContentTimeout();
- }
- }
-
- public void destroy() {
- if (mResultStillPending.getAndSet(false)) {
- mView.unregisterContentObserver(FetchResultHandler.this);
- mHandler.removeCallbacks(this);
- }
- }
-
- @Override
- public void onChange(boolean selfChange) {
- mAsyncTaskExecutor.submit(Tasks.CHECK_CONTENT_AFTER_CHANGE,
- new AsyncTask<Void, Void, Boolean>() {
- @Override
- public Boolean doInBackground(Void... params) {
- return mView.queryHasContent(mVoicemailUri);
- }
-
- @Override
- public void onPostExecute(Boolean hasContent) {
- if (hasContent) {
- if (mResultStillPending.getAndSet(false)) {
- mView.unregisterContentObserver(FetchResultHandler.this);
- postSuccessfullyFetchedContent();
- }
- }
- }
- });
- }
- }
-
- /**
- * Prepares the voicemail content for playback.
- * <p>
- * This method will be called once we know that our voicemail has content (according to the
- * content provider). This method will try to prepare the data source through the media player.
- * If preparing the media player works, we will call through to
- * {@link #postSuccessfulPrepareActions()}. If preparing the media player fails (perhaps the
- * file the content provider points to is actually missing, perhaps it is of an unknown file
- * format that we can't play, who knows) then we will show an error on the ui.
- */
- private void postSuccessfullyFetchedContent() {
- mView.setIsBuffering();
- mAsyncTaskExecutor.submit(Tasks.PREPARE_MEDIA_PLAYER,
- new AsyncTask<Void, Void, Exception>() {
- @Override
- public Exception doInBackground(Void... params) {
- try {
- mPlayer.reset();
- mPlayer.setDataSource(mView.getDataSourceContext(), mVoicemailUri);
- mPlayer.setAudioStreamType(PLAYBACK_STREAM);
- mPlayer.prepare();
- return null;
- } catch (Exception e) {
- return e;
- }
- }
-
- @Override
- public void onPostExecute(Exception exception) {
- if (exception == null) {
- postSuccessfulPrepareActions();
- } else {
- mView.playbackError(exception);
- }
- }
- });
- }
-
- /**
- * Enables the ui, and optionally starts playback immediately.
- * <p>
- * This will be called once we have successfully prepared the media player, and will optionally
- * playback immediately.
- */
- private void postSuccessfulPrepareActions() {
- mView.enableUiElements();
- mView.setPositionSeekListener(new PlaybackPositionListener());
- mView.setStartStopListener(new StartStopButtonListener());
- mView.setSpeakerphoneListener(new SpeakerphoneListener());
- mPlayer.setOnErrorListener(new MediaPlayerErrorListener());
- mPlayer.setOnCompletionListener(new MediaPlayerCompletionListener());
- mView.setSpeakerPhoneOn(mView.isSpeakerPhoneOn());
- mView.setRateDecreaseButtonListener(createRateDecreaseListener());
- mView.setRateIncreaseButtonListener(createRateIncreaseListener());
- mView.setClipPosition(0, mPlayer.getDuration());
- mView.playbackStopped();
- // Always disable on stop.
- mView.disableProximitySensor();
- if (mStartPlayingImmediately) {
- resetPrepareStartPlaying(0);
- }
- // TODO: Now I'm ignoring the bundle, when previously I was checking for contains against
- // the PAUSED_STATE_KEY, and CLIP_POSITION_KEY.
- }
-
- public void onSaveInstanceState(Bundle outState) {
- outState.putInt(CLIP_POSITION_KEY, mView.getDesiredClipPosition());
- if (!mPlayer.isPlaying()) {
- outState.putBoolean(PAUSED_STATE_KEY, true);
- }
- }
-
- public void onDestroy() {
- mPlayer.release();
- if (mFetchResultHandler != null) {
- mFetchResultHandler.destroy();
- mFetchResultHandler = null;
- }
- mPositionUpdater.stopUpdating();
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- }
- }
-
- private class MediaPlayerErrorListener implements MediaPlayer.OnErrorListener {
- @Override
- public boolean onError(MediaPlayer mp, int what, int extra) {
- mView.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- handleError(new IllegalStateException("MediaPlayer error listener invoked"));
- }
- });
- return true;
- }
- }
-
- private class MediaPlayerCompletionListener implements MediaPlayer.OnCompletionListener {
- @Override
- public void onCompletion(final MediaPlayer mp) {
- mView.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- handleCompletion(mp);
- }
- });
- }
- }
-
- public View.OnClickListener createRateDecreaseListener() {
- return new RateChangeListener(false);
- }
-
- public View.OnClickListener createRateIncreaseListener() {
- return new RateChangeListener(true);
- }
-
- /**
- * Listens to clicks on the rate increase and decrease buttons.
- * <p>
- * This class is not thread-safe, but all interactions with it will happen on the ui thread.
- */
- private class RateChangeListener implements View.OnClickListener {
- private final boolean mIncrease;
-
- public RateChangeListener(boolean increase) {
- mIncrease = increase;
- }
-
- @Override
- public void onClick(View v) {
- // Adjust the current rate, then clamp it to the allowed values.
- mRateIndex = constrain(mRateIndex + (mIncrease ? 1 : -1), 0, PRESET_RATES.length - 1);
- // Whether or not we have actually changed the index, call changeRate().
- // This will ensure that we show the "fastest" or "slowest" text on the ui to indicate
- // to the user that it doesn't get any faster or slower.
- changeRate(PRESET_RATES[mRateIndex], PRESET_NAMES[mRateIndex]);
- }
- }
-
- private void resetPrepareStartPlaying(final int clipPositionInMillis) {
- if (mPrepareTask != null) {
- mPrepareTask.cancel(false);
- }
- mPrepareTask = mAsyncTaskExecutor.submit(Tasks.RESET_PREPARE_START_MEDIA_PLAYER,
- new AsyncTask<Void, Void, Exception>() {
- @Override
- public Exception doInBackground(Void... params) {
- try {
- mPlayer.reset();
- mPlayer.setDataSource(mView.getDataSourceContext(), mVoicemailUri);
- mPlayer.setAudioStreamType(PLAYBACK_STREAM);
- mPlayer.prepare();
- return null;
- } catch (Exception e) {
- return e;
- }
- }
-
- @Override
- public void onPostExecute(Exception exception) {
- mPrepareTask = null;
- if (exception == null) {
- mDuration.set(mPlayer.getDuration());
- int startPosition =
- constrain(clipPositionInMillis, 0, mDuration.get());
- mView.setClipPosition(startPosition, mDuration.get());
- mPlayer.seekTo(startPosition);
- mPlayer.start();
- mView.playbackStarted();
- if (!mWakeLock.isHeld()) {
- mWakeLock.acquire();
- }
- // Only enable if we are not currently using the speaker phone.
- if (!mView.isSpeakerPhoneOn()) {
- mView.enableProximitySensor();
- }
- mPositionUpdater.startUpdating(startPosition, mDuration.get());
- } else {
- handleError(exception);
- }
- }
- });
- }
-
- private void handleError(Exception e) {
- mView.playbackError(e);
- mPositionUpdater.stopUpdating();
- mPlayer.release();
- }
-
- public void handleCompletion(MediaPlayer mediaPlayer) {
- stopPlaybackAtPosition(0, mDuration.get());
- }
-
- private void stopPlaybackAtPosition(int clipPosition, int duration) {
- mPositionUpdater.stopUpdating();
- mView.playbackStopped();
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- }
- // Always disable on stop.
- mView.disableProximitySensor();
- mView.setClipPosition(clipPosition, duration);
- if (mPlayer.isPlaying()) {
- mPlayer.pause();
- }
- }
-
- private class PlaybackPositionListener implements SeekBar.OnSeekBarChangeListener {
- private boolean mShouldResumePlaybackAfterSeeking;
-
- @Override
- public void onStartTrackingTouch(SeekBar arg0) {
- if (mPlayer.isPlaying()) {
- mShouldResumePlaybackAfterSeeking = true;
- stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
- } else {
- mShouldResumePlaybackAfterSeeking = false;
- }
- }
-
- @Override
- public void onStopTrackingTouch(SeekBar arg0) {
- if (mPlayer.isPlaying()) {
- stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
- }
- if (mShouldResumePlaybackAfterSeeking) {
- resetPrepareStartPlaying(mView.getDesiredClipPosition());
- }
- }
-
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- mView.setClipPosition(seekBar.getProgress(), seekBar.getMax());
- }
- }
-
- private void changeRate(float rate, int stringResourceId) {
- ((SingleThreadedMediaPlayerProxy) mPlayer).setVariableSpeed(rate);
- mView.setRateDisplay(rate, stringResourceId);
- }
-
- private class SpeakerphoneListener implements View.OnClickListener {
- @Override
- public void onClick(View v) {
- boolean previousState = mView.isSpeakerPhoneOn();
- mView.setSpeakerPhoneOn(!previousState);
- if (mPlayer.isPlaying() && previousState) {
- // If we are currently playing and we are disabling the speaker phone, enable the
- // sensor.
- mView.enableProximitySensor();
- } else {
- // If we are not currently playing, disable the sensor.
- mView.disableProximitySensor();
- }
- }
- }
-
- private class StartStopButtonListener implements View.OnClickListener {
- @Override
- public void onClick(View arg0) {
- if (mPlayer.isPlaying()) {
- stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
- } else {
- resetPrepareStartPlaying(mView.getDesiredClipPosition());
- }
- }
- }
-
- /**
- * Controls the animation of the playback slider.
- */
- @ThreadSafe
- private final class PositionUpdater implements Runnable {
- private final ScheduledExecutorService mExecutorService;
- private final int mPeriodMillis;
- private final Object mLock = new Object();
- @GuardedBy("mLock") private ScheduledFuture<?> mScheduledFuture;
- private final Runnable mSetClipPostitionRunnable = new Runnable() {
- @Override
- public void run() {
- int currentPosition = 0;
- synchronized (mLock) {
- if (mScheduledFuture == null) {
- // This task has been canceled. Just stop now.
- return;
- }
- currentPosition = mPlayer.getCurrentPosition();
- }
- mView.setClipPosition(currentPosition, mDuration.get());
- }
- };
-
- public PositionUpdater(ScheduledExecutorService executorService, int periodMillis) {
- mExecutorService = executorService;
- mPeriodMillis = periodMillis;
- }
-
- @Override
- public void run() {
- mView.runOnUiThread(mSetClipPostitionRunnable);
- }
-
- public void startUpdating(int beginPosition, int endPosition) {
- synchronized (mLock) {
- if (mScheduledFuture != null) {
- mScheduledFuture.cancel(false);
- }
- mScheduledFuture = mExecutorService.scheduleAtFixedRate(this, 0, mPeriodMillis,
- TimeUnit.MILLISECONDS);
- }
- }
-
- public void stopUpdating() {
- synchronized (mLock) {
- if (mScheduledFuture != null) {
- mScheduledFuture.cancel(false);
- mScheduledFuture = null;
- }
- }
- }
- }
-
- public void onPause() {
- if (mPlayer.isPlaying()) {
- stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
- }
- if (mPrepareTask != null) {
- mPrepareTask.cancel(false);
- }
- if (mWakeLock.isHeld()) {
- mWakeLock.release();
- }
- }
-}
diff --git a/src/com/android/contacts/voicemail/VoicemailStatusHelper.java b/src/com/android/contacts/voicemail/VoicemailStatusHelper.java
deleted file mode 100644
index 6664b88..0000000
--- a/src/com/android/contacts/voicemail/VoicemailStatusHelper.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.voicemail;
-
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract.Status;
-
-import java.util.List;
-
-/**
- * Interface used by the call log UI to determine what user message, if any, related to voicemail
- * source status needs to be shown. The messages are returned in the order of importance.
- * <p>
- * The implementation of this interface interacts with the voicemail content provider to fetch
- * statuses of all the registered voicemail sources and determines if any status message needs to
- * be shown. The user of this interface must observe/listen to provider changes and invoke
- * this class to check if any message needs to be shown.
- */
-public interface VoicemailStatusHelper {
- public class StatusMessage {
- /** Package of the source on behalf of which this message has to be shown.*/
- public final String sourcePackage;
- /**
- * The string resource id of the status message that should be shown in the call log
- * page. Set to -1, if this message is not to be shown in call log.
- */
- public final int callLogMessageId;
- /**
- * The string resource id of the status message that should be shown in the call details
- * page. Set to -1, if this message is not to be shown in call details page.
- */
- public final int callDetailsMessageId;
- /** The string resource id of the action message that should be shown. */
- public final int actionMessageId;
- /** URI for the corrective action, where applicable. Null if no action URI is available. */
- public final Uri actionUri;
- public StatusMessage(String sourcePackage, int callLogMessageId, int callDetailsMessageId,
- int actionMessageId, Uri actionUri) {
- this.sourcePackage = sourcePackage;
- this.callLogMessageId = callLogMessageId;
- this.callDetailsMessageId = callDetailsMessageId;
- this.actionMessageId = actionMessageId;
- this.actionUri = actionUri;
- }
-
- /** Whether this message should be shown in the call log page. */
- public boolean showInCallLog() {
- return callLogMessageId != -1;
- }
-
- /** Whether this message should be shown in the call details page. */
- public boolean showInCallDetails() {
- return callDetailsMessageId != -1;
- }
- }
-
- /**
- * Returns a list of messages, in the order or priority that should be shown to the user. An
- * empty list is returned if no message needs to be shown.
- * @param cursor The cursor pointing to the query on {@link Status#CONTENT_URI}. The projection
- * to be used is defined by the implementation class of this interface.
- */
- public List<StatusMessage> getStatusMessages(Cursor cursor);
-
- /**
- * Returns the number of active voicemail sources installed.
- * <p>
- * The number of sources is counted by querying the voicemail status table.
- */
- public int getNumberActivityVoicemailSources(Cursor cursor);
-}
diff --git a/src/com/android/contacts/voicemail/VoicemailStatusHelperImpl.java b/src/com/android/contacts/voicemail/VoicemailStatusHelperImpl.java
deleted file mode 100644
index c7f9c8f..0000000
--- a/src/com/android/contacts/voicemail/VoicemailStatusHelperImpl.java
+++ /dev/null
@@ -1,272 +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.voicemail;
-
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_CAN_BE_CONFIGURED;
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_OK;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_OK;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK;
-
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract.Status;
-
-import com.android.contacts.R;
-import com.android.contacts.util.UriUtils;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/** Implementation of {@link VoicemailStatusHelper}. */
-public class VoicemailStatusHelperImpl implements VoicemailStatusHelper {
- private static final int SOURCE_PACKAGE_INDEX = 0;
- private static final int CONFIGURATION_STATE_INDEX = 1;
- private static final int DATA_CHANNEL_STATE_INDEX = 2;
- private static final int NOTIFICATION_CHANNEL_STATE_INDEX = 3;
- private static final int SETTINGS_URI_INDEX = 4;
- private static final int VOICEMAIL_ACCESS_URI_INDEX = 5;
- private static final int NUM_COLUMNS = 6;
- /** Projection on the voicemail_status table used by this class. */
- public static final String[] PROJECTION = new String[NUM_COLUMNS];
- static {
- PROJECTION[SOURCE_PACKAGE_INDEX] = Status.SOURCE_PACKAGE;
- PROJECTION[CONFIGURATION_STATE_INDEX] = Status.CONFIGURATION_STATE;
- PROJECTION[DATA_CHANNEL_STATE_INDEX] = Status.DATA_CHANNEL_STATE;
- PROJECTION[NOTIFICATION_CHANNEL_STATE_INDEX] = Status.NOTIFICATION_CHANNEL_STATE;
- PROJECTION[SETTINGS_URI_INDEX] = Status.SETTINGS_URI;
- PROJECTION[VOICEMAIL_ACCESS_URI_INDEX] = Status.VOICEMAIL_ACCESS_URI;
- }
-
- /** Possible user actions. */
- public static enum Action {
- NONE(-1),
- CALL_VOICEMAIL(R.string.voicemail_status_action_call_server),
- CONFIGURE_VOICEMAIL(R.string.voicemail_status_action_configure);
-
- private final int mMessageId;
- private Action(int messageId) {
- mMessageId = messageId;
- }
-
- public int getMessageId() {
- return mMessageId;
- }
- }
-
- /**
- * Overall state of the source status. Each state is associated with the corresponding display
- * string and the corrective action. The states are also assigned a relative priority which is
- * used to order the messages from different sources.
- */
- private static enum OverallState {
- // TODO: Add separate string for call details and call log pages for the states that needs
- // to be shown in both.
- /** Both notification and data channel are not working. */
- NO_CONNECTION(0, Action.CALL_VOICEMAIL, R.string.voicemail_status_voicemail_not_available,
- R.string.voicemail_status_audio_not_available),
- /** Notifications working, but data channel is not working. Audio cannot be downloaded. */
- NO_DATA(1, Action.CALL_VOICEMAIL, R.string.voicemail_status_voicemail_not_available,
- R.string.voicemail_status_audio_not_available),
- /** Messages are known to be waiting but data channel is not working. */
- MESSAGE_WAITING(2, Action.CALL_VOICEMAIL, R.string.voicemail_status_messages_waiting,
- R.string.voicemail_status_audio_not_available),
- /** Notification channel not working, but data channel is. */
- NO_NOTIFICATIONS(3, Action.CALL_VOICEMAIL,
- R.string.voicemail_status_voicemail_not_available),
- /** Invite user to set up voicemail. */
- INVITE_FOR_CONFIGURATION(4, Action.CONFIGURE_VOICEMAIL,
- R.string.voicemail_status_configure_voicemail),
- /**
- * No detailed notifications, but data channel is working.
- * This is normal mode of operation for certain sources. No action needed.
- */
- NO_DETAILED_NOTIFICATION(5, Action.NONE, -1),
- /** Visual voicemail not yet set up. No local action needed. */
- NOT_CONFIGURED(6, Action.NONE, -1),
- /** Everything is OK. */
- OK(7, Action.NONE, -1),
- /** If one or more state value set by the source is not valid. */
- INVALID(8, Action.NONE, -1);
-
- private final int mPriority;
- private final Action mAction;
- private final int mCallLogMessageId;
- private final int mCallDetailsMessageId;
-
- private OverallState(int priority, Action action, int callLogMessageId) {
- this(priority, action, callLogMessageId, -1);
- }
-
- private OverallState(int priority, Action action, int callLogMessageId,
- int callDetailsMessageId) {
- mPriority = priority;
- mAction = action;
- mCallLogMessageId = callLogMessageId;
- mCallDetailsMessageId = callDetailsMessageId;
- }
-
- public Action getAction() {
- return mAction;
- }
-
- public int getPriority() {
- return mPriority;
- }
-
- public int getCallLogMessageId() {
- return mCallLogMessageId;
- }
-
- public int getCallDetailsMessageId() {
- return mCallDetailsMessageId;
- }
- }
-
- /** A wrapper on {@link StatusMessage} which additionally stores the priority of the message. */
- private static class MessageStatusWithPriority {
- private final StatusMessage mMessage;
- private final int mPriority;
-
- public MessageStatusWithPriority(StatusMessage message, int priority) {
- mMessage = message;
- mPriority = priority;
- }
- }
-
- @Override
- public List<StatusMessage> getStatusMessages(Cursor cursor) {
- List<MessageStatusWithPriority> messages =
- new ArrayList<VoicemailStatusHelperImpl.MessageStatusWithPriority>();
- cursor.moveToPosition(-1);
- while(cursor.moveToNext()) {
- MessageStatusWithPriority message = getMessageForStatusEntry(cursor);
- if (message != null) {
- messages.add(message);
- }
- }
- // Finally reorder the messages by their priority.
- return reorderMessages(messages);
- }
-
- @Override
- public int getNumberActivityVoicemailSources(Cursor cursor) {
- int count = 0;
- cursor.moveToPosition(-1);
- while(cursor.moveToNext()) {
- if (isVoicemailSourceActive(cursor)) {
- ++count;
- }
- }
- return count;
- }
-
- /** Returns whether the source status in the cursor corresponds to an active source. */
- private boolean isVoicemailSourceActive(Cursor cursor) {
- return cursor.getString(SOURCE_PACKAGE_INDEX) != null
- && cursor.getInt(CONFIGURATION_STATE_INDEX) == Status.CONFIGURATION_STATE_OK;
- }
-
- private List<StatusMessage> reorderMessages(List<MessageStatusWithPriority> messageWrappers) {
- Collections.sort(messageWrappers, new Comparator<MessageStatusWithPriority>() {
- @Override
- public int compare(MessageStatusWithPriority msg1, MessageStatusWithPriority msg2) {
- return msg1.mPriority - msg2.mPriority;
- }
- });
- List<StatusMessage> reorderMessages = new ArrayList<VoicemailStatusHelper.StatusMessage>();
- // Copy the ordered message objects into the final list.
- for (MessageStatusWithPriority messageWrapper : messageWrappers) {
- reorderMessages.add(messageWrapper.mMessage);
- }
- return reorderMessages;
- }
-
- /**
- * Returns the message for the status entry pointed to by the cursor.
- */
- private MessageStatusWithPriority getMessageForStatusEntry(Cursor cursor) {
- final String sourcePackage = cursor.getString(SOURCE_PACKAGE_INDEX);
- if (sourcePackage == null) {
- return null;
- }
- final OverallState overallState = getOverallState(cursor.getInt(CONFIGURATION_STATE_INDEX),
- cursor.getInt(DATA_CHANNEL_STATE_INDEX),
- cursor.getInt(NOTIFICATION_CHANNEL_STATE_INDEX));
- final Action action = overallState.getAction();
-
- // No source package or no action, means no message shown.
- if (action == Action.NONE) {
- return null;
- }
-
- Uri actionUri = null;
- if (action == Action.CALL_VOICEMAIL) {
- actionUri = UriUtils.parseUriOrNull(cursor.getString(VOICEMAIL_ACCESS_URI_INDEX));
- // Even if actionUri is null, it is still be useful to show the notification.
- } else if (action == Action.CONFIGURE_VOICEMAIL) {
- actionUri = UriUtils.parseUriOrNull(cursor.getString(SETTINGS_URI_INDEX));
- // If there is no settings URI, there is no point in showing the notification.
- if (actionUri == null) {
- return null;
- }
- }
- return new MessageStatusWithPriority(
- new StatusMessage(sourcePackage, overallState.getCallLogMessageId(),
- overallState.getCallDetailsMessageId(), action.getMessageId(),
- actionUri),
- overallState.getPriority());
- }
-
- private OverallState getOverallState(int configurationState, int dataChannelState,
- int notificationChannelState) {
- if (configurationState == CONFIGURATION_STATE_OK) {
- // Voicemail is configured. Let's see how is the data channel.
- if (dataChannelState == DATA_CHANNEL_STATE_OK) {
- // Data channel is fine. What about notification channel?
- if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_OK) {
- return OverallState.OK;
- } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING) {
- return OverallState.NO_DETAILED_NOTIFICATION;
- } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_NO_CONNECTION) {
- return OverallState.NO_NOTIFICATIONS;
- }
- } else if (dataChannelState == DATA_CHANNEL_STATE_NO_CONNECTION) {
- // Data channel is not working. What about notification channel?
- if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_OK) {
- return OverallState.NO_DATA;
- } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING) {
- return OverallState.MESSAGE_WAITING;
- } else if (notificationChannelState == NOTIFICATION_CHANNEL_STATE_NO_CONNECTION) {
- return OverallState.NO_CONNECTION;
- }
- }
- } else if (configurationState == CONFIGURATION_STATE_CAN_BE_CONFIGURED) {
- // Voicemail not configured. data/notification channel states are irrelevant.
- return OverallState.INVITE_FOR_CONFIGURATION;
- } else if (configurationState == Status.CONFIGURATION_STATE_NOT_CONFIGURED) {
- // Voicemail not configured. data/notification channel states are irrelevant.
- return OverallState.NOT_CONFIGURED;
- }
- // Will reach here only if the source has set an invalid value.
- return OverallState.INVALID;
- }
-}
diff --git a/src/com/android/contacts/widget/AutoScrollListView.java b/src/com/android/contacts/widget/AutoScrollListView.java
deleted file mode 100644
index e9c1c42..0000000
--- a/src/com/android/contacts/widget/AutoScrollListView.java
+++ /dev/null
@@ -1,117 +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.content.Context;
-import android.util.AttributeSet;
-import android.widget.ListView;
-
-/**
- * A ListView that can be asked to scroll (smoothly or otherwise) to a specific
- * position. This class takes advantage of similar functionality that exists
- * in {@link ListView} and enhances it.
- */
-public class AutoScrollListView extends ListView {
-
- /**
- * Position the element at about 1/3 of the list height
- */
- private static final float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f;
-
- private int mRequestedScrollPosition = -1;
- private boolean mSmoothScrollRequested;
-
- public AutoScrollListView(Context context) {
- super(context);
- }
-
- public AutoScrollListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public AutoScrollListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- /**
- * Brings the specified position to view by optionally performing a jump-scroll maneuver:
- * first it jumps to some position near the one requested and then does a smooth
- * scroll to the requested position. This creates an impression of full smooth
- * scrolling without actually traversing the entire list. If smooth scrolling is
- * not requested, instantly positions the requested item at a preferred offset.
- */
- public void requestPositionToScreen(int position, boolean smoothScroll) {
- mRequestedScrollPosition = position;
- mSmoothScrollRequested = smoothScroll;
- requestLayout();
- }
-
- @Override
- protected void layoutChildren() {
- super.layoutChildren();
- if (mRequestedScrollPosition == -1) {
- return;
- }
-
- final int position = mRequestedScrollPosition;
- mRequestedScrollPosition = -1;
-
- int firstPosition = getFirstVisiblePosition() + 1;
- int lastPosition = getLastVisiblePosition();
- if (position >= firstPosition && position <= lastPosition) {
- return; // Already on screen
- }
-
- final int offset = (int) (getHeight() * PREFERRED_SELECTION_OFFSET_FROM_TOP);
- if (!mSmoothScrollRequested) {
- setSelectionFromTop(position, offset);
-
- // Since we have changed the scrolling position, we need to redo child layout
- // Calling "requestLayout" in the middle of a layout pass has no effect,
- // so we call layoutChildren explicitly
- super.layoutChildren();
-
- } else {
- // We will first position the list a couple of screens before or after
- // the new selection and then scroll smoothly to it.
- int twoScreens = (lastPosition - firstPosition) * 2;
- int preliminaryPosition;
- if (position < firstPosition) {
- preliminaryPosition = position + twoScreens;
- if (preliminaryPosition >= getCount()) {
- preliminaryPosition = getCount() - 1;
- }
- if (preliminaryPosition < firstPosition) {
- setSelection(preliminaryPosition);
- super.layoutChildren();
- }
- } else {
- preliminaryPosition = position - twoScreens;
- if (preliminaryPosition < 0) {
- preliminaryPosition = 0;
- }
- if (preliminaryPosition > lastPosition) {
- setSelection(preliminaryPosition);
- super.layoutChildren();
- }
- }
-
-
- smoothScrollToPositionFromTop(position, offset);
- }
- }
-}
diff --git a/src/com/android/contacts/widget/CompositeListAdapter.java b/src/com/android/contacts/widget/CompositeListAdapter.java
index 34c8fa0..d83246a 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.test.NeededForTesting;
+import com.android.contacts.common.test.NeededForTesting;
import com.google.common.annotations.VisibleForTesting;
/**
diff --git a/src/com/android/contacts/widget/IndexerListAdapter.java b/src/com/android/contacts/widget/IndexerListAdapter.java
deleted file mode 100644
index a5aeb0f..0000000
--- a/src/com/android/contacts/widget/IndexerListAdapter.java
+++ /dev/null
@@ -1,235 +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.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListView;
-import android.widget.SectionIndexer;
-
-/**
- * A list adapter that supports section indexer and a pinned header.
- */
-public abstract class IndexerListAdapter extends PinnedHeaderListAdapter implements SectionIndexer {
-
- protected Context mContext;
- private SectionIndexer mIndexer;
- private int mIndexedPartition = 0;
- private boolean mSectionHeaderDisplayEnabled;
- private View mHeader;
-
- /**
- * An item view is displayed differently depending on whether it is placed
- * at the beginning, middle or end of a section. It also needs to know the
- * section header when it is at the beginning of a section. This object
- * captures all this configuration.
- */
- public static final class Placement {
- private int position = ListView.INVALID_POSITION;
- public boolean firstInSection;
- public boolean lastInSection;
- public String sectionHeader;
-
- public void invalidate() {
- position = ListView.INVALID_POSITION;
- }
- }
-
- private Placement mPlacementCache = new Placement();
-
- /**
- * Constructor.
- */
- public IndexerListAdapter(Context context) {
- super(context);
- mContext = context;
- }
-
- /**
- * Creates a section header view that will be pinned at the top of the list
- * as the user scrolls.
- */
- protected abstract View createPinnedSectionHeaderView(Context context, ViewGroup parent);
-
- /**
- * Sets the title in the pinned header as the user scrolls.
- */
- protected abstract void setPinnedSectionTitle(View pinnedHeaderView, String title);
-
- /**
- * Sets the contacts count in the pinned header.
- */
- protected abstract void setPinnedHeaderContactsCount(View header);
-
- /**
- * clears the contacts count in the pinned header and makes the view invisible.
- */
- protected abstract void clearPinnedHeaderContactsCount(View header);
-
- public boolean isSectionHeaderDisplayEnabled() {
- return mSectionHeaderDisplayEnabled;
- }
-
- public void setSectionHeaderDisplayEnabled(boolean flag) {
- this.mSectionHeaderDisplayEnabled = flag;
- }
-
- public int getIndexedPartition() {
- return mIndexedPartition;
- }
-
- public void setIndexedPartition(int partition) {
- this.mIndexedPartition = partition;
- }
-
- public SectionIndexer getIndexer() {
- return mIndexer;
- }
-
- public void setIndexer(SectionIndexer indexer) {
- mIndexer = indexer;
- mPlacementCache.invalidate();
- }
-
- public Object[] getSections() {
- if (mIndexer == null) {
- return new String[] { " " };
- } else {
- return mIndexer.getSections();
- }
- }
-
- /**
- * @return relative position of the section in the indexed partition
- */
- public int getPositionForSection(int sectionIndex) {
- if (mIndexer == null) {
- return -1;
- }
-
- return mIndexer.getPositionForSection(sectionIndex);
- }
-
- /**
- * @param position relative position in the indexed partition
- */
- public int getSectionForPosition(int position) {
- if (mIndexer == null) {
- return -1;
- }
-
- return mIndexer.getSectionForPosition(position);
- }
-
- @Override
- public int getPinnedHeaderCount() {
- if (isSectionHeaderDisplayEnabled()) {
- return super.getPinnedHeaderCount() + 1;
- } else {
- return super.getPinnedHeaderCount();
- }
- }
-
- @Override
- public View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent) {
- if (isSectionHeaderDisplayEnabled() && viewIndex == getPinnedHeaderCount() - 1) {
- if (mHeader == null) {
- mHeader = createPinnedSectionHeaderView(mContext, parent);
- }
- return mHeader;
- } else {
- return super.getPinnedHeaderView(viewIndex, convertView, parent);
- }
- }
-
- @Override
- public void configurePinnedHeaders(PinnedHeaderListView listView) {
- super.configurePinnedHeaders(listView);
-
- if (!isSectionHeaderDisplayEnabled()) {
- return;
- }
-
- int index = getPinnedHeaderCount() - 1;
- if (mIndexer == null || getCount() == 0) {
- listView.setHeaderInvisible(index, false);
- } else {
- int listPosition = listView.getPositionAt(listView.getTotalTopPinnedHeaderHeight());
- int position = listPosition - listView.getHeaderViewsCount();
-
- int section = -1;
- int partition = getPartitionForPosition(position);
- if (partition == mIndexedPartition) {
- int offset = getOffsetInPartition(position);
- if (offset != -1) {
- section = getSectionForPosition(offset);
- }
- }
-
- if (section == -1) {
- listView.setHeaderInvisible(index, false);
- } else {
- setPinnedSectionTitle(mHeader, (String)mIndexer.getSections()[section]);
- if (section == 0) {
- setPinnedHeaderContactsCount(mHeader);
- } else {
- clearPinnedHeaderContactsCount(mHeader);
- }
- // Compute the item position where the current partition begins
- int partitionStart = getPositionForPartition(mIndexedPartition);
- if (hasHeader(mIndexedPartition)) {
- partitionStart++;
- }
-
- // Compute the item position where the next section begins
- int nextSectionPosition = partitionStart + getPositionForSection(section + 1);
- boolean isLastInSection = position == nextSectionPosition - 1;
- listView.setFadingHeader(index, listPosition, isLastInSection);
- }
- }
- }
-
- /**
- * Computes the item's placement within its section and populates the {@code placement}
- * object accordingly. Please note that the returned object is volatile and should be
- * copied if the result needs to be used later.
- */
- public Placement getItemPlacementInSection(int position) {
- if (mPlacementCache.position == position) {
- return mPlacementCache;
- }
-
- mPlacementCache.position = position;
- if (isSectionHeaderDisplayEnabled()) {
- int section = getSectionForPosition(position);
- if (section != -1 && getPositionForSection(section) == position) {
- mPlacementCache.firstInSection = true;
- mPlacementCache.sectionHeader = (String)getSections()[section];
- } else {
- mPlacementCache.firstInSection = false;
- mPlacementCache.sectionHeader = null;
- }
-
- mPlacementCache.lastInSection = (getPositionForSection(section + 1) - 1 == position);
- } else {
- mPlacementCache.firstInSection = false;
- mPlacementCache.lastInSection = false;
- mPlacementCache.sectionHeader = null;
- }
- return mPlacementCache;
- }
-}
diff --git a/src/com/android/contacts/widget/InterpolatingLayout.java b/src/com/android/contacts/widget/InterpolatingLayout.java
index fc3177c..9ad4e1f 100644
--- a/src/com/android/contacts/widget/InterpolatingLayout.java
+++ b/src/com/android/contacts/widget/InterpolatingLayout.java
@@ -290,7 +290,7 @@
LayoutParams params = (LayoutParams) child.getLayoutParams();
int gravity = params.gravity;
if (gravity == -1) {
- gravity = Gravity.LEFT | Gravity.TOP;
+ gravity = Gravity.START | Gravity.TOP;
}
if (params.narrowPaddingLeft != -1 || params.narrowPaddingRight != -1) {
diff --git a/src/com/android/contacts/widget/LayoutSuppressingImageView.java b/src/com/android/contacts/widget/LayoutSuppressingImageView.java
deleted file mode 100644
index d80aeea..0000000
--- a/src/com/android/contacts/widget/LayoutSuppressingImageView.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.widget;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-
-/**
- * Custom {@link ImageView} that improves layouting performance.
- *
- * This improves the performance by not passing requestLayout() to its parent, taking advantage
- * of knowing that image size won't change once set.
- */
-public class LayoutSuppressingImageView extends ImageView {
-
- public LayoutSuppressingImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public void requestLayout() {
- forceLayout();
- }
-}
diff --git a/src/com/android/contacts/widget/LayoutSuppressingQuickContactBadge.java b/src/com/android/contacts/widget/LayoutSuppressingQuickContactBadge.java
deleted file mode 100644
index 3413e53..0000000
--- a/src/com/android/contacts/widget/LayoutSuppressingQuickContactBadge.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.widget;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.QuickContactBadge;
-
-/**
- * Custom {@link QuickContactBadge} that improves layouting performance.
- *
- * This improves the performance by not passing requestLayout() to its parent, taking advantage
- * of knowing that image size won't change once set.
- */
-public class LayoutSuppressingQuickContactBadge extends QuickContactBadge {
-
- public LayoutSuppressingQuickContactBadge(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public void requestLayout() {
- forceLayout();
- }
-}
diff --git a/src/com/android/contacts/widget/PinnedHeaderListAdapter.java b/src/com/android/contacts/widget/PinnedHeaderListAdapter.java
deleted file mode 100644
index c01e331..0000000
--- a/src/com/android/contacts/widget/PinnedHeaderListAdapter.java
+++ /dev/null
@@ -1,171 +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.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.common.widget.CompositeCursorAdapter;
-
-/**
- * A subclass of {@link CompositeCursorAdapter} that manages pinned partition headers.
- */
-public abstract class PinnedHeaderListAdapter extends CompositeCursorAdapter
- implements PinnedHeaderListView.PinnedHeaderAdapter {
-
- public static final int PARTITION_HEADER_TYPE = 0;
-
- private boolean mPinnedPartitionHeadersEnabled;
- private boolean mHeaderVisibility[];
-
- public PinnedHeaderListAdapter(Context context) {
- super(context);
- }
-
- public PinnedHeaderListAdapter(Context context, int initialCapacity) {
- super(context, initialCapacity);
- }
-
- public boolean getPinnedPartitionHeadersEnabled() {
- return mPinnedPartitionHeadersEnabled;
- }
-
- public void setPinnedPartitionHeadersEnabled(boolean flag) {
- this.mPinnedPartitionHeadersEnabled = flag;
- }
-
- @Override
- public int getPinnedHeaderCount() {
- if (mPinnedPartitionHeadersEnabled) {
- return getPartitionCount();
- } else {
- return 0;
- }
- }
-
- protected boolean isPinnedPartitionHeaderVisible(int partition) {
- return mPinnedPartitionHeadersEnabled && hasHeader(partition)
- && !isPartitionEmpty(partition);
- }
-
- /**
- * The default implementation creates the same type of view as a normal
- * partition header.
- */
- @Override
- public View getPinnedHeaderView(int partition, View convertView, ViewGroup parent) {
- if (hasHeader(partition)) {
- View view = null;
- if (convertView != null) {
- Integer headerType = (Integer)convertView.getTag();
- if (headerType != null && headerType == PARTITION_HEADER_TYPE) {
- view = convertView;
- }
- }
- if (view == null) {
- view = newHeaderView(getContext(), partition, null, parent);
- view.setTag(PARTITION_HEADER_TYPE);
- view.setFocusable(false);
- view.setEnabled(false);
- }
- bindHeaderView(view, partition, getCursor(partition));
- return view;
- } else {
- return null;
- }
- }
-
- @Override
- public void configurePinnedHeaders(PinnedHeaderListView listView) {
- if (!mPinnedPartitionHeadersEnabled) {
- return;
- }
-
- int size = getPartitionCount();
-
- // Cache visibility bits, because we will need them several times later on
- if (mHeaderVisibility == null || mHeaderVisibility.length != size) {
- mHeaderVisibility = new boolean[size];
- }
- for (int i = 0; i < size; i++) {
- boolean visible = isPinnedPartitionHeaderVisible(i);
- mHeaderVisibility[i] = visible;
- if (!visible) {
- listView.setHeaderInvisible(i, true);
- }
- }
-
- int headerViewsCount = listView.getHeaderViewsCount();
-
- // Starting at the top, find and pin headers for partitions preceding the visible one(s)
- int maxTopHeader = -1;
- int topHeaderHeight = 0;
- for (int i = 0; i < size; i++) {
- if (mHeaderVisibility[i]) {
- int position = listView.getPositionAt(topHeaderHeight) - headerViewsCount;
- int partition = getPartitionForPosition(position);
- if (i > partition) {
- break;
- }
-
- listView.setHeaderPinnedAtTop(i, topHeaderHeight, false);
- topHeaderHeight += listView.getPinnedHeaderHeight(i);
- maxTopHeader = i;
- }
- }
-
- // Starting at the bottom, find and pin headers for partitions following the visible one(s)
- int maxBottomHeader = size;
- int bottomHeaderHeight = 0;
- int listHeight = listView.getHeight();
- for (int i = size; --i > maxTopHeader;) {
- if (mHeaderVisibility[i]) {
- int position = listView.getPositionAt(listHeight - bottomHeaderHeight)
- - headerViewsCount;
- if (position < 0) {
- break;
- }
-
- int partition = getPartitionForPosition(position - 1);
- if (partition == -1 || i <= partition) {
- break;
- }
-
- int height = listView.getPinnedHeaderHeight(i);
- bottomHeaderHeight += height;
- // Animate the header only if the partition is completely invisible below
- // the bottom of the view
- int firstPositionForPartition = getPositionForPartition(i);
- boolean animate = position < firstPositionForPartition;
- listView.setHeaderPinnedAtBottom(i, listHeight - bottomHeaderHeight, animate);
- maxBottomHeader = i;
- }
- }
-
- // Headers in between the top-pinned and bottom-pinned should be hidden
- for (int i = maxTopHeader + 1; i < maxBottomHeader; i++) {
- if (mHeaderVisibility[i]) {
- listView.setHeaderInvisible(i, isPartitionEmpty(i));
- }
- }
- }
-
- @Override
- public int getScrollPositionForHeader(int viewIndex) {
- return getPositionForPartition(viewIndex);
- }
-}
diff --git a/src/com/android/contacts/widget/PinnedHeaderListDemoActivity.java b/src/com/android/contacts/widget/PinnedHeaderListDemoActivity.java
index 4276791..027cc9d 100644
--- a/src/com/android/contacts/widget/PinnedHeaderListDemoActivity.java
+++ b/src/com/android/contacts/widget/PinnedHeaderListDemoActivity.java
@@ -28,9 +28,10 @@
import android.widget.TextView;
import com.android.contacts.R;
+import com.android.contacts.common.list.PinnedHeaderListAdapter;
/**
- * An activity that demonstrates various use cases for the {@link PinnedHeaderListView}.
+ * An activity that demonstrates various use cases for the {@link com.android.contacts.common.list.PinnedHeaderListView}.
* If we decide to move PinnedHeaderListView to the framework, this class could go
* to API demos.
*/
diff --git a/src/com/android/contacts/widget/PinnedHeaderListView.java b/src/com/android/contacts/widget/PinnedHeaderListView.java
deleted file mode 100644
index 1503879..0000000
--- a/src/com/android/contacts/widget/PinnedHeaderListView.java
+++ /dev/null
@@ -1,522 +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.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ListAdapter;
-
-/**
- * A ListView that maintains a header pinned at the top of the list. The
- * pinned header can be pushed up and dissolved as needed.
- */
-public class PinnedHeaderListView extends AutoScrollListView
- implements OnScrollListener, OnItemSelectedListener {
-
- /**
- * Adapter interface. The list adapter must implement this interface.
- */
- public interface PinnedHeaderAdapter {
-
- /**
- * Returns the overall number of pinned headers, visible or not.
- */
- int getPinnedHeaderCount();
-
- /**
- * Creates or updates the pinned header view.
- */
- View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent);
-
- /**
- * Configures the pinned headers to match the visible list items. The
- * adapter should call {@link PinnedHeaderListView#setHeaderPinnedAtTop},
- * {@link PinnedHeaderListView#setHeaderPinnedAtBottom},
- * {@link PinnedHeaderListView#setFadingHeader} or
- * {@link PinnedHeaderListView#setHeaderInvisible}, for each header that
- * needs to change its position or visibility.
- */
- void configurePinnedHeaders(PinnedHeaderListView listView);
-
- /**
- * Returns the list position to scroll to if the pinned header is touched.
- * Return -1 if the list does not need to be scrolled.
- */
- int getScrollPositionForHeader(int viewIndex);
- }
-
- private static final int MAX_ALPHA = 255;
- private static final int TOP = 0;
- private static final int BOTTOM = 1;
- private static final int FADING = 2;
-
- private static final int DEFAULT_ANIMATION_DURATION = 20;
-
- private static final class PinnedHeader {
- View view;
- boolean visible;
- int y;
- int height;
- int alpha;
- int state;
-
- boolean animating;
- boolean targetVisible;
- int sourceY;
- int targetY;
- long targetTime;
- }
-
- private PinnedHeaderAdapter mAdapter;
- private int mSize;
- private PinnedHeader[] mHeaders;
- private RectF mBounds = new RectF();
- private Rect mClipRect = new Rect();
- private OnScrollListener mOnScrollListener;
- private OnItemSelectedListener mOnItemSelectedListener;
- private int mScrollState;
-
- private int mAnimationDuration = DEFAULT_ANIMATION_DURATION;
- private boolean mAnimating;
- private long mAnimationTargetTime;
- private int mHeaderPaddingLeft;
- private int mHeaderWidth;
-
- public PinnedHeaderListView(Context context) {
- this(context, null, com.android.internal.R.attr.listViewStyle);
- }
-
- public PinnedHeaderListView(Context context, AttributeSet attrs) {
- this(context, attrs, com.android.internal.R.attr.listViewStyle);
- }
-
- public PinnedHeaderListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- super.setOnScrollListener(this);
- super.setOnItemSelectedListener(this);
- }
-
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
- super.onLayout(changed, l, t, r, b);
- mHeaderPaddingLeft = getPaddingLeft();
- mHeaderWidth = r - l - mHeaderPaddingLeft - getPaddingRight();
- }
-
- public void setPinnedHeaderAnimationDuration(int duration) {
- mAnimationDuration = duration;
- }
-
- @Override
- public void setAdapter(ListAdapter adapter) {
- mAdapter = (PinnedHeaderAdapter)adapter;
- super.setAdapter(adapter);
- }
-
- @Override
- public void setOnScrollListener(OnScrollListener onScrollListener) {
- mOnScrollListener = onScrollListener;
- super.setOnScrollListener(this);
- }
-
- @Override
- public void setOnItemSelectedListener(OnItemSelectedListener listener) {
- mOnItemSelectedListener = listener;
- super.setOnItemSelectedListener(this);
- }
-
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
- int totalItemCount) {
- if (mAdapter != null) {
- int count = mAdapter.getPinnedHeaderCount();
- if (count != mSize) {
- mSize = count;
- if (mHeaders == null) {
- mHeaders = new PinnedHeader[mSize];
- } else if (mHeaders.length < mSize) {
- PinnedHeader[] headers = mHeaders;
- mHeaders = new PinnedHeader[mSize];
- System.arraycopy(headers, 0, mHeaders, 0, headers.length);
- }
- }
-
- for (int i = 0; i < mSize; i++) {
- if (mHeaders[i] == null) {
- mHeaders[i] = new PinnedHeader();
- }
- mHeaders[i].view = mAdapter.getPinnedHeaderView(i, mHeaders[i].view, this);
- }
-
- mAnimationTargetTime = System.currentTimeMillis() + mAnimationDuration;
- mAdapter.configurePinnedHeaders(this);
- invalidateIfAnimating();
-
- }
- if (mOnScrollListener != null) {
- mOnScrollListener.onScroll(this, firstVisibleItem, visibleItemCount, totalItemCount);
- }
- }
-
- @Override
- protected float getTopFadingEdgeStrength() {
- // Disable vertical fading at the top when the pinned header is present
- return mSize > 0 ? 0 : super.getTopFadingEdgeStrength();
- }
-
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- mScrollState = scrollState;
- if (mOnScrollListener != null) {
- mOnScrollListener.onScrollStateChanged(this, scrollState);
- }
- }
-
- /**
- * Ensures that the selected item is positioned below the top-pinned headers
- * and above the bottom-pinned ones.
- */
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- int height = getHeight();
-
- int windowTop = 0;
- int windowBottom = height;
-
- for (int i = 0; i < mSize; i++) {
- PinnedHeader header = mHeaders[i];
- if (header.visible) {
- if (header.state == TOP) {
- windowTop = header.y + header.height;
- } else if (header.state == BOTTOM) {
- windowBottom = header.y;
- break;
- }
- }
- }
-
- View selectedView = getSelectedView();
- if (selectedView != null) {
- if (selectedView.getTop() < windowTop) {
- setSelectionFromTop(position, windowTop);
- } else if (selectedView.getBottom() > windowBottom) {
- setSelectionFromTop(position, windowBottom - selectedView.getHeight());
- }
- }
-
- if (mOnItemSelectedListener != null) {
- mOnItemSelectedListener.onItemSelected(parent, view, position, id);
- }
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- if (mOnItemSelectedListener != null) {
- mOnItemSelectedListener.onNothingSelected(parent);
- }
- }
-
- public int getPinnedHeaderHeight(int viewIndex) {
- ensurePinnedHeaderLayout(viewIndex);
- return mHeaders[viewIndex].view.getHeight();
- }
-
- /**
- * Set header to be pinned at the top.
- *
- * @param viewIndex index of the header view
- * @param y is position of the header in pixels.
- * @param animate true if the transition to the new coordinate should be animated
- */
- public void setHeaderPinnedAtTop(int viewIndex, int y, boolean animate) {
- ensurePinnedHeaderLayout(viewIndex);
- PinnedHeader header = mHeaders[viewIndex];
- header.visible = true;
- header.y = y;
- header.state = TOP;
-
- // TODO perhaps we should animate at the top as well
- header.animating = false;
- }
-
- /**
- * Set header to be pinned at the bottom.
- *
- * @param viewIndex index of the header view
- * @param y is position of the header in pixels.
- * @param animate true if the transition to the new coordinate should be animated
- */
- public void setHeaderPinnedAtBottom(int viewIndex, int y, boolean animate) {
- ensurePinnedHeaderLayout(viewIndex);
- PinnedHeader header = mHeaders[viewIndex];
- header.state = BOTTOM;
- if (header.animating) {
- header.targetTime = mAnimationTargetTime;
- header.sourceY = header.y;
- header.targetY = y;
- } else if (animate && (header.y != y || !header.visible)) {
- if (header.visible) {
- header.sourceY = header.y;
- } else {
- header.visible = true;
- header.sourceY = y + header.height;
- }
- header.animating = true;
- header.targetVisible = true;
- header.targetTime = mAnimationTargetTime;
- header.targetY = y;
- } else {
- header.visible = true;
- header.y = y;
- }
- }
-
- /**
- * Set header to be pinned at the top of the first visible item.
- *
- * @param viewIndex index of the header view
- * @param position is position of the header in pixels.
- */
- public void setFadingHeader(int viewIndex, int position, boolean fade) {
- ensurePinnedHeaderLayout(viewIndex);
-
- View child = getChildAt(position - getFirstVisiblePosition());
- if (child == null) return;
-
- PinnedHeader header = mHeaders[viewIndex];
- header.visible = true;
- header.state = FADING;
- header.alpha = MAX_ALPHA;
- header.animating = false;
-
- int top = getTotalTopPinnedHeaderHeight();
- header.y = top;
- if (fade) {
- int bottom = child.getBottom() - top;
- int headerHeight = header.height;
- if (bottom < headerHeight) {
- int portion = bottom - headerHeight;
- header.alpha = MAX_ALPHA * (headerHeight + portion) / headerHeight;
- header.y = top + portion;
- }
- }
- }
-
- /**
- * Makes header invisible.
- *
- * @param viewIndex index of the header view
- * @param animate true if the transition to the new coordinate should be animated
- */
- public void setHeaderInvisible(int viewIndex, boolean animate) {
- PinnedHeader header = mHeaders[viewIndex];
- if (header.visible && (animate || header.animating) && header.state == BOTTOM) {
- header.sourceY = header.y;
- if (!header.animating) {
- header.visible = true;
- header.targetY = getBottom() + header.height;
- }
- header.animating = true;
- header.targetTime = mAnimationTargetTime;
- header.targetVisible = false;
- } else {
- header.visible = false;
- }
- }
-
- private void ensurePinnedHeaderLayout(int viewIndex) {
- View view = mHeaders[viewIndex].view;
- if (view.isLayoutRequested()) {
- int widthSpec = MeasureSpec.makeMeasureSpec(mHeaderWidth, MeasureSpec.EXACTLY);
- int heightSpec;
- ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
- if (layoutParams != null && layoutParams.height > 0) {
- heightSpec = MeasureSpec.makeMeasureSpec(layoutParams.height, MeasureSpec.EXACTLY);
- } else {
- heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
- }
- view.measure(widthSpec, heightSpec);
- int height = view.getMeasuredHeight();
- mHeaders[viewIndex].height = height;
- view.layout(0, 0, mHeaderWidth, height);
- }
- }
-
- /**
- * Returns the sum of heights of headers pinned to the top.
- */
- public int getTotalTopPinnedHeaderHeight() {
- for (int i = mSize; --i >= 0;) {
- PinnedHeader header = mHeaders[i];
- if (header.visible && header.state == TOP) {
- return header.y + header.height;
- }
- }
- return 0;
- }
-
- /**
- * Returns the list item position at the specified y coordinate.
- */
- public int getPositionAt(int y) {
- do {
- int position = pointToPosition(getPaddingLeft() + 1, y);
- if (position != -1) {
- return position;
- }
- // If position == -1, we must have hit a separator. Let's examine
- // a nearby pixel
- y--;
- } while (y > 0);
- return 0;
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- if (mScrollState == SCROLL_STATE_IDLE) {
- final int y = (int)ev.getY();
- for (int i = mSize; --i >= 0;) {
- PinnedHeader header = mHeaders[i];
- if (header.visible && header.y <= y && header.y + header.height > y) {
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- return smoothScrollToPartition(i);
- } else {
- return true;
- }
- }
- }
- }
-
- return super.onInterceptTouchEvent(ev);
- }
-
- private boolean smoothScrollToPartition(int partition) {
- final int position = mAdapter.getScrollPositionForHeader(partition);
- if (position == -1) {
- return false;
- }
-
- int offset = 0;
- for (int i = 0; i < partition; i++) {
- PinnedHeader header = mHeaders[i];
- if (header.visible) {
- offset += header.height;
- }
- }
-
- smoothScrollToPositionFromTop(position + getHeaderViewsCount(), offset);
- return true;
- }
-
- private void invalidateIfAnimating() {
- mAnimating = false;
- for (int i = 0; i < mSize; i++) {
- if (mHeaders[i].animating) {
- mAnimating = true;
- invalidate();
- return;
- }
- }
- }
-
- @Override
- protected void dispatchDraw(Canvas canvas) {
- long currentTime = mAnimating ? System.currentTimeMillis() : 0;
-
- int top = 0;
- int bottom = getBottom();
- boolean hasVisibleHeaders = false;
- for (int i = 0; i < mSize; i++) {
- PinnedHeader header = mHeaders[i];
- if (header.visible) {
- hasVisibleHeaders = true;
- if (header.state == BOTTOM && header.y < bottom) {
- bottom = header.y;
- } else if (header.state == TOP || header.state == FADING) {
- int newTop = header.y + header.height;
- if (newTop > top) {
- top = newTop;
- }
- }
- }
- }
-
- if (hasVisibleHeaders) {
- canvas.save();
- mClipRect.set(0, top, getWidth(), bottom);
- canvas.clipRect(mClipRect);
- }
-
- super.dispatchDraw(canvas);
-
- if (hasVisibleHeaders) {
- canvas.restore();
-
- // First draw top headers, then the bottom ones to handle the Z axis correctly
- for (int i = mSize; --i >= 0;) {
- PinnedHeader header = mHeaders[i];
- if (header.visible && (header.state == TOP || header.state == FADING)) {
- drawHeader(canvas, header, currentTime);
- }
- }
-
- for (int i = 0; i < mSize; i++) {
- PinnedHeader header = mHeaders[i];
- if (header.visible && header.state == BOTTOM) {
- drawHeader(canvas, header, currentTime);
- }
- }
- }
-
- invalidateIfAnimating();
- }
-
- private void drawHeader(Canvas canvas, PinnedHeader header, long currentTime) {
- if (header.animating) {
- int timeLeft = (int)(header.targetTime - currentTime);
- if (timeLeft <= 0) {
- header.y = header.targetY;
- header.visible = header.targetVisible;
- header.animating = false;
- } else {
- header.y = header.targetY + (header.sourceY - header.targetY) * timeLeft
- / mAnimationDuration;
- }
- }
- if (header.visible) {
- View view = header.view;
- int saveCount = canvas.save();
- canvas.translate(mHeaderPaddingLeft, header.y);
- if (header.state == FADING) {
- mBounds.set(0, 0, mHeaderWidth, view.getHeight());
- canvas.saveLayerAlpha(mBounds, header.alpha, Canvas.ALL_SAVE_FLAG);
- }
- view.draw(canvas);
- canvas.restoreToCount(saveCount);
- }
- }
-}
diff --git a/src/com/android/contacts/widget/ProportionalLayout.java b/src/com/android/contacts/widget/ProportionalLayout.java
deleted file mode 100644
index d069eb7..0000000
--- a/src/com/android/contacts/widget/ProportionalLayout.java
+++ /dev/null
@@ -1,146 +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.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.contacts.R;
-
-/**
- * Layout that calculates its height based on its width, or vice versa (depending on the set
- * {@link #setDirection(Direction)}. The factor is specified in {@link #setRatio(float)}.
- * <p>For {@link Direction#heightToWidth}: width := height * factor</p>
- * <p>For {@link Direction#widthToHeight}: height := width * factor</p>
- * <p>Only one child is allowed; if more are required, another ViewGroup can be used as the direct
- * child of this layout.</p>
- */
-public class ProportionalLayout extends ViewGroup {
- /** Specifies whether the width should be calculated based on the height or vice-versa */
- public enum Direction {
- widthToHeight("widthToHeight"),
- heightToWidth("heightToWidth");
-
- public final String XmlName;
-
- private Direction(String xmlName) {
- XmlName = xmlName;
- }
-
- /**
- * Parses the given direction string and returns the Direction instance. This
- * should be used when inflating from xml
- */
- public static Direction parse(String value) {
- if (widthToHeight.XmlName.equals(value)) {
- return Direction.widthToHeight;
- } else if (heightToWidth.XmlName.equals(value)) {
- return Direction.heightToWidth;
- } else {
- throw new IllegalStateException("direction must be either " +
- widthToHeight.XmlName + " or " + heightToWidth.XmlName);
- }
- }
- }
-
- private Direction mDirection;
- private float mRatio;
-
- public ProportionalLayout(Context context) {
- super(context);
- }
-
- public ProportionalLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- initFromAttributes(context, attrs);
- }
-
- public ProportionalLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- initFromAttributes(context, attrs);
- }
-
- private void initFromAttributes(Context context, AttributeSet attrs) {
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ProportionalLayout);
-
- mDirection = Direction.parse(a.getString(R.styleable.ProportionalLayout_direction));
- mRatio = a.getFloat(R.styleable.ProportionalLayout_ratio, 1.0f);
-
- a.recycle();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- if (getChildCount() != 1) {
- throw new IllegalStateException("ProportionalLayout requires exactly one child");
- }
-
- final View child = getChildAt(0);
-
- // Do a first pass to get the optimal size
- measureChild(child, widthMeasureSpec, heightMeasureSpec);
- final int childWidth = child.getMeasuredWidth();
- final int childHeight = child.getMeasuredHeight();
-
- final int width;
- final int height;
- if (mDirection == Direction.heightToWidth) {
- width = Math.round(childHeight * mRatio);
- height = childHeight;
- } else {
- width = childWidth;
- height = Math.round(childWidth * mRatio);
- }
-
- // Do a second pass so that all children are informed of the new size
- measureChild(child,
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
-
- setMeasuredDimension(
- resolveSize(width, widthMeasureSpec), resolveSize(height, heightMeasureSpec));
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- if (getChildCount() != 1) {
- throw new IllegalStateException("ProportionalLayout requires exactly one child");
- }
-
- final View child = getChildAt(0);
- child.layout(0, 0, right-left, bottom-top);
- }
-
- public Direction getDirection() {
- return mDirection;
- }
-
- public void setDirection(Direction direction) {
- mDirection = direction;
- }
-
- public float getRatio() {
- return mRatio;
- }
-
- public void setRatio(float ratio) {
- mRatio = ratio;
- }
-}
diff --git a/src/com/android/contacts/widget/TextHighlightingAnimation.java b/src/com/android/contacts/widget/TextHighlightingAnimation.java
index 2924e4e..d269276 100644
--- a/src/com/android/contacts/widget/TextHighlightingAnimation.java
+++ b/src/com/android/contacts/widget/TextHighlightingAnimation.java
@@ -23,7 +23,7 @@
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
-import com.android.contacts.format.FormatUtils;
+import com.android.contacts.common.format.FormatUtils;
import com.android.internal.R;
/**
diff --git a/src/com/android/contacts/widget/TransitionAnimationView.java b/src/com/android/contacts/widget/TransitionAnimationView.java
index 28d728b..2e277a9 100644
--- a/src/com/android/contacts/widget/TransitionAnimationView.java
+++ b/src/com/android/contacts/widget/TransitionAnimationView.java
@@ -63,25 +63,30 @@
}
/**
- * Starts the transition of showing or hiding the mask.
- * If showMask is true, the mask will be set to be invisible then fade into hide the other
- * views in this container. If showMask is false, the mask will be set to be hide other views
- * initially. Then, the other views in this container will be revealed.
+ * Starts the transition of showing or hiding the mask. To the user, the view will appear to
+ * either fade in or out of view.
+ *
+ * @param showMask If true, the mask the mask will be set to be invisible then fade into hide
+ * the other views in this container. If false, the the mask will be set to be hide other
+ * views initially. Then, the other views in this container will be revealed.
+ * @param duration The duration the animation should last for. If -1, the system default(300)
+ * is used.
*/
- public void startMaskTransition(boolean showMask) {
+ public void startMaskTransition(boolean showMask, int duration) {
// Stop any animation that may still be running.
if (mAnimator != null && mAnimator.isRunning()) {
mAnimator.end();
}
-
mMaskingView.setVisibility(View.VISIBLE);
if (showMask) {
mAnimator = ObjectAnimator.ofFloat(mMaskingView, View.ALPHA, 0.0f, 1.0f);
- mAnimator.start();
} else {
// asked to hide the view
mAnimator = ObjectAnimator.ofFloat(mMaskingView, View.ALPHA, 1.0f, 0.0f);
- mAnimator.start();
}
+ if (duration != -1) {
+ mAnimator.setDuration(duration);
+ }
+ mAnimator.start();
}
}
diff --git a/tests/Android.mk b/tests/Android.mk
index ef11c5e..241ff5e 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -6,6 +6,7 @@
LOCAL_CERTIFICATE := shared
LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_STATIC_JAVA_LIBRARIES := com.android.contacts.common.test
# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index d80a35d..7a7df01 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -76,16 +76,6 @@
</intent-filter>
</activity>
- <activity android:name=".calllog.FillCallLogTestActivity"
- android:label="@string/fillCallLogTest"
- >
- <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>
-
<activity android:name=".streamitems.StreamItemPopulatorActivity"
android:label="@string/streamItemPopulator"
>
@@ -113,18 +103,6 @@
android:resource="@xml/test_basic_authenticator" />
</service>
- <service android:name=".testauth.TestSyncService$Basic" android:exported="true">
- <intent-filter>
- <action android:name="android.content.SyncAdapter" />
- </intent-filter>
- <meta-data
- android:name="android.content.SyncAdapter"
- android:resource="@xml/test_basic_syncadapter" />
- <meta-data
- android:name="android.provider.CONTACTS_STRUCTURE"
- android:resource="@xml/test_basic_contacts" />
- </service>
-
<service android:name=".QueryService" />
<service android:name=".PhoneNumberTestService" />
</application>
@@ -139,9 +117,4 @@
android:label="Contacts launch performance">
</instrumentation>
- <instrumentation android:name="com.android.contacts.DialerLaunchPerformance"
- android:targetPackage="com.android.contacts"
- android:label="Dialer launch performance">
- </instrumentation>
-
</manifest>
diff --git a/tests/res/values/donottranslate_strings.xml b/tests/res/values/donottranslate_strings.xml
index dc8bf2f..b3f3ee7 100644
--- a/tests/res/values/donottranslate_strings.xml
+++ b/tests/res/values/donottranslate_strings.xml
@@ -17,7 +17,6 @@
<string name="contactsIntents">Contacts Intents</string>
<string name="result">Result returned by activity</string>
- <string name="test_string">TEST STRING</string>
<string-array name="allIntents">
<!-- List modes -->
diff --git a/tests/res/xml/contacts_fallback.xml b/tests/res/xml/contacts_fallback.xml
deleted file mode 100644
index ae262eb..0000000
--- a/tests/res/xml/contacts_fallback.xml
+++ /dev/null
@@ -1,96 +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.
- */
--->
-
-<!--
- contacts.xml to build "fallback account type" equivalent.
- This is directly used in ExternalAccountTypeTest to test the parser. There's no sync adapter
- that actually defined with this definition.
--->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema
- >
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- >
- </DataKind>
- <DataKind kind="photo" maxOccurs="1" />
- <DataKind kind="phone" >
- <Type type="mobile" />
- <Type type="home" />
- <Type type="work" />
- <Type type="fax_work" />
- <Type type="fax_home" />
- <Type type="pager" />
- <Type type="other" />
- <Type type="custom"/>
- <Type type="callback" />
- <Type type="car" />
- <Type type="company_main" />
- <Type type="isdn" />
- <Type type="main" />
- <Type type="other_fax" />
- <Type type="radio" />
- <Type type="telex" />
- <Type type="tty_tdd" />
- <Type type="work_mobile"/>
- <Type type="work_pager" />
- <Type type="assistant" />
- <Type type="mms" />
- </DataKind>
- <DataKind kind="email" >
- <Type type="home" />
- <Type type="work" />
- <Type type="other" />
- <Type type="mobile" />
- <Type type="custom" />
- </DataKind>
- <DataKind kind="nickname" maxOccurs="1" />
- <DataKind kind="im" >
- <Type type="aim" />
- <Type type="msn" />
- <Type type="yahoo" />
- <Type type="skype" />
- <Type type="qq" />
- <Type type="google_talk" />
- <Type type="icq" />
- <Type type="jabber" />
- <Type type="custom" />
- </DataKind>
- <DataKind kind="postal" needsStructured="false" >
- <Type type="home" />
- <Type type="work" />
- <Type type="other" />
- <Type type="custom" />
- </DataKind>
- <DataKind kind="organization" maxOccurs="1" />
- <DataKind kind="website" />
- <DataKind kind="sip_address" maxOccurs="1" />
- <DataKind kind="note" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/contacts_readonly.xml b/tests/res/xml/contacts_readonly.xml
deleted file mode 100644
index df8d9c0..0000000
--- a/tests/res/xml/contacts_readonly.xml
+++ /dev/null
@@ -1,51 +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.
- */
--->
-
-<!--
- Contacts.xml without EditSchema.
--->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <ContactsDataKind
- android:icon="@drawable/android"
- android:mimeType="vnd.android.cursor.item/a.b.c"
- android:summaryColumn="data1"
- android:detailColumn="data2"
- android:detailSocialSummary="true"
- >
- </ContactsDataKind>
- <ContactsDataKind
- android:icon="@drawable/default_icon"
- android:mimeType="vnd.android.cursor.item/d.e.f"
- android:summaryColumn="data3"
- android:detailColumn="data4"
- android:detailSocialSummary="false"
- >
- </ContactsDataKind>
- <ContactsDataKind
- android:icon="@drawable/android"
- android:mimeType="vnd.android.cursor.item/xyz"
- android:summaryColumn="data5"
- android:detailColumn="data6"
- android:detailSocialSummary="true"
- >
- </ContactsDataKind>
-</ContactsAccountType>
diff --git a/tests/res/xml/iconset.xml b/tests/res/xml/iconset.xml
index d1207e7..b9e419d 100644
--- a/tests/res/xml/iconset.xml
+++ b/tests/res/xml/iconset.xml
@@ -1,24 +1,25 @@
<?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.
--->
+<!--
+ ~ 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
+ -->
<icon-set
xmlns:android="http://schemas.android.com/apk/res/android">
<icon-default android:icon="@drawable/default_icon" />
- <icon android:mimeType="vnd.android.cursor.item/phone"
+ <icon android:mimeType="vnd.android.cursor.item/phone"
android:icon="@drawable/phone_icon" />
-</icon-set>
\ No newline at end of file
+</icon-set>
diff --git a/tests/res/xml/missing_contacts_base.xml b/tests/res/xml/missing_contacts_base.xml
deleted file mode 100644
index 2c9aa6d..0000000
--- a/tests/res/xml/missing_contacts_base.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.
- */
--->
-
-<!-- XML for must-have checks. Base definition, which is valid. -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- >
- </DataKind>
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name.xml b/tests/res/xml/missing_contacts_name.xml
deleted file mode 100644
index 1ac26be..0000000
--- a/tests/res/xml/missing_contacts_name.xml
+++ /dev/null
@@ -1,28 +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.
- */
--->
-
-<!-- XML for must-have checks. Missing "name" kind. -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr1.xml b/tests/res/xml/missing_contacts_name_attr1.xml
deleted file mode 100644
index b7b0f19..0000000
--- a/tests/res/xml/missing_contacts_name_attr1.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr2.xml b/tests/res/xml/missing_contacts_name_attr2.xml
deleted file mode 100644
index 41be9e8..0000000
--- a/tests/res/xml/missing_contacts_name_attr2.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr3.xml b/tests/res/xml/missing_contacts_name_attr3.xml
deleted file mode 100644
index e639a76..0000000
--- a/tests/res/xml/missing_contacts_name_attr3.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr4.xml b/tests/res/xml/missing_contacts_name_attr4.xml
deleted file mode 100644
index b42cdcd..0000000
--- a/tests/res/xml/missing_contacts_name_attr4.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr5.xml b/tests/res/xml/missing_contacts_name_attr5.xml
deleted file mode 100644
index 3778d2f..0000000
--- a/tests/res/xml/missing_contacts_name_attr5.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr6.xml b/tests/res/xml/missing_contacts_name_attr6.xml
deleted file mode 100644
index b3a3411..0000000
--- a/tests/res/xml/missing_contacts_name_attr6.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticGivenName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_name_attr7.xml b/tests/res/xml/missing_contacts_name_attr7.xml
deleted file mode 100644
index c87e4f1..0000000
--- a/tests/res/xml/missing_contacts_name_attr7.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.
- */
--->
-
-<!-- XML for must-have checks. Missing one of the "support*" attributes". -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- />
- <DataKind kind="photo" maxOccurs="1" />
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/missing_contacts_photo.xml b/tests/res/xml/missing_contacts_photo.xml
deleted file mode 100644
index 87f4fc6..0000000
--- a/tests/res/xml/missing_contacts_photo.xml
+++ /dev/null
@@ -1,38 +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.
- */
--->
-
-<!-- XML for must-have checks. Missing "photo" kind. -->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema>
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- >
- </DataKind>
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/test_basic_contacts.xml b/tests/res/xml/test_basic_contacts.xml
deleted file mode 100644
index 0047204..0000000
--- a/tests/res/xml/test_basic_contacts.xml
+++ /dev/null
@@ -1,283 +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.
- */
--->
-
-<ContactsAccountType
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditSchema
- >
- <!--
- Name:
- - maxOccurs must be 1
- - No types.
-
- - Currently all the supportsXxx attributes must be true, but here's the plan for the
- future:
- (There's some hardcoded assumptions in the contact editor, which is one reason
- for the above restriction)
-
- - "Family name" and "Given name" must be supported.
- - All sync adapters must support structured name. "display name only" is not
- supported.
- -> Supporting this would require relatively large changes to
- the contact editor.
-
- - Fields are decided from the attributes:
- StructuredName.DISPLAY_NAME if supportsDisplayName == true
- StructuredName.PREFIX if supportsPrefix == true
- StructuredName.FAMILY_NAME (always)
- StructuredName.MIDDLE_NAME if supportsPrefix == true
- StructuredName.GIVEN_NAME (always)
- StructuredName.SUFFIX if supportsSuffix == true
- StructuredName.PHONETIC_FAMILY_NAME if supportsPhoneticFamilyName == true
- StructuredName.PHONETIC_MIDDLE_NAME if supportsPhoneticMiddleName == true
- StructuredName.PHONETIC_GIVEN_NAME if supportsPhoneticGivenName == true
-
- - DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME is always added.
- - DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME is added
- if any of supportsPhoneticXxx == true
- -->
- <!-- Fallback/Google definition. Supports all. -->
- <DataKind kind="name"
- maxOccurs="1"
- supportsDisplayName="true"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="true"
- supportsPhoneticGivenName="true"
- >
- </DataKind>
-
- <!-- Exchange definition. No display-name, no phonetic-middle.
- <DataKind kind="name"
- supportsDisplayName="false"
- supportsPrefix="true"
- supportsMiddleName="true"
- supportsSuffix="true"
- supportsPhoneticFamilyName="true"
- supportsPhoneticMiddleName="false"
- supportsPhoneticGivenName ="true"
- >
- </DataKind>
- -->
-
- <!--
- Photo:
- - maxOccurs must be 1
- - No types.
- -->
- <DataKind kind="photo" maxOccurs="1" />
-
- <!--
- Phone definition.
- - "is secondary?" is inferred from type.
- -->
- <!-- Fallback, Google definition. -->
- <DataKind kind="phone" >
- <!-- Note: Google type doesn't have obsolete ones -->
- <Type type="mobile" />
- <Type type="home" />
- <Type type="work" />
- <Type type="fax_work" />
- <Type type="fax_home" />
- <Type type="pager" />
- <Type type="other" />
- <Type type="custom"/>
- <Type type="callback" />
- <Type type="car" />
- <Type type="company_main" />
- <Type type="isdn" />
- <Type type="main" />
- <Type type="other_fax" />
- <Type type="radio" />
- <Type type="telex" />
- <Type type="tty_tdd" />
- <Type type="work_mobile"/>
- <Type type="work_pager" />
- <Type type="assistant" />
- <Type type="mms" />
- </DataKind>
-
- <!-- Exchange definition.
- <DataKind kind="phone" >
- <Type type="home" maxOccurs="2" />
- <Type type="mobile" maxOccurs="1" />
- <Type type="work" maxOccurs="2" />
- <Type type="fax_work" maxOccurs="1" />
- <Type type="fax_home" maxOccurs="1" />
- <Type type="pager" maxOccurs="1" />
- <Type type="car" maxOccurs="1" />
- <Type type="company_main" maxOccurs="1" />
- <Type type="mms" maxOccurs="1" />
- <Type type="radio" maxOccurs="1" />
- <Type type="assistant" maxOccurs="1" />
- </DataKind>
- -->
-
- <!--
- Email
- -->
- <!-- Fallback/Google definition. -->
- <DataKind kind="email" >
- <!-- Note: Google type doesn't have obsolete ones -->
- <Type type="home" />
- <Type type="work" />
- <Type type="other" />
- <Type type="mobile" />
- <Type type="custom" />
- </DataKind>
-
- <!--
- Exchange definition.
- - Same definition as "fallback" except for maxOccurs=3
- <DataKind kind="email" maxOccurs="3" >
- <Type type="home" />
- <Type type="work" />
- <Type type="other" />
- <Type type="mobile" />
- <Type type="custom" />
- </DataKind>
- -->
-
- <!--
- Nickname
- - maxOccurs must be 1
- - No types.
- -->
- <DataKind kind="nickname" maxOccurs="1" />
-
- <!--
- Im:
- - The TYPE column always stores Im.TYPE_OTHER (defaultValues is always set)
- - The user-selected type is stored in Im.PROTOCOL
- -->
- <!-- Fallback, Google definition. -->
- <DataKind kind="im" >
- <Type type="aim" />
- <Type type="msn" />
- <Type type="yahoo" />
- <Type type="skype" />
- <Type type="qq" />
- <Type type="google_talk" />
- <Type type="icq" />
- <Type type="jabber" />
- <Type type="custom" />
- </DataKind>
-
- <!-- Exchange definition.
- <DataKind kind="im" maxOccurs="3" >
- <Type type="aim" />
- <Type type="msn" />
- <Type type="yahoo" />
- <Type type="skype" />
- <Type type="qq" />
- <Type type="google_talk" />
- <Type type="icq" />
- <Type type="jabber" />
- <Type type="custom" />
- </DataKind>
- -->
-
- <!--
- Postal address.
- -->
- <!-- Fallback/Google definition. Not structured. -->
- <DataKind kind="postal" needsStructured="false" >
- <Type type="home" />
- <Type type="work" />
- <Type type="other" />
- <Type type="custom" />
- </DataKind>
-
- <!-- Exchange definition. Structured.
- <DataKind kind="postal" needsStructured="true" >
- <Type type="work" />
- <Type type="home" />
- <Type type="other" />
- </DataKind>
- -->
-
- <!--
- Organization:
- - Fields are fixed: COMPANY, TITLE
- - maxOccurs must be 1
- - No types.
- -->
- <DataKind kind="organization" maxOccurs="1" />
-
- <!--
- Website:
- - No types.
- -->
- <DataKind kind="website" />
-
- <!--
- Below kinds have nothing configurable.
- - No types are supported.
- - maxOccurs must be 1
- -->
- <DataKind kind="sip_address" maxOccurs="1" />
- <DataKind kind="note" maxOccurs="1" />
-
- <!--
- Google/Exchange supports it, but fallback doesn't.
- <DataKind kind="group_membership" maxOccurs="1" />
- -->
-
- <!--
- Event
- -->
- <DataKind kind="event" dateWithTime="false">
- <Type type="birthday" maxOccurs="1" yearOptional="true" />
- <Type type="anniversary" />
- <Type type="other" />
- <Type type="custom" />
- </DataKind>
-
- <!--
- Exchange definition. dateWithTime is needed only for Exchange.
- <DataKind kind="event" dateWithTime="true">
- <Type type="birthday" maxOccurs="1" />
- </DataKind>
- -->
-
- <!--
- Relationship
- -->
- <DataKind kind="relationship" >
- <Type type="assistant" />
- <Type type="brother" />
- <Type type="child" />
- <Type type="domestic_partner" />
- <Type type="father" />
- <Type type="friend" />
- <Type type="manager" />
- <Type type="mother" />
- <Type type="parent" />
- <Type type="partner" />
- <Type type="referred_by" />
- <Type type="relative" />
- <Type type="sister" />
- <Type type="spouse" />
- <Type type="custom" />
- </DataKind>
- </EditSchema>
-</ContactsAccountType>
diff --git a/tests/res/xml/test_basic_syncadapter.xml b/tests/res/xml/test_basic_syncadapter.xml
deleted file mode 100644
index fecc0eb..0000000
--- a/tests/res/xml/test_basic_syncadapter.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.
- */
--->
-
-<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
- android:contentAuthority="com.android.contacts"
- android:accountType="com.android.contacts.tests.authtest.basic"
- android:supportsUploading="true"
- android:userVisible="true"
-/>
diff --git a/tests/src/com/android/contacts/CallDetailActivityTest.java b/tests/src/com/android/contacts/CallDetailActivityTest.java
deleted file mode 100644
index ae28929..0000000
--- a/tests/src/com/android/contacts/CallDetailActivityTest.java
+++ /dev/null
@@ -1,336 +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;
-
-import static com.android.contacts.CallDetailActivity.Tasks.UPDATE_PHONE_CALL_DETAILS;
-import static com.android.contacts.voicemail.VoicemailPlaybackPresenter.Tasks.CHECK_FOR_CONTENT;
-import static com.android.contacts.voicemail.VoicemailPlaybackPresenter.Tasks.PREPARE_MEDIA_PLAYER;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.content.res.AssetManager;
-import android.net.Uri;
-import android.provider.CallLog;
-import android.provider.VoicemailContract;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.Menu;
-import android.widget.TextView;
-
-import com.android.contacts.util.AsyncTaskExecutors;
-import com.android.contacts.util.FakeAsyncTaskExecutor;
-import com.android.contacts.util.IntegrationTestUtils;
-import com.android.contacts.util.LocaleTestUtils;
-import com.android.internal.view.menu.ContextMenuBuilder;
-import com.google.common.io.Closeables;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Unit tests for the {@link CallDetailActivity}.
- */
-@LargeTest
-public class CallDetailActivityTest extends ActivityInstrumentationTestCase2<CallDetailActivity> {
- private static final String TEST_ASSET_NAME = "quick_test_recording.mp3";
- private static final String MIME_TYPE = "audio/mp3";
- private static final String CONTACT_NUMBER = "+1412555555";
- private static final String VOICEMAIL_FILE_LOCATION = "/sdcard/sadlfj893w4j23o9sfu.mp3";
-
- private Uri mCallLogUri;
- private Uri mVoicemailUri;
- private IntegrationTestUtils mTestUtils;
- private LocaleTestUtils mLocaleTestUtils;
- private FakeAsyncTaskExecutor mFakeAsyncTaskExecutor;
- private CallDetailActivity mActivityUnderTest;
-
- public CallDetailActivityTest() {
- super(CallDetailActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mFakeAsyncTaskExecutor = new FakeAsyncTaskExecutor(getInstrumentation());
- AsyncTaskExecutors.setFactoryForTest(mFakeAsyncTaskExecutor.getFactory());
- // I don't like the default of focus-mode for tests, the green focus border makes the
- // screenshots look weak.
- setActivityInitialTouchMode(true);
- mTestUtils = new IntegrationTestUtils(getInstrumentation());
- // Some of the tests rely on the text that appears on screen - safest to force a
- // specific locale.
- mLocaleTestUtils = new LocaleTestUtils(getInstrumentation().getTargetContext());
- mLocaleTestUtils.setLocale(Locale.US);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mLocaleTestUtils.restoreLocale();
- mLocaleTestUtils = null;
- cleanUpUri();
- mTestUtils = null;
- AsyncTaskExecutors.setFactoryForTest(null);
- super.tearDown();
- }
-
- public void testInitialActivityStartsWithFetchingVoicemail() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- // When the activity first starts, we will show "Fetching voicemail" on the screen.
- // The duration should not be visible.
- assertHasOneTextViewContaining("Fetching voicemail");
- assertZeroTextViewsContaining("00:00");
- }
-
- public void testWhenCheckForContentCompletes_UiShowsBuffering() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- // There is a background check that is testing to see if we have the content available.
- // Once that task completes, we shouldn't be showing the fetching message, we should
- // be showing "Buffering".
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- assertHasOneTextViewContaining("Buffering");
- assertZeroTextViewsContaining("Fetching voicemail");
- }
-
- public void testInvalidVoicemailShowsErrorMessage() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- // There should be exactly one background task ready to prepare the media player.
- // Preparing the media player will have thrown an IOException since the file doesn't exist.
- // This should have put a failed to play message on screen, buffering is gone.
- mFakeAsyncTaskExecutor.runTask(PREPARE_MEDIA_PLAYER);
- assertHasOneTextViewContaining("Couldn't play voicemail");
- assertZeroTextViewsContaining("Buffering");
- }
-
- public void testOnResumeDoesNotCreateManyFragments() throws Throwable {
- // There was a bug where every time the activity was resumed, a new fragment was created.
- // Before the fix, this was failing reproducibly with at least 3 "Buffering" views.
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- getInstrumentation().callActivityOnPause(mActivityUnderTest);
- getInstrumentation().callActivityOnResume(mActivityUnderTest);
- getInstrumentation().callActivityOnPause(mActivityUnderTest);
- getInstrumentation().callActivityOnResume(mActivityUnderTest);
- }
- });
- assertHasOneTextViewContaining("Buffering");
- }
-
- /**
- * Test for bug where increase rate button with invalid voicemail causes a crash.
- * <p>
- * The repro steps for this crash were to open a voicemail that does not have an attachment,
- * then click the play button (which just reported an error), then after that try to adjust the
- * rate. See http://b/5047879.
- */
- public void testClickIncreaseRateButtonWithInvalidVoicemailDoesNotCrash() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- mTestUtils.clickButton(mActivityUnderTest, R.id.playback_start_stop);
- mTestUtils.clickButton(mActivityUnderTest, R.id.rate_increase_button);
- }
-
- /** Test for bug where missing Extras on intent used to start Activity causes NPE. */
- public void testCallLogUriWithMissingExtrasShouldNotCauseNPE() throws Throwable {
- setActivityIntentForTestCallEntry();
- startActivityUnderTest();
- }
-
- /**
- * Test for bug where voicemails should not have remove-from-call-log entry.
- * <p>
- * See http://b/5054103.
- */
- public void testVoicemailDoesNotHaveRemoveFromCallLog() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- Menu menu = new ContextMenuBuilder(mActivityUnderTest);
- mActivityUnderTest.onCreateOptionsMenu(menu);
- mActivityUnderTest.onPrepareOptionsMenu(menu);
- assertFalse(menu.findItem(R.id.menu_remove_from_call_log).isVisible());
- }
-
- /** Test to check that I haven't broken the remove-from-call-log entry from regular calls. */
- public void testRegularCallDoesHaveRemoveFromCallLog() throws Throwable {
- setActivityIntentForTestCallEntry();
- startActivityUnderTest();
- Menu menu = new ContextMenuBuilder(mActivityUnderTest);
- mActivityUnderTest.onCreateOptionsMenu(menu);
- mActivityUnderTest.onPrepareOptionsMenu(menu);
- assertTrue(menu.findItem(R.id.menu_remove_from_call_log).isVisible());
- }
-
- /**
- * Test to show that we are correctly displaying playback rate on the ui.
- * <p>
- * See bug http://b/5044075.
- */
- @Suppress
- public void testVoicemailPlaybackRateDisplayedOnUi() throws Throwable {
- setActivityIntentForTestVoicemailEntry();
- startActivityUnderTest();
- // Find the TextView containing the duration. It should be initially displaying "00:00".
- List<TextView> views = mTestUtils.getTextViewsWithString(mActivityUnderTest, "00:00");
- assertEquals(1, views.size());
- TextView timeDisplay = views.get(0);
- // Hit the plus button. At this point we should be displaying "fast speed".
- mTestUtils.clickButton(mActivityUnderTest, R.id.rate_increase_button);
- assertEquals("fast speed", mTestUtils.getText(timeDisplay));
- // Hit the minus button. We should be back to "normal" speed.
- mTestUtils.clickButton(mActivityUnderTest, R.id.rate_decrease_button);
- assertEquals("normal speed", mTestUtils.getText(timeDisplay));
- // Wait for one and a half seconds. The timer will be back.
- Thread.sleep(1500);
- assertEquals("00:00", mTestUtils.getText(timeDisplay));
- }
-
- @Suppress
- public void testClickingCallStopsPlayback() throws Throwable {
- setActivityIntentForRealFileVoicemailEntry();
- startActivityUnderTest();
- mFakeAsyncTaskExecutor.runTask(CHECK_FOR_CONTENT);
- mFakeAsyncTaskExecutor.runTask(PREPARE_MEDIA_PLAYER);
- mTestUtils.clickButton(mActivityUnderTest, R.id.playback_speakerphone);
- mTestUtils.clickButton(mActivityUnderTest, R.id.playback_start_stop);
- mTestUtils.clickButton(mActivityUnderTest, R.id.call_and_sms_main_action);
- Thread.sleep(2000);
- // TODO: Suppressed the test for now, because I'm looking for an easy way to say "the audio
- // is not playing at this point", and I can't find it without doing dirty things.
- }
-
- private void setActivityIntentForTestCallEntry() {
- assertNull(mCallLogUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(CallLog.Calls.NUMBER, CONTACT_NUMBER);
- values.put(CallLog.Calls.TYPE, CallLog.Calls.INCOMING_TYPE);
- mCallLogUri = contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
- setActivityIntent(new Intent(Intent.ACTION_VIEW, mCallLogUri));
- }
-
- private void setActivityIntentForTestVoicemailEntry() {
- assertNull(mVoicemailUri);
- ContentResolver contentResolver = getContentResolver();
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- values.put(VoicemailContract.Voicemails._DATA, VOICEMAIL_FILE_LOCATION);
- mVoicemailUri = contentResolver.insert(VoicemailContract.Voicemails.CONTENT_URI, values);
- Uri callLogUri = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
- ContentUris.parseId(mVoicemailUri));
- Intent intent = new Intent(Intent.ACTION_VIEW, callLogUri);
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI, mVoicemailUri);
- setActivityIntent(intent);
- }
-
- private void setActivityIntentForRealFileVoicemailEntry() throws IOException {
- assertNull(mVoicemailUri);
- ContentValues values = new ContentValues();
- values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
- values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
- values.put(VoicemailContract.Voicemails.MIME_TYPE, MIME_TYPE);
- values.put(VoicemailContract.Voicemails.HAS_CONTENT, 1);
- String packageName = getInstrumentation().getTargetContext().getPackageName();
- mVoicemailUri = getContentResolver().insert(
- VoicemailContract.Voicemails.buildSourceUri(packageName), values);
- AssetManager assets = getAssets();
- OutputStream outputStream = null;
- InputStream inputStream = null;
- try {
- inputStream = assets.open(TEST_ASSET_NAME);
- outputStream = getContentResolver().openOutputStream(mVoicemailUri);
- copyBetweenStreams(inputStream, outputStream);
- } finally {
- Closeables.closeQuietly(outputStream);
- Closeables.closeQuietly(inputStream);
- }
- Uri callLogUri = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
- ContentUris.parseId(mVoicemailUri));
- Intent intent = new Intent(Intent.ACTION_VIEW, callLogUri);
- intent.putExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI, mVoicemailUri);
- setActivityIntent(intent);
- }
-
- public void copyBetweenStreams(InputStream in, OutputStream out) throws IOException {
- byte[] buffer = new byte[1024];
- int bytesRead;
- int total = 0;
- while ((bytesRead = in.read(buffer)) != -1) {
- total += bytesRead;
- out.write(buffer, 0, bytesRead);
- }
- }
-
- private void cleanUpUri() {
- if (mVoicemailUri != null) {
- getContentResolver().delete(VoicemailContract.Voicemails.CONTENT_URI,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mVoicemailUri)) });
- mVoicemailUri = null;
- }
- if (mCallLogUri != null) {
- getContentResolver().delete(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL,
- "_ID = ?", new String[] { String.valueOf(ContentUris.parseId(mCallLogUri)) });
- mCallLogUri = null;
- }
- }
-
- private ContentResolver getContentResolver() {
- return getInstrumentation().getTargetContext().getContentResolver();
- }
-
- private TextView assertHasOneTextViewContaining(String text) throws Throwable {
- assertNotNull(mActivityUnderTest);
- List<TextView> views = mTestUtils.getTextViewsWithString(mActivityUnderTest, text);
- assertEquals("There should have been one TextView with text '" + text + "' but found "
- + views, 1, views.size());
- return views.get(0);
- }
-
- private void assertZeroTextViewsContaining(String text) throws Throwable {
- assertNotNull(mActivityUnderTest);
- List<TextView> views = mTestUtils.getTextViewsWithString(mActivityUnderTest, text);
- assertEquals("There should have been no TextViews with text '" + text + "' but found "
- + views, 0, views.size());
- }
-
- private void startActivityUnderTest() throws Throwable {
- assertNull(mActivityUnderTest);
- mActivityUnderTest = getActivity();
- assertNotNull("activity should not be null", mActivityUnderTest);
- // We have to run all tasks, not just one.
- // This is because it seems that we can have onResume, onPause, onResume during the course
- // of a single unit test.
- mFakeAsyncTaskExecutor.runAllTasks(UPDATE_PHONE_CALL_DETAILS);
- }
-
- private AssetManager getAssets() {
- return getInstrumentation().getContext().getAssets();
- }
-}
diff --git a/tests/src/com/android/contacts/ContactDetailTest.java b/tests/src/com/android/contacts/ContactDetailTest.java
index 8d91d9e..ea1e40e 100644
--- a/tests/src/com/android/contacts/ContactDetailTest.java
+++ b/tests/src/com/android/contacts/ContactDetailTest.java
@@ -20,8 +20,8 @@
import android.test.suitebuilder.annotation.SmallTest;
import com.android.contacts.activities.ContactDetailActivity;
-import com.android.contacts.tests.mocks.ContactsMockContext;
-import com.android.contacts.tests.mocks.MockContentProvider;
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider;
@SmallTest
public class ContactDetailTest extends ActivityUnitTestCase<ContactDetailActivity> {
diff --git a/tests/src/com/android/contacts/ContactsUtilsTests.java b/tests/src/com/android/contacts/ContactsUtilsTests.java
index d2d5bbb..e8f05e0 100644
--- a/tests/src/com/android/contacts/ContactsUtilsTests.java
+++ b/tests/src/com/android/contacts/ContactsUtilsTests.java
@@ -21,6 +21,8 @@
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.contacts.common.MoreContactUtils;
+
/**
* Tests for {@link ContactsUtils}.
*/
@@ -52,163 +54,6 @@
assertFalse("1:2", ContactsUtils.areObjectsEqual(1, 2));
}
- public void testShouldCollapse() throws Exception {
- assertCollapses("1", true, null, null, null, null);
- assertCollapses("2", true, "a", "b", "a", "b");
-
- assertCollapses("11", false, "a", null, null, null);
- assertCollapses("12", false, null, "a", null, null);
- assertCollapses("13", false, null, null, "a", null);
- assertCollapses("14", false, null, null, null, "a");
-
- assertCollapses("21", false, "a", "b", null, null);
- assertCollapses("22", false, "a", "b", "a", null);
- assertCollapses("23", false, "a", "b", null, "b");
- assertCollapses("24", false, "a", "b", "a", "x");
- assertCollapses("25", false, "a", "b", "x", "b");
-
- assertCollapses("31", false, null, null, "a", "b");
- assertCollapses("32", false, "a", null, "a", "b");
- assertCollapses("33", false, null, "b", "a", "b");
- assertCollapses("34", false, "a", "x", "a", "b");
- assertCollapses("35", false, "x", "b", "a", "b");
-
- assertCollapses("41", true, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE,
- null);
- assertCollapses("42", true, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE, "1");
-
- assertCollapses("51", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE,
- "2");
- assertCollapses("52", false, Phone.CONTENT_ITEM_TYPE, "1", Phone.CONTENT_ITEM_TYPE,
- null);
- assertCollapses("53", false, Phone.CONTENT_ITEM_TYPE, null, Phone.CONTENT_ITEM_TYPE,
- "2");
-
- // Test phone numbers
- assertCollapses("60", true,
- Phone.CONTENT_ITEM_TYPE, "1234567",
- Phone.CONTENT_ITEM_TYPE, "1234567");
- assertCollapses("61", false,
- Phone.CONTENT_ITEM_TYPE, "1234567",
- Phone.CONTENT_ITEM_TYPE, "1234568");
- assertCollapses("62", true,
- Phone.CONTENT_ITEM_TYPE, "1234567;0",
- Phone.CONTENT_ITEM_TYPE, "1234567;0");
- assertCollapses("63", false,
- Phone.CONTENT_ITEM_TYPE, "1234567;89321",
- Phone.CONTENT_ITEM_TYPE, "1234567;89322");
- assertCollapses("64", true,
- Phone.CONTENT_ITEM_TYPE, "1234567;89321",
- Phone.CONTENT_ITEM_TYPE, "1234567;89321");
- assertCollapses("65", false,
- Phone.CONTENT_ITEM_TYPE, "1234567;0111111111",
- Phone.CONTENT_ITEM_TYPE, "1234567;");
- assertCollapses("66", false,
- Phone.CONTENT_ITEM_TYPE, "12345675426;91970xxxxx",
- Phone.CONTENT_ITEM_TYPE, "12345675426");
- assertCollapses("67", false,
- Phone.CONTENT_ITEM_TYPE, "12345675426;23456xxxxx",
- Phone.CONTENT_ITEM_TYPE, "12345675426;234567xxxx");
- assertCollapses("68", true,
- Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
- Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567");
- assertCollapses("69", false,
- Phone.CONTENT_ITEM_TYPE, "1234567;1234567;1234567",
- Phone.CONTENT_ITEM_TYPE, "1234567;1234567");
-
- // test some numbers with country and area code
- assertCollapses("70", true,
- Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
- Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678");
- assertCollapses("71", true,
- Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
- Phone.CONTENT_ITEM_TYPE, "+49 (89)12345678");
- assertCollapses("72", true,
- Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234",
- Phone.CONTENT_ITEM_TYPE, "+49 (8092)1234");
- assertCollapses("73", false,
- Phone.CONTENT_ITEM_TYPE, "0049 (8092) 1234",
- Phone.CONTENT_ITEM_TYPE, "+49/80921234");
- assertCollapses("74", false,
- Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345678",
- Phone.CONTENT_ITEM_TYPE, "+49 (89) 12345679");
-
- // test some numbers with wait symbol and area code
- assertCollapses("80", true,
- Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
- Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
- assertCollapses("81", false,
- Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89321",
- Phone.CONTENT_ITEM_TYPE, "+49/80921235;89321");
- assertCollapses("82", false,
- Phone.CONTENT_ITEM_TYPE, "+49 (8092) 1234;89322",
- Phone.CONTENT_ITEM_TYPE, "+49/80921234;89321");
- assertCollapses("83", true,
- Phone.CONTENT_ITEM_TYPE, "1234567;+49 (8092) 1234",
- Phone.CONTENT_ITEM_TYPE, "1234567;+49/80921234");
-
- assertCollapses("86", true,
- Phone.CONTENT_ITEM_TYPE, "",
- Phone.CONTENT_ITEM_TYPE, "");
-
- assertCollapses("87", false,
- Phone.CONTENT_ITEM_TYPE, "1",
- Phone.CONTENT_ITEM_TYPE, "");
-
- assertCollapses("88", false,
- Phone.CONTENT_ITEM_TYPE, "",
- Phone.CONTENT_ITEM_TYPE, "1");
-
- assertCollapses("89", true,
- Phone.CONTENT_ITEM_TYPE, "---",
- Phone.CONTENT_ITEM_TYPE, "---");
-
- assertCollapses("90", true,
- Phone.CONTENT_ITEM_TYPE, "1-/().",
- Phone.CONTENT_ITEM_TYPE, "--$%1");
-
- assertCollapses("91", true,
- Phone.CONTENT_ITEM_TYPE, "abcdefghijklmnopqrstuvwxyz",
- Phone.CONTENT_ITEM_TYPE, "22233344455566677778889999");
-
- assertCollapses("92", false,
- Phone.CONTENT_ITEM_TYPE, "1;2",
- Phone.CONTENT_ITEM_TYPE, "12");
-
- assertCollapses("93", false,
- Phone.CONTENT_ITEM_TYPE, "1,2",
- Phone.CONTENT_ITEM_TYPE, "12");
- }
-
- private void assertCollapses(String message, boolean expected, CharSequence mimetype1,
- CharSequence data1, CharSequence mimetype2, CharSequence data2) {
- assertEquals(message, expected,
- ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2, data2));
- assertEquals(message, expected,
- ContactsUtils.shouldCollapse(mimetype2, data2, mimetype1, data1));
-
- // If data1 and data2 are the same instance, make sure the same test passes with different
- // instances.
- if (data1 == data2 && data1 != null) {
- // Create a different instance
- final CharSequence data2_newref = new StringBuilder(data2).append("").toString();
-
- if (data1 == data2_newref) {
- // In some cases no matter what we do the runtime reuses the same instance, so
- // we can't do the "different instance" test.
- return;
- }
-
- // we have two different instances, now make sure we get the same result as before
- assertEquals(message, expected,
- ContactsUtils.shouldCollapse(mimetype1, data1, mimetype2,
- data2_newref));
- assertEquals(message, expected,
- ContactsUtils.shouldCollapse(mimetype2, data2_newref, mimetype1,
- data1));
- }
- }
-
public void testAreIntentActionEqual() throws Exception {
assertTrue("1", ContactsUtils.areIntentActionEqual(null, null));
assertTrue("1", ContactsUtils.areIntentActionEqual(new Intent("a"), new Intent("a")));
diff --git a/tests/src/com/android/contacts/DialerLaunchPerformance.java b/tests/src/com/android/contacts/DialerLaunchPerformance.java
deleted file mode 100644
index 0803c6b..0000000
--- a/tests/src/com/android/contacts/DialerLaunchPerformance.java
+++ /dev/null
@@ -1,49 +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;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.os.Bundle;
-import android.test.LaunchPerformanceBase;
-
-/**
- * Instrumentation class for Address Book launch performance testing.
- */
-public class DialerLaunchPerformance extends LaunchPerformanceBase {
-
- @Override
- public void onCreate(Bundle arguments) {
- mIntent.setAction(Intent.ACTION_MAIN);
- mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- mIntent.setComponent(new ComponentName("com.android.contacts",
- "com.android.contacts.activities.DialtactsActivity"));
-
- start();
- }
-
- /**
- * Calls LaunchApp and finish.
- */
- @Override
- public void onStart() {
- super.onStart();
- LaunchApp();
- finish(Activity.RESULT_OK, mResults);
- }
-}
diff --git a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java b/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
deleted file mode 100644
index b852b58..0000000
--- a/tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java
+++ /dev/null
@@ -1,328 +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;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.CallLog.Calls;
-import android.test.AndroidTestCase;
-import android.text.Html;
-import android.text.Spanned;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.contacts.calllog.CallTypeHelper;
-import com.android.contacts.calllog.PhoneNumberHelper;
-import com.android.contacts.calllog.TestPhoneNumberHelper;
-import com.android.contacts.util.LocaleTestUtils;
-import com.android.internal.telephony.CallerInfo;
-
-import java.util.GregorianCalendar;
-import java.util.Locale;
-
-/**
- * Unit tests for {@link PhoneCallDetailsHelper}.
- */
-public class PhoneCallDetailsHelperTest extends AndroidTestCase {
- /** The number to be used to access the voicemail. */
- private static final String TEST_VOICEMAIL_NUMBER = "125";
- /** The date of the call log entry. */
- private static final long TEST_DATE =
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis();
- /** A test duration value for phone calls. */
- private static final long TEST_DURATION = 62300;
- /** The number of the caller/callee in the log entry. */
- private static final String TEST_NUMBER = "14125555555";
- /** The formatted version of {@link #TEST_NUMBER}. */
- private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555";
- /** The country ISO name used in the tests. */
- private static final String TEST_COUNTRY_ISO = "US";
- /** The geocoded location used in the tests. */
- private static final String TEST_GEOCODE = "United States";
-
- /** The object under test. */
- private PhoneCallDetailsHelper mHelper;
- /** The views to fill. */
- private PhoneCallDetailsViews mViews;
- private TextView mNameView;
- private PhoneNumberHelper mPhoneNumberHelper;
- private LocaleTestUtils mLocaleTestUtils;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Context context = getContext();
- Resources resources = context.getResources();
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
- mPhoneNumberHelper = new TestPhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
- mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, mPhoneNumberHelper);
- mHelper.setCurrentTimeForTest(
- new GregorianCalendar(2011, 5, 4, 13, 0, 0).getTimeInMillis());
- mViews = PhoneCallDetailsViews.createForTest(context);
- mNameView = new TextView(context);
- mLocaleTestUtils = new LocaleTestUtils(getContext());
- mLocaleTestUtils.setLocale(Locale.US);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mLocaleTestUtils.restoreLocale();
- mNameView = null;
- mViews = null;
- mHelper = null;
- mPhoneNumberHelper = null;
- super.tearDown();
- }
-
- public void testSetPhoneCallDetails_Unknown() {
- setPhoneCallDetailsWithNumber(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER);
- assertNameEqualsResource(R.string.unknown);
- }
-
- public void testSetPhoneCallDetails_Private() {
- setPhoneCallDetailsWithNumber(CallerInfo.PRIVATE_NUMBER, CallerInfo.PRIVATE_NUMBER);
- assertNameEqualsResource(R.string.private_num);
- }
-
- public void testSetPhoneCallDetails_Payphone() {
- setPhoneCallDetailsWithNumber(CallerInfo.PAYPHONE_NUMBER, CallerInfo.PAYPHONE_NUMBER);
- assertNameEqualsResource(R.string.payphone);
- }
-
- public void testSetPhoneCallDetails_Voicemail() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, TEST_VOICEMAIL_NUMBER);
- assertNameEqualsResource(R.string.voicemail);
- }
-
- public void testSetPhoneCallDetails_Normal() {
- setPhoneCallDetailsWithNumber("14125551212", "1-412-555-1212");
- assertEquals("yesterday", mViews.callTypeAndDate.getText().toString());
- assertEqualsHtml("<font color='#33b5e5'><b>yesterday</b></font>",
- mViews.callTypeAndDate.getText());
- }
-
- /** Asserts that a char sequence is actually a Spanned corresponding to the expected HTML. */
- private void assertEqualsHtml(String expectedHtml, CharSequence actualText) {
- // In order to contain HTML, the text should actually be a Spanned.
- assertTrue(actualText instanceof Spanned);
- Spanned actualSpanned = (Spanned) actualText;
- // Convert from and to HTML to take care of alternative formatting of HTML.
- assertEquals(Html.toHtml(Html.fromHtml(expectedHtml)), Html.toHtml(actualSpanned));
-
- }
-
- public void testSetPhoneCallDetails_Date() {
- mHelper.setCurrentTimeForTest(
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 3, 13, 0, 0).getTimeInMillis());
- assertDateEquals("0 mins ago");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 3, 12, 0, 0).getTimeInMillis());
- assertDateEquals("1 hour ago");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 2, 13, 0, 0).getTimeInMillis());
- assertDateEquals("yesterday");
-
- setPhoneCallDetailsWithDate(
- new GregorianCalendar(2011, 5, 1, 13, 0, 0).getTimeInMillis());
- assertDateEquals("2 days ago");
- }
-
- public void testSetPhoneCallDetails_CallTypeIcons() {
- setPhoneCallDetailsWithCallTypeIcons(Calls.INCOMING_TYPE);
- assertCallTypeIconsEquals(Calls.INCOMING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(Calls.OUTGOING_TYPE);
- assertCallTypeIconsEquals(Calls.OUTGOING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE);
- assertCallTypeIconsEquals(Calls.MISSED_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(Calls.VOICEMAIL_TYPE);
- assertCallTypeIconsEquals(Calls.VOICEMAIL_TYPE);
- }
-
- public void testSetPhoneCallDetails_MultipleCallTypeIcons() {
- setPhoneCallDetailsWithCallTypeIcons(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallTypeIconsEquals(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
-
- setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- assertCallTypeIconsEquals(Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- }
-
- public void testSetPhoneCallDetails_MultipleCallTypeIconsLastOneDropped() {
- setPhoneCallDetailsWithCallTypeIcons(Calls.MISSED_TYPE, Calls.MISSED_TYPE,
- Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallTypeIconsEqualsPlusOverflow("(4)",
- Calls.MISSED_TYPE, Calls.MISSED_TYPE, Calls.INCOMING_TYPE);
- }
-
- public void testSetPhoneCallDetails_Geocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "Pennsylvania");
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertNumberEquals("Pennsylvania"); // The geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_NoGeocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", null);
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertNumberEquals("-"); // The empty geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_EmptyGeocode() {
- setPhoneCallDetailsWithNumberAndGeocode("+14125555555", "1-412-555-5555", "");
- assertNameEquals("1-412-555-5555"); // The phone number is shown as the name.
- assertNumberEquals("-"); // The empty geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_NoGeocodeForVoicemail() {
- setPhoneCallDetailsWithNumberAndGeocode(TEST_VOICEMAIL_NUMBER, "", "United States");
- assertNumberEquals("-"); // The empty geocode is shown as the number.
- }
-
- public void testSetPhoneCallDetails_Highlighted() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, "");
- }
-
- public void testSetCallDetailsHeader_NumberOnly() {
- setCallDetailsHeaderWithNumberOnly(TEST_NUMBER);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Add to contacts", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_UnknownNumber() {
- setCallDetailsHeaderWithNumberOnly(CallerInfo.UNKNOWN_NUMBER);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Unknown", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_PrivateNumber() {
- setCallDetailsHeaderWithNumberOnly(CallerInfo.PRIVATE_NUMBER);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Private number", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_PayphoneNumber() {
- setCallDetailsHeaderWithNumberOnly(CallerInfo.PAYPHONE_NUMBER);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Pay phone", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader_VoicemailNumber() {
- setCallDetailsHeaderWithNumberOnly(TEST_VOICEMAIL_NUMBER);
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("Voicemail", mNameView.getText().toString());
- }
-
- public void testSetCallDetailsHeader() {
- setCallDetailsHeader("John Doe");
- assertEquals(View.VISIBLE, mNameView.getVisibility());
- assertEquals("John Doe", mNameView.getText().toString());
- }
-
- /** Asserts that the name text field contains the value of the given string resource. */
- private void assertNameEqualsResource(int resId) {
- assertNameEquals(getContext().getString(resId));
- }
-
- /** Asserts that the name text field contains the given string value. */
- private void assertNameEquals(String text) {
- assertEquals(text, mViews.nameView.getText().toString());
- }
-
- /** Asserts that the number text field contains the given string value. */
- private void assertNumberEquals(String text) {
- assertEquals(text, mViews.numberView.getText().toString());
- }
-
- /** Asserts that the date text field contains the given string value. */
- private void assertDateEquals(String text) {
- assertEquals(text, mViews.callTypeAndDate.getText().toString());
- }
-
- /** Asserts that the call type contains the images with the given drawables. */
- private void assertCallTypeIconsEquals(int... ids) {
- assertEquals(ids.length, mViews.callTypeIcons.getCount());
- for (int index = 0; index < ids.length; ++index) {
- int id = ids[index];
- assertEquals(id, mViews.callTypeIcons.getCallType(index));
- }
- assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
- assertEquals("yesterday", mViews.callTypeAndDate.getText().toString());
- }
-
- /**
- * Asserts that the call type contains the images with the given drawables and shows the given
- * text next to the icons.
- */
- private void assertCallTypeIconsEqualsPlusOverflow(String overflowText, int... ids) {
- assertEquals(ids.length, mViews.callTypeIcons.getCount());
- for (int index = 0; index < ids.length; ++index) {
- int id = ids[index];
- assertEquals(id, mViews.callTypeIcons.getCallType(index));
- }
- assertEquals(View.VISIBLE, mViews.callTypeIcons.getVisibility());
- assertEquals(overflowText + " yesterday", mViews.callTypeAndDate.getText().toString());
- }
-
- /** Sets the phone call details with default values and the given number. */
- private void setPhoneCallDetailsWithNumber(String number, String formattedNumber) {
- setPhoneCallDetailsWithNumberAndGeocode(number, formattedNumber, TEST_GEOCODE);
- }
-
- /** Sets the phone call details with default values and the given number. */
- private void setPhoneCallDetailsWithNumberAndGeocode(String number, String formattedNumber,
- String geocodedLocation) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, geocodedLocation,
- new int[]{ Calls.VOICEMAIL_TYPE }, TEST_DATE, TEST_DURATION),
- true);
- }
-
- /** Sets the phone call details with default values and the given date. */
- private void setPhoneCallDetailsWithDate(long date) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, new int[]{ Calls.INCOMING_TYPE }, date, TEST_DURATION),
- false);
- }
-
- /** Sets the phone call details with default values and the given call types using icons. */
- private void setPhoneCallDetailsWithCallTypeIcons(int... callTypes) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, callTypes, TEST_DATE, TEST_DURATION),
- false);
- }
-
- private void setCallDetailsHeaderWithNumberOnly(String number) {
- mHelper.setCallDetailsHeader(mNameView,
- new PhoneCallDetails(number, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION));
- }
-
- private void setCallDetailsHeader(String name) {
- mHelper.setCallDetailsHeader(mNameView,
- new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION,
- name, 0, "", null, null));
- }
-}
diff --git a/tests/src/com/android/contacts/RawContactDeltaListTests.java b/tests/src/com/android/contacts/RawContactDeltaListTests.java
index 165e689..6a75b81 100644
--- a/tests/src/com/android/contacts/RawContactDeltaListTests.java
+++ b/tests/src/com/android/contacts/RawContactDeltaListTests.java
@@ -37,14 +37,15 @@
import com.android.contacts.RawContactModifierTests.MockContactsSource;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType;
import com.google.common.collect.Lists;
import java.lang.reflect.Field;
import java.util.ArrayList;
+import java.util.Collections;
/**
* Tests for {@link RawContactDeltaList} which focus on "diff" operations that should
@@ -112,10 +113,8 @@
}
static RawContactDeltaList buildSet(RawContactDelta... deltas) {
- final RawContactDeltaList set = RawContactDeltaList.fromSingle(deltas[0]);
- for (int i = 1; i < deltas.length; i++) {
- set.add(deltas[i]);
- }
+ final RawContactDeltaList set = new RawContactDeltaList();
+ Collections.addAll(set, deltas);
return set;
}
@@ -125,7 +124,7 @@
final ContentValues contact = new ContentValues();
contact.put(RawContacts.VERSION, version);
contact.put(RawContacts._ID, rawContactId);
- final RawContact before = new RawContact(context, contact);
+ final RawContact before = new RawContact(contact);
for (ContentValues entry : entries) {
before.addDataItemValues(entry);
}
diff --git a/tests/src/com/android/contacts/RawContactDeltaTests.java b/tests/src/com/android/contacts/RawContactDeltaTests.java
index 80e4c20..dc4eb53 100644
--- a/tests/src/com/android/contacts/RawContactDeltaTests.java
+++ b/tests/src/com/android/contacts/RawContactDeltaTests.java
@@ -34,7 +34,7 @@
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.google.common.collect.Lists;
import java.util.ArrayList;
@@ -77,7 +77,7 @@
phone.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
phone.put(Phone.TYPE, Phone.TYPE_HOME);
- final RawContact before = new RawContact(context, contact);
+ final RawContact before = new RawContact(contact);
before.addDataItemValues(phone);
return before;
}
@@ -143,49 +143,6 @@
assertEquals("Unexpected change when merging", source, merged);
}
- /**
- * Test that {@link ValuesDelta#buildDiff(android.net.Uri)} is correctly
- * built for insert, update, and delete cases. Note this only tests behavior
- * for individual {@link Data} rows.
- */
- public void testValuesDiffNone() {
- final ContentValues before = new ContentValues();
- before.put(Data._ID, TEST_PHONE_ID);
- before.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
-
- final ValuesDelta values = ValuesDelta.fromBefore(before);
-
- // None action shouldn't produce a builder
- final Builder builder = values.buildDiff(Data.CONTENT_URI);
- assertNull("None action produced a builder", builder);
- }
-
- public void testValuesDiffInsert() {
- final ContentValues after = new ContentValues();
- after.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
-
- final ValuesDelta values = ValuesDelta.fromAfter(after);
-
- // Should produce an insert action
- final Builder builder = values.buildDiff(Data.CONTENT_URI);
- final int type = builder.build().getType();
- assertEquals("Didn't produce insert action", TYPE_INSERT, type);
- }
-
- public void testValuesDiffUpdate() {
- final ContentValues before = new ContentValues();
- before.put(Data._ID, TEST_PHONE_ID);
- before.put(Phone.NUMBER, TEST_PHONE_NUMBER_1);
-
- final ValuesDelta values = ValuesDelta.fromBefore(before);
- values.put(Phone.NUMBER, TEST_PHONE_NUMBER_2);
-
- // Should produce an update action
- final Builder builder = values.buildDiff(Data.CONTENT_URI);
- final int type = builder.build().getType();
- assertEquals("Didn't produce update action", TYPE_UPDATE, type);
- }
-
public void testValuesDiffDelete() {
final ContentValues before = new ContentValues();
before.put(Data._ID, TEST_PHONE_ID);
diff --git a/tests/src/com/android/contacts/RawContactModifierTests.java b/tests/src/com/android/contacts/RawContactModifierTests.java
index 8046ed6..ce69b55 100644
--- a/tests/src/com/android/contacts/RawContactModifierTests.java
+++ b/tests/src/com/android/contacts/RawContactModifierTests.java
@@ -38,20 +38,20 @@
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
-import com.android.contacts.model.AccountTypeManager;
+import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.model.RawContact;
import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.RawContactDelta.ValuesDelta;
+import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.model.RawContactDeltaList;
import com.android.contacts.model.RawContactModifier;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountType.EditType;
-import com.android.contacts.model.account.ExchangeAccountType;
-import com.android.contacts.model.account.GoogleAccountType;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.tests.mocks.ContactsMockContext;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountType.EditType;
+import com.android.contacts.common.model.account.ExchangeAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
+import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.contacts.common.test.mocks.ContactsMockContext;
import com.android.contacts.tests.mocks.MockAccountTypeManager;
-import com.android.contacts.tests.mocks.MockContentProvider;
+import com.android.contacts.common.test.mocks.MockContentProvider;
import com.google.common.collect.Lists;
import java.util.ArrayList;
@@ -91,14 +91,14 @@
this.accountType = TEST_ACCOUNT_TYPE;
final DataKind nameKind = new DataKind(StructuredName.CONTENT_ITEM_TYPE,
- R.string.nameLabelsGroup, -1, true, -1);
+ R.string.nameLabelsGroup, -1, true);
nameKind.typeOverallMax = 1;
addKind(nameKind);
// Phone allows maximum 2 home, 1 work, and unlimited other, with
// constraint of 5 numbers maximum.
final DataKind phoneKind = new DataKind(
- Phone.CONTENT_ITEM_TYPE, -1, 10, true, -1);
+ Phone.CONTENT_ITEM_TYPE, -1, 10, true);
phoneKind.typeOverallMax = 5;
phoneKind.typeColumn = Phone.TYPE;
@@ -115,24 +115,21 @@
addKind(phoneKind);
// Email is unlimited
- final DataKind emailKind = new DataKind(
- Email.CONTENT_ITEM_TYPE, -1, 10, true, -1);
+ final DataKind emailKind = new DataKind(Email.CONTENT_ITEM_TYPE, -1, 10, true);
emailKind.typeOverallMax = -1;
emailKind.fieldList = Lists.newArrayList();
emailKind.fieldList.add(new EditField(Email.DATA, -1, -1));
addKind(emailKind);
// IM is only one
- final DataKind imKind = new DataKind(Im.CONTENT_ITEM_TYPE, -1, 10,
- true, -1);
+ final DataKind imKind = new DataKind(Im.CONTENT_ITEM_TYPE, -1, 10, true);
imKind.typeOverallMax = 1;
imKind.fieldList = Lists.newArrayList();
imKind.fieldList.add(new EditField(Im.DATA, -1, -1));
addKind(imKind);
// Organization is only one
- final DataKind orgKind = new DataKind(
- Organization.CONTENT_ITEM_TYPE, -1, 10, true, -1);
+ final DataKind orgKind = new DataKind(Organization.CONTENT_ITEM_TYPE, -1, 10, true);
orgKind.typeOverallMax = 1;
orgKind.fieldList = Lists.newArrayList();
orgKind.fieldList.add(new EditField(Organization.COMPANY, -1, -1));
@@ -180,7 +177,7 @@
contact.put(RawContacts.ACCOUNT_NAME, TEST_ACCOUNT_NAME);
contact.put(RawContacts.ACCOUNT_TYPE, TEST_ACCOUNT_TYPE);
- final RawContact before = new RawContact(mContext, contact);
+ final RawContact before = new RawContact(contact);
for (ContentValues values : entries) {
before.addDataItemValues(values);
}
@@ -524,7 +521,9 @@
// Try creating a contact without any child entries
final RawContactDelta state = getRawContact(null);
- final RawContactDeltaList set = RawContactDeltaList.fromSingle(state);
+ final RawContactDeltaList set = new RawContactDeltaList();
+ set.add(state);
+
// Build diff, expecting single insert
final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
@@ -552,7 +551,8 @@
// Try creating a contact with single empty entry
final RawContactDelta state = getRawContact(null);
RawContactModifier.insertChild(state, kindPhone, typeHome);
- final RawContactDeltaList set = RawContactDeltaList.fromSingle(state);
+ final RawContactDeltaList set = new RawContactDeltaList();
+ set.add(state);
// Build diff, expecting two insert operations
final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
@@ -596,7 +596,8 @@
second.put(Phone.NUMBER, TEST_PHONE);
final RawContactDelta state = getRawContact(TEST_ID, first, second);
- final RawContactDeltaList set = RawContactDeltaList.fromSingle(state);
+ final RawContactDeltaList set = new RawContactDeltaList();
+ set.add(state);
// Build diff, expecting no changes
final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
@@ -661,7 +662,8 @@
first.put(Phone.NUMBER, TEST_PHONE);
final RawContactDelta state = getRawContact(TEST_ID, first);
- final RawContactDeltaList set = RawContactDeltaList.fromSingle(state);
+ final RawContactDeltaList set = new RawContactDeltaList();
+ set.add(state);
// Build diff, expecting no changes
final ArrayList<ContentProviderOperation> diff = Lists.newArrayList();
diff --git a/tests/src/com/android/contacts/activities/PeopleActivityTest.java b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
index 11fccd1..4ede006 100644
--- a/tests/src/com/android/contacts/activities/PeopleActivityTest.java
+++ b/tests/src/com/android/contacts/activities/PeopleActivityTest.java
@@ -32,22 +32,22 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.widget.TextView;
-import com.android.contacts.ContactPhotoManager;
import com.android.contacts.ContactsApplication;
import com.android.contacts.R;
+import com.android.contacts.common.ContactPhotoManager;
+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;
import com.android.contacts.detail.ContactDetailFragment;
import com.android.contacts.interactions.TestLoaderManager;
import com.android.contacts.list.ContactBrowseListFragment;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.BaseAccountType;
+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.common.model.account.BaseAccountType;
import com.android.contacts.test.InjectedServices;
-import com.android.contacts.tests.mocks.ContactsMockContext;
import com.android.contacts.tests.mocks.MockAccountTypeManager;
import com.android.contacts.tests.mocks.MockContactPhotoManager;
-import com.android.contacts.tests.mocks.MockContentProvider;
-import com.android.contacts.tests.mocks.MockContentProvider.Query;
import com.android.contacts.tests.mocks.MockSharedPreferences;
import com.android.contacts.util.PhoneCapabilityTester;
@@ -103,11 +103,11 @@
accountType.accountType = TEST_ACCOUNT_TYPE;
AccountWithDataSet account = new AccountWithDataSet(TEST_ACCOUNT, TEST_ACCOUNT_TYPE, null);
-
- services.setSystemService(AccountTypeManager.ACCOUNT_TYPE_SERVICE,
- new MockAccountTypeManager(
- new AccountType[] { accountType }, new AccountWithDataSet[] { account }));
ContactsApplication.injectServices(services);
+
+ final MockAccountTypeManager mockManager = new MockAccountTypeManager(
+ new AccountType[] { accountType }, new AccountWithDataSet[] { account });
+ AccountTypeManager.setInstanceForTest(mockManager);
}
@Override
diff --git a/tests/src/com/android/contacts/calllog/CallLogAdapterTest.java b/tests/src/com/android/contacts/calllog/CallLogAdapterTest.java
deleted file mode 100644
index 5bc31f9..0000000
--- a/tests/src/com/android/contacts/calllog/CallLogAdapterTest.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.calllog;
-
-import android.content.Context;
-import android.database.MatrixCursor;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.View;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Unit tests for {@link CallLogAdapter}.
- */
-@SmallTest
-public class CallLogAdapterTest extends AndroidTestCase {
- private static final String TEST_NUMBER = "12345678";
- private static final String TEST_NAME = "name";
- private static final String TEST_NUMBER_LABEL = "label";
- private static final int TEST_NUMBER_TYPE = 1;
- private static final String TEST_COUNTRY_ISO = "US";
-
- /** The object under test. */
- private TestCallLogAdapter mAdapter;
-
- private MatrixCursor mCursor;
- private View mView;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- // Use a call fetcher that does not do anything.
- CallLogAdapter.CallFetcher fakeCallFetcher = new CallLogAdapter.CallFetcher() {
- @Override
- public void fetchCalls() {}
- };
-
- ContactInfoHelper fakeContactInfoHelper =
- new ContactInfoHelper(getContext(), TEST_COUNTRY_ISO) {
- @Override
- public ContactInfo lookupNumber(String number, String countryIso) {
- ContactInfo info = new ContactInfo();
- info.number = number;
- info.formattedNumber = number;
- return info;
- }
- };
-
- mAdapter = new TestCallLogAdapter(getContext(), fakeCallFetcher, fakeContactInfoHelper);
- // The cursor used in the tests to store the entries to display.
- mCursor = new MatrixCursor(CallLogQuery.EXTENDED_PROJECTION);
- mCursor.moveToFirst();
- // The views into which to store the data.
- mView = new View(getContext());
- mView.setTag(CallLogListItemViews.createForTest(getContext()));
- }
-
- @Override
- protected void tearDown() throws Exception {
- mAdapter = null;
- mCursor = null;
- mView = null;
- super.tearDown();
- }
-
- public void testBindView_NoCallLogCacheNorMemoryCache_EnqueueRequest() {
- mCursor.addRow(createCallLogEntry());
-
- // Bind the views of a single row.
- mAdapter.bindStandAloneView(mView, getContext(), mCursor);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
-
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
- // It is for the number we need to show.
- assertEquals(TEST_NUMBER, request.number);
- // It has the right country.
- assertEquals(TEST_COUNTRY_ISO, request.countryIso);
- // Since there is nothing in the cache, it is an immediate request.
- assertTrue("should be immediate", request.immediate);
- }
-
- public void testBindView_CallLogCacheButNoMemoryCache_EnqueueRequest() {
- mCursor.addRow(createCallLogEntryWithCachedValues());
-
- // Bind the views of a single row.
- mAdapter.bindStandAloneView(mView, getContext(), mCursor);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
-
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
- // The values passed to the request, match the ones in the call log cache.
- assertEquals(TEST_NAME, request.callLogInfo.name);
- assertEquals(1, request.callLogInfo.type);
- assertEquals(TEST_NUMBER_LABEL, request.callLogInfo.label);
- }
-
-
- public void testBindView_NoCallLogButMemoryCache_EnqueueRequest() {
- mCursor.addRow(createCallLogEntry());
- mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
-
- // Bind the views of a single row.
- mAdapter.bindStandAloneView(mView, getContext(), mCursor);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
-
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
- // Since there is something in the cache, it is not an immediate request.
- assertFalse("should not be immediate", request.immediate);
- }
-
- public void testBindView_BothCallLogAndMemoryCache_NoEnqueueRequest() {
- mCursor.addRow(createCallLogEntryWithCachedValues());
- mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
-
- // Bind the views of a single row.
- mAdapter.bindStandAloneView(mView, getContext(), mCursor);
-
- // Cache and call log are up-to-date: no need to request update.
- assertEquals(0, mAdapter.requests.size());
- }
-
- public void testBindView_MismatchBetwenCallLogAndMemoryCache_EnqueueRequest() {
- mCursor.addRow(createCallLogEntryWithCachedValues());
-
- // Contact info contains a different name.
- ContactInfo info = createContactInfo();
- info.name = "new name";
- mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, info);
-
- // Bind the views of a single row.
- mAdapter.bindStandAloneView(mView, getContext(), mCursor);
-
- // There is one request for contact details.
- assertEquals(1, mAdapter.requests.size());
-
- TestCallLogAdapter.Request request = mAdapter.requests.get(0);
- // Since there is something in the cache, it is not an immediate request.
- assertFalse("should not be immediate", request.immediate);
- }
-
- /** Returns a contact info with default values. */
- private ContactInfo createContactInfo() {
- ContactInfo info = new ContactInfo();
- info.number = TEST_NUMBER;
- info.name = TEST_NAME;
- info.type = TEST_NUMBER_TYPE;
- info.label = TEST_NUMBER_LABEL;
- return info;
- }
-
- /** Returns a call log entry without cached values. */
- private Object[] createCallLogEntry() {
- Object[] values = CallLogQueryTestUtils.createTestExtendedValues();
- values[CallLogQuery.NUMBER] = TEST_NUMBER;
- values[CallLogQuery.COUNTRY_ISO] = TEST_COUNTRY_ISO;
- return values;
- }
-
- /** Returns a call log entry with a cached values. */
- private Object[] createCallLogEntryWithCachedValues() {
- Object[] values = createCallLogEntry();
- values[CallLogQuery.CACHED_NAME] = TEST_NAME;
- values[CallLogQuery.CACHED_NUMBER_TYPE] = TEST_NUMBER_TYPE;
- values[CallLogQuery.CACHED_NUMBER_LABEL] = TEST_NUMBER_LABEL;
- return values;
- }
-
- /**
- * Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
- */
- // TODO: This would be better done by splitting the contact lookup into a collaborator class
- // instead.
- private static final class TestCallLogAdapter extends CallLogAdapter {
- public static class Request {
- public final String number;
- public final String countryIso;
- public final ContactInfo callLogInfo;
- public final boolean immediate;
-
- public Request(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- this.number = number;
- this.countryIso = countryIso;
- this.callLogInfo = callLogInfo;
- this.immediate = immediate;
- }
- }
-
- public final List<Request> requests = Lists.newArrayList();
-
- public TestCallLogAdapter(Context context, CallFetcher callFetcher,
- ContactInfoHelper contactInfoHelper) {
- super(context, callFetcher, contactInfoHelper);
- }
-
- @Override
- void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
- boolean immediate) {
- requests.add(new Request(number, countryIso, callLogInfo, immediate));
- }
- }
-}
diff --git a/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java b/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java
deleted file mode 100644
index 0eaca60..0000000
--- a/tests/src/com/android/contacts/calllog/CallLogFragmentTest.java
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.calllog;
-
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.ComponentName;
-import android.content.ContentUris;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.MatrixCursor;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.net.Uri;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.VoicemailContract;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View;
-import android.widget.FrameLayout;
-
-import com.android.contacts.CallDetailActivity;
-import com.android.contacts.R;
-import com.android.contacts.test.FragmentTestActivity;
-import com.android.internal.telephony.CallerInfo;
-
-import java.util.Date;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.Random;
-
-/**
- * Tests for the contact call list activity.
- *
- * Running all tests:
- *
- * runtest contacts
- * or
- * adb shell am instrument \
- * -w com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@LargeTest
-public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<FragmentTestActivity> {
- private static final int RAND_DURATION = -1;
- private static final long NOW = -1L;
-
- /** A test value for the URI of a contact. */
- private static final Uri TEST_LOOKUP_URI = Uri.parse("content://contacts/2");
- /** A test value for the country ISO of the phone number in the call log. */
- private static final String TEST_COUNTRY_ISO = "US";
- /** A phone number to be used in tests. */
- private static final String TEST_NUMBER = "12125551000";
- /** The formatted version of {@link #TEST_NUMBER}. */
- private static final String TEST_FORMATTED_NUMBER = "1 212-555-1000";
-
- /** The activity in which we are hosting the fragment. */
- private FragmentTestActivity mActivity;
- private CallLogFragment mFragment;
- private FrameLayout mParentView;
- /**
- * The adapter used by the fragment to build the rows in the call log. We use it with our own in
- * memory database.
- */
- private CallLogAdapter mAdapter;
- private String mVoicemail;
-
- // In memory array to hold the rows corresponding to the 'calls' table.
- private MatrixCursor mCursor;
- private int mIndex; // Of the next row.
-
- private Random mRnd;
-
- // References to the icons bitmaps used to build the list are stored in a
- // map mIcons. The keys to retrieve the icons are:
- // Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE and Calls.MISSED_TYPE.
- private HashMap<Integer, Bitmap> mCallTypeIcons;
-
- // An item in the call list. All the methods performing checks use it.
- private CallLogListItemViews mItem;
- // The list of views representing the data in the DB. View are in
- // reverse order compare to the DB.
- private View[] mList;
-
- public CallLogFragmentTest() {
- super("com.android.contacts", FragmentTestActivity.class);
- mIndex = 1;
- mRnd = new Random();
- }
-
- @Override
- public void setUp() {
- mActivity = getActivity();
- // Needed by the CallLogFragment.
- mActivity.setTheme(R.style.DialtactsTheme);
-
- // Create the fragment and load it into the activity.
- mFragment = new CallLogFragment();
- FragmentManager fragmentManager = mActivity.getFragmentManager();
- FragmentTransaction transaction = fragmentManager.beginTransaction();
- transaction.add(R.id.fragment, mFragment);
- transaction.commit();
- // Wait for the fragment to be loaded.
- getInstrumentation().waitForIdleSync();
-
- mVoicemail = TelephonyManager.getDefault().getVoiceMailNumber();
- mAdapter = mFragment.getAdapter();
- // Do not process requests for details during tests. This would start a background thread,
- // which makes the tests flaky.
- mAdapter.disableRequestProcessingForTest();
- mAdapter.stopRequestProcessing();
- mParentView = new FrameLayout(mActivity);
- mCursor = new MatrixCursor(CallLogQuery.EXTENDED_PROJECTION);
- buildIconMap();
- }
-
- /**
- * Checks that the call icon is not visible for private and
- * unknown numbers.
- * Use 2 passes, one where new views are created and one where
- * half of the total views are updated and the other half created.
- */
- @MediumTest
- public void testCallViewIsNotVisibleForPrivateAndUnknownNumbers() {
- final int SIZE = 100;
- mList = new View[SIZE];
-
- // Insert the first batch of entries.
- mCursor.moveToFirst();
- insertRandomEntries(SIZE / 2);
- int startOfSecondBatch = mCursor.getPosition();
-
- buildViewListFromDb();
- checkCallStatus();
-
- // Append the rest of the entries. We keep the first set of
- // views around so they get updated and not built from
- // scratch, this exposes some bugs that are not there when the
- // call log is launched for the 1st time but show up when the
- // call log gets updated afterwards.
- mCursor.move(startOfSecondBatch);
- insertRandomEntries(SIZE / 2);
-
- buildViewListFromDb();
- checkCallStatus();
- }
-
- @MediumTest
- public void testCallAndGroupViews_GroupView() {
- mCursor.moveToFirst();
- insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newGroupView(getActivity(), mParentView);
- mAdapter.bindGroupView(view, getActivity(), mCursor, 3, false);
- assertNotNull(view.findViewById(R.id.secondary_action_icon));
- }
-
- @MediumTest
- public void testCallAndGroupViews_StandAloneView() {
- mCursor.moveToFirst();
- insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
- assertNotNull(view.findViewById(R.id.secondary_action_icon));
- }
-
- @MediumTest
- public void testCallAndGroupViews_ChildView() {
- mCursor.moveToFirst();
- insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newChildView(getActivity(), mParentView);
- mAdapter.bindChildView(view, getActivity(), mCursor);
- assertNotNull(view.findViewById(R.id.secondary_action_icon));
- }
-
- @MediumTest
- public void testBindView_NumberOnlyNoCache() {
- mCursor.moveToFirst();
- insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, TEST_NUMBER);
- }
-
- @MediumTest
- public void testBindView_NumberOnlyDbCachedFormattedNumber() {
- mCursor.moveToFirst();
- Object[] values = getValuesToInsert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- values[CallLogQuery.CACHED_FORMATTED_NUMBER] = TEST_FORMATTED_NUMBER;
- insertValues(values);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, TEST_FORMATTED_NUMBER);
- }
-
- @MediumTest
- public void testBindView_WithCachedName() {
- mCursor.moveToFirst();
- insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_HOME, "");
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, "John Doe");
- assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
- }
-
- @MediumTest
- public void testBindView_UriNumber() {
- mCursor.moveToFirst();
- insertWithCachedValues("sip:johndoe@gmail.com", NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_HOME, "");
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, "John Doe");
- assertNumberAndLabelAre(views, "sip:johndoe@gmail.com", null);
- }
-
- @MediumTest
- public void testBindView_HomeLabel() {
- mCursor.moveToFirst();
- insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_HOME, "");
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, "John Doe");
- assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
- }
-
- @MediumTest
- public void testBindView_WorkLabel() {
- mCursor.moveToFirst();
- insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_WORK, "");
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, "John Doe");
- assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_WORK));
- }
-
- @MediumTest
- public void testBindView_CustomLabel() {
- mCursor.moveToFirst();
- String numberLabel = "My label";
- insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_CUSTOM, numberLabel);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertNameIs(views, "John Doe");
- assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, numberLabel);
- }
-
- @MediumTest
- public void testBindView_WithQuickContactBadge() {
- mCursor.moveToFirst();
- insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
- "John Doe", Phone.TYPE_HOME, "");
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertTrue(views.quickContactView.isEnabled());
- }
-
- @MediumTest
- public void testBindView_WithoutQuickContactBadge() {
- mCursor.moveToFirst();
- insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- assertFalse(views.quickContactView.isEnabled());
- }
-
- @MediumTest
- public void testBindView_CallButton() {
- mCursor.moveToFirst();
- insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- IntentProvider intentProvider = (IntentProvider) views.secondaryActionView.getTag();
- Intent intent = intentProvider.getIntent(mActivity);
- // Starts a call.
- assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction());
- // To the entry's number.
- assertEquals(Uri.parse("tel:" + TEST_NUMBER), intent.getData());
- }
-
- @MediumTest
- public void testBindView_PlayButton() {
- mCursor.moveToFirst();
- insertVoicemail(TEST_NUMBER, NOW, 0);
- View view = mAdapter.newStandAloneView(getActivity(), mParentView);
- mAdapter.bindStandAloneView(view, getActivity(), mCursor);
-
- CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- IntentProvider intentProvider = (IntentProvider) views.secondaryActionView.getTag();
- Intent intent = intentProvider.getIntent(mActivity);
- // Starts the call detail activity.
- assertEquals(new ComponentName(mActivity, CallDetailActivity.class),
- intent.getComponent());
- // With the given entry.
- assertEquals(ContentUris.withAppendedId(Calls.CONTENT_URI_WITH_VOICEMAIL, 1),
- intent.getData());
- // With the URI of the voicemail.
- assertEquals(
- ContentUris.withAppendedId(VoicemailContract.Voicemails.CONTENT_URI, 1),
- intent.getParcelableExtra(CallDetailActivity.EXTRA_VOICEMAIL_URI));
- // And starts playback.
- assertTrue(
- intent.getBooleanExtra(CallDetailActivity.EXTRA_VOICEMAIL_START_PLAYBACK, false));
- }
-
- /** Returns the label associated with a given phone type. */
- private CharSequence getTypeLabel(int phoneType) {
- return Phone.getTypeLabel(getActivity().getResources(), phoneType, "");
- }
-
- //
- // HELPERS to check conditions on the DB/views
- //
- /**
- * Go over all the views in the list and check that the Call
- * icon's visibility matches the nature of the number.
- */
- private void checkCallStatus() {
- for (int i = 0; i < mList.length; i++) {
- if (null == mList[i]) {
- break;
- }
- mItem = (CallLogListItemViews) mList[i].getTag();
- String number = getPhoneNumberForListEntry(i);
- if (CallerInfo.PRIVATE_NUMBER.equals(number) ||
- CallerInfo.UNKNOWN_NUMBER.equals(number)) {
- assertFalse(View.VISIBLE == mItem.secondaryActionView.getVisibility());
- } else {
- assertEquals(View.VISIBLE, mItem.secondaryActionView.getVisibility());
- }
- }
- }
-
-
- //
- // HELPERS to setup the tests.
- //
-
- /**
- * Get the Bitmap from the icons in the contacts package.
- */
- private Bitmap getBitmap(String resName) {
- Resources r = mActivity.getResources();
- int resid = r.getIdentifier(resName, "drawable", "com.android.contacts");
- BitmapDrawable d = (BitmapDrawable) r.getDrawable(resid);
- assertNotNull(d);
- return d.getBitmap();
- }
-
- /**
- * Fetch all the icons we need in tests from the contacts app and store them in a map.
- */
- private void buildIconMap() {
- mCallTypeIcons = new HashMap<Integer, Bitmap>(3);
-
- mCallTypeIcons.put(Calls.INCOMING_TYPE, getBitmap("ic_call_incoming_holo_dark"));
- mCallTypeIcons.put(Calls.MISSED_TYPE, getBitmap("ic_call_missed_holo_dark"));
- mCallTypeIcons.put(Calls.OUTGOING_TYPE, getBitmap("ic_call_outgoing_holo_dark"));
- }
-
- //
- // HELPERS to build/update the call entries (views) from the DB.
- //
-
- /**
- * Read the DB and foreach call either update the existing view if
- * one exists already otherwise create one.
- * The list is build from a DESC view of the DB (last inserted entry is first).
- */
- private void buildViewListFromDb() {
- int i = 0;
- mCursor.moveToLast();
- while(!mCursor.isBeforeFirst()) {
- if (null == mList[i]) {
- mList[i] = mAdapter.newStandAloneView(mActivity, mParentView);
- }
- mAdapter.bindStandAloneView(mList[i], mActivity, mCursor);
- mCursor.moveToPrevious();
- i++;
- }
- }
-
- /** Returns the number associated with the given entry in {{@link #mList}. */
- private String getPhoneNumberForListEntry(int index) {
- // The entries are added backward, so count from the end of the cursor.
- mCursor.moveToPosition(mCursor.getCount() - index - 1);
- return mCursor.getString(CallLogQuery.NUMBER);
- }
-
- //
- // HELPERS to insert numbers in the call log DB.
- //
-
- /**
- * Insert a certain number of random numbers in the DB. Makes sure
- * there is at least one private and one unknown number in the DB.
- * @param num Of entries to be inserted.
- */
- private void insertRandomEntries(int num) {
- if (num < 10) {
- throw new IllegalArgumentException("num should be >= 10");
- }
- boolean privateOrUnknownOrVm[];
- privateOrUnknownOrVm = insertRandomRange(0, num - 2);
-
- if (privateOrUnknownOrVm[0] && privateOrUnknownOrVm[1]) {
- insertRandomRange(num - 2, num);
- } else {
- insertPrivate(NOW, RAND_DURATION);
- insertUnknown(NOW, RAND_DURATION);
- }
- }
-
- /**
- * Insert a new call entry in the test DB.
- *
- * It includes the values for the cached contact associated with the number.
- *
- * @param number The phone number. For unknown and private numbers,
- * use CallerInfo.UNKNOWN_NUMBER or CallerInfo.PRIVATE_NUMBER.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- * @param type Either Call.OUTGOING_TYPE or Call.INCOMING_TYPE or Call.MISSED_TYPE.
- * @param cachedName the name of the contact with this number
- * @param cachedNumberType the type of the number, from the contact with this number
- * @param cachedNumberLabel the label of the number, from the contact with this number
- */
- private void insertWithCachedValues(String number, long date, int duration, int type,
- String cachedName, int cachedNumberType, String cachedNumberLabel) {
- insert(number, date, duration, type);
- ContactInfo contactInfo = new ContactInfo();
- contactInfo.lookupUri = TEST_LOOKUP_URI;
- contactInfo.name = cachedName;
- contactInfo.type = cachedNumberType;
- contactInfo.label = cachedNumberLabel;
- String formattedNumber = PhoneNumberUtils.formatNumber(number, TEST_COUNTRY_ISO);
- if (formattedNumber == null) {
- formattedNumber = number;
- }
- contactInfo.formattedNumber = formattedNumber;
- contactInfo.normalizedNumber = number;
- contactInfo.photoId = 0;
- mAdapter.injectContactInfoForTest(number, TEST_COUNTRY_ISO, contactInfo);
- }
-
- /**
- * Insert a new call entry in the test DB.
- * @param number The phone number. For unknown and private numbers,
- * use CallerInfo.UNKNOWN_NUMBER or CallerInfo.PRIVATE_NUMBER.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- * @param type Either Call.OUTGOING_TYPE or Call.INCOMING_TYPE or Call.MISSED_TYPE.
- */
- private void insert(String number, long date, int duration, int type) {
- insertValues(getValuesToInsert(number, date, duration, type));
- }
-
- /** Inserts the given values in the cursor. */
- private void insertValues(Object[] values) {
- mCursor.addRow(values);
- ++mIndex;
- }
-
- /**
- * Returns the values for a new call entry.
- *
- * @param number The phone number. For unknown and private numbers,
- * use CallerInfo.UNKNOWN_NUMBER or CallerInfo.PRIVATE_NUMBER.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- * @param type Either Call.OUTGOING_TYPE or Call.INCOMING_TYPE or Call.MISSED_TYPE.
- */
- private Object[] getValuesToInsert(String number, long date, int duration, int type) {
- Object[] values = CallLogQueryTestUtils.createTestExtendedValues();
- values[CallLogQuery.ID] = mIndex;
- values[CallLogQuery.NUMBER] = number;
- values[CallLogQuery.DATE] = date == NOW ? new Date().getTime() : date;
- values[CallLogQuery.DURATION] = duration < 0 ? mRnd.nextInt(10 * 60) : duration;
- if (mVoicemail != null && mVoicemail.equals(number)) {
- assertEquals(Calls.OUTGOING_TYPE, type);
- }
- values[CallLogQuery.CALL_TYPE] = type;
- values[CallLogQuery.COUNTRY_ISO] = TEST_COUNTRY_ISO;
- values[CallLogQuery.SECTION] = CallLogQuery.SECTION_OLD_ITEM;
- return values;
- }
-
- /**
- * Insert a new voicemail entry in the test DB.
- * @param number The phone number. For unknown and private numbers,
- * use CallerInfo.UNKNOWN_NUMBER or CallerInfo.PRIVATE_NUMBER.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- */
- private void insertVoicemail(String number, long date, int duration) {
- Object[] values = getValuesToInsert(number, date, duration, Calls.VOICEMAIL_TYPE);
- // Must have the same index as the row.
- values[CallLogQuery.VOICEMAIL_URI] =
- ContentUris.withAppendedId(VoicemailContract.Voicemails.CONTENT_URI, mIndex);
- insertValues(values);
- }
-
- /**
- * Insert a new private call entry in the test DB.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- */
- private void insertPrivate(long date, int duration) {
- insert(CallerInfo.PRIVATE_NUMBER, date, duration, Calls.INCOMING_TYPE);
- }
-
- /**
- * Insert a new unknown call entry in the test DB.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- */
- private void insertUnknown(long date, int duration) {
- insert(CallerInfo.UNKNOWN_NUMBER, date, duration, Calls.INCOMING_TYPE);
- }
-
- /**
- * Insert a new call to voicemail entry in the test DB.
- * @param date In millisec since epoch. Use NOW to use the current time.
- * @param duration In seconds of the call. Use RAND_DURATION to pick a random one.
- */
- private void insertCalltoVoicemail(long date, int duration) {
- // mVoicemail may be null
- if (mVoicemail != null) {
- insert(mVoicemail, date, duration, Calls.OUTGOING_TYPE);
- }
- }
-
- /**
- * Insert a range [start, end) of random numbers in the DB. For
- * each row, there is a 1/10 probability that the number will be
- * marked as PRIVATE or UNKNOWN or VOICEMAIL. For regular numbers, a number is
- * inserted, its last 4 digits will be the number of the iteration
- * in the range.
- * @param start Of the range.
- * @param end Of the range (excluded).
- * @return An array with 2 booleans [0 = private number, 1 =
- * unknown number, 2 = voicemail] to indicate if at least one
- * private or unknown or voicemail number has been inserted. Since
- * the numbers are random some tests may want to enforce the
- * insertion of such numbers.
- */
- // TODO: Should insert numbers with contact entries too.
- private boolean[] insertRandomRange(int start, int end) {
- boolean[] privateOrUnknownOrVm = new boolean[] {false, false, false};
-
- for (int i = start; i < end; i++ ) {
- int type = mRnd.nextInt(10);
-
- if (0 == type) {
- insertPrivate(NOW, RAND_DURATION);
- privateOrUnknownOrVm[0] = true;
- } else if (1 == type) {
- insertUnknown(NOW, RAND_DURATION);
- privateOrUnknownOrVm[1] = true;
- } else if (2 == type) {
- insertCalltoVoicemail(NOW, RAND_DURATION);
- privateOrUnknownOrVm[2] = true;
- } else {
- int inout = mRnd.nextBoolean() ? Calls.OUTGOING_TYPE : Calls.INCOMING_TYPE;
- String number = new Formatter().format("1800123%04d", i).toString();
- insert(number, NOW, RAND_DURATION, inout);
- }
- }
- return privateOrUnknownOrVm;
- }
-
- /** Asserts that the name text view is shown and contains the given text. */
- private void assertNameIs(CallLogListItemViews views, String name) {
- assertEquals(View.VISIBLE, views.phoneCallDetailsViews.nameView.getVisibility());
- assertEquals(name, views.phoneCallDetailsViews.nameView.getText());
- }
-
- /** Asserts that the number and label text view contains the given text. */
- private void assertNumberAndLabelAre(CallLogListItemViews views, CharSequence number,
- CharSequence label) {
- assertEquals(View.VISIBLE, views.phoneCallDetailsViews.numberView.getVisibility());
- assertEquals(number, views.phoneCallDetailsViews.numberView.getText().toString());
-
- assertEquals(label == null ? View.GONE : View.VISIBLE,
- views.phoneCallDetailsViews.labelView.getVisibility());
- if (label != null) {
- assertEquals(label, views.phoneCallDetailsViews.labelView.getText().toString());
- }
- }
-}
diff --git a/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java b/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java
deleted file mode 100644
index 1fced0b..0000000
--- a/tests/src/com/android/contacts/calllog/CallLogGroupBuilderTest.java
+++ /dev/null
@@ -1,345 +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.calllog;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.database.MatrixCursor;
-import android.provider.CallLog.Calls;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.List;
-
-/**
- * Unit tests for {@link CallLogGroupBuilder}
- */
-@SmallTest
-public class CallLogGroupBuilderTest extends AndroidTestCase {
- /** A phone number for testing. */
- private static final String TEST_NUMBER1 = "14125551234";
- /** A phone number for testing. */
- private static final String TEST_NUMBER2 = "14125555555";
-
- /** The object under test. */
- private CallLogGroupBuilder mBuilder;
- /** Records the created groups. */
- private FakeGroupCreator mFakeGroupCreator;
- /** Cursor to store the values. */
- private MatrixCursor mCursor;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mFakeGroupCreator = new FakeGroupCreator();
- mBuilder = new CallLogGroupBuilder(mFakeGroupCreator);
- createCursor();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mCursor = null;
- mBuilder = null;
- mFakeGroupCreator = null;
- super.tearDown();
- }
-
- public void testAddGroups_NoCalls() {
- mBuilder.addGroups(mCursor);
- assertEquals(0, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_OneCall() {
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(0, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_TwoCallsNotMatching() {
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogEntry(TEST_NUMBER2, Calls.INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(0, mFakeGroupCreator.groups.size());
- }
-
- public void testAddGroups_ThreeCallsMatching() {
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, false, mFakeGroupCreator.groups.get(0));
- }
-
- public void testAddGroups_MatchingIncomingAndOutgoing() {
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogEntry(TEST_NUMBER1, Calls.OUTGOING_TYPE);
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, 3, false, mFakeGroupCreator.groups.get(0));
- }
-
- public void testAddGroups_HeaderSplitsGroups() {
- addNewCallLogHeader();
- addNewCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addNewCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogHeader();
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- addOldCallLogEntry(TEST_NUMBER1, Calls.INCOMING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(2, mFakeGroupCreator.groups.size());
- assertGroupIs(1, 2, false, mFakeGroupCreator.groups.get(0));
- assertGroupIs(4, 2, false, mFakeGroupCreator.groups.get(1));
- }
-
- public void testAddGroups_Voicemail() {
- // Does not group with other types of calls, include voicemail themselves.
- assertCallsAreNotGrouped(Calls.VOICEMAIL_TYPE, Calls.MISSED_TYPE);
- //assertCallsAreNotGrouped(Calls.VOICEMAIL_TYPE, Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- assertCallsAreNotGrouped(Calls.VOICEMAIL_TYPE, Calls.VOICEMAIL_TYPE);
- assertCallsAreNotGrouped(Calls.VOICEMAIL_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreNotGrouped(Calls.VOICEMAIL_TYPE, Calls.OUTGOING_TYPE);
- }
-
- public void testAddGroups_Missed() {
- // Groups with one or more missed calls.
- assertCallsAreGrouped(Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- assertCallsAreGrouped(Calls.MISSED_TYPE, Calls.MISSED_TYPE, Calls.MISSED_TYPE);
- // Does not group with other types of calls.
- assertCallsAreNotGrouped(Calls.MISSED_TYPE, Calls.VOICEMAIL_TYPE);
- assertCallsAreGrouped(Calls.MISSED_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreGrouped(Calls.MISSED_TYPE, Calls.OUTGOING_TYPE);
- }
-
- public void testAddGroups_Incoming() {
- // Groups with one or more incoming or outgoing.
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.MISSED_TYPE);
- // Does not group with voicemail and missed calls.
- assertCallsAreNotGrouped(Calls.INCOMING_TYPE, Calls.VOICEMAIL_TYPE);
- }
-
- public void testAddGroups_Outgoing() {
- // Groups with one or more incoming or outgoing.
- assertCallsAreGrouped(Calls.OUTGOING_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreGrouped(Calls.OUTGOING_TYPE, Calls.OUTGOING_TYPE);
- assertCallsAreGrouped(Calls.OUTGOING_TYPE, Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE);
- assertCallsAreGrouped(Calls.OUTGOING_TYPE, Calls.OUTGOING_TYPE, Calls.INCOMING_TYPE);
- assertCallsAreGrouped(Calls.INCOMING_TYPE, Calls.MISSED_TYPE);
- // Does not group with voicemail and missed calls.
- assertCallsAreNotGrouped(Calls.INCOMING_TYPE, Calls.VOICEMAIL_TYPE);
- }
-
- public void testAddGroups_Mixed() {
- addMultipleOldCallLogEntries(TEST_NUMBER1,
- Calls.VOICEMAIL_TYPE, // Stand-alone
- Calls.INCOMING_TYPE, // Group 1: 1-4
- Calls.OUTGOING_TYPE,
- Calls.MISSED_TYPE,
- Calls.MISSED_TYPE,
- Calls.VOICEMAIL_TYPE, // Stand-alone
- Calls.INCOMING_TYPE, // Stand-alone
- Calls.VOICEMAIL_TYPE, // Stand-alone
- Calls.MISSED_TYPE, // Group 2: 8-10
- Calls.MISSED_TYPE,
- Calls.OUTGOING_TYPE);
- mBuilder.addGroups(mCursor);
- assertEquals(2, mFakeGroupCreator.groups.size());
- assertGroupIs(1, 4, false, mFakeGroupCreator.groups.get(0));
- assertGroupIs(8, 3, false, mFakeGroupCreator.groups.get(1));
- }
-
- public void testEqualPhoneNumbers() {
- // Identical.
- assertTrue(mBuilder.equalNumbers("6505555555", "6505555555"));
- assertTrue(mBuilder.equalNumbers("650 555 5555", "650 555 5555"));
- // Formatting.
- assertTrue(mBuilder.equalNumbers("6505555555", "650 555 5555"));
- assertTrue(mBuilder.equalNumbers("6505555555", "(650) 555-5555"));
- assertTrue(mBuilder.equalNumbers("650 555 5555", "(650) 555-5555"));
- // Short codes.
- assertTrue(mBuilder.equalNumbers("55555", "55555"));
- assertTrue(mBuilder.equalNumbers("55555", "555 55"));
- // Different numbers.
- assertFalse(mBuilder.equalNumbers("6505555555", "650555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "6505555551"));
- assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 555"));
- assertFalse(mBuilder.equalNumbers("650 555 5555", "650 555 5551"));
- assertFalse(mBuilder.equalNumbers("55555", "5555"));
- assertFalse(mBuilder.equalNumbers("55555", "55551"));
- // SIP addresses.
- assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@host.com"));
- assertTrue(mBuilder.equalNumbers("6505555555@host.com", "6505555555@HOST.COM"));
- assertTrue(mBuilder.equalNumbers("user@host.com", "user@host.com"));
- assertTrue(mBuilder.equalNumbers("user@host.com", "user@HOST.COM"));
- assertFalse(mBuilder.equalNumbers("USER@host.com", "user@host.com"));
- assertFalse(mBuilder.equalNumbers("user@host.com", "user@host1.com"));
- // SIP address vs phone number.
- assertFalse(mBuilder.equalNumbers("6505555555@host.com", "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "6505555555@host.com"));
- assertFalse(mBuilder.equalNumbers("user@host.com", "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", "user@host.com"));
- // Nulls.
- assertTrue(mBuilder.equalNumbers(null, null));
- assertFalse(mBuilder.equalNumbers(null, "6505555555"));
- assertFalse(mBuilder.equalNumbers("6505555555", null));
- assertFalse(mBuilder.equalNumbers(null, "6505555555@host.com"));
- assertFalse(mBuilder.equalNumbers("6505555555@host.com", null));
- }
-
- public void testCompareSipAddresses() {
- // Identical.
- assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@host.com"));
- assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@host.com"));
- // Host is case insensitive.
- assertTrue(mBuilder.compareSipAddresses("6505555555@host.com", "6505555555@HOST.COM"));
- assertTrue(mBuilder.compareSipAddresses("user@host.com", "user@HOST.COM"));
- // Userinfo is case sensitive.
- assertFalse(mBuilder.compareSipAddresses("USER@host.com", "user@host.com"));
- // Different hosts.
- assertFalse(mBuilder.compareSipAddresses("user@host.com", "user@host1.com"));
- // Different users.
- assertFalse(mBuilder.compareSipAddresses("user1@host.com", "user@host.com"));
- // Nulls.
- assertTrue(mBuilder.compareSipAddresses(null, null));
- assertFalse(mBuilder.compareSipAddresses(null, "6505555555@host.com"));
- assertFalse(mBuilder.compareSipAddresses("6505555555@host.com", null));
- }
-
- /** Creates (or recreates) the cursor used to store the call log content for the tests. */
- private void createCursor() {
- mCursor = new MatrixCursor(CallLogQuery.EXTENDED_PROJECTION);
- }
-
- /** Clears the content of the {@link FakeGroupCreator} used in the tests. */
- private void clearFakeGroupCreator() {
- mFakeGroupCreator.groups.clear();
- }
-
- /** Asserts that calls of the given types are grouped together into a single group. */
- private void assertCallsAreGrouped(int... types) {
- createCursor();
- clearFakeGroupCreator();
- addMultipleOldCallLogEntries(TEST_NUMBER1, types);
- mBuilder.addGroups(mCursor);
- assertEquals(1, mFakeGroupCreator.groups.size());
- assertGroupIs(0, types.length, false, mFakeGroupCreator.groups.get(0));
-
- }
-
- /** Asserts that calls of the given types are not grouped together at all. */
- private void assertCallsAreNotGrouped(int... types) {
- createCursor();
- clearFakeGroupCreator();
- addMultipleOldCallLogEntries(TEST_NUMBER1, types);
- mBuilder.addGroups(mCursor);
- assertEquals(0, mFakeGroupCreator.groups.size());
- }
-
- /** Adds a set of calls with the given types, all from the same number, in the old section. */
- private void addMultipleOldCallLogEntries(String number, int... types) {
- for (int type : types) {
- addOldCallLogEntry(number, type);
- }
- }
-
- /** Adds a call with the given number and type to the old section of the call log. */
- private void addOldCallLogEntry(String number, int type) {
- addCallLogEntry(number, type, CallLogQuery.SECTION_OLD_ITEM);
- }
-
- /** Adds a call with the given number and type to the new section of the call log. */
- private void addNewCallLogEntry(String number, int type) {
- addCallLogEntry(number, type, CallLogQuery.SECTION_NEW_ITEM);
- }
-
- /** Adds a call log entry with the given number and type to the cursor. */
- private void addCallLogEntry(String number, int type, int section) {
- if (section != CallLogQuery.SECTION_NEW_ITEM
- && section != CallLogQuery.SECTION_OLD_ITEM) {
- throw new IllegalArgumentException("not an item section: " + section);
- }
- mCursor.moveToNext();
- Object[] values = CallLogQueryTestUtils.createTestExtendedValues();
- values[CallLogQuery.ID] = mCursor.getPosition();
- values[CallLogQuery.NUMBER] = number;
- values[CallLogQuery.CALL_TYPE] = type;
- values[CallLogQuery.SECTION] = section;
- mCursor.addRow(values);
- }
-
- /** Adds the old section header to the call log. */
- private void addOldCallLogHeader() {
- addCallLogHeader(CallLogQuery.SECTION_OLD_HEADER);
- }
-
- /** Adds the new section header to the call log. */
- private void addNewCallLogHeader() {
- addCallLogHeader(CallLogQuery.SECTION_NEW_HEADER);
- }
-
- /** Adds a call log entry with a header to the cursor. */
- private void addCallLogHeader(int section) {
- if (section != CallLogQuery.SECTION_NEW_HEADER
- && section != CallLogQuery.SECTION_OLD_HEADER) {
- throw new IllegalArgumentException("not a header section: " + section);
- }
- mCursor.moveToNext();
- Object[] values = CallLogQueryTestUtils.createTestExtendedValues();
- values[CallLogQuery.ID] = mCursor.getPosition();
- values[CallLogQuery.SECTION] = section;
- mCursor.addRow(values);
- }
-
- /** Asserts that the group matches the given values. */
- private void assertGroupIs(int cursorPosition, int size, boolean expanded, GroupSpec group) {
- assertEquals(cursorPosition, group.cursorPosition);
- assertEquals(size, group.size);
- assertEquals(expanded, group.expanded);
- }
-
- /** Defines an added group. Used by the {@link FakeGroupCreator}. */
- private static class GroupSpec {
- /** The starting position of the group. */
- public final int cursorPosition;
- /** The number of elements in the group. */
- public final int size;
- /** Whether the group should be initially expanded. */
- public final boolean expanded;
-
- public GroupSpec(int cursorPosition, int size, boolean expanded) {
- this.cursorPosition = cursorPosition;
- this.size = size;
- this.expanded = expanded;
- }
- }
-
- /** Fake implementation of a GroupCreator which stores the created groups in a member field. */
- private static class FakeGroupCreator implements CallLogGroupBuilder.GroupCreator {
- /** The list of created groups. */
- public final List<GroupSpec> groups = newArrayList();
-
- @Override
- public void addGroup(int cursorPosition, int size, boolean expanded) {
- groups.add(new GroupSpec(cursorPosition, size, expanded));
- }
- }
-}
diff --git a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
deleted file mode 100644
index a184f75..0000000
--- a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.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.calllog;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.CallLog.Calls;
-import android.test.AndroidTestCase;
-import android.view.View;
-
-import com.android.contacts.PhoneCallDetails;
-import com.android.contacts.PhoneCallDetailsHelper;
-import com.android.internal.telephony.CallerInfo;
-
-/**
- * Unit tests for {@link CallLogListItemHelper}.
- */
-public class CallLogListItemHelperTest extends AndroidTestCase {
- /** A test phone number for phone calls. */
- private static final String TEST_NUMBER = "14125555555";
- /** The formatted version of {@link #TEST_NUMBER}. */
- private static final String TEST_FORMATTED_NUMBER = "1-412-255-5555";
- /** A test date value for phone calls. */
- private static final long TEST_DATE = 1300000000;
- /** A test duration value for phone calls. */
- private static final long TEST_DURATION = 62300;
- /** A test voicemail number. */
- private static final String TEST_VOICEMAIL_NUMBER = "123";
- /** The country ISO name used in the tests. */
- private static final String TEST_COUNTRY_ISO = "US";
- /** The geocoded location used in the tests. */
- private static final String TEST_GEOCODE = "United States";
-
- /** The object under test. */
- private CallLogListItemHelper mHelper;
-
- /** The views used in the tests. */
- private CallLogListItemViews mViews;
- private PhoneNumberHelper mPhoneNumberHelper;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Context context = getContext();
- Resources resources = context.getResources();
- CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
- mPhoneNumberHelper = new TestPhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
- PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
- resources, callTypeHelper, mPhoneNumberHelper);
- mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources);
- mViews = CallLogListItemViews.createForTest(context);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mHelper = null;
- mViews = null;
- super.tearDown();
- }
-
- public void testSetPhoneCallDetails() {
- setPhoneCallDetailsWithNumber("12125551234", "1-212-555-1234");
- assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_Unknown() {
- setPhoneCallDetailsWithNumber(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER);
- assertNoCallButton();
- }
-
- public void testSetPhoneCallDetails_Private() {
- setPhoneCallDetailsWithNumber(CallerInfo.PRIVATE_NUMBER, CallerInfo.PRIVATE_NUMBER);
- assertNoCallButton();
- }
-
- public void testSetPhoneCallDetails_Payphone() {
- setPhoneCallDetailsWithNumber(CallerInfo.PAYPHONE_NUMBER, CallerInfo.PAYPHONE_NUMBER);
- assertNoCallButton();
- }
-
- public void testSetPhoneCallDetails_VoicemailNumber() {
- setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, TEST_VOICEMAIL_NUMBER);
- assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_ReadVoicemail() {
- setPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
- assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_UnreadVoicemail() {
- setUnreadPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
- assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
- }
-
- public void testSetPhoneCallDetails_VoicemailFromUnknown() {
- setPhoneCallDetailsWithNumberAndType(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER,
- Calls.VOICEMAIL_TYPE);
- assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
- }
-
- /** Asserts that the whole call area is gone. */
- private void assertNoCallButton() {
- assertEquals(View.GONE, mViews.secondaryActionView.getVisibility());
- assertEquals(View.GONE, mViews.dividerView.getVisibility());
- }
-
- /** Sets the details of a phone call using the specified phone number. */
- private void setPhoneCallDetailsWithNumber(String number, String formattedNumber) {
- setPhoneCallDetailsWithNumberAndType(number, formattedNumber, Calls.INCOMING_TYPE);
- }
-
- /** Sets the details of a phone call using the specified phone number. */
- private void setPhoneCallDetailsWithNumberAndType(String number, String formattedNumber,
- int callType) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, TEST_GEOCODE,
- new int[]{ callType }, TEST_DATE, TEST_DURATION),
- false);
- }
-
- /** Sets the details of a phone call using the specified call type. */
- private void setPhoneCallDetailsWithTypes(int... types) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, types, TEST_DATE, TEST_DURATION),
- false);
- }
-
- /** Sets the details of a phone call using the specified call type. */
- private void setUnreadPhoneCallDetailsWithTypes(int... types) {
- mHelper.setPhoneCallDetails(mViews,
- new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO,
- TEST_GEOCODE, types, TEST_DATE, TEST_DURATION),
- true);
- }
-}
diff --git a/tests/src/com/android/contacts/calllog/CallLogQueryTestUtils.java b/tests/src/com/android/contacts/calllog/CallLogQueryTestUtils.java
deleted file mode 100644
index a88bf4f..0000000
--- a/tests/src/com/android/contacts/calllog/CallLogQueryTestUtils.java
+++ /dev/null
@@ -1,46 +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.calllog;
-
-import static junit.framework.Assert.assertEquals;
-
-import android.provider.CallLog.Calls;
-
-import junit.framework.Assert;
-
-/**
- * Helper class to create test values for {@link CallLogQuery}.
- */
-public class CallLogQueryTestUtils {
- public static Object[] createTestValues() {
- Object[] values = new Object[]{
- 0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null, null,
- 0L, null, 0,
- };
- assertEquals(CallLogQuery._PROJECTION.length, values.length);
- return values;
- }
-
- public static Object[] createTestExtendedValues() {
- Object[] values = new Object[]{
- 0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null, null,
- 0L, null, 1, CallLogQuery.SECTION_OLD_ITEM
- };
- Assert.assertEquals(CallLogQuery.EXTENDED_PROJECTION.length, values.length);
- return values;
- }
-}
diff --git a/tests/src/com/android/contacts/calllog/TestPhoneNumberHelper.java b/tests/src/com/android/contacts/calllog/TestPhoneNumberHelper.java
deleted file mode 100644
index 2bbd978..0000000
--- a/tests/src/com/android/contacts/calllog/TestPhoneNumberHelper.java
+++ /dev/null
@@ -1,37 +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.calllog;
-
-import android.content.res.Resources;
-
-/**
- * Modified version of {@link PhoneNumberHelper} to be used in tests that allows injecting the
- * voicemail number.
- */
-public final class TestPhoneNumberHelper extends PhoneNumberHelper {
- private CharSequence mVoicemailNumber;
-
- public TestPhoneNumberHelper(Resources resources, CharSequence voicemailNumber) {
- super(resources);
- mVoicemailNumber = voicemailNumber;
- }
-
- @Override
- public boolean isVoicemailNumber(CharSequence number) {
- return mVoicemailNumber.equals(number);
- }
-}
\ No newline at end of file
diff --git a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
index b1d1daa..1747add 100644
--- a/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
+++ b/tests/src/com/android/contacts/detail/ContactDetailFragmentTests.java
@@ -44,7 +44,7 @@
values.put(Im.TYPE, Im.TYPE_HOME);
values.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
values.put(Im.DATA, TEST_ADDRESS);
- ImDataItem im = (ImDataItem) DataItem.createFrom(null, values);
+ ImDataItem im = (ImDataItem) DataItem.createFrom(values);
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
ContactDetailFragment.buildImActions(mContext, entry, im);
@@ -62,7 +62,7 @@
values.put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK);
values.put(Im.DATA, TEST_ADDRESS);
values.put(Im.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO);
- ImDataItem im = (ImDataItem) DataItem.createFrom(null, values);
+ ImDataItem im = (ImDataItem) DataItem.createFrom(values);
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
ContactDetailFragment.buildImActions(mContext, entry, im);
@@ -82,7 +82,7 @@
values.put(Im.DATA, TEST_ADDRESS);
values.put(Im.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO |
Im.CAPABILITY_HAS_VOICE);
- ImDataItem im = (ImDataItem) DataItem.createFrom(null, values);
+ ImDataItem im = (ImDataItem) DataItem.createFrom(values);
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
ContactDetailFragment.buildImActions(mContext, entry, im);
@@ -102,13 +102,14 @@
values.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM);
values.put(Im.CUSTOM_PROTOCOL, TEST_PROTOCOL);
values.put(Im.DATA, TEST_ADDRESS);
- ImDataItem im = (ImDataItem) DataItem.createFrom(null, values);
+ ImDataItem im = (ImDataItem) DataItem.createFrom(values);
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
- ContactDetailFragment.buildImActions(mContext, entry, im);
- assertEquals(Intent.ACTION_SENDTO, entry.intent.getAction());
+ final Intent imIntent =
+ ContactDetailFragment.getCustomIMIntent(im, Im.PROTOCOL_CUSTOM);
+ assertEquals(Intent.ACTION_SENDTO, imIntent.getAction());
- final Uri data = entry.intent.getData();
+ final Uri data = imIntent.getData();
assertEquals("imto", data.getScheme());
assertEquals(TEST_PROTOCOL, data.getAuthority());
assertEquals(TEST_ADDRESS, data.getPathSegments().get(0));
@@ -127,7 +128,7 @@
values.put(Email.CHAT_CAPABILITY, Im.CAPABILITY_HAS_VOICE | Im.CAPABILITY_HAS_VIDEO |
Im.CAPABILITY_HAS_VOICE);
ImDataItem im = ImDataItem.createFromEmail(
- (EmailDataItem) DataItem.createFrom(null, values));
+ (EmailDataItem) DataItem.createFrom(values));
DetailViewEntry entry = new ContactDetailFragment.DetailViewEntry();
ContactDetailFragment.buildImActions(mContext, entry, im);
diff --git a/tests/src/com/android/contacts/dialpad/UnicodeDialerKeyListenerTest.java b/tests/src/com/android/contacts/dialpad/UnicodeDialerKeyListenerTest.java
deleted file mode 100644
index 3dbe18c..0000000
--- a/tests/src/com/android/contacts/dialpad/UnicodeDialerKeyListenerTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.dialpad;
-
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.dialpad.UnicodeDialerKeyListener;
-
-import junit.framework.TestCase;
-/**
- * Test case for {@link UnicodeDialerKeyListener}.
- *
- * adb shell am instrument -w -e class com.android.contacts.dialpad.UnicodeDialerKeyListenerTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class UnicodeDialerKeyListenerTest extends TestCase {
- private static UnicodeDialerKeyListener mUnicodeDialerKeyListener;
-
- // Pasted numeric digits should remain unchanged
- public void testNumericDigits() {
- // The last 3 arguments don't matter because {@link NumberKeyListener} doesn't care
- // about dest, dstart, dend in
- // public CharSequence filter (CharSequence source, int start, int end,
- // Spanned dest, int dstart, int dend)
- // anyway. This applies to all tests.
- assertEquals(null, mUnicodeDialerKeyListener.filter("111222333", 0, 9, null, 0, 0));
- }
-
- // Pasted Arabic digits should be converted to ascii digits
- public void testArabicDigits() {
- assertEquals("0123456789", mUnicodeDialerKeyListener.filter("٠١٢٣٤٥٦٧٨٩", 0, 10,
- null, 0, 0));
- }
-
- // Pasted Farsi(Persian) digits should be converted to ascii digits
- // Note the difference in digits 4, 5 and 6 when compared to arabic. The rest of the digits
- // look the same compared to the Arabic digits but they actually have different unicode codes.
- public void testFarsiDigits() {
- assertEquals("0123456789", mUnicodeDialerKeyListener.filter("۰۱۲۳۴۵۶۷۸۹", 0, 10,
- null, 0, 0));
- }
-
- // This is a rare use case but we should make sure it works all the same.
- public void testCombinationDigits() {
- assertEquals("15102849177", mUnicodeDialerKeyListener.filter("۱510٢٨٤۹۱۷۷", 0, 11,
- null, 0, 0));
- }
-
- // Test that a normal digit string with dashes is returned unfiltered
- public void testDashes() {
- assertEquals(null, mUnicodeDialerKeyListener.filter("1510-284-9177", 0, 13,
- null, 0, 0));
- }
-
- @Override
- protected void setUp() throws Exception {
- mUnicodeDialerKeyListener = UnicodeDialerKeyListener.INSTANCE;
- }
-}
diff --git a/tests/src/com/android/contacts/editor/ContactEditorUtilsTest.java b/tests/src/com/android/contacts/editor/ContactEditorUtilsTest.java
index 9f2d49b..0d38c95 100644
--- a/tests/src/com/android/contacts/editor/ContactEditorUtilsTest.java
+++ b/tests/src/com/android/contacts/editor/ContactEditorUtilsTest.java
@@ -20,8 +20,8 @@
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.SmallTest;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.tests.mocks.MockAccountTypeManager;
import com.google.common.collect.Sets;
diff --git a/tests/src/com/android/contacts/format/FormatUtilsTests.java b/tests/src/com/android/contacts/format/FormatUtilsTests.java
deleted file mode 100644
index c3e6236..0000000
--- a/tests/src/com/android/contacts/format/FormatUtilsTests.java
+++ /dev/null
@@ -1,114 +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.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-/**
- * Test cases for format utility methods.
- */
-@SmallTest
-public class FormatUtilsTests extends AndroidTestCase {
-
- public void testOverlapPoint() throws Exception {
- assertEquals(2, FormatUtils.overlapPoint("abcde", "cdefg"));
- assertEquals(-1, FormatUtils.overlapPoint("John Doe", "John Doe"));
- assertEquals(5, FormatUtils.overlapPoint("John Doe", "Doe, John"));
- assertEquals(-1, FormatUtils.overlapPoint("Mr. John Doe", "Mr. Doe, John"));
- assertEquals(13, FormatUtils.overlapPoint("John Herbert Doe", "Doe, John Herbert"));
- }
-
- public void testCopyToCharArrayBuffer() {
- CharArrayBuffer charArrayBuffer = new CharArrayBuffer(20);
- checkCopyToCharArrayBuffer(charArrayBuffer, null, 0);
- checkCopyToCharArrayBuffer(charArrayBuffer, "", 0);
- checkCopyToCharArrayBuffer(charArrayBuffer, "test", 4);
- // Check that it works after copying something into it.
- checkCopyToCharArrayBuffer(charArrayBuffer, "", 0);
- checkCopyToCharArrayBuffer(charArrayBuffer, "test", 4);
- checkCopyToCharArrayBuffer(charArrayBuffer, null, 0);
- // This requires a resize of the actual buffer.
- checkCopyToCharArrayBuffer(charArrayBuffer, "test test test test test", 24);
- }
-
- public void testCharArrayBufferToString() {
- checkCharArrayBufferToString("");
- checkCharArrayBufferToString("test");
- checkCharArrayBufferToString("test test test test test");
- }
-
- /** Checks that copying a string into a {@link CharArrayBuffer} and back works correctly. */
- private void checkCharArrayBufferToString(String text) {
- CharArrayBuffer buffer = new CharArrayBuffer(20);
- FormatUtils.copyToCharArrayBuffer(text, buffer);
- assertEquals(text, FormatUtils.charArrayBufferToString(buffer));
- }
-
- /**
- * Checks that copying into the char array buffer copies the values correctly.
- */
- private void checkCopyToCharArrayBuffer(CharArrayBuffer buffer, String value, int length) {
- FormatUtils.copyToCharArrayBuffer(value, buffer);
- assertEquals(length, buffer.sizeCopied);
- for (int index = 0; index < length; ++index) {
- assertEquals(value.charAt(index), buffer.data[index]);
- }
- }
-
- public void testIndexOfWordPrefix_NullPrefix() {
- assertEquals(-1, FormatUtils.indexOfWordPrefix("test", null));
- }
-
- public void testIndexOfWordPrefix_NullText() {
- assertEquals(-1, FormatUtils.indexOfWordPrefix(null, "TE".toCharArray()));
- }
-
- public void testIndexOfWordPrefix_MatchingPrefix() {
- checkIndexOfWordPrefix("test", "TE", 0);
- checkIndexOfWordPrefix("Test", "TE", 0);
- checkIndexOfWordPrefix("TEst", "TE", 0);
- checkIndexOfWordPrefix("TEST", "TE", 0);
- checkIndexOfWordPrefix("a test", "TE", 2);
- checkIndexOfWordPrefix("test test", "TE", 0);
- checkIndexOfWordPrefix("a test test", "TE", 2);
- }
-
- public void testIndexOfWordPrefix_NotMatchingPrefix() {
- checkIndexOfWordPrefix("test", "TA", -1);
- checkIndexOfWordPrefix("test type theme", "TA", -1);
- checkIndexOfWordPrefix("atest retest pretest", "TEST", -1);
- checkIndexOfWordPrefix("tes", "TEST", -1);
- }
-
- public void testIndexOfWordPrefix_LowerCase() {
- // The prefix match only works if the prefix is un upper case.
- checkIndexOfWordPrefix("test", "te", -1);
- }
-
- /**
- * Checks that getting the index of a word prefix in the given text returns the expected index.
- *
- * @param text the text in which to look for the word
- * @param wordPrefix the word prefix to look for
- * @param expectedIndex the expected value to be returned by the function
- */
- private void checkIndexOfWordPrefix(String text, String wordPrefix, int expectedIndex) {
- assertEquals(expectedIndex, FormatUtils.indexOfWordPrefix(text, wordPrefix.toCharArray()));
- }
-}
diff --git a/tests/src/com/android/contacts/format/PrefixHighligherTest.java b/tests/src/com/android/contacts/format/PrefixHighligherTest.java
deleted file mode 100644
index 7f6e491..0000000
--- a/tests/src/com/android/contacts/format/PrefixHighligherTest.java
+++ /dev/null
@@ -1,85 +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.test.suitebuilder.annotation.SmallTest;
-
-import junit.framework.TestCase;
-
-/**
- * Unit tests for {@link PrefixHighlighter}.
- */
-@SmallTest
-public class PrefixHighligherTest extends TestCase {
- private static final int TEST_PREFIX_HIGHLIGHT_COLOR = 0xFF0000;
-
- /** The object under test. */
- private PrefixHighlighter mPrefixHighlighter;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mPrefixHighlighter = new PrefixHighlighter(TEST_PREFIX_HIGHLIGHT_COLOR);
- }
-
- public void testApply_EmptyPrefix() {
- CharSequence seq = mPrefixHighlighter.apply("", new char[0]);
- SpannedTestUtils.assertNotSpanned(seq, "");
-
- seq = mPrefixHighlighter.apply("test", new char[0]);
- SpannedTestUtils.assertNotSpanned(seq, "test");
- }
-
- public void testSetText_MatchingPrefix() {
- final char[] charArray = "TE".toCharArray();
-
- CharSequence seq = mPrefixHighlighter.apply("test", charArray);
- SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
-
- seq = mPrefixHighlighter.apply("Test", charArray);
- SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
-
- seq = mPrefixHighlighter.apply("TEst", charArray);
- SpannedTestUtils.assertPrefixSpan(seq, 0, 1);
-
- seq = mPrefixHighlighter.apply("a test", charArray);
- SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
- }
-
- public void testSetText_NotMatchingPrefix() {
- final CharSequence seq = mPrefixHighlighter.apply("test", "TA".toCharArray());
- SpannedTestUtils.assertNotSpanned(seq, "test");
- }
-
- public void testSetText_FirstMatch() {
- final CharSequence seq = mPrefixHighlighter.apply("a test's tests are not tests",
- "TE".toCharArray());
- SpannedTestUtils.assertPrefixSpan(seq, 2, 3);
- }
-
- public void testSetText_NoMatchingMiddleOfWord() {
- final char[] charArray = "TE".toCharArray();
- CharSequence seq = mPrefixHighlighter.apply("atest", charArray);
- SpannedTestUtils.assertNotSpanned(seq, "atest");
-
- seq = mPrefixHighlighter.apply("atest otest", charArray);
- SpannedTestUtils.assertNotSpanned(seq, "atest otest");
-
- seq = mPrefixHighlighter.apply("atest test", charArray);
- SpannedTestUtils.assertPrefixSpan(seq, 6, 7);
- }
-}
diff --git a/tests/src/com/android/contacts/format/SpannedTestUtils.java b/tests/src/com/android/contacts/format/SpannedTestUtils.java
deleted file mode 100644
index 6fa028d..0000000
--- a/tests/src/com/android/contacts/format/SpannedTestUtils.java
+++ /dev/null
@@ -1,83 +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.test.suitebuilder.annotation.SmallTest;
-import android.text.Html;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.ForegroundColorSpan;
-import android.widget.TextView;
-
-import junit.framework.Assert;
-
-/**
- * Utility class to check the value of spanned text in text views.
- */
-@SmallTest
-public class SpannedTestUtils {
- /**
- * Checks that the text contained in the text view matches the given HTML text.
- *
- * @param expectedHtmlText the expected text to be in the text view
- * @param textView the text view from which to get the text
- */
- public static void checkHtmlText(String expectedHtmlText, TextView textView) {
- String actualHtmlText = Html.toHtml((Spanned) textView.getText());
- if (TextUtils.isEmpty(expectedHtmlText)) {
- // If the text is empty, it does not add the <p></p> bits to it.
- Assert.assertEquals("", actualHtmlText);
- } else {
- Assert.assertEquals("<p dir=ltr>" + expectedHtmlText + "</p>\n", actualHtmlText);
- }
- }
-
-
- /**
- * Assert span exists in the correct location.
- *
- * @param seq The spannable string to check.
- * @param start The starting index.
- * @param end The ending index.
- */
- public static void assertPrefixSpan(CharSequence seq, int start, int end) {
- Assert.assertTrue(seq instanceof Spanned);
- Spanned spannable = (Spanned) seq;
-
- if (start > 0) {
- Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, 0, start - 1));
- }
- Assert.assertEquals(1, getNumForegroundColorSpansBetween(spannable, start, end));
- Assert.assertEquals(0, getNumForegroundColorSpansBetween(spannable, end + 1,
- spannable.length() - 1));
- }
-
- private static int getNumForegroundColorSpansBetween(Spanned value, int start, int end) {
- return value.getSpans(start, end, ForegroundColorSpan.class).length;
- }
-
- /**
- * Asserts that the given character sequence is not a Spanned object and text is correct.
- *
- * @param seq The sequence to check.
- * @param expected The expected text.
- */
- public static void assertNotSpanned(CharSequence seq, String expected) {
- Assert.assertFalse(seq instanceof Spanned);
- Assert.assertEquals(expected, seq);
- }
-}
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index fcbd83d..34f1e4b 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -26,16 +26,16 @@
import com.android.contacts.ContactsApplication;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.BaseAccountType;
-import com.android.contacts.test.FragmentTestActivity;
+import com.android.contacts.common.test.FragmentTestActivity;
+import com.android.contacts.common.test.IntegrationTestUtils;
+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;
+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.test.InjectedServices;
-import com.android.contacts.tests.mocks.ContactsMockContext;
import com.android.contacts.tests.mocks.MockAccountTypeManager;
-import com.android.contacts.tests.mocks.MockContentProvider;
-import com.android.contacts.tests.mocks.MockContentProvider.Query;
-import com.android.contacts.util.IntegrationTestUtils;
/**
* Tests for {@link ContactDeletionInteraction}.
@@ -98,11 +98,11 @@
}
};
writableAccountType.accountType = WRITABLE_ACCOUNT_TYPE;
-
- services.setSystemService(AccountTypeManager.ACCOUNT_TYPE_SERVICE,
- new MockAccountTypeManager(
- new AccountType[] { writableAccountType, readOnlyAccountType }, null));
ContactsApplication.injectServices(services);
+
+ final MockAccountTypeManager mockManager = new MockAccountTypeManager(
+ new AccountType[] { writableAccountType, readOnlyAccountType }, null);
+ AccountTypeManager.setInstanceForTest(mockManager);
mContactsProvider = mContext.getContactsProvider();
}
diff --git a/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java b/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java
deleted file mode 100644
index a82e0f6..0000000
--- a/tests/src/com/android/contacts/interactions/PhoneNumberInteractionTest.java
+++ /dev/null
@@ -1,259 +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.interactions;
-
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.DialogInterface.OnDismissListener;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.RawContacts;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.interactions.PhoneNumberInteraction.InteractionType;
-import com.android.contacts.interactions.PhoneNumberInteraction.PhoneItem;
-import com.android.contacts.tests.mocks.ContactsMockContext;
-import com.android.contacts.tests.mocks.MockContentProvider;
-import com.android.contacts.tests.mocks.MockContentProvider.Query;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for {@link PhoneNumberInteraction}.
- *
- * Running all tests:
- *
- * runtest contacts
- * or
- * adb shell am instrument \
- * -w com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class PhoneNumberInteractionTest extends InstrumentationTestCase {
-
- static {
- // AsyncTask class needs to be initialized on the main thread.
- AsyncTask.init();
- }
-
- private final static class TestPhoneNumberInteraction extends PhoneNumberInteraction {
- private ArrayList<PhoneItem> mPhoneList;
-
- public TestPhoneNumberInteraction(Context context, InteractionType interactionType,
- OnDismissListener dismissListener) {
- super(context, interactionType, dismissListener);
- }
-
- @Override
- void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
- this.mPhoneList = phoneList;
- }
- }
-
- private ContactsMockContext mContext;
- private MockContentProvider mContactsProvider;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mContext = new ContactsMockContext(getInstrumentation().getTargetContext());
- mContactsProvider = mContext.getContactsProvider();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mContactsProvider.verify();
- super.tearDown();
- }
-
- public void testSendSmsWhenOnlyOneNumberAvailable() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.SMS, null);
-
- interaction.startInteraction(contactUri);
- interaction.getLoader().waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:123", intent.getDataString());
- }
-
- public void testSendSmsWhenDataIdIsProvided() {
- Uri dataUri = ContentUris.withAppendedId(Data.CONTENT_URI, 1);
- expectQuery(dataUri, true /* isDataUri */ )
- .returnRow(1, "987", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.SMS, null);
-
- interaction.startInteraction(dataUri);
- interaction.getLoader().waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:987", intent.getDataString());
- }
-
- public void testSendSmsWhenThereIsPrimaryNumber() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(
- 1, "123", 0, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE)
- .returnRow(
- 2, "456", 1, null, null, Phone.TYPE_HOME, null, Phone.CONTENT_ITEM_TYPE);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.SMS, null);
-
- interaction.startInteraction(contactUri);
- interaction.getLoader().waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_SENDTO, intent.getAction());
- assertEquals("sms:456", intent.getDataString());
- }
-
- public void testShouldCollapseWith() {
- PhoneNumberInteraction.PhoneItem phoneItem1 = new PhoneNumberInteraction.PhoneItem();
- PhoneNumberInteraction.PhoneItem phoneItem2 = new PhoneNumberInteraction.PhoneItem();
-
- phoneItem1.phoneNumber = "123";
- phoneItem2.phoneNumber = "123";
-
- assertTrue(phoneItem1.shouldCollapseWith(phoneItem2));
-
- phoneItem1.phoneNumber = "123";
- phoneItem2.phoneNumber = "456";
-
- assertFalse(phoneItem1.shouldCollapseWith(phoneItem2));
-
- phoneItem1.phoneNumber = "123#,123";
- phoneItem2.phoneNumber = "123#,456";
-
- assertFalse(phoneItem1.shouldCollapseWith(phoneItem2));
- }
-
- public void testCallNumberWhenThereAreDuplicates() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, null, null, Phone.TYPE_HOME, null,
- Phone.CONTENT_ITEM_TYPE)
- .returnRow(2, "123", 0, null, null, Phone.TYPE_WORK, null,
- Phone.CONTENT_ITEM_TYPE);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.PHONE_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.getLoader().waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction());
- assertEquals("tel:123", intent.getDataString());
- }
-
- public void testCallWithSip() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "example@example.com", 0, null, null, Phone.TYPE_HOME, null,
- SipAddress.CONTENT_ITEM_TYPE);
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.PHONE_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.getLoader().waitForLoader();
-
- Intent intent = mContext.getIntentForStartActivity();
- assertNotNull(intent);
-
- assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction());
- assertEquals("sip:example%40example.com", intent.getDataString());
- }
-
- public void testShowDisambigDialogForCalling() {
- Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, 13);
- expectQuery(contactUri)
- .returnRow(1, "123", 0, "account", null, Phone.TYPE_HOME, "label",
- Phone.CONTENT_ITEM_TYPE)
- .returnRow(2, "456", 0, null, null, Phone.TYPE_WORK, null,
- Phone.CONTENT_ITEM_TYPE);
-
- TestPhoneNumberInteraction interaction = new TestPhoneNumberInteraction(
- mContext, InteractionType.PHONE_CALL, null);
-
- interaction.startInteraction(contactUri);
- interaction.getLoader().waitForLoader();
-
- List<PhoneItem> items = interaction.mPhoneList;
- assertNotNull(items);
- assertEquals(2, items.size());
-
- PhoneItem item = items.get(0);
- assertEquals(1, item.id);
- assertEquals("123", item.phoneNumber);
- assertEquals("account", item.accountType);
- assertEquals(Phone.TYPE_HOME, item.type);
- assertEquals("label", item.label);
- }
-
- private Query expectQuery(Uri contactUri) {
- return expectQuery(contactUri, false);
- }
-
- private Query expectQuery(Uri uri, boolean isDataUri) {
- final Uri dataUri;
- if (isDataUri) {
- dataUri = uri;
- } else {
- dataUri = Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY);
- }
- return mContactsProvider
- .expectQuery(dataUri)
- .withProjection(
- Phone._ID,
- Phone.NUMBER,
- Phone.IS_SUPER_PRIMARY,
- RawContacts.ACCOUNT_TYPE,
- RawContacts.DATA_SET,
- Phone.TYPE,
- Phone.LABEL,
- Phone.MIMETYPE)
- .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
- + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL");
- }
-}
diff --git a/tests/src/com/android/contacts/list/ContactListItemViewTest.java b/tests/src/com/android/contacts/list/ContactListItemViewTest.java
deleted file mode 100644
index 7847ebb..0000000
--- a/tests/src/com/android/contacts/list/ContactListItemViewTest.java
+++ /dev/null
@@ -1,141 +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.database.Cursor;
-import android.database.MatrixCursor;
-import android.provider.ContactsContract;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.widget.TextView;
-
-import com.android.contacts.activities.PeopleActivity;
-import com.android.contacts.format.SpannedTestUtils;
-import com.android.contacts.util.IntegrationTestUtils;
-
-
-/**
- * Unit tests for {@link ContactListItemView}.
- *
- * It uses an {@link ActivityInstrumentationTestCase2} for {@link PeopleActivity} because we need
- * to have the style properly setup.
- */
-@LargeTest
-public class ContactListItemViewTest extends ActivityInstrumentationTestCase2<PeopleActivity> {
- /** The HTML code used to mark the start of the highlighted part. */
- private static final String START = "<font color =\"#33b5e5\">";
- /** The HTML code used to mark the end of the highlighted part. */
- private static final String END = "</font>";
-
- private IntegrationTestUtils mUtils;
-
- public ContactListItemViewTest() {
- super(PeopleActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- // This test requires that the screen be turned on.
- mUtils = new IntegrationTestUtils(getInstrumentation());
- mUtils.acquireScreenWakeLock(getInstrumentation().getTargetContext());
- }
-
- @Override
- protected void tearDown() throws Exception {
- mUtils.releaseScreenWakeLock();
- super.tearDown();
- }
-
- public void testShowDisplayName_Simple() {
- Cursor cursor = createCursor("John Doe", "Doe John");
- ContactListItemView view = createView();
-
- view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
-
- assertEquals(view.getNameTextView().getText().toString(), "John Doe");
- }
-
- public void testShowDisplayName_Unknown() {
- Cursor cursor = createCursor("", "");
- ContactListItemView view = createView();
-
- view.setUnknownNameText("unknown");
- view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
-
- assertEquals(view.getNameTextView().getText().toString(), "unknown");
- }
-
- public void testShowDisplayName_WithPrefix() {
- Cursor cursor = createCursor("John Doe", "Doe John");
- ContactListItemView view = createView();
-
- view.setHighlightedPrefix("DOE".toCharArray());
- view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_PRIMARY);
-
- CharSequence seq = view.getNameTextView().getText();
- assertEquals("John Doe", seq.toString());
- SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
- }
-
- public void testShowDisplayName_WithPrefixReversed() {
- Cursor cursor = createCursor("John Doe", "Doe John");
- ContactListItemView view = createView();
-
- view.setHighlightedPrefix("DOE".toCharArray());
- view.showDisplayName(cursor, 0, ContactsContract.Preferences.DISPLAY_ORDER_ALTERNATIVE);
-
- CharSequence seq = view.getNameTextView().getText();
- assertEquals("John Doe", seq.toString());
- SpannedTestUtils.assertPrefixSpan(seq, 5, 7);
- }
-
- public void testSetSnippet_Prefix() {
- ContactListItemView view = createView();
- view.setHighlightedPrefix("TEST".toCharArray());
- view.setSnippet("This is a test");
-
- CharSequence seq = view.getSnippetView().getText();
-
- assertEquals("This is a test", seq.toString());
- SpannedTestUtils.assertPrefixSpan(seq, 10, 13);
- }
-
- /** Creates the view to be tested. */
- private ContactListItemView createView() {
- ContactListItemView view = new ContactListItemView(getActivity(), null);
- // Set the name view to use a Spannable to represent its content.
- view.getNameTextView().setText("", TextView.BufferType.SPANNABLE);
- return view;
- }
-
- /**
- * Creates a cursor containing a pair of values.
- *
- * @param name the name to insert in the first column of the cursor
- * @param alternateName the alternate name to insert in the second column of the cursor
- * @return the newly created cursor
- */
- private Cursor createCursor(String name, String alternateName) {
- MatrixCursor cursor = new MatrixCursor(new String[]{"Name", "AlternateName"});
- cursor.moveToFirst();
- cursor.addRow(new Object[]{name, alternateName});
- return cursor;
- }
-}
diff --git a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java b/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
deleted file mode 100644
index c8db85e..0000000
--- a/tests/src/com/android/contacts/model/AccountTypeManagerTest.java
+++ /dev/null
@@ -1,198 +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.model;
-
-import android.content.Context;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountTypeWithDataSet;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Test case for {@link AccountTypeManager}.
- *
- * adb shell am instrument -w -e class com.android.contacts.model.AccountTypeManagerTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class AccountTypeManagerTest extends AndroidTestCase {
- public void testFindAllInvitableAccountTypes() {
- final Context c = getContext();
-
- // Define account types.
- final AccountType typeA = new MockAccountType("type1", null, null);
- final AccountType typeB = new MockAccountType("type1", "minus", null);
- final AccountType typeC = new MockAccountType("type2", null, "c");
- final AccountType typeD = new MockAccountType("type2", "minus", "d");
-
- // Define users
- final AccountWithDataSet accountA1 = createAccountWithDataSet("a1", typeA);
- final AccountWithDataSet accountC1 = createAccountWithDataSet("c1", typeC);
- final AccountWithDataSet accountC2 = createAccountWithDataSet("c2", typeC);
- final AccountWithDataSet accountD1 = createAccountWithDataSet("d1", typeD);
-
- // empty - empty
- Map<AccountTypeWithDataSet, AccountType> types =
- AccountTypeManagerImpl.findAllInvitableAccountTypes(c,
- buildAccounts(), buildAccountTypes());
- assertEquals(0, types.size());
- try {
- types.clear();
- fail("Returned Map should be unmodifiable.");
- } catch (UnsupportedOperationException ok) {
- }
-
- // No invite support, no accounts
- verifyAccountTypes(
- buildAccounts(),
- buildAccountTypes(typeA, typeB)
- /* empty */
- );
-
- // No invite support, with accounts
- verifyAccountTypes(
- buildAccounts(accountA1),
- buildAccountTypes(typeA)
- /* empty */
- );
-
- // With invite support, no accounts
- verifyAccountTypes(
- buildAccounts(),
- buildAccountTypes(typeC)
- /* empty */
- );
-
- // With invite support, 1 account
- verifyAccountTypes(
- buildAccounts(accountC1),
- buildAccountTypes(typeC),
- typeC
- );
-
- // With invite support, 2 account
- verifyAccountTypes(
- buildAccounts(accountC1, accountC2),
- buildAccountTypes(typeC),
- typeC
- );
-
- // Combinations...
- verifyAccountTypes(
- buildAccounts(accountA1),
- buildAccountTypes(typeA, typeC)
- /* empty */
- );
-
- verifyAccountTypes(
- buildAccounts(accountC1, accountA1),
- buildAccountTypes(typeA, typeC),
- typeC
- );
-
- verifyAccountTypes(
- buildAccounts(accountC1, accountA1),
- buildAccountTypes(typeD, typeA, typeC),
- typeC
- );
-
- verifyAccountTypes(
- buildAccounts(accountC1, accountA1, accountD1),
- buildAccountTypes(typeD, typeA, typeC, typeB),
- typeC, typeD
- );
- }
-
- private static AccountWithDataSet createAccountWithDataSet(String name, AccountType type) {
- return new AccountWithDataSet(name, type.accountType, type.dataSet);
- }
-
- /**
- * Array of {@link AccountType} -> {@link Map}
- */
- private static Map<AccountTypeWithDataSet, AccountType> buildAccountTypes(AccountType... types) {
- final HashMap<AccountTypeWithDataSet, AccountType> result = Maps.newHashMap();
- for (AccountType type : types) {
- result.put(type.getAccountTypeAndDataSet(), type);
- }
- return result;
- }
-
- /**
- * Array of {@link AccountWithDataSet} -> {@link Collection}
- */
- private static Collection<AccountWithDataSet> buildAccounts(AccountWithDataSet... accounts) {
- final List<AccountWithDataSet> result = Lists.newArrayList();
- for (AccountWithDataSet account : accounts) {
- result.add(account);
- }
- return result;
- }
-
- /**
- * Executes {@link AccountTypeManagerImpl#findInvitableAccountTypes} and verifies the
- * result.
- */
- private void verifyAccountTypes(
- Collection<AccountWithDataSet> accounts,
- Map<AccountTypeWithDataSet, AccountType> types,
- AccountType... expectedInvitableTypes
- ) {
- Map<AccountTypeWithDataSet, AccountType> result =
- AccountTypeManagerImpl.findAllInvitableAccountTypes(getContext(), accounts, types);
- for (AccountType type : expectedInvitableTypes) {
- assertTrue("Result doesn't contain type=" + type.getAccountTypeAndDataSet(),
- result.containsKey(type.getAccountTypeAndDataSet()));
- }
- final int numExcessTypes = result.size() - expectedInvitableTypes.length;
- assertEquals("Result contains " + numExcessTypes + " excess type(s)", 0, numExcessTypes);
- }
-
- private static class MockAccountType extends AccountType {
- private final String mInviteContactActivityClassName;
-
- public MockAccountType(String type, String dataSet, String inviteContactActivityClassName) {
- accountType = type;
- this.dataSet = dataSet;
- mInviteContactActivityClassName = inviteContactActivityClassName;
- }
-
- @Override
- public String getInviteContactActivityClassName() {
- return mInviteContactActivityClassName;
- }
-
- @Override
- public boolean isGroupMembershipEditable() {
- return false;
- }
-
- @Override
- public boolean areContactsWritable() {
- return false;
- }
- }
-}
diff --git a/tests/src/com/android/contacts/model/AccountWithDataSetTest.java b/tests/src/com/android/contacts/model/AccountWithDataSetTest.java
deleted file mode 100644
index 1818c38..0000000
--- a/tests/src/com/android/contacts/model/AccountWithDataSetTest.java
+++ /dev/null
@@ -1,123 +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.model;
-
-import android.os.Bundle;
-import android.test.AndroidTestCase;
-import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-/**
- * Test case for {@link AccountWithDataSet}.
- *
- * adb shell am instrument -w -e class com.android.contacts.model.AccountWithDataSetTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class AccountWithDataSetTest extends AndroidTestCase {
- public void testStringifyAndUnstringify() {
- AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
- AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
- AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
-
- // stringify() & unstringify
- AccountWithDataSet a1r = AccountWithDataSet.unstringify(a1.stringify());
- AccountWithDataSet a2r = AccountWithDataSet.unstringify(a2.stringify());
- AccountWithDataSet a3r = AccountWithDataSet.unstringify(a3.stringify());
-
- assertEquals(a1, a1r);
- assertEquals(a2, a2r);
- assertEquals(a3, a3r);
-
- MoreAsserts.assertNotEqual(a1, a2r);
- MoreAsserts.assertNotEqual(a1, a3r);
-
- MoreAsserts.assertNotEqual(a2, a1r);
- MoreAsserts.assertNotEqual(a2, a3r);
-
- MoreAsserts.assertNotEqual(a3, a1r);
- MoreAsserts.assertNotEqual(a3, a2r);
- }
-
- public void testStringifyListAndUnstringify() {
- AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
- AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
- AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
-
- // Empty list
- assertEquals(0, stringifyListAndUnstringify().size());
-
- // 1 element
- final List<AccountWithDataSet> listA = stringifyListAndUnstringify(a1);
- assertEquals(1, listA.size());
- assertEquals(a1, listA.get(0));
-
- // 2 elements
- final List<AccountWithDataSet> listB = stringifyListAndUnstringify(a2, a1);
- assertEquals(2, listB.size());
- assertEquals(a2, listB.get(0));
- assertEquals(a1, listB.get(1));
-
- // 3 elements
- final List<AccountWithDataSet> listC = stringifyListAndUnstringify(a3, a2, a1);
- assertEquals(3, listC.size());
- assertEquals(a3, listC.get(0));
- assertEquals(a2, listC.get(1));
- assertEquals(a1, listC.get(2));
- }
-
- private static List<AccountWithDataSet> stringifyListAndUnstringify(
- AccountWithDataSet... accounts) {
-
- List<AccountWithDataSet> list = Lists.newArrayList(accounts);
- return AccountWithDataSet.unstringifyList(AccountWithDataSet.stringifyList(list));
- }
-
- public void testParcelable() {
- AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
- AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
- AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
-
- // Parcel them & unpercel.
- final Bundle b = new Bundle();
- b.putParcelable("a1", a1);
- b.putParcelable("a2", a2);
- b.putParcelable("a3", a3);
-
- AccountWithDataSet a1r = b.getParcelable("a1");
- AccountWithDataSet a2r = b.getParcelable("a2");
- AccountWithDataSet a3r = b.getParcelable("a3");
-
- assertEquals(a1, a1r);
- assertEquals(a2, a2r);
- assertEquals(a3, a3r);
-
- MoreAsserts.assertNotEqual(a1, a2r);
- MoreAsserts.assertNotEqual(a1, a3r);
-
- MoreAsserts.assertNotEqual(a2, a1r);
- MoreAsserts.assertNotEqual(a2, a3r);
-
- MoreAsserts.assertNotEqual(a3, a1r);
- MoreAsserts.assertNotEqual(a3, a2r);
- }
-}
diff --git a/tests/src/com/android/contacts/model/ContactLoaderTest.java b/tests/src/com/android/contacts/model/ContactLoaderTest.java
index 54d220f..60d6930 100644
--- a/tests/src/com/android/contacts/model/ContactLoaderTest.java
+++ b/tests/src/com/android/contacts/model/ContactLoaderTest.java
@@ -28,14 +28,14 @@
import android.test.LoaderTestCase;
import android.test.suitebuilder.annotation.LargeTest;
-import com.android.contacts.model.Contact;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountWithDataSet;
-import com.android.contacts.model.account.BaseAccountType;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.test.mocks.ContactsMockContext;
+import com.android.contacts.common.test.mocks.MockContentProvider;
+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.test.InjectedServices;
-import com.android.contacts.tests.mocks.ContactsMockContext;
import com.android.contacts.tests.mocks.MockAccountTypeManager;
-import com.android.contacts.tests.mocks.MockContentProvider;
/**
* Runs ContactLoader tests for the the contact-detail and editor view.
@@ -63,9 +63,9 @@
AccountWithDataSet account =
new AccountWithDataSet("mockAccountName", "mockAccountType", null);
- mMockContext.setMockAccountTypeManager(
+ AccountTypeManager.setInstanceForTest(
new MockAccountTypeManager(
- new AccountType[] { accountType }, new AccountWithDataSet[] { account }));
+ new AccountType[]{accountType}, new AccountWithDataSet[]{account}));
}
@Override
diff --git a/tests/src/com/android/contacts/model/RawContactTest.java b/tests/src/com/android/contacts/model/RawContactTest.java
new file mode 100644
index 0000000..f09e64f
--- /dev/null
+++ b/tests/src/com/android/contacts/model/RawContactTest.java
@@ -0,0 +1,117 @@
+/*
+ * 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
+ */
+
+package com.android.contacts.model;
+
+import android.content.ContentValues;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for {@link RawContact}.
+ */
+public class RawContactTest extends TestCase {
+
+ private RawContact buildRawContact() {
+ final ContentValues values = new ContentValues();
+ values.put("key1", "value1");
+ values.put("key2", "value2");
+
+ final ContentValues dataItem = new ContentValues();
+ dataItem.put("key3", "value3");
+ dataItem.put("key4", "value4");
+
+ final RawContact contact = new RawContact(values);
+ contact.addDataItemValues(dataItem);
+
+ return contact;
+ }
+
+ private RawContact buildRawContact2() {
+ final ContentValues values = new ContentValues();
+ values.put("key11", "value11");
+ values.put("key22", "value22");
+
+ final ContentValues dataItem = new ContentValues();
+ dataItem.put("key33", "value33");
+ dataItem.put("key44", "value44");
+
+ final RawContact contact = new RawContact(values);
+ contact.addDataItemValues(dataItem);
+
+ return contact;
+ }
+
+ public void testNotEquals() {
+ final RawContact one = buildRawContact();
+ final RawContact two = buildRawContact2();
+ assertFalse(one.equals(two));
+ }
+
+ public void testEquals() {
+ assertEquals(buildRawContact(), buildRawContact());
+ }
+
+ public void testParcelable() {
+ assertParcelableEquals(buildRawContact());
+ }
+
+ private RawContact.NamedDataItem buildNamedDataItem() {
+ final ContentValues values = new ContentValues();
+ values.put("key1", "value1");
+ values.put("key2", "value2");
+ final Uri uri = Uri.fromParts("content:", "ssp", "fragment");
+
+ return new RawContact.NamedDataItem(uri, values);
+ }
+
+ private RawContact.NamedDataItem buildNamedDataItem2() {
+ final ContentValues values = new ContentValues();
+ values.put("key11", "value11");
+ values.put("key22", "value22");
+ final Uri uri = Uri.fromParts("content:", "blah", "blah");
+
+ return new RawContact.NamedDataItem(uri, values);
+ }
+
+ public void testNamedDataItemEquals() {
+ assertEquals(buildNamedDataItem(), buildNamedDataItem());
+ }
+
+ public void testNamedDataItemNotEquals() {
+ assertFalse(buildNamedDataItem().equals(buildNamedDataItem2()));
+ }
+
+ public void testNamedDataItemParcelable() {
+ assertParcelableEquals(buildNamedDataItem());
+ }
+
+ private void assertParcelableEquals(Parcelable parcelable) {
+ final Parcel parcel = Parcel.obtain();
+ try {
+ parcel.writeParcelable(parcelable, 0);
+ parcel.setDataPosition(0);
+
+ Parcelable out = parcel.readParcelable(parcelable.getClass().getClassLoader());
+ assertEquals(parcelable, out);
+ } finally {
+ parcel.recycle();
+ }
+ }
+}
diff --git a/tests/src/com/android/contacts/model/account/AccountTypeTest.java b/tests/src/com/android/contacts/model/account/AccountTypeTest.java
deleted file mode 100644
index ad111d9..0000000
--- a/tests/src/com/android/contacts/model/account/AccountTypeTest.java
+++ /dev/null
@@ -1,133 +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.model.account;
-
-import android.content.Context;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.tests.R;
-
-/**
- * Test case for {@link AccountType}.
- *
- * adb shell am instrument -w -e class com.android.contacts.model.AccountTypeTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class AccountTypeTest extends AndroidTestCase {
- public void testGetResourceText() {
- // In this test we use the test package itself as an external package.
- final String packageName = getTestContext().getPackageName();
-
- final Context c = getContext();
- final String DEFAULT = "ABC";
-
- // Package name null, resId -1, use the default
- assertEquals(DEFAULT, AccountType.getResourceText(c, null, -1, DEFAULT));
-
- // Resource ID -1, use the default
- assertEquals(DEFAULT, AccountType.getResourceText(c, packageName, -1, DEFAULT));
-
- // Load from an external package. (here, we use this test package itself)
- final int externalResID = R.string.test_string;
- assertEquals(getTestContext().getString(externalResID),
- AccountType.getResourceText(c, packageName, externalResID, DEFAULT));
-
- // Load from the contacts package itself.
- final int internalResId = com.android.contacts.R.string.launcherDialer;
- assertEquals(c.getString(internalResId),
- AccountType.getResourceText(c, null, internalResId, DEFAULT));
- }
-
- /**
- * Verify if {@link AccountType#getInviteContactActionLabel} correctly gets the resource ID
- * from {@link AccountType#getInviteContactActionResId}
- */
- public void testGetInviteContactActionLabel() {
- final String packageName = getTestContext().getPackageName();
- final Context c = getContext();
-
- final int externalResID = R.string.test_string;
-
- AccountType accountType = new AccountType() {
- {
- resourcePackageName = packageName;
- syncAdapterPackageName = packageName;
- }
- @Override protected int getInviteContactActionResId() {
- return externalResID;
- }
-
- @Override public boolean isGroupMembershipEditable() {
- return false;
- }
-
- @Override public boolean areContactsWritable() {
- return false;
- }
- };
-
- assertEquals(getTestContext().getString(externalResID),
- accountType.getInviteContactActionLabel(c));
- }
-
- public void testDisplayLabelComparator() {
- final AccountTypeForDisplayLabelTest EMPTY = new AccountTypeForDisplayLabelTest("");
- final AccountTypeForDisplayLabelTest NULL = new AccountTypeForDisplayLabelTest(null);
- final AccountTypeForDisplayLabelTest AA = new AccountTypeForDisplayLabelTest("aa");
- final AccountTypeForDisplayLabelTest BBB = new AccountTypeForDisplayLabelTest("bbb");
- final AccountTypeForDisplayLabelTest C = new AccountTypeForDisplayLabelTest("c");
-
- assertTrue(compareDisplayLabel(AA, BBB) < 0);
- assertTrue(compareDisplayLabel(BBB, C) < 0);
- assertTrue(compareDisplayLabel(AA, C) < 0);
- assertTrue(compareDisplayLabel(AA, AA) == 0);
- assertTrue(compareDisplayLabel(BBB, AA) > 0);
-
- assertTrue(compareDisplayLabel(EMPTY, AA) < 0);
- assertTrue(compareDisplayLabel(EMPTY, NULL) == 0);
- }
-
- private int compareDisplayLabel(AccountType lhs, AccountType rhs) {
- return new AccountType.DisplayLabelComparator(getContext()).compare(lhs, rhs);
- }
-
- private class AccountTypeForDisplayLabelTest extends AccountType {
- private final String mDisplayLabel;
-
- public AccountTypeForDisplayLabelTest(String displayLabel) {
- mDisplayLabel = displayLabel;
- }
-
- @Override
- public CharSequence getDisplayLabel(Context context) {
- return mDisplayLabel;
- }
-
- @Override
- public boolean isGroupMembershipEditable() {
- return false;
- }
-
- @Override
- public boolean areContactsWritable() {
- return false;
- }
- }
-}
diff --git a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java b/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
deleted file mode 100644
index 6eb3bd7..0000000
--- a/tests/src/com/android/contacts/model/account/ExternalAccountTypeTest.java
+++ /dev/null
@@ -1,247 +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.model.account;
-
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Email;
-import android.provider.ContactsContract.CommonDataKinds.Event;
-import android.provider.ContactsContract.CommonDataKinds.Im;
-import android.provider.ContactsContract.CommonDataKinds.Note;
-import android.provider.ContactsContract.CommonDataKinds.Organization;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.Relation;
-import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.tests.R;
-import com.google.common.base.Objects;
-
-import java.util.List;
-
-/**
- * Test case for {@link ExternalAccountType}.
- *
- * adb shell am instrument -w -e class com.android.contacts.model.ExternalAccountTypeTest \
- com.android.contacts.tests/android.test.InstrumentationTestRunner
- */
-@SmallTest
-public class ExternalAccountTypeTest extends AndroidTestCase {
- public void testResolveExternalResId() {
- final Context c = getContext();
- // In this test we use the test package itself as an external package.
- final String packageName = getTestContext().getPackageName();
-
- // Resource name empty.
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, null, packageName, ""));
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "", packageName, ""));
-
- // Name doesn't begin with '@'
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "x", packageName, ""));
-
- // Invalid resource name
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@", packageName, ""));
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@a", packageName, ""));
- assertEquals(-1, ExternalAccountType.resolveExternalResId(c, "@a/b", packageName, ""));
-
- // Valid resource name
- assertEquals(R.string.test_string, ExternalAccountType.resolveExternalResId(c,
- "@string/test_string", packageName, ""));
- }
-
- /**
- * Initialize with an invalid package name and see if type type will *not* be initialized.
- */
- public void testNoPackage() {
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- "!!!no such package name!!!", false);
- assertFalse(type.isInitialized());
- }
-
- /**
- * Initialize with the name of an existing package, which has no contacts.xml metadata.
- */
- public void testNoMetadata() {
- // Use the main application package, which does exist, but has no contacts.xml in it.
- String packageName = getContext().getPackageName();
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- packageName, false);
- assertTrue(type.isInitialized());
- }
-
- /**
- * Initialize with the test package itself and see if EditSchema is correctly parsed.
- */
- public void testEditSchema() {
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- getTestContext().getPackageName(), false);
-
- assertTrue(type.isInitialized());
-
- // Let's just check if the DataKinds are registered.
- assertNotNull(type.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME));
- assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME));
- assertNotNull(type.getKindForMimetype(Email.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Im.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Organization.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Photo.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Note.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Website.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(SipAddress.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Event.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(Relation.CONTENT_ITEM_TYPE));
- }
-
- /**
- * Initialize with "contacts_fallback.xml" and compare the DataKinds to those of
- * {@link FallbackAccountType}.
- */
- public void testEditSchema_fallback() {
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- getTestContext().getPackageName(), false,
- getTestContext().getResources().getXml(R.xml.contacts_fallback)
- );
-
- assertTrue(type.isInitialized());
-
- // Create a fallback type with the same resource package name, and compare all the data
- // kinds to its.
- final AccountType reference = FallbackAccountType.createWithPackageNameForTest(
- getContext(), type.resourcePackageName);
-
- assertsDataKindEquals(reference.getSortedDataKinds(), type.getSortedDataKinds());
- }
-
- public void testEditSchema_mustHaveChecks() {
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_base, true);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_photo, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr1, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr2, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr3, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr4, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr5, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr6, false);
- checkEditSchema_mustHaveChecks(R.xml.missing_contacts_name_attr7, false);
- }
-
- private void checkEditSchema_mustHaveChecks(int xmlResId, boolean expectInitialized) {
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- getTestContext().getPackageName(), false,
- getTestContext().getResources().getXml(xmlResId)
- );
-
- assertEquals(expectInitialized, type.isInitialized());
- }
-
- /**
- * Initialize with "contacts_readonly.xml" and see if all data kinds are correctly registered.
- */
- public void testReadOnlyDefinition() {
- final ExternalAccountType type = new ExternalAccountType(getContext(),
- getTestContext().getPackageName(), false,
- getTestContext().getResources().getXml(R.xml.contacts_readonly)
- );
- assertTrue(type.isInitialized());
-
- // Shouldn't have a "null" mimetype.
- assertTrue(type.getKindForMimetype(null) == null);
-
- // 3 kinds are defined in XML and 4 are added by default.
- assertEquals(4 + 3, type.getSortedDataKinds().size());
-
- // Check for the default kinds.
- assertNotNull(type.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE));
- assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME));
- assertNotNull(type.getKindForMimetype(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME));
- assertNotNull(type.getKindForMimetype(Photo.CONTENT_ITEM_TYPE));
-
- // Check for type specific kinds.
- DataKind kind = type.getKindForMimetype("vnd.android.cursor.item/a.b.c");
- assertNotNull(kind);
- // No check for icon -- we actually just ignore it.
- assertEquals("data1", ((BaseAccountType.SimpleInflater) kind.actionHeader)
- .getColumnNameForTest());
- assertEquals("data2", ((BaseAccountType.SimpleInflater) kind.actionBody)
- .getColumnNameForTest());
- assertEquals(true, kind.actionBodySocial);
-
- kind = type.getKindForMimetype("vnd.android.cursor.item/d.e.f");
- assertNotNull(kind);
- assertEquals("data3", ((BaseAccountType.SimpleInflater) kind.actionHeader)
- .getColumnNameForTest());
- assertEquals("data4", ((BaseAccountType.SimpleInflater) kind.actionBody)
- .getColumnNameForTest());
- assertEquals(false, kind.actionBodySocial);
-
- kind = type.getKindForMimetype("vnd.android.cursor.item/xyz");
- assertNotNull(kind);
- assertEquals("data5", ((BaseAccountType.SimpleInflater) kind.actionHeader)
- .getColumnNameForTest());
- assertEquals("data6", ((BaseAccountType.SimpleInflater) kind.actionBody)
- .getColumnNameForTest());
- assertEquals(true, kind.actionBodySocial);
- }
-
- private static void assertsDataKindEquals(List<DataKind> expectedKinds,
- List<DataKind> actualKinds) {
- final int count = Math.max(actualKinds.size(), expectedKinds.size());
- for (int i = 0; i < count; i++) {
- String actual = actualKinds.size() > i ? actualKinds.get(i).toString() : "(n/a)";
- String expected = expectedKinds.size() > i ? expectedKinds.get(i).toString() : "(n/a)";
-
- // Because assertEquals()'s output is not very friendly when comparing two similar
- // strings, we manually do the check.
- if (!Objects.equal(actual, expected)) {
- final int commonPrefixEnd = findCommonPrefixEnd(actual, expected);
- fail("Kind #" + i
- + "\n[Actual]\n" + insertMarkerAt(actual, commonPrefixEnd)
- + "\n[Expected]\n" + insertMarkerAt(expected, commonPrefixEnd));
- }
- }
- }
-
- private static int findCommonPrefixEnd(String s1, String s2) {
- int i = 0;
- for (;;) {
- final boolean s1End = (s1.length() <= i);
- final boolean s2End = (s2.length() <= i);
- if (s1End || s2End) {
- return i;
- }
- if (s1.charAt(i) != s2.charAt(i)) {
- return i;
- }
- i++;
- }
- }
-
- private static String insertMarkerAt(String s, int position) {
- final String MARKER = "***";
- if (position > s.length()) {
- return s + MARKER;
- } else {
- return new StringBuilder(s).insert(position, MARKER).toString();
- }
- }
-}
diff --git a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
index 519dc5c..d7ea5bf 100644
--- a/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
+++ b/tests/src/com/android/contacts/tests/allintents/AllIntentsActivity.java
@@ -512,7 +512,7 @@
}
final Intent intent = new Intent("android.intent.action.VIEW");
intent.setData(uri);
- bindIntentToClass(intent, "com.android.contacts.CallDetailActivity");
+ bindIntentToClass(intent, "com.android.dialer.CallDetailActivity");
startActivity(intent);
break;
}
diff --git a/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java b/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java
deleted file mode 100644
index d04d978..0000000
--- a/tests/src/com/android/contacts/tests/calllog/FillCallLogTestActivity.java
+++ /dev/null
@@ -1,308 +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.calllog;
-
-import android.app.Activity;
-import android.app.LoaderManager;
-import android.content.ContentProviderClient;
-import android.content.ContentValues;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.provider.CallLog.Calls;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.contacts.tests.R;
-
-import java.util.Random;
-
-/**
- * Activity to add entries to the call log for testing.
- */
-public class FillCallLogTestActivity extends Activity {
- private static final String TAG = "FillCallLogTestActivity";
- /** Identifier of the loader for querying the call log. */
- private static final int CALLLOG_LOADER_ID = 1;
-
- private static final Random RNG = new Random();
- private static final int[] CALL_TYPES = new int[] {
- Calls.INCOMING_TYPE, Calls.OUTGOING_TYPE, Calls.MISSED_TYPE,
- };
-
- private TextView mNumberTextView;
- private Button mAddButton;
- private ProgressBar mProgressBar;
- private CheckBox mUseRandomNumbers;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.fill_call_log_test);
- mNumberTextView = (TextView) findViewById(R.id.number);
- mAddButton = (Button) findViewById(R.id.add);
- mProgressBar = (ProgressBar) findViewById(R.id.progress);
- mUseRandomNumbers = (CheckBox) findViewById(R.id.use_random_numbers);
-
- mAddButton.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v) {
- int count;
- try {
- count = Integer.parseInt(mNumberTextView.getText().toString());
- if (count > 100) {
- throw new RuntimeException("Number too large. Max=100");
- }
- } catch (RuntimeException e) {
- Toast.makeText(FillCallLogTestActivity.this, e.toString(), Toast.LENGTH_LONG)
- .show();
- return;
- }
- addEntriesToCallLog(count, mUseRandomNumbers.isChecked());
- mNumberTextView.setEnabled(false);
- mAddButton.setEnabled(false);
- mProgressBar.setProgress(0);
- mProgressBar.setMax(count);
- mProgressBar.setVisibility(View.VISIBLE);
- }
- });
- }
-
- /**
- * Adds a number of entries to the call log. The content of the entries is based on existing
- * entries.
- *
- * @param count the number of entries to add
- */
- private void addEntriesToCallLog(final int count, boolean useRandomNumbers) {
- if (useRandomNumbers) {
- addRandomNumbers(count);
- } else {
- getLoaderManager().initLoader(CALLLOG_LOADER_ID, null,
- new CallLogLoaderListener(count));
- }
- }
-
- /**
- * Calls when the insertion has completed.
- *
- * @param message the message to show in a toast to the user
- */
- private void insertCompleted(String message) {
- // Hide the progress bar.
- mProgressBar.setVisibility(View.GONE);
- // Re-enable the add button.
- mNumberTextView.setEnabled(true);
- mAddButton.setEnabled(true);
- mNumberTextView.setText("");
- Toast.makeText(this, message, Toast.LENGTH_LONG).show();
- }
-
-
- /**
- * Creates a {@link ContentValues} object containing values corresponding to the given cursor.
- *
- * @param cursor the cursor from which to get the values
- * @return a newly created content values object
- */
- private ContentValues createContentValuesFromCursor(Cursor cursor) {
- ContentValues values = new ContentValues();
- for (int column = 0; column < cursor.getColumnCount();
- ++column) {
- String name = cursor.getColumnName(column);
- switch (cursor.getType(column)) {
- case Cursor.FIELD_TYPE_STRING:
- values.put(name, cursor.getString(column));
- break;
- case Cursor.FIELD_TYPE_INTEGER:
- values.put(name, cursor.getLong(column));
- break;
- case Cursor.FIELD_TYPE_FLOAT:
- values.put(name, cursor.getDouble(column));
- break;
- case Cursor.FIELD_TYPE_BLOB:
- values.put(name, cursor.getBlob(column));
- break;
- case Cursor.FIELD_TYPE_NULL:
- values.putNull(name);
- break;
- default:
- Log.d(TAG, "Invalid value in cursor: " + cursor.getType(column));
- break;
- }
- }
- return values;
- }
-
- private void addRandomNumbers(int count) {
- ContentValues[] values = new ContentValues[count];
- for (int i = 0; i < count; i++) {
- values[i] = new ContentValues();
- values[i].put(Calls.NUMBER, generateRandomNumber());
- values[i].put(Calls.DATE, System.currentTimeMillis()); // Will be randomized later
- values[i].put(Calls.DURATION, 1); // Will be overwritten later
- }
- new AsyncCallLogInserter(values).execute(new Void[0]);
- }
-
- private static String generateRandomNumber() {
- return String.format("5%09d", RNG.nextInt(1000000000));
- }
-
- /** Invokes {@link AsyncCallLogInserter} when the call log has loaded. */
- private final class CallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
- /** The number of items to insert when done. */
- private final int mCount;
-
- private CallLogLoaderListener(int count) {
- mCount = count;
- }
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- Log.d(TAG, "onCreateLoader");
- return new CursorLoader(FillCallLogTestActivity.this, Calls.CONTENT_URI,
- null, null, null, null);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- try {
- Log.d(TAG, "onLoadFinished");
-
- if (data.getCount() == 0) {
- // If there are no entries in the call log, we cannot generate new ones.
- insertCompleted(getString(R.string.noLogEntriesToast));
- return;
- }
-
- data.moveToPosition(-1);
-
- ContentValues[] values = new ContentValues[mCount];
- for (int index = 0; index < mCount; ++index) {
- if (!data.moveToNext()) {
- data.moveToFirst();
- }
- values[index] = createContentValuesFromCursor(data);
- }
- new AsyncCallLogInserter(values).execute(new Void[0]);
- } finally {
- // This is a one shot loader.
- getLoaderManager().destroyLoader(CALLLOG_LOADER_ID);
- }
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {}
- }
-
- /** Inserts a given number of entries in the call log based on the values given. */
- private final class AsyncCallLogInserter extends AsyncTask<Void, Integer, Integer> {
- /** The number of items to insert. */
- private final ContentValues[] mValues;
-
- public AsyncCallLogInserter(ContentValues[] values) {
- mValues = values;
- }
-
- @Override
- protected Integer doInBackground(Void... params) {
- Log.d(TAG, "doInBackground");
- return insertIntoCallLog();
- }
-
- @Override
- protected void onProgressUpdate(Integer... values) {
- Log.d(TAG, "onProgressUpdate");
- updateCount(values[0]);
- }
-
- @Override
- protected void onPostExecute(Integer count) {
- Log.d(TAG, "onPostExecute");
- insertCompleted(getString(R.string.addedLogEntriesToast, count));
- }
-
- /**
- * Inserts a number of entries in the call log based on the given templates.
- *
- * @return the number of inserted entries
- */
- private Integer insertIntoCallLog() {
- int inserted = 0;
-
- for (int index = 0; index < mValues.length; ++index) {
- ContentValues values = mValues[index];
- // These should not be set.
- values.putNull(Calls._ID);
- // Add some randomness to the date. For each new entry being added, add an extra
- // day to the maximum possible offset from the original.
- values.put(Calls.DATE,
- values.getAsLong(Calls.DATE)
- - RNG.nextInt(24 * 60 * 60 * (index + 1)) * 1000L);
- // Add some randomness to the duration.
- if (values.getAsLong(Calls.DURATION) > 0) {
- values.put(Calls.DURATION, RNG.nextInt(30 * 60 * 60 * 1000));
- }
-
- // Overwrite type.
- values.put(Calls.TYPE, CALL_TYPES[RNG.nextInt(CALL_TYPES.length)]);
-
- // Clear cached columns.
- values.putNull(Calls.CACHED_FORMATTED_NUMBER);
- values.putNull(Calls.CACHED_LOOKUP_URI);
- values.putNull(Calls.CACHED_MATCHED_NUMBER);
- values.putNull(Calls.CACHED_NAME);
- values.putNull(Calls.CACHED_NORMALIZED_NUMBER);
- values.putNull(Calls.CACHED_NUMBER_LABEL);
- values.putNull(Calls.CACHED_NUMBER_TYPE);
- values.putNull(Calls.CACHED_PHOTO_ID);
-
- // Insert into the call log the newly generated entry.
- ContentProviderClient contentProvider =
- getContentResolver().acquireContentProviderClient(
- Calls.CONTENT_URI);
- try {
- Log.d(TAG, "adding entry to call log");
- contentProvider.insert(Calls.CONTENT_URI, values);
- ++inserted;
- this.publishProgress(inserted);
- } catch (RemoteException e) {
- Log.d(TAG, "insert failed", e);
- }
- }
- return inserted;
- }
- }
-
- /**
- * Updates the count shown to the user corresponding to the number of entries added.
- *
- * @param count the number of entries inserted so far
- */
- public void updateCount(Integer count) {
- mProgressBar.setProgress(count);
- }
-}
diff --git a/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java b/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java
deleted file mode 100644
index a384dea..0000000
--- a/tests/src/com/android/contacts/tests/mocks/ContactsMockContext.java
+++ /dev/null
@@ -1,108 +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.tests.mocks;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
-import android.provider.ContactsContract;
-import android.provider.Settings;
-import android.test.mock.MockContentResolver;
-
-import com.android.contacts.model.AccountTypeManager;
-
-/**
- * A mock context for contacts unit tests. Forwards everything to
- * a supplied context, except content resolver operations, which are sent
- * to mock content providers.
- */
-public class ContactsMockContext extends ContextWrapper {
- private ContactsMockPackageManager mPackageManager;
- private MockContentResolver mContentResolver;
- private MockContentProvider mContactsProvider;
- private MockContentProvider mSettingsProvider;
- private MockAccountTypeManager mMockAccountTypeManager;
- private Intent mIntentForStartActivity;
-
- public ContactsMockContext(Context base) {
- super(base);
- mPackageManager = new ContactsMockPackageManager();
- mContentResolver = new MockContentResolver();
- mContactsProvider = new MockContentProvider();
- mContentResolver.addProvider(ContactsContract.AUTHORITY, mContactsProvider);
- mContactsProvider.attachInfo(this, new ProviderInfo());
- mSettingsProvider = new MockContentProvider();
- mSettingsProvider.attachInfo(this, new ProviderInfo());
- mContentResolver.addProvider(Settings.AUTHORITY, mSettingsProvider);
- }
-
- public void setMockAccountTypeManager(MockAccountTypeManager mockAccountTypeManager) {
- mMockAccountTypeManager = mockAccountTypeManager;
- }
-
- @Override
- public ContentResolver getContentResolver() {
- return mContentResolver;
- }
-
- public MockContentProvider getContactsProvider() {
- return mContactsProvider;
- }
-
- public MockContentProvider getSettingsProvider() {
- return mSettingsProvider;
- }
-
- @Override
- public PackageManager getPackageManager() {
- return mPackageManager;
- }
-
- @Override
- public Context getApplicationContext() {
- return this;
- }
-
- /**
- * Instead of actually sending Intent, this method just remembers what Intent was supplied last.
- * You can check the content via {@link #getIntentForStartActivity()} for verification.
- */
- @Override
- public void startActivity(Intent intent) {
- mIntentForStartActivity = intent;
- }
-
- public Intent getIntentForStartActivity() {
- return mIntentForStartActivity;
- }
-
- public void verify() {
- mContactsProvider.verify();
- mSettingsProvider.verify();
- }
-
- @Override
- public Object getSystemService(String name) {
- if (AccountTypeManager.ACCOUNT_TYPE_SERVICE.equals(name)) {
- return mMockAccountTypeManager;
- }
- return super.getSystemService(name);
- }
-}
diff --git a/tests/src/com/android/contacts/tests/mocks/ContactsMockPackageManager.java b/tests/src/com/android/contacts/tests/mocks/ContactsMockPackageManager.java
deleted file mode 100644
index 0f893fe..0000000
--- a/tests/src/com/android/contacts/tests/mocks/ContactsMockPackageManager.java
+++ /dev/null
@@ -1,45 +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.tests.mocks;
-
-import android.content.ComponentName;
-import android.content.pm.ApplicationInfo;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.test.mock.MockPackageManager;
-
-/**
- */
-public class ContactsMockPackageManager extends MockPackageManager {
- public ContactsMockPackageManager() {
- }
-
- @Override
- public Drawable getActivityLogo(ComponentName activityName) throws NameNotFoundException {
- return new ColorDrawable();
- }
-
- @Override
- public Drawable getActivityIcon(ComponentName activityName) {
- return new ColorDrawable();
- }
-
- @Override
- public Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo) {
- // TODO: make programmable
- return new ColorDrawable();
- }
-}
diff --git a/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java b/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
index ce16743..3357af3 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockAccountTypeManager.java
@@ -15,10 +15,10 @@
*/
package com.android.contacts.tests.mocks;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.account.AccountType;
-import com.android.contacts.model.account.AccountTypeWithDataSet;
-import com.android.contacts.model.account.AccountWithDataSet;
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+import com.android.contacts.common.model.account.AccountTypeWithDataSet;
+import com.android.contacts.common.model.account.AccountWithDataSet;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
diff --git a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
index efd5ac2..f5f6084 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
@@ -20,7 +20,7 @@
import android.net.Uri;
import android.widget.ImageView;
-import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager;
/**
* A photo preloader that always uses the "no contact" picture and never executes any real
diff --git a/tests/src/com/android/contacts/tests/mocks/MockContentProvider.java b/tests/src/com/android/contacts/tests/mocks/MockContentProvider.java
deleted file mode 100644
index 71b434d..0000000
--- a/tests/src/com/android/contacts/tests/mocks/MockContentProvider.java
+++ /dev/null
@@ -1,341 +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.tests.mocks;
-
-import android.content.ContentProvider;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.net.Uri;
-import android.text.TextUtils;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-import junit.framework.Assert;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-
-/**
- * A programmable mock content provider.
- */
-public class MockContentProvider extends ContentProvider {
- private static final String TAG = "MockContentProvider";
-
- public static class Query {
-
- private final Uri mUri;
- private String[] mProjection;
- private String[] mDefaultProjection;
- private String mSelection;
- private String[] mSelectionArgs;
- private String mSortOrder;
- private ArrayList<Object> mRows = new ArrayList<Object>();
- private boolean mAnyProjection;
- private boolean mAnySelection;
- private boolean mAnySortOrder;
- private boolean mAnyNumberOfTimes;
-
- private boolean mExecuted;
-
- public Query(Uri uri) {
- mUri = uri;
- }
-
- @Override
- public String toString() {
- return queryToString(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder);
- }
-
- public Query withProjection(String... projection) {
- mProjection = projection;
- return this;
- }
-
- public Query withDefaultProjection(String... projection) {
- mDefaultProjection = projection;
- return this;
- }
-
- public Query withAnyProjection() {
- mAnyProjection = true;
- return this;
- }
-
- public Query withSelection(String selection, String... selectionArgs) {
- mSelection = selection;
- mSelectionArgs = selectionArgs;
- return this;
- }
-
- public Query withAnySelection() {
- mAnySelection = true;
- return this;
- }
-
- public Query withSortOrder(String sortOrder) {
- mSortOrder = sortOrder;
- return this;
- }
-
- public Query withAnySortOrder() {
- mAnySortOrder = true;
- return this;
- }
-
- public Query returnRow(ContentValues values) {
- mRows.add(values);
- return this;
- }
-
- public Query returnRow(Object... row) {
- mRows.add(row);
- return this;
- }
-
- public Query returnEmptyCursor() {
- mRows.clear();
- return this;
- }
-
- public Query anyNumberOfTimes() {
- mAnyNumberOfTimes = true;
- return this;
- }
-
- public boolean equals(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- if (!uri.equals(mUri)) {
- return false;
- }
-
- if (!mAnyProjection && !equals(projection, mProjection)) {
- return false;
- }
-
- if (!mAnySelection && !equals(selection, mSelection)) {
- return false;
- }
-
- if (!mAnySelection && !equals(selectionArgs, mSelectionArgs)) {
- return false;
- }
-
- if (!mAnySortOrder && !equals(sortOrder, mSortOrder)) {
- return false;
- }
-
- return true;
- }
-
- private boolean equals(String string1, String string2) {
- if (TextUtils.isEmpty(string1)) {
- string1 = null;
- }
- if (TextUtils.isEmpty(string2)) {
- string2 = null;
- }
- return TextUtils.equals(string1, string2);
- }
-
- private static boolean equals(String[] array1, String[] array2) {
- boolean empty1 = array1 == null || array1.length == 0;
- boolean empty2 = array2 == null || array2.length == 0;
- if (empty1 && empty2) {
- return true;
- }
- if (empty1 != empty2 && (empty1 || empty2)) {
- return false;
- }
-
- if (array1.length != array2.length) return false;
-
- for (int i = 0; i < array1.length; i++) {
- if (!array1[i].equals(array2[i])) {
- return false;
- }
- }
- return true;
- }
-
- public Cursor getResult(String[] projection) {
- String[] columnNames;
- if (mAnyProjection) {
- columnNames = projection;
- } else {
- columnNames = mProjection != null ? mProjection : mDefaultProjection;
- }
-
- MatrixCursor cursor = new MatrixCursor(columnNames);
- for (Object row : mRows) {
- if (row instanceof Object[]) {
- cursor.addRow((Object[]) row);
- } else {
- ContentValues values = (ContentValues) row;
- Object[] columns = new Object[projection.length];
- for (int i = 0; i < projection.length; i++) {
- columns[i] = values.get(projection[i]);
- }
- cursor.addRow(columns);
- }
- }
- return cursor;
- }
- }
-
- public static class TypeQuery {
- private final Uri mUri;
- private final String mType;
-
- public TypeQuery(Uri uri, String type) {
- mUri = uri;
- mType = type;
- }
-
- public Uri getUri() {
- return mUri;
- }
-
- public String getType() {
- return mType;
- }
-
- @Override
- public String toString() {
- return mUri + " --> " + mType;
- }
-
- public boolean equals(Uri uri) {
- return getUri().equals(uri);
- }
- }
-
- private ArrayList<Query> mExpectedQueries = new ArrayList<Query>();
- private HashMap<Uri, String> mExpectedTypeQueries = Maps.newHashMap();
-
- @Override
- public boolean onCreate() {
- return true;
- }
-
- public Query expectQuery(Uri contentUri) {
- Query query = new Query(contentUri);
- mExpectedQueries.add(query);
- return query;
- }
-
- public void expectTypeQuery(Uri uri, String type) {
- mExpectedTypeQueries.put(uri, type);
- }
-
- @Override
- public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
- String sortOrder) {
-
- for (Iterator<Query> iterator = mExpectedQueries.iterator(); iterator.hasNext();) {
- Query query = iterator.next();
- if (query.equals(uri, projection, selection, selectionArgs, sortOrder)) {
- query.mExecuted = true;
- if (!query.mAnyNumberOfTimes) {
- iterator.remove();
- }
- return query.getResult(projection);
- }
- }
-
- if (mExpectedQueries.isEmpty()) {
- Assert.fail("Unexpected query: "
- + queryToString(uri, projection, selection, selectionArgs, sortOrder));
- } else {
- StringBuilder sb = new StringBuilder();
- sb.append(mExpectedQueries.get(0));
- for (int i = 1; i < mExpectedQueries.size(); i++) {
- sb.append("\n ").append(mExpectedQueries.get(i));
- }
- Assert.fail("Incorrect query.\n Expected: " + sb + "\n Actual: " +
- queryToString(uri, projection, selection, selectionArgs, sortOrder));
- }
- return null;
- }
-
- @Override
- public int delete(Uri uri, String selection, String[] selectionArgs) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public String getType(Uri uri) {
- if (mExpectedTypeQueries.isEmpty()) {
- Assert.fail("Unexpected getType query: " + uri);
- }
-
- String mimeType = mExpectedTypeQueries.get(uri);
- if (mimeType != null) {
- return mimeType;
- }
-
- Assert.fail("Unknown mime type for: " + uri);
- return null;
- }
-
- @Override
- public Uri insert(Uri uri, ContentValues values) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
- throw new UnsupportedOperationException();
- }
-
- private static String queryToString(Uri uri, String[] projection, String selection,
- String[] selectionArgs, String sortOrder) {
- StringBuilder sb = new StringBuilder();
- sb.append(uri).append(" ");
- if (projection != null) {
- sb.append(Arrays.toString(projection));
- } else {
- sb.append("[]");
- }
- if (selection != null) {
- sb.append(" selection: '").append(selection).append("'");
- if (selectionArgs != null) {
- sb.append(Arrays.toString(selectionArgs));
- } else {
- sb.append("[]");
- }
- }
- if (sortOrder != null) {
- sb.append(" sort: '").append(sortOrder).append("'");
- }
- return sb.toString();
- }
-
- public void verify() {
- ArrayList<Query> mMissedQueries = Lists.newArrayList();
- for (Query query : mExpectedQueries) {
- if (!query.mExecuted) {
- mMissedQueries.add(query);
- }
- }
- Assert.assertTrue("Not all expected queries have been called: " +
- mMissedQueries, mMissedQueries.isEmpty());
- }
-}
diff --git a/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java b/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java
index 20229d2..9132e40 100644
--- a/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java
+++ b/tests/src/com/android/contacts/tests/streamitems/StreamItemPopulatorActivity.java
@@ -32,7 +32,7 @@
import android.widget.Button;
import android.widget.Toast;
-import com.android.contacts.model.account.GoogleAccountType;
+import com.android.contacts.common.model.account.GoogleAccountType;
import com.android.contacts.tests.R;
import com.google.common.collect.Lists;
diff --git a/tests/src/com/android/contacts/tests/testauth/TestAuthenticationService.java b/tests/src/com/android/contacts/tests/testauth/TestAuthenticationService.java
deleted file mode 100644
index 84f3f0f..0000000
--- a/tests/src/com/android/contacts/tests/testauth/TestAuthenticationService.java
+++ /dev/null
@@ -1,47 +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.testauth;
-
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-import android.util.Log;
-
-public abstract class TestAuthenticationService extends Service {
-
- private TestAuthenticator mAuthenticator;
-
- @Override
- public void onCreate() {
- Log.v(TestauthConstants.LOG_TAG, this + " Service started.");
- mAuthenticator = new TestAuthenticator(this);
- }
-
- @Override
- public void onDestroy() {
- Log.v(TestauthConstants.LOG_TAG, this + " Service stopped.");
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- Log.v(TestauthConstants.LOG_TAG, this + " getBinder() intent=" + intent);
- return mAuthenticator.getIBinder();
- }
-
- public static class Basic extends TestAuthenticationService {
- }
-}
diff --git a/tests/src/com/android/contacts/tests/testauth/TestAuthenticator.java b/tests/src/com/android/contacts/tests/testauth/TestAuthenticator.java
deleted file mode 100644
index 97e2e4d..0000000
--- a/tests/src/com/android/contacts/tests/testauth/TestAuthenticator.java
+++ /dev/null
@@ -1,131 +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.testauth;
-
-import android.accounts.AbstractAccountAuthenticator;
-import android.accounts.Account;
-import android.accounts.AccountAuthenticatorResponse;
-import android.accounts.AccountManager;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.util.Log;
-
-/**
- * Simple authenticator. It has no "login" dialogs/activities. When you add a new account, it'll
- * just create a new account with a unique name.
- */
-class TestAuthenticator extends AbstractAccountAuthenticator {
- private static final String PASSWORD = "xxx"; // any string will do.
-
- // To remember the last user-ID.
- private static final String PREF_KEY_LAST_USER_ID = "TestAuthenticator.PREF_KEY_LAST_USER_ID";
-
- private final Context mContext;
-
- public TestAuthenticator(Context context) {
- super(context);
- mContext = context.getApplicationContext();
- }
-
- /**
- * @return a new, unique username.
- */
- private String newUniqueUserName() {
- final SharedPreferences prefs =
- PreferenceManager.getDefaultSharedPreferences(mContext);
- final int nextId = prefs.getInt(PREF_KEY_LAST_USER_ID, 0) + 1;
- prefs.edit().putInt(PREF_KEY_LAST_USER_ID, nextId).apply();
-
- return "User-" + nextId;
- }
-
- /**
- * Create a new account with the name generated by {@link #newUniqueUserName()}.
- */
- @Override
- public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
- String authTokenType, String[] requiredFeatures, Bundle options) {
- Log.v(TestauthConstants.LOG_TAG, "addAccount() type=" + accountType);
- final Bundle bundle = new Bundle();
-
- final Account account = new Account(newUniqueUserName(), accountType);
-
- // Create an account.
- AccountManager.get(mContext).addAccountExplicitly(account, PASSWORD, null);
-
- // And return it.
- bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
- bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
- return bundle;
- }
-
- /**
- * Just return the user name as the authtoken.
- */
- @Override
- public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
- String authTokenType, Bundle loginOptions) {
- Log.v(TestauthConstants.LOG_TAG, "getAuthToken() account=" + account);
- final Bundle bundle = new Bundle();
- bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
- bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
- bundle.putString(AccountManager.KEY_AUTHTOKEN, account.name);
-
- return bundle;
- }
-
- @Override
- public Bundle confirmCredentials(
- AccountAuthenticatorResponse response, Account account, Bundle options) {
- Log.v(TestauthConstants.LOG_TAG, "confirmCredentials()");
- return null;
- }
-
- @Override
- public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
- Log.v(TestauthConstants.LOG_TAG, "editProperties()");
- throw new UnsupportedOperationException();
- }
-
- @Override
- public String getAuthTokenLabel(String authTokenType) {
- // null means we don't support multiple authToken types
- Log.v(TestauthConstants.LOG_TAG, "getAuthTokenLabel()");
- return null;
- }
-
- @Override
- public Bundle hasFeatures(
- AccountAuthenticatorResponse response, Account account, String[] features) {
- // This call is used to query whether the Authenticator supports
- // specific features. We don't expect to get called, so we always
- // return false (no) for any queries.
- Log.v(TestauthConstants.LOG_TAG, "hasFeatures()");
- final Bundle result = new Bundle();
- result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, false);
- return result;
- }
-
- @Override
- public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
- String authTokenType, Bundle loginOptions) {
- Log.v(TestauthConstants.LOG_TAG, "updateCredentials()");
- return null;
- }
-}
diff --git a/tests/src/com/android/contacts/tests/testauth/TestSyncAdapter.java b/tests/src/com/android/contacts/tests/testauth/TestSyncAdapter.java
deleted file mode 100644
index 9e6fbf8..0000000
--- a/tests/src/com/android/contacts/tests/testauth/TestSyncAdapter.java
+++ /dev/null
@@ -1,68 +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.testauth;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.AbstractThreadedSyncAdapter;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.SyncResult;
-import android.os.Bundle;
-import android.provider.ContactsContract.RawContacts;
-import android.util.Log;
-
-/**
- * Simple (minimal) sync adapter.
- *
- */
-public class TestSyncAdapter extends AbstractThreadedSyncAdapter {
- private final AccountManager mAccountManager;
-
- private final Context mContext;
-
- public TestSyncAdapter(Context context, boolean autoInitialize) {
- super(context, autoInitialize);
- mContext = context.getApplicationContext();
- mAccountManager = AccountManager.get(mContext);
- }
-
- /**
- * Doesn't actually sync, but sweep up all existing local-only contacts.
- */
- @Override
- public void onPerformSync(Account account, Bundle extras, String authority,
- ContentProviderClient provider, SyncResult syncResult) {
- Log.v(TestauthConstants.LOG_TAG, "TestSyncAdapter.onPerformSync() account=" + account);
-
- // First, claim all local-only contacts, if any.
- ContentResolver cr = mContext.getContentResolver();
- ContentValues values = new ContentValues();
- values.put(RawContacts.ACCOUNT_NAME, account.name);
- values.put(RawContacts.ACCOUNT_TYPE, account.type);
- final int count = cr.update(RawContacts.CONTENT_URI, values,
- RawContacts.ACCOUNT_NAME + " IS NULL AND " + RawContacts.ACCOUNT_TYPE + " IS NULL",
- null);
- if (count > 0) {
- Log.v(TestauthConstants.LOG_TAG, "Claimed " + count + " local raw contacts");
- }
-
- // TODO: Clear isDirty flag
- // TODO: Remove isDeleted raw contacts
- }
-}
diff --git a/tests/src/com/android/contacts/tests/testauth/TestSyncService.java b/tests/src/com/android/contacts/tests/testauth/TestSyncService.java
deleted file mode 100644
index 9928777..0000000
--- a/tests/src/com/android/contacts/tests/testauth/TestSyncService.java
+++ /dev/null
@@ -1,40 +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.testauth;
-
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-
-public abstract class TestSyncService extends Service {
-
- private static TestSyncAdapter sSyncAdapter;
-
- @Override
- public void onCreate() {
- if (sSyncAdapter == null) {
- sSyncAdapter = new TestSyncAdapter(getApplicationContext(), true);
- }
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- return sSyncAdapter.getSyncAdapterBinder();
- }
-
- public static class Basic extends TestSyncService {
- }
-}
diff --git a/tests/src/com/android/contacts/tests/testauth/TestauthConstants.java b/tests/src/com/android/contacts/tests/testauth/TestauthConstants.java
deleted file mode 100644
index 717ed35..0000000
--- a/tests/src/com/android/contacts/tests/testauth/TestauthConstants.java
+++ /dev/null
@@ -1,21 +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.testauth;
-
-class TestauthConstants {
- public static final String LOG_TAG = "Testauth";
-}
diff --git a/tests/src/com/android/contacts/tests/widget/PinnedHeaderUseCaseActivity.java b/tests/src/com/android/contacts/tests/widget/PinnedHeaderUseCaseActivity.java
index dd4ac5e..613665a 100644
--- a/tests/src/com/android/contacts/tests/widget/PinnedHeaderUseCaseActivity.java
+++ b/tests/src/com/android/contacts/tests/widget/PinnedHeaderUseCaseActivity.java
@@ -25,7 +25,7 @@
import android.widget.ListView;
import com.android.contacts.tests.R;
-import com.android.contacts.widget.PinnedHeaderListView;
+import com.android.contacts.common.list.PinnedHeaderListView;
/**
* An activity that demonstrates various use cases for the {@link PinnedHeaderListView}.
diff --git a/tests/src/com/android/contacts/util/BitmapUtilTests.java b/tests/src/com/android/contacts/util/BitmapUtilTests.java
deleted file mode 100644
index 8180b7c..0000000
--- a/tests/src/com/android/contacts/util/BitmapUtilTests.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.contacts.util;
-
-import android.graphics.Bitmap;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * Tests for {@link BitmapUtil}.
- */
-@SmallTest
-public class BitmapUtilTests extends AndroidTestCase {
- public void testGetSmallerExtentFromBytes1() throws Exception {
- assertEquals(100, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(100, 100)));
- assertEquals(100, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(100, 100)));
- }
-
- public void testGetSmallerExtentFromBytes2() throws Exception {
- assertEquals(50, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(200, 50)));
- assertEquals(50, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(200, 50)));
- }
-
- public void testGetSmallerExtentFromBytes3() throws Exception {
- assertEquals(40, BitmapUtil.getSmallerExtentFromBytes(createJpegRawData(40, 150)));
- assertEquals(40, BitmapUtil.getSmallerExtentFromBytes(createPngRawData(40, 150)));
- }
-
- public void testFindOptimalSampleSizeExact() throws Exception {
- assertEquals(1, BitmapUtil.findOptimalSampleSize(512, 512));
- }
-
- public void testFindOptimalSampleSizeBigger() throws Exception {
- assertEquals(1, BitmapUtil.findOptimalSampleSize(512, 1024));
- }
-
- public void testFindOptimalSampleSizeSmaller1() throws Exception {
- assertEquals(2, BitmapUtil.findOptimalSampleSize(512, 256));
- }
-
- public void testFindOptimalSampleSizeSmaller2() throws Exception {
- assertEquals(2, BitmapUtil.findOptimalSampleSize(512, 230));
- }
-
- public void testFindOptimalSampleSizeSmaller3() throws Exception {
- assertEquals(4, BitmapUtil.findOptimalSampleSize(512, 129));
- }
-
- public void testFindOptimalSampleSizeSmaller4() throws Exception {
- assertEquals(4, BitmapUtil.findOptimalSampleSize(512, 128));
- }
-
- public void testFindOptimalSampleSizeUnknownOriginal() throws Exception {
- assertEquals(1, BitmapUtil.findOptimalSampleSize(-1, 128));
- }
-
- public void testFindOptimalSampleSizeUnknownTarget() throws Exception {
- assertEquals(1, BitmapUtil.findOptimalSampleSize(128, -1));
- }
-
- public void testDecodeWithSampleSize1() throws IOException {
- assertBitmapSize(128, 64, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 1));
- assertBitmapSize(128, 64, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 1));
- }
-
- public void testDecodeWithSampleSize2() throws IOException {
- assertBitmapSize(64, 32, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 2));
- assertBitmapSize(64, 32, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 2));
- }
-
- public void testDecodeWithSampleSize2a() throws IOException {
- assertBitmapSize(25, 20, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(50, 40), 2));
- assertBitmapSize(25, 20, BitmapUtil.decodeBitmapFromBytes(createPngRawData(50, 40), 2));
- }
-
- public void testDecodeWithSampleSize4() throws IOException {
- assertBitmapSize(32, 16, BitmapUtil.decodeBitmapFromBytes(createJpegRawData(128, 64), 4));
- assertBitmapSize(32, 16, BitmapUtil.decodeBitmapFromBytes(createPngRawData(128, 64), 4));
- }
-
- private void assertBitmapSize(int expectedWidth, int expectedHeight, Bitmap bitmap) {
- assertEquals(expectedWidth, bitmap.getWidth());
- assertEquals(expectedHeight, bitmap.getHeight());
- }
-
- private byte[] createJpegRawData(int sourceWidth, int sourceHeight) throws IOException {
- return createRawData(Bitmap.CompressFormat.JPEG, sourceWidth, sourceHeight);
- }
-
- private byte[] createPngRawData(int sourceWidth, int sourceHeight) throws IOException {
- return createRawData(Bitmap.CompressFormat.PNG, sourceWidth, sourceHeight);
- }
-
- private byte[] createRawData(Bitmap.CompressFormat format, int sourceWidth,
- int sourceHeight) throws IOException {
- // Create a temp bitmap as our source
- Bitmap b = Bitmap.createBitmap(sourceWidth, sourceHeight, Bitmap.Config.ARGB_8888);
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- b.compress(format, 50, outputStream);
- final byte[] data = outputStream.toByteArray();
- outputStream.close();
- return data;
- }
-}
diff --git a/tests/src/com/android/contacts/util/ExpirableCacheTest.java b/tests/src/com/android/contacts/util/ExpirableCacheTest.java
deleted file mode 100644
index 33e176e..0000000
--- a/tests/src/com/android/contacts/util/ExpirableCacheTest.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.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.LruCache;
-
-import com.android.contacts.util.ExpirableCache.CachedValue;
-
-/**
- * Unit tests for {@link ExpirableCache}.
- */
-@SmallTest
-public class ExpirableCacheTest extends AndroidTestCase {
- /** The object under test. */
- private ExpirableCache<String, Integer> mCache;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- LruCache<String, CachedValue<Integer>> lruCache =
- new LruCache<String, ExpirableCache.CachedValue<Integer>>(20);
- mCache = ExpirableCache.create(lruCache);
- }
-
- @Override
- protected void tearDown() throws Exception {
- mCache = null;
- super.tearDown();
- }
-
- public void testPut() {
- mCache.put("a", 1);
- mCache.put("b", 2);
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- assertEquals(2, mCache.getPossiblyExpired("b").intValue());
- mCache.put("a", 3);
- assertEquals(3, mCache.getPossiblyExpired("a").intValue());
- }
-
- public void testGet_NotExisting() {
- assertNull(mCache.getPossiblyExpired("a"));
- mCache.put("b", 1);
- assertNull(mCache.getPossiblyExpired("a"));
- }
-
- public void testGet_Expired() {
- mCache.put("a", 1);
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- mCache.expireAll();
- assertEquals(1, mCache.getPossiblyExpired("a").intValue());
- }
-
- public void testGetNotExpired_NotExisting() {
- assertNull(mCache.get("a"));
- mCache.put("b", 1);
- assertNull(mCache.get("a"));
- }
-
- public void testGetNotExpired_Expired() {
- mCache.put("a", 1);
- assertEquals(1, mCache.get("a").intValue());
- mCache.expireAll();
- assertNull(mCache.get("a"));
- }
-
- public void testGetCachedValue_NotExisting() {
- assertNull(mCache.getCachedValue("a"));
- mCache.put("b", 1);
- assertNull(mCache.getCachedValue("a"));
- }
-
- public void testGetCachedValue_Expired() {
- mCache.put("a", 1);
- assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
- mCache.expireAll();
- assertTrue("Should be expired", mCache.getCachedValue("a").isExpired());
- }
-
- public void testGetChangedValue_PutAfterExpired() {
- mCache.put("a", 1);
- mCache.expireAll();
- mCache.put("a", 1);
- assertFalse("Should not be expired", mCache.getCachedValue("a").isExpired());
- }
-
- public void testComputingCache() {
- // Creates a cache in which all unknown values default to zero.
- mCache = ExpirableCache.create(
- new LruCache<String, ExpirableCache.CachedValue<Integer>>(10) {
- @Override
- protected CachedValue<Integer> create(String key) {
- return mCache.newCachedValue(0);
- }
- });
-
- // The first time we request a new value, we add it to the cache.
- CachedValue<Integer> cachedValue = mCache.getCachedValue("a");
- assertNotNull("Should have been created implicitly", cachedValue);
- assertEquals(0, cachedValue.getValue().intValue());
- assertFalse("Should not be expired", cachedValue.isExpired());
-
- // If we expire all the values, the implicitly created value will also be marked as expired.
- mCache.expireAll();
- CachedValue<Integer> expiredCachedValue = mCache.getCachedValue("a");
- assertNotNull("Should have been created implicitly", expiredCachedValue);
- assertEquals(0, expiredCachedValue.getValue().intValue());
- assertTrue("Should be expired", expiredCachedValue.isExpired());
- }
-}
diff --git a/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java b/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java
deleted file mode 100644
index 8c97f21..0000000
--- a/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java
+++ /dev/null
@@ -1,231 +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.app.Instrumentation;
-import android.os.AsyncTask;
-
-import com.google.common.collect.Lists;
-
-import junit.framework.Assert;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.ThreadSafe;
-
-/**
- * Test implementation of AsyncTaskExecutor.
- * <p>
- * This class is thread-safe. As per the contract of the AsyncTaskExecutor, the submit methods must
- * be called from the main ui thread, however the other public methods may be called from any thread
- * (most commonly the test thread).
- * <p>
- * Tasks submitted to this executor will not be run immediately. Rather they will be stored in a
- * list of submitted tasks, where they can be examined. They can also be run on-demand using the run
- * methods, so that different ordering of AsyncTask execution can be simulated.
- * <p>
- * The onPreExecute method of the submitted AsyncTask will be called synchronously during the
- * call to {@link #submit(Object, AsyncTask, Object...)}.
- */
-@ThreadSafe
-public class FakeAsyncTaskExecutor implements AsyncTaskExecutor {
- private static final long DEFAULT_TIMEOUT_MS = 10000;
-
- /** The maximum length of time in ms to wait for tasks to execute during tests. */
- private final long mTimeoutMs = DEFAULT_TIMEOUT_MS;
-
- private final Object mLock = new Object();
- @GuardedBy("mLock") private final List<SubmittedTask> mSubmittedTasks = Lists.newArrayList();
-
- private final DelayedExecutor mBlockingExecutor = new DelayedExecutor();
- private final Instrumentation mInstrumentation;
-
- /** Create a fake AsyncTaskExecutor for use in unit tests. */
- public FakeAsyncTaskExecutor(Instrumentation instrumentation) {
- Assert.assertNotNull(instrumentation);
- mInstrumentation = instrumentation;
- }
-
- /** Encapsulates an async task with the params and identifier it was submitted with. */
- public interface SubmittedTask {
- Runnable getRunnable();
- Object getIdentifier();
- AsyncTask<?, ?, ?> getAsyncTask();
- }
-
- private static final class SubmittedTaskImpl implements SubmittedTask {
- private final Object mIdentifier;
- private final Runnable mRunnable;
- private final AsyncTask<?, ?, ?> mAsyncTask;
-
- public SubmittedTaskImpl(Object identifier, Runnable runnable,
- AsyncTask<?, ?, ?> asyncTask) {
- mIdentifier = identifier;
- mRunnable = runnable;
- mAsyncTask = asyncTask;
- }
-
- @Override
- public Object getIdentifier() {
- return mIdentifier;
- }
-
- @Override
- public Runnable getRunnable() {
- return mRunnable;
- }
-
- @Override
- public AsyncTask<?, ?, ?> getAsyncTask() {
- return mAsyncTask;
- }
-
- @Override
- public String toString() {
- return "SubmittedTaskImpl [mIdentifier=" + mIdentifier + "]";
- }
- }
-
- private class DelayedExecutor implements Executor {
- private final Object mNextLock = new Object();
- @GuardedBy("mNextLock") private Object mNextIdentifier;
- @GuardedBy("mNextLock") private AsyncTask<?, ?, ?> mNextTask;
-
- @Override
- public void execute(Runnable command) {
- synchronized (mNextLock) {
- Assert.assertNotNull(mNextTask);
- mSubmittedTasks.add(new SubmittedTaskImpl(mNextIdentifier,
- command, mNextTask));
- mNextIdentifier = null;
- mNextTask = null;
- }
- }
-
- public <T> AsyncTask<T, ?, ?> submit(Object identifier,
- AsyncTask<T, ?, ?> task, T... params) {
- synchronized (mNextLock) {
- Assert.assertNull(mNextIdentifier);
- Assert.assertNull(mNextTask);
- mNextIdentifier = identifier;
- Assert.assertNotNull("Already had a valid task.\n"
- + "Are you calling AsyncTaskExecutor.submit(...) from within the "
- + "onPreExecute() method of another task being submitted?\n"
- + "Sorry! Not that's not supported.", task);
- mNextTask = task;
- }
- return task.executeOnExecutor(this, params);
- }
- }
-
- @Override
- public <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params) {
- AsyncTaskExecutors.checkCalledFromUiThread();
- return mBlockingExecutor.submit(identifier, task, params);
- }
-
- /**
- * Runs a single task matching the given identifier.
- * <p>
- * Removes the matching task from the list of submitted tasks, then runs it. The executor used
- * to execute this async task will be a same-thread executor.
- * <p>
- * Fails if there was not exactly one task matching the given identifier.
- * <p>
- * This method blocks until the AsyncTask has completely finished executing.
- */
- public void runTask(Object identifier) throws InterruptedException {
- List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
- Assert.assertEquals("Expected one task " + identifier + ", got " + tasks, 1, tasks.size());
- runTask(tasks.get(0));
- }
-
- /**
- * Runs all tasks whose identifier matches the given identifier.
- * <p>
- * Removes all matching tasks from the list of submitted tasks, and runs them. The executor used
- * to execute these async tasks will be a same-thread executor.
- * <p>
- * Fails if there were no tasks matching the given identifier.
- * <p>
- * This method blocks until the AsyncTask objects have completely finished executing.
- */
- public void runAllTasks(Object identifier) throws InterruptedException {
- List<SubmittedTask> tasks = getSubmittedTasksByIdentifier(identifier, true);
- Assert.assertTrue("There were no tasks with identifier " + identifier, tasks.size() > 0);
- for (SubmittedTask task : tasks) {
- runTask(task);
- }
- }
-
- /**
- * Executes a single {@link SubmittedTask}.
- * <p>
- * Blocks until the task has completed running.
- */
- private <T> void runTask(final SubmittedTask submittedTask) throws InterruptedException {
- submittedTask.getRunnable().run();
- // Block until the onPostExecute or onCancelled has finished.
- // Unfortunately we can't be sure when the AsyncTask will have posted its result handling
- // code to the main ui thread, the best we can do is wait for the Status to be FINISHED.
- final CountDownLatch latch = new CountDownLatch(1);
- class AsyncTaskHasFinishedRunnable implements Runnable {
- @Override
- public void run() {
- if (submittedTask.getAsyncTask().getStatus() == AsyncTask.Status.FINISHED) {
- latch.countDown();
- } else {
- mInstrumentation.waitForIdle(this);
- }
- }
- }
- mInstrumentation.waitForIdle(new AsyncTaskHasFinishedRunnable());
- Assert.assertTrue(latch.await(mTimeoutMs, TimeUnit.MILLISECONDS));
- }
-
- private List<SubmittedTask> getSubmittedTasksByIdentifier(
- Object identifier, boolean remove) {
- Assert.assertNotNull(identifier);
- List<SubmittedTask> results = Lists.newArrayList();
- synchronized (mLock) {
- Iterator<SubmittedTask> iter = mSubmittedTasks.iterator();
- while (iter.hasNext()) {
- SubmittedTask task = iter.next();
- if (identifier.equals(task.getIdentifier())) {
- results.add(task);
- iter.remove();
- }
- }
- }
- return results;
- }
-
- /** Get a factory that will return this instance - useful for testing. */
- public AsyncTaskExecutors.AsyncTaskExecutorFactory getFactory() {
- return new AsyncTaskExecutors.AsyncTaskExecutorFactory() {
- @Override
- public AsyncTaskExecutor createAsyncTaskExeuctor() {
- return FakeAsyncTaskExecutor.this;
- }
- };
- }
-}
diff --git a/tests/src/com/android/contacts/util/IntegrationTestUtils.java b/tests/src/com/android/contacts/util/IntegrationTestUtils.java
deleted file mode 100644
index 8c9dd6c..0000000
--- a/tests/src/com/android/contacts/util/IntegrationTestUtils.java
+++ /dev/null
@@ -1,186 +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 static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP;
-import static android.os.PowerManager.FULL_WAKE_LOCK;
-import static android.os.PowerManager.ON_AFTER_RELEASE;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.content.Context;
-import android.os.PowerManager;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.google.common.base.Preconditions;
-
-import junit.framework.Assert;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.FutureTask;
-
-import javax.annotation.concurrent.GuardedBy;
-import javax.annotation.concurrent.ThreadSafe;
-
-/** Some utility methods for making integration testing smoother. */
-@ThreadSafe
-public class IntegrationTestUtils {
- private static final String TAG = "IntegrationTestUtils";
-
- private final Instrumentation mInstrumentation;
- private final Object mLock = new Object();
- @GuardedBy("mLock") private PowerManager.WakeLock mWakeLock;
-
- public IntegrationTestUtils(Instrumentation instrumentation) {
- mInstrumentation = instrumentation;
- }
-
- /**
- * Find a view by a given resource id, from the given activity, and click it, iff it is
- * enabled according to {@link View#isEnabled()}.
- */
- public void clickButton(final Activity activity, final int buttonResourceId) throws Throwable {
- runOnUiThreadAndGetTheResult(new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- View view = activity.findViewById(buttonResourceId);
- Assert.assertNotNull(view);
- if (view.isEnabled()) {
- view.performClick();
- }
- return null;
- }
- });
- }
-
- /** Returns the result of running {@link TextView#getText()} on the ui thread. */
- public CharSequence getText(final TextView view) throws Throwable {
- return runOnUiThreadAndGetTheResult(new Callable<CharSequence>() {
- @Override
- public CharSequence call() {
- return view.getText();
- }
- });
- }
-
- // TODO: Move this class and the appropriate documentation into a test library, having checked
- // first to see if exactly this code already exists or not.
- /**
- * Execute a callable on the ui thread, returning its result synchronously.
- * <p>
- * Waits for an idle sync on the main thread (see {@link Instrumentation#waitForIdle(Runnable)})
- * before executing this callable.
- */
- public <T> T runOnUiThreadAndGetTheResult(Callable<T> callable) throws Throwable {
- FutureTask<T> future = new FutureTask<T>(callable);
- mInstrumentation.waitForIdle(future);
- try {
- return future.get();
- } catch (ExecutionException e) {
- // Unwrap the cause of the exception and re-throw it.
- throw e.getCause();
- }
- }
-
- /**
- * Wake up the screen, useful in tests that want or need the screen to be on.
- * <p>
- * This is usually called from setUp() for tests that require it. After calling this method,
- * {@link #releaseScreenWakeLock()} must be called, this is usually done from tearDown().
- */
- public void acquireScreenWakeLock(Context context) {
- synchronized (mLock) {
- Preconditions.checkState(mWakeLock == null, "mWakeLock was already held");
- mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
- .newWakeLock(ACQUIRE_CAUSES_WAKEUP | ON_AFTER_RELEASE | FULL_WAKE_LOCK, TAG);
- mWakeLock.acquire();
- }
- }
-
- /** Release the wake lock previously acquired with {@link #acquireScreenWakeLock(Context)}. */
- public void releaseScreenWakeLock() {
- synchronized (mLock) {
- // We don't use Preconditions to force you to have acquired before release.
- // This is because we don't want unnecessary exceptions in tearDown() since they'll
- // typically mask the actual exception that happened during the test.
- // The other reason is that this method is most likely to be called from tearDown(),
- // which is invoked within a finally block, so it's not infrequently the case that
- // the setUp() method fails before getting the lock, at which point we don't want
- // to fail in tearDown().
- if (mWakeLock != null) {
- mWakeLock.release();
- mWakeLock = null;
- }
- }
- }
-
- /**
- * Gets all {@link TextView} objects whose {@link TextView#getText()} contains the given text as
- * a substring.
- */
- public List<TextView> getTextViewsWithString(final Activity activity, final String text)
- throws Throwable {
- return runOnUiThreadAndGetTheResult(new Callable<List<TextView>>() {
- @Override
- public List<TextView> call() throws Exception {
- List<TextView> matchingViews = new ArrayList<TextView>();
- for (TextView textView : getAllViews(TextView.class, getRootView(activity))) {
- if (textView.getText().toString().contains(text)) {
- matchingViews.add(textView);
- }
- }
- return matchingViews;
- }
- });
- }
-
- /** Find the root view for a given activity. */
- public static View getRootView(Activity activity) {
- return activity.findViewById(android.R.id.content).getRootView();
- }
-
- /**
- * Gets a list of all views of a given type, rooted at the given parent.
- * <p>
- * This method will recurse down through all {@link ViewGroup} instances looking for
- * {@link View} instances of the supplied class type. Specifically it will use the
- * {@link Class#isAssignableFrom(Class)} method as the test for which views to add to the list,
- * so if you provide {@code View.class} as your type, you will get every view. The parent itself
- * will be included also, should it be of the right type.
- * <p>
- * This call manipulates the ui, and as such should only be called from the application's main
- * thread.
- */
- private static <T extends View> List<T> getAllViews(final Class<T> clazz, final View parent) {
- List<T> results = new ArrayList<T>();
- if (parent.getClass().equals(clazz)) {
- results.add(clazz.cast(parent));
- }
- if (parent instanceof ViewGroup) {
- ViewGroup viewGroup = (ViewGroup) parent;
- for (int i = 0; i < viewGroup.getChildCount(); ++i) {
- results.addAll(getAllViews(clazz, viewGroup.getChildAt(i)));
- }
- }
- return results;
- }
-}
diff --git a/tests/src/com/android/contacts/util/LocaleTestUtils.java b/tests/src/com/android/contacts/util/LocaleTestUtils.java
deleted file mode 100644
index e0a8670..0000000
--- a/tests/src/com/android/contacts/util/LocaleTestUtils.java
+++ /dev/null
@@ -1,119 +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.Configuration;
-import android.content.res.Resources;
-
-import java.util.Locale;
-
-/**
- * Utility class to save and restore the locale of the system.
- * <p>
- * This can be used for tests that assume to be run in a certain locale, e.g., because they
- * check against strings in a particular language or require an assumption on how the system
- * will behave in a specific locale.
- * <p>
- * In your test, you can change the locale with the following code:
- * <pre>
- * public class CanadaFrenchTest extends AndroidTestCase {
- * private LocaleTestUtils mLocaleTestUtils;
- *
- * @Override
- * public void setUp() throws Exception {
- * super.setUp();
- * mLocaleTestUtils = new LocaleTestUtils(getContext());
- * mLocaleTestUtils.setLocale(Locale.CANADA_FRENCH);
- * }
- *
- * @Override
- * public void tearDown() throws Exception {
- * mLocaleTestUtils.restoreLocale();
- * mLocaleTestUtils = null;
- * super.tearDown();
- * }
- *
- * ...
- * }
- * </pre>
- * Note that one should not call {@link #setLocale(Locale)} more than once without calling
- * {@link #restoreLocale()} first.
- * <p>
- * This class is not thread-safe. Usually its methods should be invoked only from the test thread.
- */
-public class LocaleTestUtils {
- private final Context mContext;
- private boolean mSaved;
- private Locale mSavedContextLocale;
- private Locale mSavedSystemLocale;
-
- /**
- * Create a new instance that can be used to set and reset the locale for the given context.
- *
- * @param context the context on which to alter the locale
- */
- public LocaleTestUtils(Context context) {
- mContext = context;
- mSaved = false;
- }
-
- /**
- * Set the locale to the given value and saves the previous value.
- *
- * @param locale the value to which the locale should be set
- * @throws IllegalStateException if the locale was already set
- */
- public void setLocale(Locale locale) {
- if (mSaved) {
- throw new IllegalStateException(
- "call restoreLocale() before calling setLocale() again");
- }
- mSavedContextLocale = setResourcesLocale(mContext.getResources(), locale);
- mSavedSystemLocale = setResourcesLocale(Resources.getSystem(), locale);
- mSaved = true;
- }
-
- /**
- * Restores the previously set locale.
- *
- * @throws IllegalStateException if the locale was not set using {@link #setLocale(Locale)}
- */
- public void restoreLocale() {
- if (!mSaved) {
- throw new IllegalStateException("call setLocale() before calling restoreLocale()");
- }
- setResourcesLocale(mContext.getResources(), mSavedContextLocale);
- setResourcesLocale(Resources.getSystem(), mSavedSystemLocale);
- mSaved = false;
- }
-
- /**
- * Sets the locale for the given resources and returns the previous locale.
- *
- * @param resources the resources on which to set the locale
- * @param locale the value to which to set the locale
- * @return the previous value of the locale for the resources
- */
- private Locale setResourcesLocale(Resources resources, Locale locale) {
- Configuration contextConfiguration = new Configuration(resources.getConfiguration());
- Locale savedLocale = contextConfiguration.locale;
- contextConfiguration.locale = locale;
- resources.updateConfiguration(contextConfiguration, null);
- return savedLocale;
- }
-}
\ No newline at end of file
diff --git a/tests/src/com/android/contacts/voicemail/VoicemailStatusHelperImplTest.java b/tests/src/com/android/contacts/voicemail/VoicemailStatusHelperImplTest.java
deleted file mode 100644
index 801c162..0000000
--- a/tests/src/com/android/contacts/voicemail/VoicemailStatusHelperImplTest.java
+++ /dev/null
@@ -1,274 +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.voicemail;
-
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE;
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_CAN_BE_CONFIGURED;
-import static android.provider.VoicemailContract.Status.CONFIGURATION_STATE_NOT_CONFIGURED;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.DATA_CHANNEL_STATE_OK;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION;
-import static android.provider.VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract.Status;
-import android.test.AndroidTestCase;
-
-import com.android.contacts.R;
-import com.android.contacts.voicemail.VoicemailStatusHelper.StatusMessage;
-
-import java.util.List;
-
-/**
- * Unit tests for {@link VoicemailStatusHelperImpl}.
- */
-public class VoicemailStatusHelperImplTest extends AndroidTestCase {
- private static final String[] TEST_PACKAGES = new String[] {
- "com.test.package1",
- "com.test.package2"
- };
-
- private static final Uri TEST_SETTINGS_URI = Uri.parse("http://www.visual.voicemail.setup");
- private static final Uri TEST_VOICEMAIL_URI = Uri.parse("tel:901");
-
- private static final int ACTION_MSG_CALL_VOICEMAIL =
- R.string.voicemail_status_action_call_server;
- private static final int ACTION_MSG_CONFIGURE = R.string.voicemail_status_action_configure;
-
- private static final int STATUS_MSG_NONE = -1;
- private static final int STATUS_MSG_VOICEMAIL_NOT_AVAILABLE =
- R.string.voicemail_status_voicemail_not_available;
- private static final int STATUS_MSG_AUDIO_NOT_AVAIALABLE =
- R.string.voicemail_status_audio_not_available;
- private static final int STATUS_MSG_MESSAGE_WAITING = R.string.voicemail_status_messages_waiting;
- private static final int STATUS_MSG_INVITE_FOR_CONFIGURATION =
- R.string.voicemail_status_configure_voicemail;
-
- // Object under test.
- private VoicemailStatusHelper mStatusHelper;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mStatusHelper = new VoicemailStatusHelperImpl();
- }
-
- @Override
- protected void tearDown() throws Exception {
- for (String sourcePackage : TEST_PACKAGES) {
- deleteEntryForPackage(sourcePackage);
- }
- // Set member variables to null so that they are garbage collected across different runs
- // of the tests.
- mStatusHelper = null;
- super.tearDown();
- }
-
-
- public void testNoStatusEntries() {
- assertEquals(0, getStatusMessages().size());
- }
-
- public void testAllOK() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
- assertEquals(0, getStatusMessages().size());
- }
-
- public void testNotAllOKForOnePackage() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
-
- ContentValues values = new ContentValues();
- // Good data channel + no notification
- // action: call voicemail
- // msg: voicemail not available in call log page & none in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_NONE, ACTION_MSG_CALL_VOICEMAIL);
-
- // Message waiting + good data channel - no action.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkNoMessages(TEST_PACKAGES[1], values);
-
- // No data channel + no notification
- // action: call voicemail
- // msg: voicemail not available in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_OK);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // No data channel + Notification OK
- // action: call voicemail
- // msg: voicemail not available in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_VOICEMAIL_NOT_AVAILABLE,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // No data channel + Notification OK
- // action: call voicemail
- // msg: message waiting in call log page & audio not available in call details page.
- values.put(NOTIFICATION_CHANNEL_STATE, NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
- values.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_MESSAGE_WAITING,
- STATUS_MSG_AUDIO_NOT_AVAIALABLE, ACTION_MSG_CALL_VOICEMAIL);
-
- // Not configured. No user action, so no message.
- values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_NOT_CONFIGURED);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkNoMessages(TEST_PACKAGES[1], values);
-
- // Can be configured - invite user for configure voicemail.
- values.put(CONFIGURATION_STATE, CONFIGURATION_STATE_CAN_BE_CONFIGURED);
- updateEntryForPackage(TEST_PACKAGES[1], values);
- checkExpectedMessage(TEST_PACKAGES[1], values, STATUS_MSG_INVITE_FOR_CONFIGURATION,
- STATUS_MSG_NONE, ACTION_MSG_CONFIGURE, TEST_SETTINGS_URI);
- }
-
- // Test that priority of messages are handled well.
- public void testMessageOrdering() {
- insertEntryForPackage(TEST_PACKAGES[0], getAllOkStatusValues());
- insertEntryForPackage(TEST_PACKAGES[1], getAllOkStatusValues());
-
- final ContentValues valuesNoNotificationGoodDataChannel = new ContentValues();
- valuesNoNotificationGoodDataChannel.put(NOTIFICATION_CHANNEL_STATE,
- NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- valuesNoNotificationGoodDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_OK);
-
- final ContentValues valuesNoNotificationNoDataChannel = new ContentValues();
- valuesNoNotificationNoDataChannel.put(NOTIFICATION_CHANNEL_STATE,
- NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
- valuesNoNotificationNoDataChannel.put(DATA_CHANNEL_STATE, DATA_CHANNEL_STATE_NO_CONNECTION);
-
- // Package1 with valuesNoNotificationGoodDataChannel and
- // package2 with valuesNoNotificationNoDataChannel. Package2 should be above.
- updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationGoodDataChannel);
- updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationNoDataChannel);
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(2, messages.size());
- assertEquals(TEST_PACKAGES[0], messages.get(1).sourcePackage);
- assertEquals(TEST_PACKAGES[1], messages.get(0).sourcePackage);
-
- // Now reverse the values - ordering should be reversed as well.
- updateEntryForPackage(TEST_PACKAGES[0], valuesNoNotificationNoDataChannel);
- updateEntryForPackage(TEST_PACKAGES[1], valuesNoNotificationGoodDataChannel);
- messages = getStatusMessages();
- assertEquals(2, messages.size());
- assertEquals(TEST_PACKAGES[0], messages.get(0).sourcePackage);
- assertEquals(TEST_PACKAGES[1], messages.get(1).sourcePackage);
- }
-
- /** Checks that the expected source status message is returned by VoicemailStatusHelper. */
- private void checkExpectedMessage(String sourcePackage, ContentValues values,
- int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
- Uri expectedUri) {
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(1, messages.size());
- checkMessageMatches(messages.get(0), sourcePackage, expectedCallLogMsg,
- expectedCallDetailsMsg, expectedActionMsg, expectedUri);
- }
-
- private void checkExpectedMessage(String sourcePackage, ContentValues values,
- int expectedCallLogMsg, int expectedCallDetailsMessage, int expectedActionMsg) {
- checkExpectedMessage(sourcePackage, values, expectedCallLogMsg, expectedCallDetailsMessage,
- expectedActionMsg, TEST_VOICEMAIL_URI);
- }
-
- private void checkMessageMatches(StatusMessage message, String expectedSourcePackage,
- int expectedCallLogMsg, int expectedCallDetailsMsg, int expectedActionMsg,
- Uri expectedUri) {
- assertEquals(expectedSourcePackage, message.sourcePackage);
- assertEquals(expectedCallLogMsg, message.callLogMessageId);
- assertEquals(expectedCallDetailsMsg, message.callDetailsMessageId);
- assertEquals(expectedActionMsg, message.actionMessageId);
- if (expectedUri == null) {
- assertNull(message.actionUri);
- } else {
- assertEquals(expectedUri, message.actionUri);
- }
- }
-
- private void checkNoMessages(String sourcePackage, ContentValues values) {
- assertEquals(1, updateEntryForPackage(sourcePackage, values));
- List<StatusMessage> messages = getStatusMessages();
- assertEquals(0, messages.size());
- }
-
- private ContentValues getAllOkStatusValues() {
- ContentValues values = new ContentValues();
- values.put(Status.SETTINGS_URI, TEST_SETTINGS_URI.toString());
- values.put(Status.VOICEMAIL_ACCESS_URI, TEST_VOICEMAIL_URI.toString());
- values.put(Status.CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
- values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_OK);
- values.put(Status.NOTIFICATION_CHANNEL_STATE, Status.NOTIFICATION_CHANNEL_STATE_OK);
- return values;
- }
-
- private void insertEntryForPackage(String sourcePackage, ContentValues values) {
- // If insertion fails then try update as the record might already exist.
- if (getContentResolver().insert(Status.buildSourceUri(sourcePackage), values) == null) {
- updateEntryForPackage(sourcePackage, values);
- }
- }
-
- private void deleteEntryForPackage(String sourcePackage) {
- getContentResolver().delete(Status.buildSourceUri(sourcePackage), null, null);
- }
-
- private int updateEntryForPackage(String sourcePackage, ContentValues values) {
- return getContentResolver().update(
- Status.buildSourceUri(sourcePackage), values, null, null);
- }
-
- private List<StatusMessage> getStatusMessages() {
- // Restrict the cursor to only the the test packages to eliminate any side effects if there
- // are other status messages already stored on the device.
- Cursor cursor = getContentResolver().query(Status.CONTENT_URI,
- VoicemailStatusHelperImpl.PROJECTION, getTestPackageSelection(), null, null);
- return mStatusHelper.getStatusMessages(cursor);
- }
-
- private String getTestPackageSelection() {
- StringBuilder sb = new StringBuilder();
- for (String sourcePackage : TEST_PACKAGES) {
- if (sb.length() > 0) {
- sb.append(" OR ");
- }
- sb.append(String.format("(source_package='%s')", sourcePackage));
- }
- return sb.toString();
- }
-
- private ContentResolver getContentResolver() {
- return getContext().getContentResolver();
- }
-}