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

Unverified Commit c43bcfa3 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 d94a6ea3
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -57,6 +57,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;
@@ -152,6 +153,8 @@ import com.google.common.collect.ImmutableList;

import dagger.Lazy;

import lineageos.providers.LineageSettings;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -303,6 +306,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;
@@ -407,6 +413,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;
@@ -575,6 +600,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;