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

Commit ab07b53e authored by ykhung's avatar ykhung Committed by YK Hung
Browse files

Fix banner tip buttons visibility and update incompatible tip

Fix the battery settings banner tip buttons visibility not reset issue
and update the incompatible charging tip into the colored primary button

Bug: 246960554
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.*
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.widget.CardPreferenceTest
Change-Id: I9b72fccc7838d974d3b60d0f9684780841623cbb
parent 2a0d6ead
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -67,12 +67,15 @@
            android:maxLines="10"
            style="@style/PreferenceSummaryTextStyle"/>

        <RelativeLayout
        <LinearLayout
            android:id="@+id/card_preference_buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_below="@android:id/summary"
            android:gravity="center_vertical|end"
            android:orientation="horizontal"
            android:paddingEnd="20dp"
            android:visibility="gone">
            <Button
                android:id="@android:id/button1"
@@ -80,17 +83,15 @@
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_marginStart="20dp"
                android:layout_toStartOf="@android:id/button2"
                android:visibility="gone"/>
            <Button
                android:id="@android:id/button2"
                style="@style/CardPreferenceBorderlessButton"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_marginHorizontal="20dp"
                android:layout_alignParentEnd="true"
                android:layout_marginStart="20dp"
                android:visibility="gone"/>
        </RelativeLayout>
        </LinearLayout>
    </RelativeLayout>

    <!-- Preference should place its actual preference widget here. -->
+4 −0
Original line number Diff line number Diff line
@@ -166,6 +166,10 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
        if (iconTintColorId != View.NO_ID) {
            preference.getIcon().setTint(context.getColor(iconTintColorId));
        }
        final CardPreference cardPreference = castToCardPreferenceSafely(preference);
        if (cardPreference != null) {
            cardPreference.resetLayoutState();
        }
    }

    /** Returns the color resid for tinting {@link #getIconId()} or {@link View#NO_ID} if none. */
+4 −4
Original line number Diff line number Diff line
@@ -73,15 +73,15 @@ public final class IncompatibleChargerTip extends BatteryTip {
        }

        cardPreference.setSelectable(false);
        cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
        cardPreference.setSecondaryButtonClickListener(
        cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more));
        cardPreference.setPrimaryButtonClickListener(
                button -> button.startActivityForResult(
                        HelpUtils.getHelpIntent(
                                context,
                                context.getString(R.string.help_url_incompatible_charging),
                                /* backupContext */ ""), /* requestCode */ 0));
        cardPreference.setSecondaryButtonVisible(true);
        cardPreference.setSecondaryButtonContentDescription(context.getString(
        cardPreference.setPrimaryButtonVisible(true);
        cardPreference.setPrimaryButtonContentDescription(context.getString(
                R.string.battery_tip_incompatible_charging_content_description));
    }
}
+16 −3
Original line number Diff line number Diff line
@@ -30,9 +30,7 @@ import com.google.android.material.card.MaterialCardView;

import java.util.Optional;

/**
 * Preference that wrapped by {@link MaterialCardView}, only support to set icon, title and summary
 */
/** Preference that wrapped by {@link MaterialCardView} */
public class CardPreference extends Preference {

    private View.OnClickListener mPrimaryBtnClickListener = null;
@@ -76,6 +74,12 @@ public class CardPreference extends Preference {
        setSecondaryButtonVisible(mSecondaryButtonVisible);
    }

    /** Clear layout state if needed */
    public void resetLayoutState() {
        setPrimaryButtonVisible(false);
        setSecondaryButtonVisible(false);
    }

    /**
     * Register a callback to be invoked when the primary button is clicked.
     *
@@ -140,6 +144,15 @@ public class CardPreference extends Preference {
        updateButtonGroupsVisibility();
    }

    /**
     * Sets the text of content description on primary button.
     *
     * @param text text for the content description
     */
    public void setPrimaryButtonContentDescription(String text) {
        mPrimaryButton.ifPresent(button -> button.setContentDescription(text));
    }

    /**
     * Sets the text of content description on secondary button.
     *
+18 −0
Original line number Diff line number Diff line
@@ -18,13 +18,16 @@ package com.android.settings.fuelgauge.batterytip.tips;
import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.view.View;
import android.os.Parcel;
import android.os.Parcelable;

import androidx.annotation.IdRes;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;

import com.android.settings.R;
import com.android.settings.widget.CardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.testutils.DrawableTestHelper;

@@ -80,6 +83,21 @@ public class BatteryTipTest {
        assertThat(parcelTip.needUpdate()).isTrue();
    }

    @Test
    public void updatePreference_resetLayoutState() {
        mContext.setTheme(R.style.Theme_Settings);
        PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
                View.inflate(mContext, R.layout.card_preference_layout, /* parent= */ null));
        CardPreference cardPreference = new CardPreference(mContext);
        cardPreference.onBindViewHolder(holder);
        cardPreference.setPrimaryButtonVisible(true);

        mBatteryTip.updatePreference(cardPreference);

        View view = holder.findViewById(R.id.card_preference_buttons);
        assertThat(view.getVisibility()).isEqualTo(View.GONE);
    }

    @Test
    public void tipOrder_orderUnique() {
        final List<Integer> orders = new ArrayList<>();
Loading