Merge "Set a fixed size for the left pane"
diff --git a/res/layout/status_bar_ongoing_event_progress_bar.xml b/res/layout/status_bar_ongoing_event_progress_bar.xml
index 5eb4e9d..3c7530a 100644
--- a/res/layout/status_bar_ongoing_event_progress_bar.xml
+++ b/res/layout/status_bar_ongoing_event_progress_bar.xml
@@ -37,9 +37,8 @@
             android:orientation="vertical"
             android:paddingTop="8dp"
             android:focusable="true"
-            android:clickable="true"
             >
-            <com.android.contacts.vcard.AnimatedImageView
+            <ImageView
                 android:id="@+id/status_icon"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -52,59 +51,44 @@
                 android:textColor="#ff000000"
                 android:singleLine="true"
                 android:textSize="14sp"
-                android:layout_gravity="center_horizontal"
-                />
+                android:layout_gravity="center_horizontal" />
         </LinearLayout>
 
         <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical"
-            android:focusable="true"
-            android:clickable="true"
-            >
+            android:focusable="true">
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:focusable="true"
-                android:clickable="true"
                 android:layout_alignParentTop="true"
-                android:paddingTop="10dp"
-                >
-                <TextView android:id="@+id/status_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:singleLine="true"
-                    android:textSize="18sp"
-                    android:textColor="#ff000000"
-                    android:paddingLeft="2dp"
-                    />
+                android:paddingTop="10dp">
                 <TextView android:id="@+id/status_description"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textColor="#ff000000"
                     android:singleLine="true"
-                    android:textSize="14sp"
-                    android:paddingLeft="5dp"
-                    />
+                    android:textSize="18sp"
+                    android:paddingLeft="5dp" />
             </LinearLayout>
-            <ProgressBar android:id="@+id/status_progress_bar"
-                style="?android:attr/progressBarStyleHorizontal"
-                android:layout_width="match_parent" 
-                android:layout_height="wrap_content"
-                android:layout_alignParentBottom="true"
-                android:paddingBottom="8dp"
-                android:paddingRight="25dp"
-                />
+            <ProgressBar
+               android:id="@+id/status_progress_bar"
+               style="?android:attr/progressBarStyleHorizontal"
+               android:layout_width="match_parent"
+               android:layout_height="wrap_content"
+               android:layout_alignParentBottom="true"
+               android:paddingBottom="8dp"
+               android:paddingRight="25dp" />
         </RelativeLayout>
     </LinearLayout>
-        
-    <com.android.contacts.vcard.AnimatedImageView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:src="@android:drawable/divider_horizontal_bright"
-        />
 
+    <ImageView
+       android:layout_width="match_parent"
+       android:layout_height="wrap_content"
+       android:src="@android:drawable/divider_horizontal_bright"
+       />
 </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 100dcc4..5bdfdf8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -755,11 +755,12 @@
     <!-- 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 Uri which is being read. -->
-    <string name="progress_notifier_message"><xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="filename" example="foo.vcf">%s</xliff:g></string>
+         Third argument is the name of a contact which is being read. -->
+    <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>
 
-    <!-- Dialog title shown when reading vCard data -->
-    <string name="reading_vcard_title">Reading vCard(s)</string>
+    <!-- Description shown when importing vCard data.
+         The argument is the name of a contact which is being read. -->
+    <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 -->
     <string name="reading_vcard_failed_title">Failed to Read vCard data</string>
diff --git a/src/com/android/contacts/vcard/ImportProgressNotifier.java b/src/com/android/contacts/vcard/ImportProgressNotifier.java
index ad88f64..286bb43 100644
--- a/src/com/android/contacts/vcard/ImportProgressNotifier.java
+++ b/src/com/android/contacts/vcard/ImportProgressNotifier.java
@@ -20,6 +20,7 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.widget.RemoteViews;
 
 import com.android.contacts.R;
 import com.android.contacts.activities.ContactBrowserActivity;
@@ -56,24 +57,25 @@
         // - There's high probability where name comes soon after the beginning of entry, so
         //   we don't need to hurry to show something.
 
-        final String title = mContext.getString(R.string.reading_vcard_title);
 
-        String totalCountString;
+        final String totalCountString;
         synchronized (this) {
             totalCountString = String.valueOf(mTotalCount);
         }
-        final String description = mContext.getString(R.string.progress_notifier_message,
-                String.valueOf(mCurrentCount),
-                totalCountString,
-                contactStruct.getDisplayName());
+        final String tickerText =
+                mContext.getString(R.string.progress_notifier_message,
+                        String.valueOf(mCurrentCount),
+                        totalCountString,
+                        contactStruct.getDisplayName());
+
 
         final Context context = mContext.getApplicationContext();
 
-        /* TODO: fix this.
+        final String description = mContext.getString(R.string.importing_vcard_description,
+                contactStruct.getDisplayName());
         final RemoteViews remoteViews =
                 new RemoteViews(context.getPackageName(),
                 R.layout.status_bar_ongoing_event_progress_bar);
-        remoteViews.setTextViewText(R.id.status_title, title);
         remoteViews.setTextViewText(R.id.status_description, description);
         remoteViews.setProgressBar(R.id.status_progress_bar, mTotalCount, mCurrentCount,
                 mTotalCount == -1);
@@ -89,23 +91,17 @@
 
         final Notification notification = new Notification();
         notification.icon = android.R.drawable.stat_sys_download;
-        notification.tickerText = description;
+        notification.tickerText = tickerText;
+        notification.contentView = remoteViews;
         notification.flags |= Notification.FLAG_ONGOING_EVENT;
-        notification.tickerText = description;
-        notification.contentView = remoteViews;*/
-
-        final long when = System.currentTimeMillis();
-        final Notification notification = new Notification(
-                android.R.drawable.stat_sys_download,
-                description,
-                when);
 
         final PendingIntent pendingIntent =
                 PendingIntent.getActivity(context, 0,
                         new Intent(context, ContactBrowserActivity.class),
                         PendingIntent.FLAG_UPDATE_CURRENT);
 
-        notification.setLatestEventInfo(context, title, description, pendingIntent);
+        notification.contentIntent = pendingIntent;
+        // notification.setLatestEventInfo(context, title, description, pendingIntent);
         mNotificationManager.notify(VCardService.IMPORT_NOTIFICATION_ID, notification);
     }
 
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index b2c8d1a..6374af5 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -99,6 +99,8 @@
     /* 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";
+
     final static String CACHED_URIS = "cached_uris";
 
     private AccountSelectionUtil.AccountSelectedListener mAccountSelectionListener;
@@ -150,6 +152,10 @@
                         // "manually" call unbindService() here.
                         unbindService(this);
                         mDisconnectAndFinishDone = true;
+                        finish();
+                    } else {
+                        // If not connected, finish() must be called when connected, as
+                        // We cann not call finish() now.
                     }
                 }
             }
@@ -669,7 +675,12 @@
             // e.g. secured directory may return null toward listFiles().
             final File[] files = directory.listFiles();
             if (files == null) {
-                Log.w(LOG_TAG, "listFiles() returned null (directory: " + directory + ")");
+                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()) {
@@ -952,7 +963,7 @@
                     Log.e(LOG_TAG, "Error message is null while it must not.");
                     message = getString(R.string.fail_reason_unknown);
                 }
-                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                final AlertDialog.Builder builder = new AlertDialog.Builder(this)
                     .setTitle(getString(R.string.reading_vcard_failed_title))
                     .setIcon(android.R.drawable.ic_dialog_alert)
                     .setMessage(message)