Merge "Import revised translations."
diff --git a/res/layout/dialpad.xml b/res/layout/dialpad.xml
index 57a612b..4533f9d 100644
--- a/res/layout/dialpad.xml
+++ b/res/layout/dialpad.xml
@@ -26,38 +26,50 @@
 
     <TableRow>
         <ImageButton android:id="@+id/one" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_1_no_vm" />
+            android:src="@drawable/dial_num_1_no_vm"
+            android:contentDescription="@string/description_image_button_one" />
         <ImageButton android:id="@+id/two" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_2" />
+            android:src="@drawable/dial_num_2"
+            android:contentDescription="@string/description_image_button_two" />
         <ImageButton android:id="@+id/three" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_3" />
+            android:src="@drawable/dial_num_3"
+            android:contentDescription="@string/description_image_button_three" />
     </TableRow>
 
     <TableRow>
         <ImageButton android:id="@+id/four" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_4" />
+            android:src="@drawable/dial_num_4"
+            android:contentDescription="@string/description_image_button_four" />
         <ImageButton android:id="@+id/five" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_5" />
+            android:src="@drawable/dial_num_5"
+            android:contentDescription="@string/description_image_button_five" />
         <ImageButton android:id="@+id/six" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_6" />
+            android:src="@drawable/dial_num_6"
+            android:contentDescription="@string/description_image_button_six" />
     </TableRow>
 
     <TableRow>
         <ImageButton android:id="@+id/seven" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_7" />
+            android:src="@drawable/dial_num_7"
+            android:contentDescription="@string/description_image_button_seven" />
         <ImageButton android:id="@+id/eight" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_8" />
+            android:src="@drawable/dial_num_8"
+            android:contentDescription="@string/description_image_button_eight" />
         <ImageButton android:id="@+id/nine" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_9" />
+            android:src="@drawable/dial_num_9"
+            android:contentDescription="@string/description_image_button_nine" />
     </TableRow>
 
     <TableRow>
         <ImageButton android:id="@+id/star" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_star" />
+            android:src="@drawable/dial_num_star"
+            android:contentDescription="@string/description_image_button_star" />
         <ImageButton android:id="@+id/zero" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_0" />
+            android:src="@drawable/dial_num_0"
+            android:contentDescription="@string/description_image_button_zero" />
         <ImageButton android:id="@+id/pound" style="@style/DialtactsDialpadButtonStyle"
-            android:src="@drawable/dial_num_pound" />
+            android:src="@drawable/dial_num_pound"
+            android:contentDescription="@string/description_image_button_pound" />
 
     </TableRow>
 </TableLayout>
diff --git a/res/layout/dialpad_additional_buttons.xml b/res/layout/dialpad_additional_buttons.xml
index cf91053..8831dad 100644
--- a/res/layout/dialpad_additional_buttons.xml
+++ b/res/layout/dialpad_additional_buttons.xml
@@ -32,7 +32,7 @@
         android:layout_gravity="center_vertical"
         android:state_enabled="false"
         android:background="@null"
-        android:contentDescription="@string/description_voicemail_button"
+        android:contentDescription="@string/description_search_button"
         android:src="@drawable/ic_dial_action_search"/>
 
     <!-- Onscreen "Dial" button, diused on all platforms by
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21f42e9..2add5e2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -688,6 +688,12 @@
     -->
     <string name="description_voicemail_button">voicemail</string>
 
+    <!-- String describing the Search ImageButton
+
+         Used by AccessibilityService to announce the purpose of the button.
+    -->
+    <string name="description_search_button">search</string>
+
     <!-- String describing the Dial ImageButton
 
          Used by AccessibilityService to announce the purpose of the button.
diff --git a/res/values/styles.xml b/res/values/styles.xml
index e880673..801cc51 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -315,6 +315,5 @@
         <item name="android:layout_weight">1</item>
         <item name="android:background">@null</item>
         <item name="android:soundEffectsEnabled">false</item>
-        <item name="android:contentDescription">@string/description_image_button_one</item>
     </style>
 </resources>
diff --git a/src/com/android/contacts/ContactOptionsActivity.java b/src/com/android/contacts/ContactOptionsActivity.java
index 2c6142a..9ae8fe9 100644
--- a/src/com/android/contacts/ContactOptionsActivity.java
+++ b/src/com/android/contacts/ContactOptionsActivity.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts;
 
+import android.app.ActionBar;
 import android.app.Activity;
 import android.content.ContentValues;
 import android.content.Intent;
@@ -26,6 +27,7 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
 import android.util.Log;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.TextView;
@@ -75,6 +77,11 @@
         label = (TextView)sendToVoicemailLayout.findViewById(R.id.label);
         label.setText(getString(R.string.actionIncomingCall));
 
+        ActionBar actionBar =  getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+
         mSendToVoicemailCheckbox = (CheckBox)sendToVoicemailLayout.findViewById(R.id.checkbox);
     }
 
@@ -208,6 +215,19 @@
             ContactsSearchManager.startSearch(this, initialQuery);
         }
     }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
 }
 
 
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index d8dbdbc..5912225 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -61,6 +61,9 @@
 public class ContactSaveService extends IntentService {
     private static final String TAG = "ContactSaveService";
 
+    /** Set to true in order to view logs on content provider operations */
+    private static final boolean DEBUG = false;
+
     public static final String ACTION_NEW_RAW_CONTACT = "newRawContact";
 
     public static final String EXTRA_ACCOUNT_NAME = "accountName";
@@ -282,6 +285,13 @@
             try {
                 // Build operations and try applying
                 final ArrayList<ContentProviderOperation> diff = state.buildDiff();
+                if (DEBUG) {
+                    Log.v(TAG, "Content Provider Operations:");
+                    for (ContentProviderOperation operation : diff) {
+                        Log.v(TAG, operation.toString());
+                    }
+                }
+
                 ContentProviderResult[] results = null;
                 if (!diff.isEmpty()) {
                     results = resolver.applyBatch(ContactsContract.AUTHORITY, diff);
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index c448d21..b45ba39 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -140,6 +140,11 @@
             }
         }
 
+        ActionBar actionBar =  getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+
         Log.i(TAG, getIntent().getData().toString());
     }
 
@@ -497,4 +502,17 @@
          */
         public boolean handleKeyDown(int keyCode);
     }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
 }
diff --git a/src/com/android/contacts/activities/GroupDetailActivity.java b/src/com/android/contacts/activities/GroupDetailActivity.java
index 5d50efc..21900c6 100644
--- a/src/com/android/contacts/activities/GroupDetailActivity.java
+++ b/src/com/android/contacts/activities/GroupDetailActivity.java
@@ -20,9 +20,11 @@
 import com.android.contacts.R;
 import com.android.contacts.group.GroupDetailFragment;
 
+import android.app.ActionBar;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
+import android.view.MenuItem;
 
 public class GroupDetailActivity extends ContactsActivity {
 
@@ -37,12 +39,15 @@
 
         setContentView(R.layout.group_detail_activity);
 
-        getActionBar().setDisplayHomeAsUpEnabled(true);
-
         GroupDetailFragment fragment = (GroupDetailFragment) getFragmentManager().findFragmentById(
                 R.id.group_detail_fragment);
         fragment.setListener(mFragmentListener);
         fragment.loadGroup(getIntent().getData());
+
+        ActionBar actionBar =  getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
     }
 
     private final GroupDetailFragment.Listener mFragmentListener =
@@ -66,4 +71,17 @@
             startActivity(intent);
         }
     };
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
 }
diff --git a/src/com/android/contacts/model/EntityModifier.java b/src/com/android/contacts/model/EntityModifier.java
index 9d527df..fb05162 100644
--- a/src/com/android/contacts/model/EntityModifier.java
+++ b/src/com/android/contacts/model/EntityModifier.java
@@ -75,6 +75,9 @@
 public class EntityModifier {
     private static final String TAG = "EntityModifier";
 
+    /** Set to true in order to view logs on entity operations */
+    private static final boolean DEBUG = false;
+
     /**
      * For the given {@link EntityDelta}, determine if the given
      * {@link DataKind} could be inserted under specific
@@ -426,8 +429,9 @@
                 final boolean isGooglePhoto = isPhoto && isGoogleAccount;
 
                 if (EntityModifier.isEmpty(entry, kind) && !isGooglePhoto) {
-                    // TODO: remove this verbose logging
-                    Log.w(TAG, "Trimming: " + entry.toString());
+                    if (DEBUG) {
+                        Log.v(TAG, "Trimming: " + entry.toString());
+                    }
                     entry.markDeleted();
                 } else if (!entry.isFromTemplate()) {
                     hasValues = true;