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

Commit 5a0aeffe authored by Peter_Liang's avatar Peter_Liang
Browse files

Multiple shortcut menu for android R (9/n).

1. Fix didn't reset attributes when reusing target item view.
2. Add gray out color filter for disabled icon item.
3. Remove unused icon resource.

Fix: 148834159
Test: manual test
Change-Id: If05833a7c52a62131db250589fcf8c820ec08ff4
parent dc526073
Loading
Loading
Loading
Loading
+31 −12
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
@@ -74,6 +76,8 @@ import java.util.StringJoiner;
 */
public class AccessibilityButtonChooserActivity extends Activity {
    private static final char SERVICES_SEPARATOR = ':';
    private static final float DISABLED_ALPHA = 0.5f;
    private static final float ENABLED_ALPHA = 1.0f;
    private static final TextUtils.SimpleStringSplitter sStringColonSplitter =
            new TextUtils.SimpleStringSplitter(SERVICES_SEPARATOR);
    @ShortcutType
@@ -452,9 +456,16 @@ public class AccessibilityButtonChooserActivity extends Activity {
            final boolean isLaunchMenuMode = (mShortcutMenuMode == ShortcutMenuMode.LAUNCH);
            final boolean isHardwareButtonTriggered =
                    (mShortcutButtonType == ACCESSIBILITY_SHORTCUT_KEY);

            holder.mLabelView.setEnabled(isLaunchMenuMode || isHardwareButtonTriggered);
            holder.mViewItem.setEnabled(isLaunchMenuMode || isHardwareButtonTriggered);
            final boolean enabledState = (isLaunchMenuMode || isHardwareButtonTriggered);
            final ColorMatrix grayScaleMatrix = new ColorMatrix();
            grayScaleMatrix.setSaturation(/* grayScale */0);

            holder.mIconView.setColorFilter(enabledState
                    ? null : new ColorMatrixColorFilter(grayScaleMatrix));
            holder.mIconView.setAlpha(enabledState
                    ? ENABLED_ALPHA : DISABLED_ALPHA);
            holder.mLabelView.setEnabled(enabledState);
            holder.mViewItem.setEnabled(enabledState);
            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
            holder.mViewItem.setVisibility(View.VISIBLE);
            holder.mSwitchItem.setVisibility(View.GONE);
@@ -463,12 +474,15 @@ public class AccessibilityButtonChooserActivity extends Activity {

        private void updateInvisibleActionItemVisibility(@NonNull Context context,
                @NonNull ViewHolder holder) {
            final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT);

            holder.mIconView.setColorFilter(null);
            holder.mIconView.setAlpha(ENABLED_ALPHA);
            holder.mLabelView.setEnabled(true);
            holder.mViewItem.setEnabled(true);
            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
            holder.mViewItem.setVisibility(View.VISIBLE);
            holder.mSwitchItem.setVisibility(View.GONE);
            holder.mItemContainer.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
            holder.mItemContainer.setVisibility((mShortcutMenuMode == ShortcutMenuMode.EDIT)
                    ? View.VISIBLE : View.GONE);
        }

        private void updateIntuitiveActionItemVisibility(@NonNull Context context,
@@ -478,6 +492,10 @@ public class AccessibilityButtonChooserActivity extends Activity {
                    ? isWhiteListingServiceEnabled(context, target)
                    : isAccessibilityServiceEnabled(context, target);

            holder.mIconView.setColorFilter(null);
            holder.mIconView.setAlpha(ENABLED_ALPHA);
            holder.mLabelView.setEnabled(true);
            holder.mViewItem.setEnabled(true);
            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
            holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
            holder.mSwitchItem.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
@@ -487,12 +505,13 @@ public class AccessibilityButtonChooserActivity extends Activity {

        private void updateBounceActionItemVisibility(@NonNull Context context,
                @NonNull ViewHolder holder) {
            final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT);

            holder.mViewItem.setImageDrawable(
                    isEditMenuMode ? context.getDrawable(R.drawable.ic_delete_item)
                            : context.getDrawable(R.drawable.ic_open_in_new));
            holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
            holder.mIconView.setColorFilter(null);
            holder.mIconView.setAlpha(ENABLED_ALPHA);
            holder.mLabelView.setEnabled(true);
            holder.mViewItem.setEnabled(true);
            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
            holder.mViewItem.setVisibility((mShortcutMenuMode == ShortcutMenuMode.EDIT)
                    ? View.VISIBLE : View.GONE);
            holder.mSwitchItem.setVisibility(View.GONE);
            holder.mItemContainer.setVisibility(View.VISIBLE);
        }
+0 −26
Original line number Diff line number Diff line
<!--
    Copyright (C) 2020 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
  -->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="?attr/colorControlNormal">
  <path
      android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"
      android:fillColor="#FFFFFF"/>
</vector>
+0 −1
Original line number Diff line number Diff line
@@ -3225,7 +3225,6 @@
  <java-symbol type="drawable" name="ic_accessibility_magnification" />

  <java-symbol type="drawable" name="ic_delete_item" />
  <java-symbol type="drawable" name="ic_open_in_new" />

  <!-- com.android.internal.widget.RecyclerView -->
  <java-symbol type="id" name="item_touch_helper_previous_elevation"/>