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 &gt; 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">"ድምጽ መልዕክትን ለማደራጀት ወደ ምናሌ &gt; ቅንብሮች  ሂድ::"</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">"لإعداد البريد الصوتي، انتقل إلى القائمة &gt; الإعدادات."</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">"За да настроите гласовата поща, отворете „Меню“ &gt; „Настройки“."</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ú &gt; 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 &gt; 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 &gt; 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ü\" &gt; \"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 του αυτόματου τηλεφωνητή, μεταβείτε στο στοιχείο Μενού &gt; Ρυθμίσεις."</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 &gt; 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ú &gt; 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üü &gt; 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">"برای راه‌اندازی پست صوتی به منو &gt; تنظیمات بروید."</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 &gt; 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 &gt; 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">"ध्‍वनिमेल सेट करने के लिए, मेनू &gt; सेटिंग पर जाएं."</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 &gt; 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ü &gt; 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 &gt; 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 &gt; 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">"כדי להגדיר את הדואר הקולי, עבור אל \'תפריט\' &gt; \'הגדרות\'."</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キー&gt;[設定]をタップします。"</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">"음성사서함을 설정하려면 메뉴 &gt; 설정으로 이동하세요."</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“ &gt; „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 &gt; 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 &gt; 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 &amp;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\' &gt; \'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 &gt; 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 &gt; 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 &gt; 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 &gt; 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">"Чтобы настроить голосовую почту, выберите \"Меню &gt; Настройки\"."</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 &gt; 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 &gt; 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">"Да бисте подесили говорну пошту, идите у Мени &gt; Подешавања."</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 &gt; 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 &gt; 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">"หากต้องการตั้งค่าข้อความเสียง ให้ไปที่เมนู &gt; การตั้งค่า"</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 &gt; 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ü &gt; 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">"Щоб налаштувати голосову пошту, перейдіть у Меню &gt; Налаштування."</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 &gt; 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">"要设置语音信箱，请转到“菜单”&gt;“设置”。"</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">"如要設定語音信箱，請前往 [選單] &gt; [設定]。"</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 &gt; 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 &gt; 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() {
- *                     &#64;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>
- *     &#64;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;
- *
- *     &#64;Override
- *     public void setUp() throws Exception {
- *         super.setUp();
- *         mLocaleTestUtils = new LocaleTestUtils(getContext());
- *         mLocaleTestUtils.setLocale(Locale.CANADA_FRENCH);
- *     }
- *
- *     &#64;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();
-    }
-}
