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

Commit 18cb24ba authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents e06e3f97 54ff0efb
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;
    }
}