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

Commit 679c9770 authored by Romain Hunault's avatar Romain Hunault 💻
Browse files

Merge remote-tracking branch 'origin/lineage-16.0' into v1-pie

parents c0e24d2d 32816a68
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -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" >

@@ -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
@@ -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>

@@ -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"
+1 −1
Original line number Diff line number Diff line
@@ -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>

+3 −1
Original line number Diff line number Diff line
@@ -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;

@@ -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();
+60 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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);
@@ -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) {
@@ -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)
@@ -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)) {
@@ -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;
    }
@@ -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);
    }

@@ -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);
        }
    }
@@ -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();
@@ -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);