summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora.derendyaev <a.derendyaev@magdv.com>2018-12-19 21:57:45 +0800
committeralk3pInjection <webmaster@raspii.tech>2021-09-27 21:17:05 +0800
commit41fa200574b0a00085569d47dda7dcb5bcfea0f9 (patch)
tree06b7a150eeafdd122f4f5141c829a33394dc551e
parenta393339d4927ee0ec78a683d4315686adbdf466d (diff)
[aospa][quartz] SystemUI: allow devices override audio panel location
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: <!-- Allow devices override audio panel location to the left side --> <bool name="config_audioPanelOnLeftSide">true</bool> * Herna1994 : Fixed animation on left side panel. * Herna1994 : Adapted to Android 10. Signed-off-by: Hernán Castañón <herna@paranoidandroid.co> Change-Id: I4f111ec43c436b1c5ff81afea3f5d755bc8e7668 Volume panel: Do the same with less Change-Id: If41456f71ffd18466166e7b4120ff34d9e6f5a46 Signed-off-by: Hernán Castañón Álvarez <herna@paranoidandroid.co>
-rw-r--r--packages/SystemUI/res/layout/volume_dialog.xml5
-rw-r--r--packages/SystemUI/res/values/lineage_config.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java34
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 @@
<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>
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 @@
<!-- Amount of time in seconds to wait before shifting elements around when the burn in
protection is enabled for status bar and navigation bar -->
<integer name="config_shift_interval">60</integer>
+
+ <!-- Allow devices override audio panel location to the left side -->
+ <bool name="config_audioPanelOnLeftSide">false</bool>
</resources>
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;