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

Commit 24f2e044 authored by d34d's avatar d34d Committed by Gerrit Code Review
Browse files

SysUI: Recreate volume dialog on theme change

Change-Id: Ib58c015558181e32885b53052d4da0d0b16a8497
TICKET: CYNGNOS-1643
parent c915fbfb
Loading
Loading
Loading
Loading
+26 −20
Original line number Diff line number Diff line
@@ -959,6 +959,12 @@ public class VolumeDialog {
        }
    };

    public void cleanup() {
        mController.removeCallback(mControllerCallbackH);
        mZenFooter.cleanup();
        mAccessibility.cleanup();
    }

    private final class H extends Handler {
        private static final int SHOW = 1;
        private static final int DISMISS = 2;
@@ -1081,26 +1087,7 @@ public class VolumeDialog {

        public void init() {
            mMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
            mDialogView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
                @Override
                public void onViewDetachedFromWindow(View v) {
                    if (D.BUG) Log.d(TAG, "onViewDetachedFromWindow");
                    // noop
                }

                @Override
                public void onViewAttachedToWindow(View v) {
                    if (D.BUG) Log.d(TAG, "onViewAttachedToWindow");
                    updateFeedbackEnabled();
                }
            });
            mDialogView.setAccessibilityDelegate(this);
            mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
                @Override
                public void onAccessibilityStateChanged(boolean enabled) {
                    updateFeedbackEnabled();
                }
            });
            mDialogView.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
            updateFeedbackEnabled();
        }

@@ -1111,6 +1098,10 @@ public class VolumeDialog {
            return super.onRequestSendAccessibilityEvent(host, child, event);
        }

        public void cleanup() {
            mDialogView.removeOnAttachStateChangeListener(mOnAttachStateChangeListener);
        }

        private void updateFeedbackEnabled() {
            mFeedbackEnabled = computeFeedbackEnabled();
        }
@@ -1126,6 +1117,21 @@ public class VolumeDialog {
            }
            return false;
        }

        private OnAttachStateChangeListener mOnAttachStateChangeListener =
                new OnAttachStateChangeListener() {
            @Override
            public void onViewDetachedFromWindow(View v) {
                if (D.BUG) Log.d(TAG, "onViewDetachedFromWindow");
                // noop
            }

            @Override
            public void onViewAttachedToWindow(View v) {
                if (D.BUG) Log.d(TAG, "onViewAttachedToWindow");
                updateFeedbackEnabled();
            }
        };
    }

    private static class VolumeRow {
+8 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ public class VolumeDialogComponent implements VolumeComponent {
    private final Context mContext;
    private final VolumeDialogController mController;
    private final ZenModeController mZenModeController;
    private final VolumeDialog mDialog;
    private VolumeDialog mDialog;
    private final VolumePolicy mVolumePolicy = new VolumePolicy(
            true,  // volumeDownToEnterSilent
            true,  // volumeUpToExitSilent
@@ -138,4 +138,11 @@ public class VolumeDialogComponent implements VolumeComponent {
        }
    };

    public void recreateDialog() {
        if (mDialog != null) mDialog.cleanup();

        mDialog = new VolumeDialog(mContext, WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY,
                mController, mZenModeController, mVolumeDialogCallback);
        applyConfiguration();
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -97,9 +97,8 @@ public class VolumeUI extends SystemUI {
        getVolumeComponent().onConfigurationChanged(newConfig);

        if (isThemeChange(newConfig)) {
            // TODO: implement initPanel() if needed
            //initPanel();
            mContext.recreateTheme();
            mVolumeComponent.recreateDialog();
        }
        mConfiguration.setTo(newConfig);
    }
+16 −10
Original line number Diff line number Diff line
@@ -69,8 +69,7 @@ public class ZenFooter extends LinearLayout {
        mSpTexts.add(mEndNowButton);
    }

    public void init(final ZenModeController controller) {
        controller.addCallback(new ZenModeController.Callback() {
    private ZenModeController.Callback mZenModeCallback = new ZenModeController.Callback() {
        @Override
        public void onZenChanged(int zen) {
            setZen(zen);
@@ -79,7 +78,10 @@ public class ZenFooter extends LinearLayout {
        public void onConfigChanged(ZenModeConfig config) {
            setConfig(config);
        }
        });
    };

    public void init(final ZenModeController controller) {
        controller.addCallback(mZenModeCallback);
        mEndNowButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -142,4 +144,8 @@ public class ZenFooter extends LinearLayout {
        mSpTexts.update();
    }

    public void cleanup() {
        mController.removeCallback(mZenModeCallback);
    }

}