Merge "Iterate NetworkPolicy towards SubscriptionPlan."

This commit is contained in:
TreeHugger Robot
2017-07-15 19:57:01 +00:00
committed by Android (Google) Code Review
3 changed files with 41 additions and 31 deletions

View File

@@ -14,9 +14,10 @@
package com.android.settings.datausage;
import static android.net.NetworkPolicy.CYCLE_NONE;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkPolicy;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.os.RemoteException;
@@ -32,7 +33,6 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer
private NetworkTemplate mTemplate;
private NetworkServices mServices;
private NetworkPolicy mPolicy;
private int mSubId;
public BillingCyclePreference(Context context, AttributeSet attrs) {
@@ -57,16 +57,18 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer
mTemplate = template;
mSubId = subId;
mServices = services;
mPolicy = services.mPolicyEditor.getPolicy(mTemplate);
setSummary(getContext().getString(R.string.billing_cycle_fragment_summary, mPolicy != null
? mPolicy.cycleDay
: "1"));
final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mTemplate);
if (cycleDay != CYCLE_NONE) {
setSummary(getContext().getString(R.string.billing_cycle_fragment_summary, cycleDay));
} else {
setSummary(null);
}
setIntent(getIntent());
}
private void updateEnabled() {
try {
setEnabled(mPolicy != null && mServices.mNetworkService.isBandwidthControlEnabled()
setEnabled(mServices.mNetworkService.isBandwidthControlEnabled()
&& mServices.mTelephonyManager.getDataEnabled(mSubId)
&& mServices.mUserManager.isAdminUser());
} catch (RemoteException e) {

View File

@@ -14,9 +14,12 @@
package com.android.settings.datausage;
import static android.net.NetworkPolicy.CYCLE_NONE;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
@@ -45,9 +48,6 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
public class BillingCycleSettings extends DataUsageBase implements
Preference.OnPreferenceChangeListener, DataUsageEditController {
@@ -103,11 +103,15 @@ public class BillingCycleSettings extends DataUsageBase implements
}
private void updatePrefs() {
NetworkPolicy policy = services.mPolicyEditor.getPolicy(mNetworkTemplate);
mBillingCycle.setSummary(getString(R.string.billing_cycle_fragment_summary, policy != null ?
policy.cycleDay : 1));
if (policy != null && policy.warningBytes != WARNING_DISABLED) {
mDataWarning.setSummary(Formatter.formatFileSize(getContext(), policy.warningBytes));
final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mNetworkTemplate);
if (cycleDay != CYCLE_NONE) {
mBillingCycle.setSummary(getString(R.string.billing_cycle_fragment_summary, cycleDay));
} else {
mBillingCycle.setSummary(null);
}
final long warningBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
if (warningBytes != WARNING_DISABLED) {
mDataWarning.setSummary(Formatter.formatFileSize(getContext(), warningBytes));
mDataWarning.setEnabled(true);
mEnableDataWarning.setChecked(true);
} else {
@@ -115,8 +119,9 @@ public class BillingCycleSettings extends DataUsageBase implements
mDataWarning.setEnabled(false);
mEnableDataWarning.setChecked(false);
}
if (policy != null && policy.limitBytes != LIMIT_DISABLED) {
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), policy.limitBytes));
final long limitBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
if (limitBytes != LIMIT_DISABLED) {
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), limitBytes));
mDataLimit.setEnabled(true);
mEnableDataLimit.setChecked(true);
} else {
@@ -319,7 +324,7 @@ public class BillingCycleSettings extends DataUsageBase implements
}
/**
* Dialog to edit {@link NetworkPolicy#cycleDay}.
* Dialog to edit {@link NetworkPolicy}.
*/
public static class CycleEditorFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {

View File

@@ -15,17 +15,21 @@ package com.android.settings.datausage;
import android.content.Context;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkStatsHistory;
import android.text.format.DateUtils;
import android.util.Pair;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.net.ChartData;
import libcore.util.Objects;
import static android.net.NetworkPolicyManager.computeLastCycleBoundary;
import static android.net.NetworkPolicyManager.computeNextCycleBoundary;
import java.time.ZonedDateTime;
import java.util.Iterator;
public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
@@ -61,9 +65,9 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
}
/**
* Rebuild list based on {@link NetworkPolicy#cycleDay}
* and available {@link NetworkStatsHistory} data. Always selects the newest
* item, updating the inspection range on chartData.
* Rebuild list based on {@link NetworkPolicy} and available
* {@link NetworkStatsHistory} data. Always selects the newest item,
* updating the inspection range on chartData.
*/
public boolean updateCycleList(NetworkPolicy policy, ChartData chartData) {
// stash away currently selected cycle to try restoring below
@@ -87,12 +91,12 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
boolean hasCycles = false;
if (policy != null) {
// find the next cycle boundary
long cycleEnd = computeNextCycleBoundary(historyEnd, policy);
// walk backwards, generating all valid cycle ranges
while (cycleEnd > historyStart) {
final long cycleStart = computeLastCycleBoundary(cycleEnd, policy);
final Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = NetworkPolicyManager
.cycleIterator(policy);
while (it.hasNext()) {
final Pair<ZonedDateTime, ZonedDateTime> cycle = it.next();
final long cycleStart = cycle.first.toInstant().toEpochMilli();
final long cycleEnd = cycle.second.toInstant().toEpochMilli();
final boolean includeCycle;
if (chartData != null) {
@@ -106,7 +110,6 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
add(new CycleAdapter.CycleItem(context, cycleStart, cycleEnd));
hasCycles = true;
}
cycleEnd = cycleStart;
}
}