Loading packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +100 −69 Original line number Diff line number Diff line Loading @@ -40,13 +40,13 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.drawable.ColorDrawable; import android.media.AudioManager; import android.media.AudioSystem; Loading @@ -63,7 +63,6 @@ import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.AccessibilityDelegate; Loading Loading @@ -92,7 +91,6 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; Loading Loading @@ -149,6 +147,7 @@ public class VolumeDialogImpl implements VolumeDialog { private State mState; private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mShowActiveStreamOnly; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading @@ -156,6 +155,7 @@ public class VolumeDialogImpl implements VolumeDialog { mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); mShowActiveStreamOnly = showActiveStreamOnly(); } public void init(int windowType, Callback callback) { Loading Loading @@ -193,16 +193,16 @@ public class VolumeDialogImpl implements VolumeDialog { | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); mWindow.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY); mWindow.setWindowAnimations(com.android.internal.R.style.Animation_Toast); final WindowManager.LayoutParams lp = mWindow.getAttributes(); WindowManager.LayoutParams lp = mWindow.getAttributes(); lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; lp.windowAnimations = -1; mWindow.setAttributes(lp); mWindow.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mDialog.setCanceledOnTouchOutside(true); mDialog.setContentView(R.layout.volume_dialog); mDialogView = mDialog.findViewById(R.id.volume_dialog); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnShowListener(dialog -> { if (!isLandscape()) mDialogView.setTranslationX(mDialogView.getWidth() / 2); mDialogView.setAlpha(0); Loading @@ -213,12 +213,14 @@ public class VolumeDialogImpl implements VolumeDialog { .setInterpolator(new SystemUIInterpolators.LogDecelerateInterpolator()) .withEndAction(() -> { if (!Prefs.getBoolean(mContext, Prefs.Key.TOUCHED_RINGER_TOGGLE, false)) { if (mRingerIcon != null) { mRingerIcon.postOnAnimationDelayed(mSinglePress, 1500); } } }) .start(); }); mDialogView = mDialog.findViewById(R.id.volume_dialog); mDialogView.setOnHoverListener((v, event) -> { int action = event.getActionMasked(); mHovering = (action == MotionEvent.ACTION_HOVER_ENTER) Loading @@ -227,6 +229,10 @@ public class VolumeDialogImpl implements VolumeDialog { return true; }); lp = mWindow.getAttributes(); lp.gravity = ((FrameLayout.LayoutParams) mDialogView.getLayoutParams()).gravity; mWindow.setAttributes(lp); mActiveTint = Utils.getColorAccent(mContext); mActiveAlpha = Color.alpha(mActiveTint.getDefaultColor()); mInactiveTint = Utils.getColorAttr(mContext, android.R.attr.colorForeground); Loading @@ -234,8 +240,10 @@ public class VolumeDialogImpl implements VolumeDialog { mDialogRowsView = mDialog.findViewById(R.id.volume_dialog_rows); mRinger = mDialog.findViewById(R.id.ringer); if (mRinger != null) { mRingerIcon = mRinger.findViewById(R.id.ringer_icon); mZenIcon = mRinger.findViewById(R.id.dnd_icon); } mSettingsView = mDialog.findViewById(R.id.settings_container); mSettingsIcon = mDialog.findViewById(R.id.settings); Loading Loading @@ -420,18 +428,24 @@ public class VolumeDialogImpl implements VolumeDialog { } public void initSettingsH() { if (mSettingsView != null) { mSettingsView.setVisibility( mDeviceProvisionedController.isCurrentUserSetup() ? VISIBLE : GONE); } if (mSettingsIcon != null) { mSettingsIcon.setOnClickListener(v -> { Events.writeEvent(mContext, Events.EVENT_SETTINGS_CLICK); Intent intent = new Intent(Settings.ACTION_SOUND_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); dismissH(DISMISS_REASON_SETTINGS_CLICKED); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); }); } } public void initRingerH() { if (mRingerIcon != null) { mRingerIcon.setOnClickListener(v -> { Prefs.putBoolean(mContext, Prefs.Key.TOUCHED_RINGER_TOGGLE, true); final StreamState ss = mState.states.get(AudioManager.STREAM_RING); Loading Loading @@ -463,6 +477,7 @@ public class VolumeDialogImpl implements VolumeDialog { mController.setRingerMode(newRingerMode, false); maybeShowToastH(newRingerMode); }); } updateRingerH(); } Loading Loading @@ -587,8 +602,19 @@ public class VolumeDialogImpl implements VolumeDialog { } } private boolean showActiveStreamOnly() { return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK) || mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION); } private boolean shouldBeVisibleH(VolumeRow row, VolumeRow activeRow) { boolean isActive = row.stream == activeRow.stream; if (isActive) { return true; } if (!mShowActiveStreamOnly) { if (row.stream == AudioSystem.STREAM_ACCESSIBILITY) { return mShowA11yStream; } Loading @@ -600,10 +626,6 @@ public class VolumeDialogImpl implements VolumeDialog { return true; } if (isActive) { return true; } if (row.defaultStream) { return activeRow.stream == STREAM_RING || activeRow.stream == STREAM_ALARM Loading @@ -611,6 +633,7 @@ public class VolumeDialogImpl implements VolumeDialog { || activeRow.stream == STREAM_ACCESSIBILITY || mDynamic.get(activeRow.stream); } } return false; } Loading Loading @@ -721,9 +744,13 @@ public class VolumeDialogImpl implements VolumeDialog { * @param enable whether to enable ringer views and hide dnd icon */ private void enableRingerViewsH(boolean enable) { if (mRingerIcon != null) { mRingerIcon.setEnabled(enable); } if (mZenIcon != null) { mZenIcon.setVisibility(enable ? GONE : VISIBLE); } } private void trimObsoleteH() { if (D.BUG) Log.d(TAG, "trimObsoleteH"); Loading Loading @@ -1029,16 +1056,20 @@ public class VolumeDialogImpl implements VolumeDialog { private Runnable mSinglePress = new Runnable() { @Override public void run() { if (mRingerIcon != null) { mRingerIcon.setPressed(true); mRingerIcon.postOnAnimationDelayed(mSingleUnpress, 200); } } }; private Runnable mSingleUnpress = new Runnable() { @Override public void run() { if (mRingerIcon != null) { mRingerIcon.setPressed(false); } } }; private final VolumeDialogController.Callbacks mControllerCallbackH Loading Loading
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +100 −69 Original line number Diff line number Diff line Loading @@ -40,13 +40,13 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.drawable.ColorDrawable; import android.media.AudioManager; import android.media.AudioSystem; Loading @@ -63,7 +63,6 @@ import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.AccessibilityDelegate; Loading Loading @@ -92,7 +91,6 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; Loading Loading @@ -149,6 +147,7 @@ public class VolumeDialogImpl implements VolumeDialog { private State mState; private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mShowActiveStreamOnly; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading @@ -156,6 +155,7 @@ public class VolumeDialogImpl implements VolumeDialog { mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); mShowActiveStreamOnly = showActiveStreamOnly(); } public void init(int windowType, Callback callback) { Loading Loading @@ -193,16 +193,16 @@ public class VolumeDialogImpl implements VolumeDialog { | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); mWindow.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY); mWindow.setWindowAnimations(com.android.internal.R.style.Animation_Toast); final WindowManager.LayoutParams lp = mWindow.getAttributes(); WindowManager.LayoutParams lp = mWindow.getAttributes(); lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; lp.windowAnimations = -1; mWindow.setAttributes(lp); mWindow.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mDialog.setCanceledOnTouchOutside(true); mDialog.setContentView(R.layout.volume_dialog); mDialogView = mDialog.findViewById(R.id.volume_dialog); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnShowListener(dialog -> { if (!isLandscape()) mDialogView.setTranslationX(mDialogView.getWidth() / 2); mDialogView.setAlpha(0); Loading @@ -213,12 +213,14 @@ public class VolumeDialogImpl implements VolumeDialog { .setInterpolator(new SystemUIInterpolators.LogDecelerateInterpolator()) .withEndAction(() -> { if (!Prefs.getBoolean(mContext, Prefs.Key.TOUCHED_RINGER_TOGGLE, false)) { if (mRingerIcon != null) { mRingerIcon.postOnAnimationDelayed(mSinglePress, 1500); } } }) .start(); }); mDialogView = mDialog.findViewById(R.id.volume_dialog); mDialogView.setOnHoverListener((v, event) -> { int action = event.getActionMasked(); mHovering = (action == MotionEvent.ACTION_HOVER_ENTER) Loading @@ -227,6 +229,10 @@ public class VolumeDialogImpl implements VolumeDialog { return true; }); lp = mWindow.getAttributes(); lp.gravity = ((FrameLayout.LayoutParams) mDialogView.getLayoutParams()).gravity; mWindow.setAttributes(lp); mActiveTint = Utils.getColorAccent(mContext); mActiveAlpha = Color.alpha(mActiveTint.getDefaultColor()); mInactiveTint = Utils.getColorAttr(mContext, android.R.attr.colorForeground); Loading @@ -234,8 +240,10 @@ public class VolumeDialogImpl implements VolumeDialog { mDialogRowsView = mDialog.findViewById(R.id.volume_dialog_rows); mRinger = mDialog.findViewById(R.id.ringer); if (mRinger != null) { mRingerIcon = mRinger.findViewById(R.id.ringer_icon); mZenIcon = mRinger.findViewById(R.id.dnd_icon); } mSettingsView = mDialog.findViewById(R.id.settings_container); mSettingsIcon = mDialog.findViewById(R.id.settings); Loading Loading @@ -420,18 +428,24 @@ public class VolumeDialogImpl implements VolumeDialog { } public void initSettingsH() { if (mSettingsView != null) { mSettingsView.setVisibility( mDeviceProvisionedController.isCurrentUserSetup() ? VISIBLE : GONE); } if (mSettingsIcon != null) { mSettingsIcon.setOnClickListener(v -> { Events.writeEvent(mContext, Events.EVENT_SETTINGS_CLICK); Intent intent = new Intent(Settings.ACTION_SOUND_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); dismissH(DISMISS_REASON_SETTINGS_CLICKED); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); }); } } public void initRingerH() { if (mRingerIcon != null) { mRingerIcon.setOnClickListener(v -> { Prefs.putBoolean(mContext, Prefs.Key.TOUCHED_RINGER_TOGGLE, true); final StreamState ss = mState.states.get(AudioManager.STREAM_RING); Loading Loading @@ -463,6 +477,7 @@ public class VolumeDialogImpl implements VolumeDialog { mController.setRingerMode(newRingerMode, false); maybeShowToastH(newRingerMode); }); } updateRingerH(); } Loading Loading @@ -587,8 +602,19 @@ public class VolumeDialogImpl implements VolumeDialog { } } private boolean showActiveStreamOnly() { return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK) || mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION); } private boolean shouldBeVisibleH(VolumeRow row, VolumeRow activeRow) { boolean isActive = row.stream == activeRow.stream; if (isActive) { return true; } if (!mShowActiveStreamOnly) { if (row.stream == AudioSystem.STREAM_ACCESSIBILITY) { return mShowA11yStream; } Loading @@ -600,10 +626,6 @@ public class VolumeDialogImpl implements VolumeDialog { return true; } if (isActive) { return true; } if (row.defaultStream) { return activeRow.stream == STREAM_RING || activeRow.stream == STREAM_ALARM Loading @@ -611,6 +633,7 @@ public class VolumeDialogImpl implements VolumeDialog { || activeRow.stream == STREAM_ACCESSIBILITY || mDynamic.get(activeRow.stream); } } return false; } Loading Loading @@ -721,9 +744,13 @@ public class VolumeDialogImpl implements VolumeDialog { * @param enable whether to enable ringer views and hide dnd icon */ private void enableRingerViewsH(boolean enable) { if (mRingerIcon != null) { mRingerIcon.setEnabled(enable); } if (mZenIcon != null) { mZenIcon.setVisibility(enable ? GONE : VISIBLE); } } private void trimObsoleteH() { if (D.BUG) Log.d(TAG, "trimObsoleteH"); Loading Loading @@ -1029,16 +1056,20 @@ public class VolumeDialogImpl implements VolumeDialog { private Runnable mSinglePress = new Runnable() { @Override public void run() { if (mRingerIcon != null) { mRingerIcon.setPressed(true); mRingerIcon.postOnAnimationDelayed(mSingleUnpress, 200); } } }; private Runnable mSingleUnpress = new Runnable() { @Override public void run() { if (mRingerIcon != null) { mRingerIcon.setPressed(false); } } }; private final VolumeDialogController.Callbacks mControllerCallbackH Loading