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

Commit faf55695 authored by Jens Doll's avatar Jens Doll Committed by Gerrit Code Review
Browse files

Pie controls: Fix multi-user handling

This commit adds multi user support for pie controls:
* React on user changes
* Respect per user expanded desktop settings

Change-Id: I513b00f2745f309bf21b971f96276da40003b224
parent ee0783a5
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -297,6 +297,12 @@ public abstract class BaseStatusBar extends SystemUI implements
                   ));
        }

        if (PieManager.getInstance().isPresent()) {
            mPieController = new PieController(mContext);
            mPieController.attachStatusBar(this);
            addNavigationBarCallback(mPieController);
        }

        mCurrentUserId = ActivityManager.getCurrentUser();

        IntentFilter filter = new IntentFilter();
@@ -309,15 +315,12 @@ public abstract class BaseStatusBar extends SystemUI implements
                    mCurrentUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
                    if (true) Slog.v(TAG, "userId " + mCurrentUserId + " is in the house");
                    userSwitched(mCurrentUserId);
                    if (mPieController != null) {
                        mPieController.userSwitched(mCurrentUserId);
                    }
                }
        }, filter);

        if (PieManager.getInstance().isPresent()) {
            mPieController = new PieController(mContext);
            mPieController.attachStatusBar(this);
            addNavigationBarCallback(mPieController);
            }
        }, filter);
    }

    public void userSwitched(int newUserId) {
+27 −23
Original line number Diff line number Diff line
@@ -208,31 +208,31 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi
            ContentResolver resolver = mContext.getContentResolver();
            // trigger setupNavigationItems()
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.NAV_BUTTONS), false, this);
                    Settings.System.NAV_BUTTONS), false, this, UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.Secure.getUriFor(
                    Settings.Secure.KILL_APP_LONGPRESS_BACK), false, this);
                    Settings.Secure.KILL_APP_LONGPRESS_BACK), false, this, UserHandle.USER_ALL);
            // trigger setupContainer()
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.PIE_CONTROLS), false, this);
                    Settings.System.PIE_CONTROLS), false, this, UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.EXPANDED_DESKTOP_STATE), false, this);
                    Settings.System.EXPANDED_DESKTOP_STATE), false, this, UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.EXPANDED_DESKTOP_STYLE), false, this);
                    Settings.System.EXPANDED_DESKTOP_STYLE), false, this, UserHandle.USER_ALL);
            // trigger setupListener()
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.PIE_POSITIONS), false, this);
                    Settings.System.PIE_POSITIONS), false, this, UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.PIE_SENSITIVITY), false, this);
                    Settings.System.PIE_SENSITIVITY), false, this, UserHandle.USER_ALL);
        }

        @Override
        public void onChange(boolean selfChange) {
            ContentResolver resolver = mContext.getContentResolver();
            boolean expanded = Settings.System.getInt(resolver,
                    Settings.System.EXPANDED_DESKTOP_STATE, 0) == 1;
            boolean expanded = Settings.System.getIntForUser(resolver,
                    Settings.System.EXPANDED_DESKTOP_STATE, 0, UserHandle.USER_CURRENT) == 1;
            if (expanded) {
                mExpandedDesktopState = Settings.System.getInt(resolver,
                        Settings.System.EXPANDED_DESKTOP_STYLE, 0);
                mExpandedDesktopState = Settings.System.getIntForUser(resolver,
                        Settings.System.EXPANDED_DESKTOP_STYLE, 0, UserHandle.USER_CURRENT);
            } else {
                mExpandedDesktopState = 0;
            }
@@ -300,6 +300,10 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi
        mSettingsObserver.onChange(true);
    }

    public void userSwitched(int newUserId) {
        mSettingsObserver.onChange(true);
    }

    public void attachStatusBar(BaseStatusBar statusBar) {
        mStatusBar = statusBar;
    }
@@ -370,11 +374,11 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi
    private void setupListener() {
        ContentResolver resolver = mContext.getContentResolver();

        mPieTriggerSlots = Settings.System.getInt(resolver,
                Settings.System.PIE_POSITIONS, PiePosition.BOTTOM.FLAG);
        mPieTriggerSlots = Settings.System.getIntForUser(resolver,
                Settings.System.PIE_POSITIONS, PiePosition.BOTTOM.FLAG, UserHandle.USER_CURRENT);

        int sensitivity = Settings.System.getInt(resolver,
                Settings.System.PIE_SENSITIVITY, 3);
        int sensitivity = Settings.System.getIntForUser(resolver,
                Settings.System.PIE_SENSITIVITY, 3, UserHandle.USER_CURRENT);
        if (sensitivity < PieServiceConstants.SENSITIVITY_LOWEST
                || sensitivity > PieServiceConstants.SENSITIVITY_HIGHEST) {
            sensitivity = PieServiceConstants.SENSITIVITY_DEFAULT;
@@ -387,8 +391,8 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi

    private void setupNavigationItems() {
        int minimumImageSize = (int)mContext.getResources().getDimension(R.dimen.pie_item_size);
        boolean killAppLongPress = Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.KILL_APP_LONGPRESS_BACK, 0) == 1;
        boolean killAppLongPress = Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.KILL_APP_LONGPRESS_BACK, 0, UserHandle.USER_CURRENT) == 1;
        ButtonInfo[] buttons = NavigationButtons.loadButtonMap(mContext);

        mNavigationSlice.clear();
@@ -591,13 +595,13 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi
            Slog.d(TAG, "onSnap from " + position.name());
        }

        int triggerSlots = Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.PIE_POSITIONS, PiePosition.BOTTOM.FLAG);
        int triggerSlots = Settings.System.getIntForUser(mContext.getContentResolver(),
                Settings.System.PIE_POSITIONS, PiePosition.BOTTOM.FLAG, UserHandle.USER_CURRENT);

        triggerSlots = triggerSlots & ~mPosition.FLAG | position.FLAG;

        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.PIE_POSITIONS, triggerSlots);
        Settings.System.putIntForUser(mContext.getContentResolver(),
                Settings.System.PIE_POSITIONS, triggerSlots, UserHandle.USER_CURRENT);
    }

    @Override
@@ -693,8 +697,8 @@ public class PieController implements BaseStatusBar.NavigationBarCallback, PieVi
    }

    public boolean isEnabled() {
        int pie = Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.PIE_CONTROLS, 0);
        int pie = Settings.System.getIntForUser(mContext.getContentResolver(),
                Settings.System.PIE_CONTROLS, 0, UserHandle.USER_CURRENT);

        return (pie == 1 && mExpandedDesktopState != 0) || pie == 2;
    }