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

Commit 7dbf5dd2 authored by Scott Warner's avatar Scott Warner Committed by Steve Kondik
Browse files

QuickSettings: Add long click support

Add long click support for QS tiles, and add actions for common tiles

Change-Id: I2b5940e1bf8ec80f03901fc2b017df68161b48ae
parent 67e0c843
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -296,7 +296,14 @@ public class QSPanel extends ViewGroup {
                r.tile.secondaryClick();
            }
        };
        r.tileView.init(click, clickSecondary);
        final View.OnLongClickListener clickLong = new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                r.tile.longClick();
                return true;
            }
        };
        r.tileView.init(click, clickSecondary, clickLong);
        r.tile.setListening(mListening);
        callback.onStateChanged(r.tile.getState());
        r.tile.refreshState();
+12 −0
Original line number Diff line number Diff line
@@ -111,6 +111,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        mHandler.sendEmptyMessage(H.SECONDARY_CLICK);
    }

    public void longClick() {
        mHandler.sendEmptyMessage(H.LONG_CLICK);
    }

    public void showDetail(boolean show) {
        mHandler.obtainMessage(H.SHOW_DETAIL, show ? 1 : 0, 0).sendToTarget();
    }
@@ -154,6 +158,10 @@ public abstract class QSTile<TState extends State> implements Listenable {
        // optional
    }

    protected void handleLongClick() {
        // optional
    }

    protected void handleRefreshState(Object arg) {
        handleUpdateState(mTmpState, arg);
        final boolean changed = mTmpState.copyTo(mState);
@@ -221,6 +229,7 @@ public abstract class QSTile<TState extends State> implements Listenable {
        private static final int TOGGLE_STATE_CHANGED = 7;
        private static final int SCAN_STATE_CHANGED = 8;
        private static final int DESTROY = 9;
        private static final int LONG_CLICK = 10;

        private H(Looper looper) {
            super(looper);
@@ -258,6 +267,9 @@ public abstract class QSTile<TState extends State> implements Listenable {
                } else if (msg.what == DESTROY) {
                    name = "handleDestroy";
                    handleDestroy();
                } else if (msg.what == LONG_CLICK) {
                    name = "handleLongClick";
                    handleLongClick();
                } else {
                    throw new IllegalArgumentException("Unknown msg: " + msg.what);
                }
+5 −1
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ public class QSTileView extends ViewGroup {
    private boolean mDual;
    private OnClickListener mClickPrimary;
    private OnClickListener mClickSecondary;
    private OnLongClickListener mClickLong;
    private RippleDrawable mRipple;

    public QSTileView(Context context) {
@@ -177,6 +178,7 @@ public class QSTileView extends ViewGroup {
        }
        if (dual) {
            mTopBackgroundView.setOnClickListener(mClickPrimary);
            mTopBackgroundView.setOnLongClickListener(mClickLong);
            setOnClickListener(null);
            setClickable(false);
            setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
@@ -185,6 +187,7 @@ public class QSTileView extends ViewGroup {
            mTopBackgroundView.setOnClickListener(null);
            mTopBackgroundView.setClickable(false);
            setOnClickListener(mClickPrimary);
            setOnLongClickListener(mClickLong);
            setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
            setBackground(tileBackground);
        }
@@ -201,9 +204,10 @@ public class QSTileView extends ViewGroup {
        }
    }

    public void init(OnClickListener clickPrimary, OnClickListener clickSecondary) {
    public void init(OnClickListener clickPrimary, OnClickListener clickSecondary, OnLongClickListener clickLong) {
        mClickPrimary = clickPrimary;
        mClickSecondary = clickSecondary;
        mClickLong = clickLong;
    }

    protected View createIcon() {
+7 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.provider.Settings;
import android.provider.Settings.Global;

import com.android.systemui.R;
@@ -29,6 +30,7 @@ import com.android.systemui.qs.QSTile;

/** Quick settings tile: Airplane mode **/
public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
    private static final Intent WIRELESS_SETTINGS = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
    private final GlobalSetting mSetting;

    private boolean mListening;
@@ -54,6 +56,11 @@ public class AirplaneModeTile extends QSTile<QSTile.BooleanState> {
        setEnabled(!mState.value);
    }

    @Override
    public void handleLongClick() {
        mHost.startSettingsActivity(WIRELESS_SETTINGS);
    }

    private void setEnabled(boolean enabled) {
        final ConnectivityManager mgr =
                (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+5 −0
Original line number Diff line number Diff line
@@ -82,6 +82,11 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
        mHost.startSettingsActivity(BLUETOOTH_SETTINGS);
    }

    @Override
    protected void handleLongClick() {
        mHost.startSettingsActivity(BLUETOOTH_SETTINGS);
    }

    @Override
    protected void handleUpdateState(BooleanState state, Object arg) {
        final boolean supported = mController.isBluetoothSupported();
Loading