From 41fa200574b0a00085569d47dda7dcb5bcfea0f9 Mon Sep 17 00:00:00 2001 From: "a.derendyaev" Date: Wed, 19 Dec 2018 21:57:45 +0800 Subject: [aospa][quartz] SystemUI: allow devices override audio panel location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some devices have volume buttons on left side and it not fancy if volume panel will be at right side. You can override panel location using overlay for SystemUI: true * Herna1994 : Fixed animation on left side panel. * Herna1994 : Adapted to Android 10. Signed-off-by: Hernán Castañón Change-Id: I4f111ec43c436b1c5ff81afea3f5d755bc8e7668 Volume panel: Do the same with less Change-Id: If41456f71ffd18466166e7b4120ff34d9e6f5a46 Signed-off-by: Hernán Castañón Álvarez --- packages/SystemUI/res/layout/volume_dialog.xml | 5 ---- packages/SystemUI/res/values/lineage_config.xml | 3 ++ .../android/systemui/volume/VolumeDialogImpl.java | 34 ++++++++++++++++++---- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml index 7d6547b9cd42..2296b613d56c 100644 --- a/packages/SystemUI/res/layout/volume_dialog.xml +++ b/packages/SystemUI/res/layout/volume_dialog.xml @@ -30,8 +30,6 @@ android:minWidth="@dimen/volume_dialog_panel_width" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="right" - android:layout_gravity="right" android:background="@android:color/transparent" android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_right" android:paddingTop="@dimen/volume_dialog_panel_transparent_padding" @@ -45,8 +43,6 @@ android:layout_width="@dimen/volume_dialog_ringer_size" android:layout_height="@dimen/volume_dialog_ringer_size" android:layout_marginBottom="@dimen/volume_dialog_spacer" - android:gravity="right" - android:layout_gravity="right" android:translationZ="@dimen/volume_dialog_elevation" android:clipToPadding="false" android:background="@drawable/rounded_bg_full"> @@ -65,7 +61,6 @@ diff --git a/packages/SystemUI/res/values/lineage_config.xml b/packages/SystemUI/res/values/lineage_config.xml index d77e7e82821e..06287e9868af 100644 --- a/packages/SystemUI/res/values/lineage_config.xml +++ b/packages/SystemUI/res/values/lineage_config.xml @@ -43,4 +43,7 @@ 60 + + + false diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 7aee1a7f92ae..587b10480708 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -66,6 +66,7 @@ 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; @@ -166,6 +167,7 @@ public class VolumeDialogImpl implements VolumeDialog, private ViewStub mODICaptionsTooltipViewStub; private View mODICaptionsTooltipView = null; private boolean mHasAlertSlider; + private boolean mLeftVolumeRocker; public VolumeDialogImpl(Context context) { mContext = @@ -179,6 +181,7 @@ public class VolumeDialogImpl implements VolumeDialog, mHasSeenODICaptionsTooltip = Prefs.getBoolean(context, Prefs.Key.HAS_SEEN_ODI_CAPTIONS_TOOLTIP, false); mHasAlertSlider = mContext.getResources().getBoolean(com.android.internal.R.bool.config_hasAlertSlider); + mLeftVolumeRocker = mContext.getResources().getBoolean(R.bool.config_audioPanelOnLeftSide); } @Override @@ -226,7 +229,11 @@ public class VolumeDialogImpl implements VolumeDialog, lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.windowAnimations = -1; - lp.gravity = mContext.getResources().getInteger(R.integer.volume_dialog_gravity); + if(!isAudioPanelOnLeftSide()){ + lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; + } else { + lp.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL; + } mWindow.setAttributes(lp); mWindow.setLayout(WRAP_CONTENT, WRAP_CONTENT); @@ -235,7 +242,7 @@ public class VolumeDialogImpl implements VolumeDialog, mDialogView.setAlpha(0); mDialog.setCanceledOnTouchOutside(true); mDialog.setOnShowListener(dialog -> { - if (!isLandscape()) mDialogView.setTranslationX(mDialogView.getWidth() / 2.0f); + if (!isLandscape()) mDialogView.setTranslationX((mDialogView.getWidth() / 2.0f)*(!isAudioPanelOnLeftSide() ? 1 : -1)); mDialogView.setAlpha(0); mDialogView.animate() .alpha(1) @@ -281,6 +288,11 @@ public class VolumeDialogImpl implements VolumeDialog, mRinger.setVisibility(View.GONE); } + if(!isAudioPanelOnLeftSide()) { + mRinger.setForegroundGravity(Gravity.RIGHT); + } else { + mRinger.setForegroundGravity(Gravity.LEFT); + } mSettingsView = mDialog.findViewById(R.id.settings_container); mSettingsIcon = mDialog.findViewById(R.id.settings); @@ -361,7 +373,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); - mDialogRowsView.addView(row.view); + if(!isAudioPanelOnLeftSide()){ + mDialogRowsView.addView(row.view, 0); + } else { + mDialogRowsView.addView(row.view); + } mRows.add(row); } @@ -371,7 +387,11 @@ public class VolumeDialogImpl implements VolumeDialog, final VolumeRow row = mRows.get(i); initRow(row, row.stream, row.iconRes, row.iconMuteRes, row.important, row.defaultStream); - mDialogRowsView.addView(row.view); + if(!isAudioPanelOnLeftSide()){ + mDialogRowsView.addView(row.view, 0); + } else { + mDialogRowsView.addView(row.view); + } updateVolumeRowH(row); } } @@ -772,7 +792,7 @@ public class VolumeDialogImpl implements VolumeDialog, tryToRemoveCaptionsTooltip(); mIsAnimatingDismiss = false; }, 50)); - if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2.0f); + if (!isLandscape()) animator.translationX((mDialogView.getWidth() / 2.0f)*(!isAudioPanelOnLeftSide() ? 1 : -1)); animator.start(); checkODICaptionsTooltip(true); mController.notifyVisible(false); @@ -1489,6 +1509,10 @@ public class VolumeDialogImpl implements VolumeDialog, } } + private boolean isAudioPanelOnLeftSide() { + return mLeftVolumeRocker; + } + private static class VolumeRow { private View view; private TextView header; -- cgit v1.2.3