am 16aed6b6: am 6edbe421: Merge "Add "add to contacts" actionable item to shortcut card." into lmp-dev

* commit '16aed6b6d32ae545efe7bd05f18790cd875a9323':
  Add "add to contacts" actionable item to shortcut card.
diff --git a/res/layout/call_log_list_item_extra.xml b/res/layout/call_log_list_item_extra.xml
index 3623e3f..c4126e4 100644
--- a/res/layout/call_log_list_item_extra.xml
+++ b/res/layout/call_log_list_item_extra.xml
@@ -18,45 +18,50 @@
 
 <!-- Can't use merge here because this is referenced via a ViewStub -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
-             android:id="@+id/badge_container">
+    android:id="@+id/badge_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
 
     <View android:layout_width="match_parent"
-          android:layout_height="1px"
-          android:background="@color/favorite_contacts_separator_color"/>
+        android:layout_height="1px"
+        android:background="@color/favorite_contacts_separator_color" />
 
     <LinearLayout android:id="@+id/badge_link_container"
-                  android:layout_width="match_parent"
-                  android:layout_height="wrap_content"
-                  android:paddingStart="@dimen/call_log_outer_margin"
-                  android:paddingEnd="@dimen/call_log_outer_margin"
-                  android:paddingTop="0dip"
-                  android:paddingBottom="0dip"
-                  android:background="?android:attr/selectableItemBackground"
-                  android:clickable="true">
-        <ImageView android:layout_width="wrap_content"
-                   android:layout_height="wrap_content"
-                   android:id="@+id/badge_image"
-                   android:tint="@color/dialpad_primary_text_color"
-                   android:padding="@dimen/call_log_outer_margin"/>
-        <TextView android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:paddingStart="@dimen/call_log_start_margin"
-                  android:id="@+id/badge_text"
-                  android:textColor="@color/dialpad_primary_text_color"
-                  android:layout_gravity="center_vertical"
-                  android:layout_weight="1"/>
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingStart="@dimen/call_log_outer_margin"
+        android:paddingEnd="@dimen/call_log_outer_margin"
+        android:paddingTop="@dimen/call_log_item_extra_padding_vertical"
+        android:paddingBottom="@dimen/call_log_item_extra_padding_vertical"
+        android:background="?android:attr/selectableItemBackground"
+        android:clickable="true">
+
+        <ImageView android:id="@+id/badge_image"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:tint="@color/dialpad_primary_text_color"
+            android:padding="@dimen/call_log_outer_margin" />
+
+        <TextView android:id="@+id/badge_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingStart="@dimen/call_log_start_margin"
+            android:textColor="@color/dialpad_primary_text_color"
+            android:layout_gravity="center_vertical"
+            android:layout_weight="1" />
+
         <ImageView android:id="@+id/dismiss_button"
-                   android:layout_width="wrap_content"
-                   android:layout_height="wrap_content"
-                   android:layout_gravity="center_vertical"
-                   android:layout_marginEnd="@dimen/call_log_icon_margin"
-                   android:src="@drawable/ic_close_dk"
-                   android:tint="@color/recent_call_log_item_phone_icon_tint"
-                   android:alpha="0.3"
-                   android:background="?android:attr/selectableItemBackground"
-                   android:visibility="gone"
-                   android:contentDescription="@string/description_dismiss"/>
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_marginEnd="@dimen/call_log_icon_margin"
+            android:src="@drawable/ic_close_dk"
+            android:tint="@color/recent_call_log_item_phone_icon_tint"
+            android:alpha="0.3"
+            android:background="?android:attr/selectableItemBackground"
+            android:visibility="gone"
+            android:contentDescription="@string/description_dismiss" />
+
     </LinearLayout>
+
 </FrameLayout>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0856032..e48720e 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -76,6 +76,9 @@
     <dimen name="recent_call_log_item_padding_top">12dp</dimen>
     <dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
 
+    <dimen name="call_log_item_extra_padding_vertical">4dp</dimen>
+
+
     <!-- Size of the star icon on the favorites tile. -->
     <dimen name="favorites_star_icon_size">12dp</dimen>
 
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index e009dda..e7d5a4a 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -44,6 +44,7 @@
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.DialtactsActivity;
 import com.android.dialer.PhoneCallDetails;
 import com.android.dialer.PhoneCallDetailsHelper;
 import com.android.dialer.R;
@@ -255,8 +256,6 @@
     private volatile boolean mRequestProcessingDisabled = false;
 
     private boolean mIsCallLog = true;
-    private int mNumMissedCalls = 0;
-    private int mNumMissedCallsShown = 0;
 
     private View mBadgeContainer;
     private ImageView mBadgeImageView;
@@ -1032,21 +1031,13 @@
         mCallLogViewsHelper.setActionContentDescriptions(views);
     }
 
-    protected void bindBadge(View view, ContactInfo info, PhoneCallDetails details, int callType) {
-
+    protected void bindBadge(
+            View view, ContactInfo info, final PhoneCallDetails details, int callType) {
         // Do not show badge in call log.
         if (!mIsCallLog) {
-            final int numMissed = getNumMissedCalls(callType);
             final ViewStub stub = (ViewStub) view.findViewById(R.id.link_stub);
 
-            if (shouldShowBadge(numMissed, info, details)) {
-                // Do not process if the data has not changed (optimization since bind view is
-                // called multiple times due to contact lookup).
-                if (numMissed == mNumMissedCallsShown) {
-                    return;
-                }
-
-                // stub will be null if it was already inflated.
+            if (TextUtils.isEmpty(info.lookupKey)) {
                 if (stub != null) {
                     final View inflated = stub.inflate();
                     inflated.setVisibility(View.VISIBLE);
@@ -1055,11 +1046,16 @@
                     mBadgeText = (TextView) inflated.findViewById(R.id.badge_text);
                 }
 
-                mBadgeContainer.setOnClickListener(getBadgeClickListener());
-                mBadgeImageView.setImageResource(getBadgeImageResId());
-                mBadgeText.setText(getBadgeText(numMissed));
-
-                mNumMissedCallsShown = numMissed;
+                mBadgeContainer.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        final Intent intent =
+                                DialtactsActivity.getAddNumberToContactIntent(details.number);
+                        mContext.startActivity(intent);
+                    }
+                });
+                mBadgeImageView.setImageResource(R.drawable.ic_person_add_24dp);
+                mBadgeText.setText(R.string.recentCalls_addToContact);
             } else {
                 // Hide badge if it was previously shown.
                 if (stub == null) {
@@ -1072,67 +1068,6 @@
         }
     }
 
-    public void setMissedCalls(Cursor data) {
-        final int missed;
-        if (data == null) {
-            missed = 0;
-        } else {
-            missed = data.getCount();
-        }
-        // Only need to update if the number of calls changed.
-        if (missed != mNumMissedCalls) {
-            mNumMissedCalls = missed;
-            notifyDataSetChanged();
-        }
-    }
-
-    protected View.OnClickListener getBadgeClickListener() {
-        return new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                final Intent intent = new Intent(mContext, CallLogActivity.class);
-                mContext.startActivity(intent);
-            }
-        };
-    }
-
-    /**
-     * Get the resource id for the image to be shown for the badge.
-     */
-    protected int getBadgeImageResId() {
-        return R.drawable.ic_call_log_blue;
-    }
-
-    /**
-     * Get the text to be shown for the badge.
-     *
-     * @param numMissed The number of missed calls.
-     */
-    protected String getBadgeText(int numMissed) {
-        return mContext.getResources().getString(R.string.num_missed_calls, numMissed);
-    }
-
-    /**
-     * Whether to show the badge.
-     *
-     * @param numMissedCalls The number of missed calls.
-     * @param info The contact info.
-     * @param details The call detail.
-     * @return {@literal true} if badge should be shown.  {@literal false} otherwise.
-     */
-    protected boolean shouldShowBadge(int numMissedCalls, ContactInfo info,
-            PhoneCallDetails details) {
-        return numMissedCalls > 0;
-    }
-
-    private int getNumMissedCalls(int callType) {
-        if (callType == Calls.MISSED_TYPE) {
-            // Exclude the current missed call shown in the shortcut.
-            return mNumMissedCalls - 1;
-        }
-        return mNumMissedCalls;
-    }
-
     /** 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.
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 22cb35c..ed95dc2 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -70,9 +70,6 @@
     public static final float REMOVE_VIEW_SHOWN_ALPHA = 0.5f;
     public static final float REMOVE_VIEW_HIDDEN_ALPHA = 1;
 
-    // Used with LoaderManager
-    private static int MISSED_CALL_LOADER = 1;
-
     public interface HostInterface {
         public void showCallHistory();
         public int getActionBarHeight();
@@ -111,27 +108,6 @@
      */
     private long mCurrentCallShortcutDate = 0;
 
-    private class MissedCallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
-
-        @Override
-        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-            final Uri uri = CallLog.Calls.CONTENT_URI;
-            final String[] projection = new String[] {CallLog.Calls.TYPE};
-            final String selection = CallLog.Calls.TYPE + " = " + CallLog.Calls.MISSED_TYPE +
-                    " AND " + CallLog.Calls.IS_READ + " = 0";
-            return new CursorLoader(getActivity(), uri, projection, selection, null, null);
-        }
-
-        @Override
-        public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor data) {
-            mCallLogAdapter.setMissedCalls(data);
-        }
-
-        @Override
-        public void onLoaderReset(Loader<Cursor> cursorLoader) {
-        }
-    }
-
     private PanelSlideListener mPanelSlideListener = new PanelSlideListener() {
         @Override
         public void onPanelSlide(View panel, float slideOffset) {
@@ -229,7 +205,6 @@
     @Override
     public void onStart() {
         super.onStart();
-        getLoaderManager().initLoader(MISSED_CALL_LOADER, null, new MissedCallLogLoaderListener());
     }
 
     @Override