summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/datausage/ChartDataUsagePreference.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/datausage/ChartDataUsagePreference.java')
-rw-r--r--src/com/android/settings/datausage/ChartDataUsagePreference.java88
1 files changed, 40 insertions, 48 deletions
diff --git a/src/com/android/settings/datausage/ChartDataUsagePreference.java b/src/com/android/settings/datausage/ChartDataUsagePreference.java
index 2a58840ed8..17f23c4ec8 100644
--- a/src/com/android/settings/datausage/ChartDataUsagePreference.java
+++ b/src/com/android/settings/datausage/ChartDataUsagePreference.java
@@ -16,11 +16,7 @@ package com.android.settings.datausage;
import android.content.Context;
import android.net.NetworkPolicy;
-import android.net.NetworkStatsHistory;
import android.net.TrafficStats;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.format.Formatter;
@@ -28,9 +24,17 @@ import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.SparseIntArray;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
import com.android.settings.R;
import com.android.settings.Utils;
-import com.android.settings.graph.UsageView;
+import com.android.settings.widget.UsageView;
+import com.android.settingslib.net.NetworkCycleChartData;
+import com.android.settingslib.net.NetworkCycleData;
+
+import java.util.List;
public class ChartDataUsagePreference extends Preference {
@@ -44,28 +48,30 @@ public class ChartDataUsagePreference extends Preference {
private NetworkPolicy mPolicy;
private long mStart;
private long mEnd;
- private NetworkStatsHistory mNetwork;
+ private NetworkCycleChartData mNetworkCycleChartData;
private int mSecondaryColor;
private int mSeriesColor;
public ChartDataUsagePreference(Context context, AttributeSet attrs) {
super(context, attrs);
setSelectable(false);
- mLimitColor = Utils.getColorAttr(context, android.R.attr.colorError);
- mWarningColor = Utils.getColorAttr(context, android.R.attr.textColorSecondary);
+ mLimitColor = Utils.getColorAttrDefaultColor(context, android.R.attr.colorError);
+ mWarningColor = Utils.getColorAttrDefaultColor(context, android.R.attr.textColorSecondary);
setLayoutResource(R.layout.data_usage_graph);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
- UsageView chart = (UsageView) holder.findViewById(R.id.data_usage);
- if (mNetwork == null) return;
+ final UsageView chart = (UsageView) holder.findViewById(R.id.data_usage);
+ if (mNetworkCycleChartData == null) {
+ return;
+ }
- int top = getTop();
+ final int top = getTop();
chart.clearPaths();
chart.configureGraph(toInt(mEnd - mStart), top);
- calcPoints(chart);
+ calcPoints(chart, mNetworkCycleChartData.getUsageBuckets());
chart.setBottomLabels(new CharSequence[] {
Utils.formatDateRange(getContext(), mStart, mStart),
Utils.formatDateRange(getContext(), mEnd, mEnd),
@@ -75,43 +81,33 @@ public class ChartDataUsagePreference extends Preference {
}
public int getTop() {
- NetworkStatsHistory.Entry entry = null;
- long totalData = 0;
- final int start = mNetwork.getIndexBefore(mStart);
- final int end = mNetwork.getIndexAfter(mEnd);
-
- for (int i = start; i <= end; i++) {
- entry = mNetwork.getValues(i, entry);
-
- // increment by current bucket total
- totalData += entry.rxBytes + entry.txBytes;
- }
- long policyMax = mPolicy != null ? Math.max(mPolicy.limitBytes, mPolicy.warningBytes) : 0;
+ final long totalData = mNetworkCycleChartData.getTotalUsage();
+ final long policyMax =
+ mPolicy != null ? Math.max(mPolicy.limitBytes, mPolicy.warningBytes) : 0;
return (int) (Math.max(totalData, policyMax) / RESOLUTION);
}
@VisibleForTesting
- void calcPoints(UsageView chart) {
- SparseIntArray points = new SparseIntArray();
- NetworkStatsHistory.Entry entry = null;
-
- long totalData = 0;
-
- final int start = mNetwork.getIndexAfter(mStart);
- final int end = mNetwork.getIndexAfter(mEnd);
- if (start < 0) return;
-
+ void calcPoints(UsageView chart, List<NetworkCycleData> usageSummary) {
+ if (usageSummary == null) {
+ return;
+ }
+ final SparseIntArray points = new SparseIntArray();
points.put(0, 0);
- for (int i = start; i <= end; i++) {
- entry = mNetwork.getValues(i, entry);
- final long startTime = entry.bucketStart;
- final long endTime = startTime + entry.bucketDuration;
+ final long now = System.currentTimeMillis();
+ long totalData = 0;
+ for (NetworkCycleData data : usageSummary) {
+ final long startTime = data.getStartTime();
+ if (startTime > now) {
+ break;
+ }
+ final long endTime = data.getEndTime();
// increment by current bucket total
- totalData += entry.rxBytes + entry.txBytes;
+ totalData += data.getTotalUsage();
- if (i == 0) {
+ if (points.size() == 1) {
points.put(toInt(startTime - mStart) - 1, -1);
}
points.put(toInt(startTime - mStart + 1), (int) (totalData / RESOLUTION));
@@ -167,12 +163,6 @@ public class ChartDataUsagePreference extends Preference {
notifyChanged();
}
- public void setVisibleRange(long start, long end) {
- mStart = start;
- mEnd = end;
- notifyChanged();
- }
-
public long getInspectStart() {
return mStart;
}
@@ -181,8 +171,10 @@ public class ChartDataUsagePreference extends Preference {
return mEnd;
}
- public void setNetworkStats(NetworkStatsHistory network) {
- mNetwork = network;
+ public void setNetworkCycleData(NetworkCycleChartData data) {
+ mNetworkCycleChartData = data;
+ mStart = data.getStartTime();
+ mEnd = data.getEndTime();
notifyChanged();
}