Loading packages/SystemUI/res/layout/volume_dialog.xml +2 −7 Original line number Diff line number Diff line Loading @@ -19,18 +19,16 @@ android:layout_height="wrap_content" android:background="@android:color/transparent" android:theme="@style/qs_theme"> <!-- right-aligned to be physically near volume button --> <LinearLayout android:id="@+id/volume_dialog" android:minWidth="@dimen/volume_dialog_panel_width" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|right" android:background="@android:color/transparent" android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_right" android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_horizontal" android:paddingTop="@dimen/volume_dialog_panel_transparent_padding" android:paddingBottom="@dimen/volume_dialog_panel_transparent_padding" android:paddingLeft="@dimen/volume_dialog_panel_transparent_padding" android:paddingLeft="@dimen/volume_dialog_panel_transparent_padding_horizontal" android:orientation="vertical" android:clipToPadding="false" > Loading @@ -40,7 +38,6 @@ android:layout_height="@dimen/volume_dialog_ringer_size" android:layout_marginBottom="@dimen/volume_dialog_spacer" android:translationZ="@dimen/volume_dialog_elevation" android:layout_gravity="right" android:clipToPadding="false" android:background="@drawable/rounded_bg_full"> <com.android.keyguard.AlphaOptimizedImageButton Loading @@ -56,7 +53,6 @@ <include layout="@layout/volume_dnd_icon" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="@dimen/volume_dialog_stream_padding" android:layout_marginTop="6dp"/> </FrameLayout> Loading Loading @@ -94,7 +90,6 @@ android:focusable="true" android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:layout_gravity="right" android:background="?android:attr/selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_quick_settings_expand" android:padding="14dp" Loading packages/SystemUI/res/values/dimens.xml +1 −1 Original line number Diff line number Diff line Loading @@ -295,7 +295,7 @@ <!-- The width of the panel that holds the quick settings. --> <dimen name="qs_panel_width">@dimen/notification_panel_width</dimen> <dimen name="volume_dialog_panel_transparent_padding_right">8dp</dimen> <dimen name="volume_dialog_panel_transparent_padding_horizontal">8dp</dimen> <dimen name="volume_dialog_panel_transparent_padding">20dp</dimen> Loading packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.util.leak.LeakDetector; import com.android.systemui.volume.VolumeDialogImpl; import lineageos.providers.LineageSettings; Loading Loading @@ -73,7 +74,8 @@ public class TunerServiceImpl extends TunerService { StatusBar.BERRY_GLOBAL_STYLE, StatusBar.FORCE_SHOW_NAVBAR, StatusBar.SCREEN_BRIGHTNESS_MODE, StatusBar.STATUS_BAR_BRIGHTNESS_CONTROL StatusBar.STATUS_BAR_BRIGHTNESS_CONTROL, VolumeDialogImpl.SETTING_VOLUME_PANEL_ON_LEFT, }; private final Observer mObserver = new Observer(); Loading packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +60 −5 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; Loading @@ -96,6 +97,9 @@ import com.android.systemui.statusbar.phone.ExpandableIndicator; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.tuner.TunerService; import lineageos.providers.LineageSettings; import java.io.PrintWriter; import java.util.ArrayList; Loading @@ -114,6 +118,9 @@ public class VolumeDialogImpl implements VolumeDialog { private static final long USER_ATTEMPT_GRACE_PERIOD = 1000; private static final int UPDATE_ANIMATION_DURATION = 80; public static final String SETTING_VOLUME_PANEL_ON_LEFT = "lineagesecure:" + LineageSettings.Secure.VOLUME_PANEL_ON_LEFT; private final Context mContext; private final H mHandler = new H(); private final VolumeDialogController mController; Loading Loading @@ -151,6 +158,10 @@ public class VolumeDialogImpl implements VolumeDialog { private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mExpanded; // Volume panel placement setting state. private boolean mVolumePanelOnLeftDesired; // Volume panel placement that is currently in use. private boolean mVolumePanelOnLeft; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading @@ -158,6 +169,7 @@ public class VolumeDialogImpl implements VolumeDialog { mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); Dependency.get(TunerService.class).addTunable(mTunable, SETTING_VOLUME_PANEL_ON_LEFT); } public void init(int windowType, Callback callback) { Loading Loading @@ -199,15 +211,19 @@ public class VolumeDialogImpl implements VolumeDialog { final WindowManager.LayoutParams lp = mWindow.getAttributes(); lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; lp.windowAnimations = -1; if (!mVolumePanelOnLeft) { lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; } else { lp.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL; } mWindow.setAttributes(lp); mWindow.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mDialog.setCanceledOnTouchOutside(true); mDialog.setContentView(R.layout.volume_dialog); mDialog.setOnShowListener(dialog -> { if (!isLandscape()) mDialogView.setTranslationX(mDialogView.getWidth() / 2); if (!isLandscape()) mDialogView.setTranslationX(getAnimatorX()); mDialogView.setAlpha(0); mDialogView.animate() .alpha(1) Loading Loading @@ -242,6 +258,15 @@ public class VolumeDialogImpl implements VolumeDialog { mZenIcon = mRinger.findViewById(R.id.dnd_icon); mExpandRowsView = mDialog.findViewById(R.id.expandable_indicator_container); mExpandRows = mDialog.findViewById(R.id.expandable_indicator); if (!mVolumePanelOnLeft) { ((LinearLayout.LayoutParams) mRinger.getLayoutParams()).gravity = Gravity.RIGHT; ((FrameLayout.LayoutParams) mExpandRows.getLayoutParams()).gravity = Gravity.RIGHT; mExpandRows.setRotation(90); } else { ((LinearLayout.LayoutParams) mRinger.getLayoutParams()).gravity = Gravity.LEFT; ((FrameLayout.LayoutParams) mExpandRows.getLayoutParams()).gravity = Gravity.LEFT; mExpandRows.setRotation(-90); } if (mRows.isEmpty()) { if (!AudioSystem.isSingleVolume(mContext)) { Loading Loading @@ -276,6 +301,20 @@ public class VolumeDialogImpl implements VolumeDialog { initSettingsH(); } private float getAnimatorX() { float x = mDialogView.getWidth() / 2; return mVolumePanelOnLeft ? -x : x; } private final TunerService.Tunable mTunable = new TunerService.Tunable() { @Override public void onTuningChanged(String key, String newValue) { if (key.equals(SETTING_VOLUME_PANEL_ON_LEFT)) { mVolumePanelOnLeftDesired = TunerService.parseIntegerSwitch(newValue, false); } } }; protected ViewGroup getDialogView() { return mDialogView; } Loading Loading @@ -318,7 +357,11 @@ public class VolumeDialogImpl implements VolumeDialog { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); if (!mVolumePanelOnLeft) { mDialogRowsView.addView(row.view, 0); } else { mDialogRowsView.addView(row.view); } mRows.add(0, row); } Loading @@ -328,7 +371,11 @@ public class VolumeDialogImpl implements VolumeDialog { final VolumeRow row = mRows.get(i); initRow(row, row.stream, row.iconRes, row.iconMuteRes, row.important, row.defaultStream); if (!mVolumePanelOnLeft) { mDialogRowsView.addView(row.view, 0); } else { mDialogRowsView.addView(row.view); } updateVolumeRowH(row); } } Loading Loading @@ -579,6 +626,14 @@ public class VolumeDialogImpl implements VolumeDialog { mHandler.removeMessages(H.SHOW); mHandler.removeMessages(H.DISMISS); rescheduleTimeoutH(); // Now is a good time to apply any panel left/right placement // settings change. if (mVolumePanelOnLeft != mVolumePanelOnLeftDesired) { mVolumePanelOnLeft = mVolumePanelOnLeftDesired; // Reinit the panel dialog initDialog(); mConfigurableTexts.update(); } mShowing = true; initSettingsH(); Loading Loading @@ -626,7 +681,7 @@ public class VolumeDialogImpl implements VolumeDialog { mExpanded = false; mExpandRows.setExpanded(mExpanded); }, 50)); if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2); if (!isLandscape()) animator.translationX(getAnimatorX()); animator.start(); Events.writeEvent(mContext, Events.EVENT_DISMISS_DIALOG, reason); Loading Loading
packages/SystemUI/res/layout/volume_dialog.xml +2 −7 Original line number Diff line number Diff line Loading @@ -19,18 +19,16 @@ android:layout_height="wrap_content" android:background="@android:color/transparent" android:theme="@style/qs_theme"> <!-- right-aligned to be physically near volume button --> <LinearLayout android:id="@+id/volume_dialog" android:minWidth="@dimen/volume_dialog_panel_width" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|right" android:background="@android:color/transparent" android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_right" android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_horizontal" android:paddingTop="@dimen/volume_dialog_panel_transparent_padding" android:paddingBottom="@dimen/volume_dialog_panel_transparent_padding" android:paddingLeft="@dimen/volume_dialog_panel_transparent_padding" android:paddingLeft="@dimen/volume_dialog_panel_transparent_padding_horizontal" android:orientation="vertical" android:clipToPadding="false" > Loading @@ -40,7 +38,6 @@ android:layout_height="@dimen/volume_dialog_ringer_size" android:layout_marginBottom="@dimen/volume_dialog_spacer" android:translationZ="@dimen/volume_dialog_elevation" android:layout_gravity="right" android:clipToPadding="false" android:background="@drawable/rounded_bg_full"> <com.android.keyguard.AlphaOptimizedImageButton Loading @@ -56,7 +53,6 @@ <include layout="@layout/volume_dnd_icon" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="@dimen/volume_dialog_stream_padding" android:layout_marginTop="6dp"/> </FrameLayout> Loading Loading @@ -94,7 +90,6 @@ android:focusable="true" android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:layout_gravity="right" android:background="?android:attr/selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_quick_settings_expand" android:padding="14dp" Loading
packages/SystemUI/res/values/dimens.xml +1 −1 Original line number Diff line number Diff line Loading @@ -295,7 +295,7 @@ <!-- The width of the panel that holds the quick settings. --> <dimen name="qs_panel_width">@dimen/notification_panel_width</dimen> <dimen name="volume_dialog_panel_transparent_padding_right">8dp</dimen> <dimen name="volume_dialog_panel_transparent_padding_horizontal">8dp</dimen> <dimen name="volume_dialog_panel_transparent_padding">20dp</dimen> Loading
packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.util.leak.LeakDetector; import com.android.systemui.volume.VolumeDialogImpl; import lineageos.providers.LineageSettings; Loading Loading @@ -73,7 +74,8 @@ public class TunerServiceImpl extends TunerService { StatusBar.BERRY_GLOBAL_STYLE, StatusBar.FORCE_SHOW_NAVBAR, StatusBar.SCREEN_BRIGHTNESS_MODE, StatusBar.STATUS_BAR_BRIGHTNESS_CONTROL StatusBar.STATUS_BAR_BRIGHTNESS_CONTROL, VolumeDialogImpl.SETTING_VOLUME_PANEL_ON_LEFT, }; private final Observer mObserver = new Observer(); Loading
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +60 −5 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; Loading @@ -96,6 +97,9 @@ import com.android.systemui.statusbar.phone.ExpandableIndicator; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.tuner.TunerService; import lineageos.providers.LineageSettings; import java.io.PrintWriter; import java.util.ArrayList; Loading @@ -114,6 +118,9 @@ public class VolumeDialogImpl implements VolumeDialog { private static final long USER_ATTEMPT_GRACE_PERIOD = 1000; private static final int UPDATE_ANIMATION_DURATION = 80; public static final String SETTING_VOLUME_PANEL_ON_LEFT = "lineagesecure:" + LineageSettings.Secure.VOLUME_PANEL_ON_LEFT; private final Context mContext; private final H mHandler = new H(); private final VolumeDialogController mController; Loading Loading @@ -151,6 +158,10 @@ public class VolumeDialogImpl implements VolumeDialog { private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mExpanded; // Volume panel placement setting state. private boolean mVolumePanelOnLeftDesired; // Volume panel placement that is currently in use. private boolean mVolumePanelOnLeft; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading @@ -158,6 +169,7 @@ public class VolumeDialogImpl implements VolumeDialog { mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); Dependency.get(TunerService.class).addTunable(mTunable, SETTING_VOLUME_PANEL_ON_LEFT); } public void init(int windowType, Callback callback) { Loading Loading @@ -199,15 +211,19 @@ public class VolumeDialogImpl implements VolumeDialog { final WindowManager.LayoutParams lp = mWindow.getAttributes(); lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; lp.windowAnimations = -1; if (!mVolumePanelOnLeft) { lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; } else { lp.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL; } mWindow.setAttributes(lp); mWindow.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mDialog.setCanceledOnTouchOutside(true); mDialog.setContentView(R.layout.volume_dialog); mDialog.setOnShowListener(dialog -> { if (!isLandscape()) mDialogView.setTranslationX(mDialogView.getWidth() / 2); if (!isLandscape()) mDialogView.setTranslationX(getAnimatorX()); mDialogView.setAlpha(0); mDialogView.animate() .alpha(1) Loading Loading @@ -242,6 +258,15 @@ public class VolumeDialogImpl implements VolumeDialog { mZenIcon = mRinger.findViewById(R.id.dnd_icon); mExpandRowsView = mDialog.findViewById(R.id.expandable_indicator_container); mExpandRows = mDialog.findViewById(R.id.expandable_indicator); if (!mVolumePanelOnLeft) { ((LinearLayout.LayoutParams) mRinger.getLayoutParams()).gravity = Gravity.RIGHT; ((FrameLayout.LayoutParams) mExpandRows.getLayoutParams()).gravity = Gravity.RIGHT; mExpandRows.setRotation(90); } else { ((LinearLayout.LayoutParams) mRinger.getLayoutParams()).gravity = Gravity.LEFT; ((FrameLayout.LayoutParams) mExpandRows.getLayoutParams()).gravity = Gravity.LEFT; mExpandRows.setRotation(-90); } if (mRows.isEmpty()) { if (!AudioSystem.isSingleVolume(mContext)) { Loading Loading @@ -276,6 +301,20 @@ public class VolumeDialogImpl implements VolumeDialog { initSettingsH(); } private float getAnimatorX() { float x = mDialogView.getWidth() / 2; return mVolumePanelOnLeft ? -x : x; } private final TunerService.Tunable mTunable = new TunerService.Tunable() { @Override public void onTuningChanged(String key, String newValue) { if (key.equals(SETTING_VOLUME_PANEL_ON_LEFT)) { mVolumePanelOnLeftDesired = TunerService.parseIntegerSwitch(newValue, false); } } }; protected ViewGroup getDialogView() { return mDialogView; } Loading Loading @@ -318,7 +357,11 @@ public class VolumeDialogImpl implements VolumeDialog { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); if (!mVolumePanelOnLeft) { mDialogRowsView.addView(row.view, 0); } else { mDialogRowsView.addView(row.view); } mRows.add(0, row); } Loading @@ -328,7 +371,11 @@ public class VolumeDialogImpl implements VolumeDialog { final VolumeRow row = mRows.get(i); initRow(row, row.stream, row.iconRes, row.iconMuteRes, row.important, row.defaultStream); if (!mVolumePanelOnLeft) { mDialogRowsView.addView(row.view, 0); } else { mDialogRowsView.addView(row.view); } updateVolumeRowH(row); } } Loading Loading @@ -579,6 +626,14 @@ public class VolumeDialogImpl implements VolumeDialog { mHandler.removeMessages(H.SHOW); mHandler.removeMessages(H.DISMISS); rescheduleTimeoutH(); // Now is a good time to apply any panel left/right placement // settings change. if (mVolumePanelOnLeft != mVolumePanelOnLeftDesired) { mVolumePanelOnLeft = mVolumePanelOnLeftDesired; // Reinit the panel dialog initDialog(); mConfigurableTexts.update(); } mShowing = true; initSettingsH(); Loading Loading @@ -626,7 +681,7 @@ public class VolumeDialogImpl implements VolumeDialog { mExpanded = false; mExpandRows.setExpanded(mExpanded); }, 50)); if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2); if (!isLandscape()) animator.translationX(getAnimatorX()); animator.start(); Events.writeEvent(mContext, Events.EVENT_DISMISS_DIALOG, reason); Loading