Data plan setting in SystemUI quick settings.

Change-Id: I26e0e7cccc85236503cffd60d5323d444ba7613c
Note: These changes are required for Data balance UI.
Bug: 62349208
Test: manual test
This commit is contained in:
Rajeev Kumar
2017-07-19 18:12:47 -07:00
parent 0de8832b5f
commit 2d20d90cbd
2 changed files with 45 additions and 21 deletions

View File

@@ -19,13 +19,14 @@ package com.android.systemui.qs.tiles;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.SystemProperties;
import android.service.quicksettings.Tile;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.net.DataUsageController;
@@ -38,7 +39,6 @@ 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.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
@@ -46,8 +46,17 @@ import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
/** Quick settings tile: Cellular **/
public class CellularTile extends QSTileImpl<SignalState> {
static final Intent CELLULAR_SETTINGS = new Intent().setComponent(new ComponentName(
"com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
private static final ComponentName CELLULAR_SETTING_COMPONENT = new ComponentName(
"com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity");
private static final ComponentName DATA_PLAN_CELLULAR_COMPONENT = new ComponentName(
"com.android.settings", "com.android.settings.Settings$DataPlanUsageSummaryActivity");
private static final Intent CELLULAR_SETTINGS =
new Intent().setComponent(CELLULAR_SETTING_COMPONENT);
private static final Intent DATA_PLAN_CELLULAR_SETTINGS =
new Intent().setComponent(DATA_PLAN_CELLULAR_COMPONENT);
private static final String ENABLE_SETTINGS_DATA_PLAN = "enable.settings.data.plan";
private final NetworkController mController;
private final DataUsageController mDataController;
@@ -90,7 +99,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
@Override
public Intent getLongClickIntent() {
return CELLULAR_SETTINGS;
return getCellularSettingIntent(mContext);
}
@Override
@@ -103,7 +112,9 @@ public class CellularTile extends QSTileImpl<SignalState> {
if (mDataController.isMobileDataSupported()) {
showDetail(true);
} else {
mActivityStarter.postStartActivityDismissingKeyguard(CELLULAR_SETTINGS, 0);
mActivityStarter
.postStartActivityDismissingKeyguard(getCellularSettingIntent(mContext),
0 /* delay */);
}
}
@@ -240,7 +251,28 @@ public class CellularTile extends QSTileImpl<SignalState> {
public void setMobileDataEnabled(boolean enabled) {
mDetailAdapter.setMobileDataEnabled(enabled);
}
};
}
static Intent getCellularSettingIntent(Context context) {
// TODO(b/62349208): We should replace feature flag check below with data plans
// availability check. If the data plans are available we display the data plans usage
// summary otherwise we display data usage summary without data plans.
boolean isDataPlanFeatureEnabled =
SystemProperties.getBoolean(ENABLE_SETTINGS_DATA_PLAN, false /* default */);
context.getPackageManager()
.setComponentEnabledSetting(
DATA_PLAN_CELLULAR_COMPONENT,
isDataPlanFeatureEnabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
context.getPackageManager()
.setComponentEnabledSetting(
CELLULAR_SETTING_COMPONENT,
isDataPlanFeatureEnabled ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED
: PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
return isDataPlanFeatureEnabled ? DATA_PLAN_CELLULAR_SETTINGS : CELLULAR_SETTINGS;
}
private final class CellularDetailAdapter implements DetailAdapter {
@@ -258,7 +290,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
@Override
public Intent getSettingsIntent() {
return CELLULAR_SETTINGS;
return getCellularSettingIntent(mContext);
}
@Override

View File

@@ -14,18 +14,16 @@
package com.android.systemui.qs.tiles;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.service.quicksettings.Tile;
import android.widget.Switch;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.Dependency;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.qs.QSHost;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.DataSaverController;
@@ -57,9 +55,8 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
@Override
public Intent getLongClickIntent() {
return CellularTile.CELLULAR_SETTINGS;
return CellularTile.getCellularSettingIntent(mContext);
}
@Override
protected void handleClick() {
if (mState.value
@@ -73,12 +70,7 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
dialog.setTitle(com.android.internal.R.string.data_saver_enable_title);
dialog.setMessage(com.android.internal.R.string.data_saver_description);
dialog.setPositiveButton(com.android.internal.R.string.data_saver_enable_button,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
toggleDataSaver();
}
});
(OnClickListener) (dialogInterface, which) -> toggleDataSaver());
dialog.setNegativeButton(com.android.internal.R.string.cancel, null);
dialog.setShowForAllUsers(true);
dialog.show();
@@ -126,4 +118,4 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
public void onDataSaverChanged(boolean isDataSaving) {
refreshState(isDataSaving);
}
}
}