Merge "Turn off Spinner's state management. It kicks in after our own management"
diff --git a/res/layout/contact_list_filter_item.xml b/res/layout/contact_list_filter_item.xml
index 7c09976..7814565 100644
--- a/res/layout/contact_list_filter_item.xml
+++ b/res/layout/contact_list_filter_item.xml
@@ -17,6 +17,7 @@
 <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"
@@ -45,12 +46,21 @@
 
         <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/textColorSecondary"
+            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/src/com/android/contacts/list/ContactListFilterView.java b/src/com/android/contacts/list/ContactListFilterView.java
index 3fa20a1..020952d 100644
--- a/src/com/android/contacts/list/ContactListFilterView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -17,15 +17,18 @@
 package com.android.contacts.list;
 
 import com.android.contacts.R;
+import com.android.contacts.editor.ContactEditorFragment;
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.util.ThemeUtils;
 
 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;
 
 /**
@@ -33,12 +36,14 @@
  */
 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;
-    private int mActivatedBackground;
 
     public ContactListFilterView(Context context) {
         super(context);
@@ -60,16 +65,26 @@
         this.mSingleAccount = flag;
     }
 
-    public void bindView(AccountTypeManager accountTypes) {
-        if (mActivatedBackground == 0) {
-            mActivatedBackground = ThemeUtils.getActivatedBackground(getContext().getTheme());
+    @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");
         }
-        setBackgroundResource(mActivatedBackground);
+    }
 
+    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) {
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index e839cda..6728913 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -225,7 +225,12 @@
         }
 
         // Always launch as new task, since we're like a launcher
-        mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        setCommonIntentFlags(mIntent);
+        if (mAlternateIntent != null) setCommonIntentFlags(mAlternateIntent);
+    }
+
+    private static void setCommonIntentFlags(Intent intent) {
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
     }
 
     @Override