Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44d8fbe0 authored by Flavio Lerda's avatar Flavio Lerda
Browse files

Update highlight state for primary/secondary targets.

This commit makes it so that when selecting the primary action, the
secondary action is part of the highlighted area, while when selecting
the secondary action, only that is focused.

Bug: 5317438
Change-Id: I85fde86812c7ce35dd2887d158ca7c2eff205809
parent 16b46934
Loading
Loading
Loading
Loading
+40 −39
Original line number Diff line number Diff line
@@ -18,26 +18,26 @@
-->

<!-- Note: padding might be controlled programatically -->
<LinearLayout
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:minHeight="@dimen/detail_min_line_item_height">
    android:paddingLeft="16dip">

    <!-- Note: padding might be controlled programatically -->
    <com.android.contacts.detail.PrimaryActionViewContainer
        android:id="@+id/primary_action_view_container"
        android:layout_width="0dip"
        android:layout_weight="1"
    <com.android.contacts.detail.ActionsViewContainer
        android:id="@+id/actions_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="@dimen/detail_min_line_item_height"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:layout_gravity="center_vertical"
        android:focusable="true"
        android:background="?android:attr/selectableItemBackground">
        android:background="?android:attr/selectableItemBackground"
        android:nextFocusRight="@+id/secondary_action_view_container">

        <!-- Note: padding might be controlled programatically -->
        <LinearLayout
            android:id="@+id/primary_action_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
@@ -80,7 +80,7 @@
            android:id="@+id/type"
            style="@style/ContactDetailItemType"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:paddingRight="16dip" />

@@ -92,7 +92,6 @@
            android:layout_gravity="center_vertical"
            android:background="@drawable/ic_menu_mark" />

    </com.android.contacts.detail.PrimaryActionViewContainer>

        <View
            android:id="@+id/vertical_divider"
@@ -111,7 +110,8 @@
            android:paddingRight="@dimen/detail_item_icon_margin"
            android:duplicateParentState="false"
            android:focusable="true"
        android:background="?android:attr/selectableItemBackground">
            android:background="?android:attr/selectableItemBackground"
            android:nextFocusLeft="@id/actions_view_container">
            <ImageView
                android:id="@+id/secondary_action_button"
                android:layout_width="32dip"
@@ -121,4 +121,5 @@
                android:scaleType="center"
                android:duplicateParentState="false" />
        </FrameLayout>
</LinearLayout>
    </com.android.contacts.detail.ActionsViewContainer>
</FrameLayout>
+35 −33
Original line number Diff line number Diff line
@@ -18,27 +18,28 @@
-->

<!-- Note: padding might be controlled programatically -->
<LinearLayout
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical"
    android:paddingLeft="16dip"
    android:paddingTop="8dip"
    android:paddingBottom="8dip"
    android:minHeight="@dimen/detail_min_line_item_height">

    <!-- Note: padding might be controlled programatically -->
    <com.android.contacts.detail.PrimaryActionViewContainer
        android:id="@+id/primary_action_view_container"
        android:layout_width="0dip"
        android:layout_weight="1"
    <com.android.contacts.detail.ActionsViewContainer
        android:id="@+id/actions_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:focusable="true"
        android:background="?android:attr/selectableItemBackground">
        android:background="?android:attr/selectableItemBackground"
        android:nextFocusRight="@+id/secondary_action_view_container">

        <!-- Note: padding might be controlled programatically -->
        <LinearLayout
            android:id="@+id/primary_action_view"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
@@ -93,7 +94,6 @@
                android:visibility="gone" />

        </LinearLayout>
    </com.android.contacts.detail.PrimaryActionViewContainer>

        <View
            android:id="@+id/vertical_divider"
@@ -111,7 +111,8 @@
            android:paddingLeft="@dimen/detail_item_icon_margin"
            android:paddingRight="@dimen/detail_item_icon_margin"
            android:focusable="true"
        android:background="?android:attr/selectableItemBackground">
            android:background="?android:attr/selectableItemBackground"
            android:nextFocusLeft="@id/actions_view_container">
            <ImageView
                android:id="@+id/secondary_action_button"
                android:layout_width="32dip"
@@ -119,4 +120,5 @@
                android:layout_gravity="center_vertical"
                android:duplicateParentState="false" />
        </FrameLayout>
</LinearLayout>
    </com.android.contacts.detail.ActionsViewContainer>
</FrameLayout>
+9 −7
Original line number Diff line number Diff line
@@ -16,22 +16,23 @@

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actions_view_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:orientation="horizontal"
    android:background="@drawable/quickcontact_list_item_background"
    android:gravity="center_vertical">
    android:gravity="center_vertical"
    android:background="?android:attr/selectableItemBackground"
    android:nextFocusRight="@+id/secondary_action_button">
    <LinearLayout
        android:id="@+id/primary_action_view_container"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:layout_weight="1"
        android:orientation="vertical"
        android:paddingLeft="16dip"
        android:paddingRight="16dip"
        android:gravity="center_vertical"
        android:background="?android:attr/selectableItemBackground">
        android:orientation="vertical"
    >
        <TextView
            android:id="@android:id/text1"
            android:layout_width="wrap_content"
@@ -61,5 +62,6 @@
        android:paddingLeft="@dimen/detail_item_icon_margin"
        android:paddingRight="@dimen/detail_item_icon_margin"
        android:background="?android:attr/selectableItemBackground"
        android:duplicateParentState="false" />
        android:duplicateParentState="false"
        android:nextFocusLeft="@id/actions_view_container" />
</LinearLayout>
+5 −5
Original line number Diff line number Diff line
@@ -25,21 +25,21 @@ import android.widget.ListView;

/**
 * Custom {@link LinearLayout} which remembers its position in the {@link ListView}. Should be
 * used for primary touch targets in {@link ContactDetailFragment}.
 * used for action touch targets in {@link ContactDetailFragment}.
 */
/* package */ class PrimaryActionViewContainer extends LinearLayout {
/* package */ class ActionsViewContainer extends LinearLayout {

    private ContextMenuInfo mContextMenuInfo;

    public PrimaryActionViewContainer(Context context) {
    public ActionsViewContainer(Context context) {
        super(context);
    }

    public PrimaryActionViewContainer(Context context, AttributeSet attrs) {
    public ActionsViewContainer(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public PrimaryActionViewContainer(Context context, AttributeSet attrs, int defStyle) {
    public ActionsViewContainer(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

+21 −16
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import com.android.contacts.ContactPresenceIconUtil;
import com.android.contacts.ContactSaveService;
import com.android.contacts.ContactsUtils;
import com.android.contacts.GroupMetaData;
import com.android.contacts.NfcHandler;
import com.android.contacts.R;
import com.android.contacts.TypePrecedence;
import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
@@ -1412,7 +1411,8 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen
        public final TextView footer;
        public final ImageView presenceIcon;
        public final ImageView secondaryActionButton;
        public final View primaryActionViewContainer;
        public final View actionsViewContainer;
        public final View primaryActionView;
        public final View secondaryActionViewContainer;
        public final View secondaryActionDivider;
        public final View primaryIndicator;
@@ -1426,8 +1426,9 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen
            primaryIndicator = view.findViewById(R.id.primary_indicator);
            presenceIcon = (ImageView) view.findViewById(R.id.presence_icon);

            primaryActionViewContainer = view.findViewById(R.id.primary_action_view_container);
            primaryActionViewContainer.setOnClickListener(primaryActionClickListener);
            actionsViewContainer = view.findViewById(R.id.actions_view_container);
            actionsViewContainer.setOnClickListener(primaryActionClickListener);
            primaryActionView = view.findViewById(R.id.primary_action_view);

            secondaryActionViewContainer = view.findViewById(
                    R.id.secondary_action_view_container);
@@ -1626,11 +1627,11 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen
                presenceIconView.setVisibility(View.GONE);
            }

            final PrimaryActionViewContainer primaryActionButtonContainer =
                    (PrimaryActionViewContainer) views.primaryActionViewContainer;
            primaryActionButtonContainer.setTag(entry);
            primaryActionButtonContainer.setPosition(position);
            registerForContextMenu(primaryActionButtonContainer);
            final ActionsViewContainer actionsButtonContainer =
                    (ActionsViewContainer) views.actionsViewContainer;
            actionsButtonContainer.setTag(entry);
            actionsButtonContainer.setPosition(position);
            registerForContextMenu(actionsButtonContainer);

            // Set the secondary action button
            final ImageView secondaryActionView = views.secondaryActionButton;
@@ -1656,14 +1657,18 @@ public class ContactDetailFragment extends Fragment implements FragmentKeyListen
                views.secondaryActionDivider.setVisibility(View.GONE);
            }

            // Right padding should not have "pressed" effect.
            view.setPadding(0, 0, mViewEntryDimensions.getPaddingRight(), 0);
            // Top, left, and bottom paddings should have "pressed" effect.
            primaryActionButtonContainer.setPadding(entry.isInSubSection() ?
                    mViewEntryDimensions.getWidePaddingLeft() :
                            mViewEntryDimensions.getPaddingLeft(),
            // Right and left padding should not have "pressed" effect.
            view.setPadding(
                    entry.isInSubSection()
                            ? mViewEntryDimensions.getWidePaddingLeft()
                            : mViewEntryDimensions.getPaddingLeft(),
                    0, mViewEntryDimensions.getPaddingRight(), 0);
            // Top and bottom padding should have "pressed" effect.
            final View primaryActionView = views.primaryActionView;
            primaryActionView.setPadding(
                    primaryActionView.getPaddingLeft(),
                    mViewEntryDimensions.getPaddingTop(),
                    0,
                    primaryActionView.getPaddingRight(),
                    mViewEntryDimensions.getPaddingBottom());
            secondaryActionViewContainer.setPadding(
                    secondaryActionViewContainer.getPaddingLeft(),
Loading