Add ability to disable data warning.
- Add a preference to disable data warning. - Disable data usage chart in summary page when data warning is turned off. Bug: 26934313 Test: Manually turned on/off data warning and inspected UI. Test: ag/1440361 Change-Id: I6d5b86b8502647781c52cf940f276e1969251b59
This commit is contained in:
@@ -21,6 +21,10 @@
|
|||||||
android:key="billing_cycle"
|
android:key="billing_cycle"
|
||||||
android:title="@string/billing_cycle" />
|
android:title="@string/billing_cycle" />
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="set_data_warning"
|
||||||
|
android:title="@string/set_data_warning"/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="data_warning"
|
android:key="data_warning"
|
||||||
android:title="@string/data_warning" />
|
android:title="@string/data_warning" />
|
||||||
|
@@ -34,6 +34,7 @@ public class SummaryPreference extends Preference {
|
|||||||
|
|
||||||
private int mLeft, mMiddle, mRight;
|
private int mLeft, mMiddle, mRight;
|
||||||
private boolean mColorsSet = false;
|
private boolean mColorsSet = false;
|
||||||
|
private boolean mChartEnabled = true;
|
||||||
private float mLeftRatio, mMiddleRatio, mRightRatio;
|
private float mLeftRatio, mMiddleRatio, mRightRatio;
|
||||||
private String mStartLabel;
|
private String mStartLabel;
|
||||||
private String mEndLabel;
|
private String mEndLabel;
|
||||||
@@ -43,6 +44,13 @@ public class SummaryPreference extends Preference {
|
|||||||
setLayoutResource(R.layout.settings_summary_preference);
|
setLayoutResource(R.layout.settings_summary_preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setChartEnabled(boolean enabled) {
|
||||||
|
if (mChartEnabled != enabled) {
|
||||||
|
mChartEnabled = enabled;
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setAmount(String amount) {
|
public void setAmount(String amount) {
|
||||||
mAmount = amount;
|
mAmount = amount;
|
||||||
if (mAmount != null && mUnits != null) {
|
if (mAmount != null && mUnits != null) {
|
||||||
@@ -85,12 +93,18 @@ public class SummaryPreference extends Preference {
|
|||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
|
|
||||||
LinearColorBar colorBar = (LinearColorBar) holder.itemView.findViewById(R.id.color_bar);
|
LinearColorBar colorBar = (LinearColorBar) holder.itemView.findViewById(R.id.color_bar);
|
||||||
colorBar.setRatios(mLeftRatio, mMiddleRatio, mRightRatio);
|
|
||||||
if (mColorsSet) {
|
if (mChartEnabled) {
|
||||||
colorBar.setColors(mLeft, mMiddle, mRight);
|
colorBar.setVisibility(View.VISIBLE);
|
||||||
|
colorBar.setRatios(mLeftRatio, mMiddleRatio, mRightRatio);
|
||||||
|
if (mColorsSet) {
|
||||||
|
colorBar.setColors(mLeft, mMiddle, mRight);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
colorBar.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel)) {
|
if (mChartEnabled && (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel))) {
|
||||||
holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
|
holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
|
||||||
((TextView) holder.findViewById(android.R.id.text1)).setText(mStartLabel);
|
((TextView) holder.findViewById(android.R.id.text1)).setText(mStartLabel);
|
||||||
((TextView) holder.findViewById(android.R.id.text2)).setText(mEndLabel);
|
((TextView) holder.findViewById(android.R.id.text2)).setText(mEndLabel);
|
||||||
|
@@ -34,6 +34,7 @@ import android.view.View;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.NumberPicker;
|
import android.widget.NumberPicker;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
@@ -55,6 +56,7 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
private static final String TAG_WARNING_EDITOR = "warningEditor";
|
private static final String TAG_WARNING_EDITOR = "warningEditor";
|
||||||
|
|
||||||
private static final String KEY_BILLING_CYCLE = "billing_cycle";
|
private static final String KEY_BILLING_CYCLE = "billing_cycle";
|
||||||
|
private static final String KEY_SET_DATA_WARNING = "set_data_warning";
|
||||||
private static final String KEY_DATA_WARNING = "data_warning";
|
private static final String KEY_DATA_WARNING = "data_warning";
|
||||||
private static final String KEY_SET_DATA_LIMIT = "set_data_limit";
|
private static final String KEY_SET_DATA_LIMIT = "set_data_limit";
|
||||||
private static final String KEY_DATA_LIMIT = "data_limit";
|
private static final String KEY_DATA_LIMIT = "data_limit";
|
||||||
@@ -62,6 +64,7 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
private NetworkTemplate mNetworkTemplate;
|
private NetworkTemplate mNetworkTemplate;
|
||||||
private Preference mBillingCycle;
|
private Preference mBillingCycle;
|
||||||
private Preference mDataWarning;
|
private Preference mDataWarning;
|
||||||
|
private SwitchPreference mEnableDataWarning;
|
||||||
private SwitchPreference mEnableDataLimit;
|
private SwitchPreference mEnableDataLimit;
|
||||||
private Preference mDataLimit;
|
private Preference mDataLimit;
|
||||||
private DataUsageController mDataUsageController;
|
private DataUsageController mDataUsageController;
|
||||||
@@ -77,6 +80,8 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
|
|
||||||
addPreferencesFromResource(R.xml.billing_cycle);
|
addPreferencesFromResource(R.xml.billing_cycle);
|
||||||
mBillingCycle = findPreference(KEY_BILLING_CYCLE);
|
mBillingCycle = findPreference(KEY_BILLING_CYCLE);
|
||||||
|
mEnableDataWarning = (SwitchPreference) findPreference(KEY_SET_DATA_WARNING);
|
||||||
|
mEnableDataWarning.setOnPreferenceChangeListener(this);
|
||||||
mDataWarning = findPreference(KEY_DATA_WARNING);
|
mDataWarning = findPreference(KEY_DATA_WARNING);
|
||||||
mEnableDataLimit = (SwitchPreference) findPreference(KEY_SET_DATA_LIMIT);
|
mEnableDataLimit = (SwitchPreference) findPreference(KEY_SET_DATA_LIMIT);
|
||||||
mEnableDataLimit.setOnPreferenceChangeListener(this);
|
mEnableDataLimit.setOnPreferenceChangeListener(this);
|
||||||
@@ -93,10 +98,15 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
NetworkPolicy policy = services.mPolicyEditor.getPolicy(mNetworkTemplate);
|
NetworkPolicy policy = services.mPolicyEditor.getPolicy(mNetworkTemplate);
|
||||||
mBillingCycle.setSummary(getString(R.string.billing_cycle_summary, policy != null ?
|
mBillingCycle.setSummary(getString(R.string.billing_cycle_summary, policy != null ?
|
||||||
policy.cycleDay : 1));
|
policy.cycleDay : 1));
|
||||||
mDataWarning.setSummary(Formatter.formatFileSize(getContext(),
|
if (policy != null && policy.warningBytes != WARNING_DISABLED) {
|
||||||
policy != null
|
mDataWarning.setSummary(Formatter.formatFileSize(getContext(), policy.warningBytes));
|
||||||
? policy.warningBytes
|
mDataWarning.setEnabled(true);
|
||||||
: mDataUsageController.getDefaultWarningLevel()));
|
mEnableDataWarning.setChecked(true);
|
||||||
|
} else {
|
||||||
|
mDataWarning.setSummary(null);
|
||||||
|
mDataWarning.setEnabled(false);
|
||||||
|
mEnableDataWarning.setChecked(false);
|
||||||
|
}
|
||||||
if (policy != null && policy.limitBytes != LIMIT_DISABLED) {
|
if (policy != null && policy.limitBytes != LIMIT_DISABLED) {
|
||||||
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), policy.limitBytes));
|
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), policy.limitBytes));
|
||||||
mDataLimit.setEnabled(true);
|
mDataLimit.setEnabled(true);
|
||||||
@@ -133,6 +143,14 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
setPolicyLimitBytes(LIMIT_DISABLED);
|
setPolicyLimitBytes(LIMIT_DISABLED);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
} else if (mEnableDataWarning == preference) {
|
||||||
|
boolean enabled = (Boolean) newValue;
|
||||||
|
if (enabled) {
|
||||||
|
setPolicyWarningBytes(mDataUsageController.getDefaultWarningLevel());
|
||||||
|
} else {
|
||||||
|
setPolicyWarningBytes(WARNING_DISABLED);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -148,6 +166,12 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
updatePrefs();
|
updatePrefs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setPolicyWarningBytes(long warningBytes) {
|
||||||
|
if (LOGD) Log.d(TAG, "setPolicyWarningBytes()");
|
||||||
|
services.mPolicyEditor.setPolicyWarningBytes(mNetworkTemplate, warningBytes);
|
||||||
|
updatePrefs();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NetworkPolicyEditor getNetworkPolicyEditor() {
|
public NetworkPolicyEditor getNetworkPolicyEditor() {
|
||||||
return services.mPolicyEditor;
|
return services.mPolicyEditor;
|
||||||
@@ -255,7 +279,7 @@ public class BillingCycleSettings extends DataUsageBase implements
|
|||||||
bytesString = "0";
|
bytesString = "0";
|
||||||
}
|
}
|
||||||
final long bytes = (long) (Float.valueOf(bytesString)
|
final long bytes = (long) (Float.valueOf(bytesString)
|
||||||
* (spinner.getSelectedItemPosition() == 0 ? MB_IN_BYTES : GB_IN_BYTES));
|
* (spinner.getSelectedItemPosition() == 0 ? MB_IN_BYTES : GB_IN_BYTES));
|
||||||
if (isLimit) {
|
if (isLimit) {
|
||||||
editor.setPolicyLimitBytes(template, bytes);
|
editor.setPolicyLimitBytes(template, bytes);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -246,16 +246,24 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
formatTitle(context, getString(mDataUsageTemplate), info.usageLevel));
|
formatTitle(context, getString(mDataUsageTemplate), info.usageLevel));
|
||||||
long limit = mDataInfoController.getSummaryLimit(info);
|
long limit = mDataInfoController.getSummaryLimit(info);
|
||||||
mSummaryPreference.setSummary(info.period);
|
mSummaryPreference.setSummary(info.period);
|
||||||
mSummaryPreference.setLabels(Formatter.formatFileSize(context, 0),
|
|
||||||
Formatter.formatFileSize(context, limit));
|
if (limit <= 0) {
|
||||||
mSummaryPreference.setRatios(info.usageLevel / (float) limit, 0,
|
mSummaryPreference.setChartEnabled(false);
|
||||||
(limit - info.usageLevel) / (float) limit);
|
} else {
|
||||||
|
mSummaryPreference.setChartEnabled(true);
|
||||||
|
mSummaryPreference.setLabels(Formatter.formatFileSize(context, 0),
|
||||||
|
Formatter.formatFileSize(context, limit));
|
||||||
|
mSummaryPreference.setRatios(info.usageLevel / (float) limit, 0,
|
||||||
|
(limit - info.usageLevel) / (float) limit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mLimitPreference != null) {
|
if (mLimitPreference != null && (info.warningLevel > 0 || info.limitLevel > 0)) {
|
||||||
String warning = Formatter.formatFileSize(context, info.warningLevel);
|
String warning = Formatter.formatFileSize(context, info.warningLevel);
|
||||||
String limit = Formatter.formatFileSize(context, info.limitLevel);
|
String limit = Formatter.formatFileSize(context, info.limitLevel);
|
||||||
mLimitPreference.setSummary(getString(info.limitLevel <= 0 ? R.string.cell_warning_only
|
mLimitPreference.setSummary(getString(info.limitLevel <= 0 ? R.string.cell_warning_only
|
||||||
: R.string.cell_warning_and_limit, warning, limit));
|
: R.string.cell_warning_and_limit, warning, limit));
|
||||||
|
} else if (mLimitPreference != null) {
|
||||||
|
mLimitPreference.setSummary(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
PreferenceScreen screen = getPreferenceScreen();
|
PreferenceScreen screen = getPreferenceScreen();
|
||||||
|
Reference in New Issue
Block a user