Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java

Issue 2813923003: Add sorting to the Data Saver site breakdown (Closed)
Patch Set: remove dependency Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/res/values/colors.xml ('k') | chrome/android/java/strings/android_chrome_strings.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java
index a2a1f973c9db52ea87e6565af3b2c296f573979f..8070d1198801b4a87113e52e7ee4349729cd05ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionSiteBreakdownView.java
@@ -5,9 +5,12 @@
package org.chromium.chrome.browser.preferences.datareduction;
import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.support.annotation.ColorInt;
import android.text.format.Formatter;
import android.util.AttributeSet;
import android.view.LayoutInflater;
+import android.view.View;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
@@ -29,6 +32,13 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
private static final int NUM_DATA_USE_ITEMS_TO_DISPLAY = 10;
private TableLayout mTableLayout;
+ private TextView mDataUsedTitle;
+ private TextView mDataSavedTitle;
+ private List<DataReductionDataUseItem> mDataUseItems;
+ @ColorInt
+ private int mTextColor;
+ @ColorInt
+ private int mLightTextColor;
public DataReductionSiteBreakdownView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -38,6 +48,32 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
protected void onFinishInflate() {
super.onFinishInflate();
mTableLayout = (TableLayout) findViewById(R.id.data_reduction_proxy_breakdown_table);
+ mDataUsedTitle = (TextView) findViewById(R.id.data_reduction_breakdown_used_title);
+ mDataSavedTitle = (TextView) findViewById(R.id.data_reduction_breakdown_saved_title);
+ mTextColor = ApiCompatibilityUtils.getColor(
+ getContext().getResources(), R.color.data_reduction_breakdown_text_color);
+ mLightTextColor = ApiCompatibilityUtils.getColor(
+ getContext().getResources(), R.color.data_reduction_breakdown_light_text_color);
+
+ mDataUsedTitle.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ setTextViewUnsortedAttributes(mDataSavedTitle);
+ setTextViewSortedAttributes(mDataUsedTitle);
+ Collections.sort(mDataUseItems, new DataUsedComparator());
+ updateSiteBreakdown();
+ }
+ });
+
+ mDataSavedTitle.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ setTextViewUnsortedAttributes(mDataUsedTitle);
+ setTextViewSortedAttributes(mDataSavedTitle);
+ Collections.sort(mDataUseItems, new DataSavedComparator());
+ updateSiteBreakdown();
+ }
+ });
}
/**
@@ -45,7 +81,34 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
* @param items A list of items split by hostname to show in the breakdown.
*/
public void onQueryDataUsageComplete(List<DataReductionDataUseItem> items) {
- updateSiteBreakdown(items);
+ mDataUseItems = items;
+ setTextViewUnsortedAttributes(mDataUsedTitle);
+ setTextViewSortedAttributes(mDataSavedTitle);
+ Collections.sort(items, new DataSavedComparator());
+ updateSiteBreakdown();
+ }
+
+ private void setTextViewSortedAttributes(TextView textView) {
+ textView.setTextColor(mTextColor);
+ Drawable arrowDrawable = getStartCompoundDrawable(textView);
+ arrowDrawable.mutate();
+ arrowDrawable.setAlpha(255);
+ }
+
+ private void setTextViewUnsortedAttributes(TextView textView) {
+ textView.setTextColor(mLightTextColor);
+ Drawable arrowDrawable = getStartCompoundDrawable(textView);
+ arrowDrawable.mutate();
+ arrowDrawable.setAlpha(0);
+ }
+
+ private Drawable getStartCompoundDrawable(TextView textView) {
+ Drawable[] drawables = textView.getCompoundDrawables();
+ // Start drawable can be in the left or right index based on if the layout is rtl.
+ if (drawables[0] != null) {
+ return drawables[0];
+ }
+ return drawables[2];
}
/**
@@ -65,11 +128,31 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
}
/**
- * Update the site breakdown to display the given date use items.
- * @param items A list of items split by hostname to show in the breakdown.
+ * Sorts the DataReductionDataUseItems by most to least data saved. If data saved is equal, most
+ * likely because both items have zero data saving, then sort by data used.
+ */
+ private static class DataSavedComparator
+ implements Comparator<DataReductionDataUseItem>, Serializable {
+ @Override
+ public int compare(DataReductionDataUseItem lhs, DataReductionDataUseItem rhs) {
+ if (lhs.getDataSaved() < rhs.getDataSaved()) {
+ return 1;
+ } else if (lhs.getDataSaved() > rhs.getDataSaved()) {
+ return -1;
+ } else if (lhs.getDataUsed() < rhs.getDataUsed()) {
+ return 1;
+ } else if (lhs.getDataUsed() > rhs.getDataUsed()) {
+ return -1;
+ }
+ return 0;
+ }
+ }
+
+ /**
+ * Update the site breakdown to display the data use items.
*/
- private void updateSiteBreakdown(List<DataReductionDataUseItem> items) {
- if (items.size() == 0) {
+ private void updateSiteBreakdown() {
+ if (mDataUseItems.size() == 0) {
setVisibility(GONE);
return;
}
@@ -77,14 +160,12 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
setVisibility(VISIBLE);
// Remove all old rows except the header.
mTableLayout.removeViews(1, mTableLayout.getChildCount() - 1);
- final DataUsedComparator comp = new DataUsedComparator();
- Collections.sort(items, comp);
int numRemainingSites = 0;
int everythingElseDataUsage = 0;
int everythingElseDataSavings = 0;
- for (int i = 0; i < items.size(); i++) {
+ for (int i = 0; i < mDataUseItems.size(); i++) {
if (i < NUM_DATA_USE_ITEMS_TO_DISPLAY) {
TableRow row = (TableRow) LayoutInflater.from(getContext())
.inflate(R.layout.data_usage_breakdown_row, null);
@@ -93,15 +174,15 @@ public class DataReductionSiteBreakdownView extends LinearLayout {
TextView dataUsedView = (TextView) row.findViewById(R.id.site_data_used);
TextView dataSavedView = (TextView) row.findViewById(R.id.site_data_saved);
- hostnameView.setText(items.get(i).getHostname());
- dataUsedView.setText(items.get(i).getFormattedDataUsed(getContext()));
- dataSavedView.setText(items.get(i).getFormattedDataSaved(getContext()));
+ hostnameView.setText(mDataUseItems.get(i).getHostname());
+ dataUsedView.setText(mDataUseItems.get(i).getFormattedDataUsed(getContext()));
+ dataSavedView.setText(mDataUseItems.get(i).getFormattedDataSaved(getContext()));
mTableLayout.addView(row, i + 1);
} else {
numRemainingSites++;
- everythingElseDataUsage += items.get(i).getDataUsed();
- everythingElseDataSavings += items.get(i).getDataSaved();
+ everythingElseDataUsage += mDataUseItems.get(i).getDataUsed();
+ everythingElseDataSavings += mDataUseItems.get(i).getDataSaved();
}
}
« no previous file with comments | « chrome/android/java/res/values/colors.xml ('k') | chrome/android/java/strings/android_chrome_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698