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

Commit 43a7e94d authored by Jason Monk's avatar Jason Monk Committed by android-build-merger
Browse files

Merge "Add confirmation dialog when turning off cell data from QS" into oc-dr1-dev

am: 18cb24ba

Change-Id: If7eb6deae9f07417adc22f7db6b633d6bf90de35
parents 49cdbaa2 18cb24ba
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2046,4 +2046,7 @@
        been identified for them as running). [CHAR LIMIT=NONE] -->
    <string name="running_foreground_services_msg">Tap for details on battery and data usage</string>

    <!-- Prompt to turn off data usage [CHAR LIMIT=NONE] -->
    <string name="data_usage_disable_mobile" msgid="8656552431969276305">Turn off mobile data?</string>

</resources>
+27 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.tiles;

import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -38,8 +39,9 @@ import com.android.systemui.plugins.qs.QSTile.SignalState;
import com.android.systemui.qs.CellTileView;
import com.android.systemui.qs.CellTileView.SignalIcon;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SignalTileView;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
@@ -55,11 +57,13 @@ public class CellularTile extends QSTileImpl<SignalState> {

    private final CellSignalCallback mSignalCallback = new CellSignalCallback();
    private final ActivityStarter mActivityStarter;
    private final KeyguardMonitor mKeyguardMonitor;

    public CellularTile(QSHost host) {
        super(host);
        mController = Dependency.get(NetworkController.class);
        mActivityStarter = Dependency.get(ActivityStarter.class);
        mKeyguardMonitor = Dependency.get(KeyguardMonitor.class);
        mDataController = mController.getMobileDataController();
        mDetailAdapter = new CellularDetailAdapter();
    }
@@ -95,7 +99,28 @@ public class CellularTile extends QSTileImpl<SignalState> {

    @Override
    protected void handleClick() {
        mDataController.setMobileDataEnabled(!mDataController.isMobileDataEnabled());
        if (mDataController.isMobileDataEnabled()) {
            if (mKeyguardMonitor.isSecure() && !mKeyguardMonitor.canSkipBouncer()) {
                mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
                    showDisableDialog();
                });
            } else {
                showDisableDialog();
            }
        } else {
            mDataController.setMobileDataEnabled(true);
        }
    }

    private void showDisableDialog() {
        mHost.collapsePanels();
        SystemUIDialog.applyFlags(new AlertDialog.Builder(mContext)
                .setMessage(R.string.data_usage_disable_mobile)
                .setNegativeButton(android.R.string.cancel, null)
                .setPositiveButton(
                        com.android.internal.R.string.alert_windows_notification_turn_off_action,
                        (d, w) -> mDataController.setMobileDataEnabled(false))
                .create()).show();
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -69,9 +69,10 @@ public class SystemUIDialog extends AlertDialog {
        }
    }

    public static void applyFlags(AlertDialog dialog) {
    public static AlertDialog applyFlags(AlertDialog dialog) {
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
        dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
                | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        return dialog;
    }
}