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

Unverified Commit f83a8e0c authored by a.derendyaev's avatar a.derendyaev Committed by Michael Bestas
Browse files

SystemUI: runtime configurable audio panel location



Co-authored-by: default avatarAlex Cruz <alex@dirtyunicorns.com>
Co-authored-by: default avatarArian <arian.kulmer@web.de>
Co-authored-by: default avatarBruno Martins <bgcngm@gmail.com>
Co-authored-by: default avatarLuK1337 <priv.luk@gmail.com>
Co-authored-by: default avatarprogramminghoch10 <hoch10@kabelbw.de>
Co-authored-by: default avatarSam Mortimer <sam@mortimer.me.uk>
Change-Id: If22c97eb1ce4cfb13396d182d90786f4b7acaee7
parent 751ca305
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.database.ContentObserver;
import android.graphics.Color;
import android.graphics.Outline;
import android.graphics.PixelFormat;
@@ -144,6 +145,8 @@ import com.android.systemui.volume.ui.navigation.VolumeNavigator;

import dagger.Lazy;

import lineageos.providers.LineageSettings;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -294,6 +297,9 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
    private ViewStub mODICaptionsTooltipViewStub;
    @VisibleForTesting View mODICaptionsTooltipView = null;

    // Volume panel placement left or right
    private boolean mVolumePanelOnLeft;

    private final boolean mUseBackgroundBlur;
    private Consumer<Boolean> mCrossWindowBlurEnabledListener;
    private BackgroundBlurDrawable mDialogRowsViewBackground;
@@ -392,6 +398,25 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
            };
        }

        if (!mIsTv) {
            ContentObserver volumePanelOnLeftObserver = new ContentObserver(null) {
                @Override
                public void onChange(boolean selfChange) {
                    final boolean volumePanelOnLeft = LineageSettings.Secure.getInt(
                            mContext.getContentResolver(),
                            LineageSettings.Secure.VOLUME_PANEL_ON_LEFT, 0) != 0;
                    if (mVolumePanelOnLeft != volumePanelOnLeft) {
                        mVolumePanelOnLeft = volumePanelOnLeft;
                        mHandler.post(mControllerCallbackH::onConfigurationChanged);
                    }
                }
            };
            mContext.getContentResolver().registerContentObserver(
                    LineageSettings.Secure.getUriFor(LineageSettings.Secure.VOLUME_PANEL_ON_LEFT),
                    false, volumePanelOnLeftObserver);
            volumePanelOnLeftObserver.onChange(true);
        }

        initDimens();

        mOrientation = mContext.getResources().getConfiguration().orientation;
@@ -560,6 +585,12 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
        lp.windowAnimations = -1;

        mOriginalGravity = mContext.getResources().getInteger(R.integer.volume_dialog_gravity);
        if (!mIsTv) {
            // Clear the pre-defined gravity for left or right,
            // this is handled by mVolumePanelOnLeft
            mOriginalGravity &= ~(Gravity.LEFT | Gravity.RIGHT);
            mOriginalGravity |= mVolumePanelOnLeft ? Gravity.LEFT : Gravity.RIGHT;
        }
        mWindowGravity = Gravity.getAbsoluteGravity(mOriginalGravity,
                mContext.getResources().getConfiguration().getLayoutDirection());
        lp.gravity = mWindowGravity;