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

Commit b14e5994 authored by Michael Bestas's avatar Michael Bestas Committed by Roman Birg
Browse files

Add left QS quick pulldown & fix multiuser (1/2)

Change-Id: Id0251dbaa16359ef01c1f13ba2443946ceb53b14
parent 29f04d64
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -2164,9 +2164,18 @@ public final class Settings {

        /**
         * Whether to allow one finger quick settings expansion on the right side of the statusbar.
         * @deprecated Use {@link android.provider.Settings.System#QS_QUICK_PULLDOWN} instead
         * @hide
         */
        public static final String STATUS_BAR_QUICK_QS_PULLDOWN = "status_bar_quick_qs_pulldown";
        @Deprecated
        public static final String STATUS_BAR_QUICK_QS_PULLDOWN = System.QS_QUICK_PULLDOWN;

        /**
         * Quick Settings Quick Pulldown
         * 0 = off, 1 = right, 2 = left
         * @hide
         */
        public static final String QS_QUICK_PULLDOWN = "qs_quick_pulldown";

        /**
         * Whether to show the brightness slider in quick settings panel.
+7 −1
Original line number Diff line number Diff line
@@ -237,6 +237,12 @@
    <!-- Default protected sms originating address values of Settings.Secure.PROTECTED_SMS_ADDRESSES -->
    <string-array name="def_protected_sms_list_values"></string-array>

    <!-- Defaults for Settings.System.Secure.ADVANCED_MODE. -->
    <!-- Defaults for Settings.Secure.ADVANCED_MODE. -->
    <bool name="def_advanced_mode">true</bool>

    <!-- Default for Settings.System.QS_QUICK_PULLDOWN.
         0. Off
         1. Right
         2. Left -->
    <integer name="def_qs_quick_pulldown">0</integer>
</resources>
+23 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
    // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
    // is properly propagated through your change.  Not doing so will result in a loss of user
    // settings.
    private static final int DATABASE_VERSION = 123;
    private static final int DATABASE_VERSION = 124;

    private Context mContext;
    private int mUserHandle;
@@ -1967,6 +1967,25 @@ public class DatabaseHelper extends SQLiteOpenHelper {
            upgradeVersion = 123;
        }

        if (upgradeVersion < 124) {
            // Migrate from cm-12.0 if there is no entry from cm-11.0
            db.beginTransaction();
            SQLiteStatement stmt = null;
            try {
                stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
                        + " VALUES(?,?);");
                int quickPulldown = getIntValueFromSystem(db,
                        Settings.System.STATUS_BAR_QUICK_QS_PULLDOWN,
                        R.integer.def_qs_quick_pulldown);
                loadSetting(stmt, Settings.System.QS_QUICK_PULLDOWN, quickPulldown);
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
                if (stmt != null) stmt.close();
            }
            upgradeVersion = 124;
        }

        // *** Remember to update DATABASE_VERSION above!

        if (upgradeVersion != currentVersion) {
@@ -2466,6 +2485,9 @@ public class DatabaseHelper extends SQLiteOpenHelper {
            loadIntegerSetting(stmt, Settings.System.ENABLE_PEOPLE_LOOKUP,
                    R.integer.def_people_lookup);

            loadIntegerSetting(stmt, Settings.System.QS_QUICK_PULLDOWN,
                    R.integer.def_qs_quick_pulldown);

        } finally {
            if (stmt != null) stmt.close();
        }
+29 −26
Original line number Diff line number Diff line
@@ -24,12 +24,12 @@ import android.animation.ValueAnimator;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Configuration;
import android.database.ContentObserver;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Handler;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.MathUtils;
@@ -47,6 +47,7 @@ import android.widget.TextView;
import com.android.internal.util.cm.LockscreenShortcutsHelper;
import com.android.keyguard.KeyguardStatusView;
import com.android.systemui.R;
import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.statusbar.ExpandableView;
import com.android.systemui.statusbar.FlingAnimationUtils;
@@ -69,6 +70,7 @@ public class NotificationPanelView extends PanelView implements

    private static final float HEADER_RUBBERBAND_FACTOR = 2.05f;
    private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f;
    private static final float QUICK_PULLDOWN_REGION_FRACTION = 0.2f;

    private static final int DOZE_BACKGROUND_COLOR = 0xff000000;
    private static final int TAG_KEY_ANIM = R.id.scrim;
@@ -178,7 +180,7 @@ public class NotificationPanelView extends PanelView implements
    private Handler mHandler = new Handler();
    private SettingsObserver mSettingsObserver;

    private boolean mOneFingerQuickSettingsIntercept;
    private int mOneFingerQuickSettingsIntercept;
    private boolean mDoubleTapToSleepEnabled;
    private int mStatusBarHeaderHeight;
    private GestureDetector mDoubleTapGesture;
@@ -322,7 +324,6 @@ public class NotificationPanelView extends PanelView implements
    public void onAttachedToWindow() {
        mSecureCameraLaunchManager.create();
        mSettingsObserver.observe();

    }

    @Override
@@ -654,8 +655,7 @@ public class NotificationPanelView extends PanelView implements
        boolean twoFingerQsEvent = mTwoFingerQsExpandPossible
                && (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
                && event.getPointerCount() == 2);
        boolean oneFingerQsOverride = mOneFingerQuickSettingsIntercept
                && event.getActionMasked() == MotionEvent.ACTION_DOWN
        boolean oneFingerQsOverride = event.getActionMasked() == MotionEvent.ACTION_DOWN
                && shouldQuickSettingsIntercept(event.getX(), event.getY(), -1, false);
        if ((twoFingerQsEvent || oneFingerQsOverride)
                && event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
@@ -1230,8 +1230,17 @@ public class NotificationPanelView extends PanelView implements
                && y >= header.getTop() && y <= header.getBottom();

        final float w = getMeasuredWidth();
        float region = (w * (1.f/3.f)); // TODO overlay region fraction?
        boolean showQsOverride = isLayoutRtl() ? (x < region) : (w - region < x);
        float region = (w * QUICK_PULLDOWN_REGION_FRACTION);
        boolean showQsOverride = false;

        switch (mOneFingerQuickSettingsIntercept) {
            case 1: // Right side pulldown
                showQsOverride = isLayoutRtl() ? (x < region) : (w - region < x);
                break;
            case 2: // Left side pulldown
                showQsOverride = isLayoutRtl() ? (w - region < x) : (x < region);
                break;
        }
        showQsOverride = showQsOverride && mStatusBarState == StatusBarState.SHADE;

        if (mQsExpanded) {
@@ -1890,41 +1899,35 @@ public class NotificationPanelView extends PanelView implements
        mKeyguardStatusView.refreshTime();
    }

    class SettingsObserver extends ContentObserver {
    private class SettingsObserver extends UserContentObserver {
        SettingsObserver(Handler handler) {
            super(handler);
        }

        void observe() {
        @Override
        protected void observe() {
            super.observe();
            ContentResolver resolver = mContext.getContentResolver();
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.STATUS_BAR_QUICK_QS_PULLDOWN), false, this);
                    Settings.System.QS_QUICK_PULLDOWN), false, this, UserHandle.USER_ALL);
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this);
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this, UserHandle.USER_ALL);
            update();
        }

        void unobserve() {
            ContentResolver resolver = mContext.getContentResolver();
            resolver.unregisterContentObserver(this);
        }

        @Override
        public void onChange(boolean selfChange) {
            update();
        protected void unobserve() {
            super.unobserve();
            mContext.getContentResolver().unregisterContentObserver(this);
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            update();
        }

        public void update() {
            ContentResolver resolver = mContext.getContentResolver();
            mOneFingerQuickSettingsIntercept = Settings.System.getInt(
                    resolver, Settings.System.STATUS_BAR_QUICK_QS_PULLDOWN, 1) == 1;
            mDoubleTapToSleepEnabled = Settings.System.getInt(
                    resolver, Settings.System.DOUBLE_TAP_SLEEP_GESTURE, 1) == 1;
            mOneFingerQuickSettingsIntercept = Settings.System.getIntForUser(resolver,
                    Settings.System.QS_QUICK_PULLDOWN, 0, UserHandle.USER_CURRENT);
            mDoubleTapToSleepEnabled = Settings.System.getIntForUser(resolver,
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE, 1, UserHandle.USER_CURRENT) == 1;
        }
    }
}
+12 −18
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.systemui.statusbar.phone;
import android.app.StatusBarManager;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
@@ -30,6 +29,7 @@ import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Log;
@@ -42,6 +42,7 @@ import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.widget.FrameLayout;
import com.android.systemui.R;
import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.StatusBarState;
@@ -293,38 +294,31 @@ public class StatusBarWindowView extends FrameLayout {
        removeView(content);
    }

    class SettingsObserver extends ContentObserver {
    private class SettingsObserver extends UserContentObserver {
        SettingsObserver(Handler handler) {
            super(handler);
        }

        void observe() {
        @Override
        protected void observe() {
            super.observe();
            ContentResolver resolver = mContext.getContentResolver();
            resolver.registerContentObserver(Settings.System.getUriFor(
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this);
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE), false, this, UserHandle.USER_ALL);
            update();
        }

        void unobserve() {
            ContentResolver resolver = mContext.getContentResolver();
            resolver.unregisterContentObserver(this);
        }

        @Override
        public void onChange(boolean selfChange) {
            update();
        protected void unobserve() {
            super.unobserve();
            mContext.getContentResolver().unregisterContentObserver(this);
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            update();
        }

        public void update() {
            ContentResolver resolver = mContext.getContentResolver();
            mDoubleTapToSleepEnabled = Settings.System.getInt(
                    resolver, Settings.System.DOUBLE_TAP_SLEEP_GESTURE, 1) == 1;
            mDoubleTapToSleepEnabled = Settings.System.getIntForUser(resolver,
                    Settings.System.DOUBLE_TAP_SLEEP_GESTURE, 1, UserHandle.USER_CURRENT) == 1;
        }
    }
}