Merge "Add confirmation dialog when turning off cell data from QS" into oc-dr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
18cb24ba33
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user