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

Commit f1b4f65f authored by Adnan Begovic's avatar Adnan Begovic Committed by Altaf-Mahdi
Browse files

SystemUi: Nuke secondaryIcon.

  bb4a702e introduced a secondary icon that would allow
  for the manipulation of the ringer stream during specific
  active stream types.

  This duplicates functionality with our expandable volume panel
  and is not as effective as a utility, so kill it with fire.

Change-Id: Ia74fc95a3886f4c57b8e632b7b26f7ade4247e41
parent 8e4402d2
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -56,22 +56,6 @@

    </FrameLayout>

    <View
        android:id="@+id/divider"
        android:layout_width="1dp"
        android:layout_height="32dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:background="@color/volume_panel_divider" />

    <ImageView
        android:id="@+id/secondary_icon"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:scaleType="center"
        android:background="@drawable/btn_borderless_rect"
        android:contentDescription="@null" />

    <ImageView
        android:id="@+id/further_options"
        android:layout_width="48dp"
+0 −114
Original line number Diff line number Diff line
@@ -16,9 +16,6 @@

package com.android.systemui.volume;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
@@ -46,7 +43,6 @@ import android.media.VolumeProvider;
import android.media.session.MediaController;
import android.media.session.MediaController.PlaybackInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
@@ -66,8 +62,6 @@ import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
@@ -188,7 +182,6 @@ public class VolumePanel extends Handler implements DemoMode {
    /** All the slider controls mapped by stream type */
    private SparseArray<StreamControl> mStreamControls;
    private final AccessibilityManager mAccessibilityManager;
    private final SecondaryIconTransition mSecondaryIconTransition;
    private final IconPulser mIconPulser;

    private enum StreamResources {
@@ -270,8 +263,6 @@ public class VolumePanel extends Handler implements DemoMode {
        ImageView icon;
        SeekBar seekbarView;
        TextView suppressorView;
        View divider;
        ImageView secondaryIcon;
        int iconRes;
        int iconMuteRes;
        int iconSuppressedRes;
@@ -378,7 +369,6 @@ public class VolumePanel extends Handler implements DemoMode {
        mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        mAccessibilityManager = (AccessibilityManager) context.getSystemService(
                Context.ACCESSIBILITY_SERVICE);
        mSecondaryIconTransition = new SecondaryIconTransition();
        mIconPulser = new IconPulser(context);

        // For now, only show master volume if master volume is supported
@@ -423,7 +413,6 @@ public class VolumePanel extends Handler implements DemoMode {
                mAudioManager.forceVolumeControlStream(mActiveStreamType);
                setZenPanelVisible(false);
                mDemoIcon = 0;
                mSecondaryIconTransition.cancel();
            }
        });

@@ -736,23 +725,6 @@ public class VolumePanel extends Handler implements DemoMode {
            sc.suppressorView =
                    (TextView) sc.group.findViewById(com.android.systemui.R.id.suppressor);
            sc.suppressorView.setVisibility(View.GONE);
            final boolean showSecondary = !isNotification && notificationStream.show;
            sc.divider = sc.group.findViewById(com.android.systemui.R.id.divider);
            sc.secondaryIcon = (ImageView) sc.group
                    .findViewById(com.android.systemui.R.id.secondary_icon);
            sc.secondaryIcon.setImageResource(com.android.systemui.R.drawable.ic_ringer_audible);
            sc.secondaryIcon.setContentDescription(res.getString(notificationStream.descRes));
            sc.secondaryIcon.setClickable(showSecondary);
            sc.divider.setVisibility(showSecondary ? View.VISIBLE : View.GONE);
            sc.secondaryIcon.setVisibility(showSecondary ? View.VISIBLE : View.GONE);
            if (showSecondary) {
                sc.secondaryIcon.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mSecondaryIconTransition.start(sc);
                    }
                });
            }
            sc.expandPanel = (ImageView)
                    sc.group.findViewById(com.android.systemui.R.id.further_options);
            sc.expandPanel.setClickable(true);
@@ -808,8 +780,6 @@ public class VolumePanel extends Handler implements DemoMode {
                    mSliderPanel.addView(control.group);
                    control.group.setVisibility(View.VISIBLE);
                    control.expandPanel.setVisibility(View.GONE);
                    control.secondaryIcon.setVisibility(View.GONE);
                    control.divider.setVisibility(View.GONE);
                    updateSlider(control, false);
                }
            }
@@ -825,8 +795,6 @@ public class VolumePanel extends Handler implements DemoMode {
                if (control != null && control.streamType != mActiveStreamType) {
                    control.group.setVisibility(View.GONE);
                    control.expandPanel.setVisibility(View.GONE);
                    control.secondaryIcon.setVisibility(View.GONE);
                    control.divider.setVisibility(View.GONE);
                    updateSlider(control, false);
                }
            }
@@ -1323,12 +1291,6 @@ public class VolumePanel extends Handler implements DemoMode {
            final boolean muted = isMuted(streamType);
            updateSliderEnabled(sc, muted, (flags & AudioManager.FLAG_FIXED_VOLUME) != 0);
            if (isNotificationOrRing(streamType)) {
                // check for secondary-icon transition completion
                if (mSecondaryIconTransition.isRunning()) {
                    mSecondaryIconTransition.cancel();  // safe to reset
                    sc.seekbarView.setAlpha(0); sc.seekbarView.animate().alpha(1);
                    mZenPanel.setAlpha(0); mZenPanel.animate().alpha(1);
                }
                updateSliderIcon(sc, muted);
            }
        }
@@ -1741,82 +1703,6 @@ public class VolumePanel extends Handler implements DemoMode {
        }
    };

    private final class SecondaryIconTransition extends AnimatorListenerAdapter
            implements Runnable {
        private static final int ANIMATION_TIME = 400;
        private static final int WAIT_FOR_SWITCH_TIME = 1000;

        private final int mAnimationTime = (int)(ANIMATION_TIME * ValueAnimator.getDurationScale());
        private final int mFadeOutTime = mAnimationTime / 2;
        private final int mDelayTime = mAnimationTime / 3;

        private final Interpolator mIconInterpolator =
                AnimationUtils.loadInterpolator(mContext, android.R.interpolator.fast_out_slow_in);

        private StreamControl mTarget;

        public void start(StreamControl sc) {
            if (sc == null) throw new IllegalArgumentException();
            if (LOGD) Log.d(mTag, "Secondary icon animation start");
            if (mTarget != null) {
                cancel();
            }
            mTarget = sc;
            mTimeoutDelay = mAnimationTime + WAIT_FOR_SWITCH_TIME;
            resetTimeout();
            mTarget.secondaryIcon.setClickable(false);
            final int N = mTarget.group.getChildCount();
            for (int i = 0; i < N; i++) {
                final View child = mTarget.group.getChildAt(i);
                if (child != mTarget.secondaryIcon) {
                    child.animate().alpha(0).setDuration(mFadeOutTime).start();
                }
            }
            mTarget.secondaryIcon.animate()
                    .translationXBy(mTarget.icon.getX() - mTarget.secondaryIcon.getX())
                    .setInterpolator(mIconInterpolator)
                    .setStartDelay(mDelayTime)
                    .setDuration(mAnimationTime - mDelayTime)
                    .setListener(this)
                    .start();
        }

        public boolean isRunning() {
            return mTarget != null;
        }

        public void cancel() {
            if (mTarget == null) return;
            mTarget.secondaryIcon.setClickable(true);
            final int N = mTarget.group.getChildCount();
            for (int i = 0; i < N; i++) {
                final View child = mTarget.group.getChildAt(i);
                if (child != mTarget.secondaryIcon) {
                    child.animate().cancel();
                    child.setAlpha(1);
                }
            }
            mTarget.secondaryIcon.animate().cancel();
            mTarget.secondaryIcon.setTranslationX(0);
            mTarget = null;
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            if (mTarget == null) return;
            AsyncTask.execute(this);
        }

        @Override
        public void run() {
            if (mTarget == null) return;
            if (LOGD) Log.d(mTag, "Secondary icon animation complete, show notification slider");
            mAudioManager.forceVolumeControlStream(StreamResources.NotificationStream.streamType);
            mAudioManager.adjustStreamVolume(StreamResources.NotificationStream.streamType,
                    AudioManager.ADJUST_SAME, AudioManager.FLAG_SHOW_UI);
        }
    }

    public interface Callback {
        void onZenSettings();
        void onInteraction();