Loading packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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> packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +27 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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(); } Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; } } Loading
packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -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>
packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +27 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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(); } Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; } }