diff options
Diffstat (limited to 'src/com/android/settings/datausage/ChartDataUsagePreference.java')
-rw-r--r-- | src/com/android/settings/datausage/ChartDataUsagePreference.java | 88 |
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(); } |