Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java |
index 70487af91c97dcef3c76af6252276d0fe8513667..da30057b74c1e3de58fec2b16eed55ab01b32c31 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.history; |
+import android.content.res.Resources; |
import android.support.v7.widget.RecyclerView.ViewHolder; |
import android.text.SpannableString; |
import android.text.method.LinkMovementMethod; |
@@ -12,13 +13,17 @@ import android.view.View; |
import android.view.View.OnClickListener; |
import android.view.ViewGroup; |
import android.widget.Button; |
+import android.widget.FrameLayout; |
import android.widget.TextView; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.history.HistoryProvider.BrowsingHistoryObserver; |
+import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.chrome.browser.widget.DateDividedAdapter; |
+import org.chromium.chrome.browser.widget.DateDividedAdapter.DateViewHolder; |
+import org.chromium.chrome.browser.widget.displaystyle.MarginResizer; |
import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder; |
import org.chromium.chrome.browser.widget.selection.SelectionDelegate; |
import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver; |
@@ -42,12 +47,14 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
private final SelectionDelegate<HistoryItem> mSelectionDelegate; |
private final HistoryProvider mHistoryProvider; |
- private final HistoryManager mManager; |
+ private final HistoryManager mHistoryManager; |
+ private final ArrayList<HistoryItemView> mItemViews; |
private TextView mSignedInNotSyncedTextView; |
private TextView mSignedInSyncedTextView; |
private TextView mOtherFormsOfBrowsingHistoryTextView; |
private Button mClearBrowsingDataButton; |
+ private FrameLayout mClearBrowsingDataButtonContainer; |
private boolean mHasOtherFormsOfBrowsingData; |
private boolean mHasSyncedData; |
@@ -60,8 +67,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
private boolean mClearOnNextQueryComplete; |
private long mNextQueryEndTime; |
private String mQueryText = EMPTY_QUERY; |
- |
- private final ArrayList<HistoryItemView> mItemViews; |
+ private int mDefaultTextMargin; |
public HistoryAdapter(SelectionDelegate<HistoryItem> delegate, HistoryManager manager, |
HistoryProvider provider) { |
@@ -69,7 +75,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
mSelectionDelegate = delegate; |
mHistoryProvider = provider; |
mHistoryProvider.setObserver(this); |
- mManager = manager; |
+ mHistoryManager = manager; |
mItemViews = new ArrayList<>(); |
} |
@@ -155,6 +161,12 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
*/ |
public void removeItems() { |
mHistoryProvider.removeItems(); |
+ |
+ // TODO(twellington): this could be optimized by only setting the background for item views |
+ // in a group that has changed. |
+ for (HistoryItemView itemView : mItemViews) { |
+ itemView.setBackgroundResourceForGroupPosition(); |
+ } |
} |
/** |
@@ -164,6 +176,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
for (HistoryItemView itemView : mItemViews) { |
itemView.onSignInStateChange(); |
} |
+ updateClearBrowsingDataButtonVisibility(); |
} |
/** |
@@ -195,12 +208,12 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
SelectableItemViewHolder<HistoryItem> holder = |
(SelectableItemViewHolder<HistoryItem>) current; |
holder.displayItem(item); |
- ((HistoryItemView) holder.itemView).setHistoryManager(mManager); |
+ ((HistoryItemView) holder.itemView).setHistoryManager(mHistoryManager); |
} |
@Override |
protected int getTimedItemViewResId() { |
- return R.layout.date_view; |
+ return R.layout.history_date_view; |
} |
@Override |
@@ -248,28 +261,43 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
protected BasicViewHolder createHeader(ViewGroup parent) { |
ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate( |
R.layout.history_header, parent, false); |
+ Resources resources = v.getResources(); |
mIsHeaderInflated = true; |
mClearBrowsingDataButton = (Button) v.findViewById(R.id.clear_browsing_data_button); |
mClearBrowsingDataButton.setOnClickListener(new OnClickListener() { |
@Override |
public void onClick(View v) { |
- mManager.openClearBrowsingDataPreference(); |
+ mHistoryManager.openClearBrowsingDataPreference(); |
} |
}); |
+ mClearBrowsingDataButtonContainer = (FrameLayout) mClearBrowsingDataButton.getParent(); |
+ MarginResizer.createWithViewAdapter(mClearBrowsingDataButtonContainer, |
+ mHistoryManager.getSelectableListLayout().getUiConfig(), |
+ mHistoryManager.getDefaultLateralListItemMarginPx(), 0); |
+ updateClearBrowsingDataButtonVisibility(); |
mSignedInNotSyncedTextView = (TextView) v.findViewById(R.id.signed_in_not_synced); |
setPrivacyDisclaimerText(mSignedInNotSyncedTextView, |
R.string.android_history_no_synced_results, LEARN_MORE_LINK); |
+ MarginResizer.createWithViewAdapter(mSignedInNotSyncedTextView, |
+ mHistoryManager.getSelectableListLayout().getUiConfig(), |
+ getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx()); |
mSignedInSyncedTextView = (TextView) v.findViewById(R.id.signed_in_synced); |
setPrivacyDisclaimerText(mSignedInSyncedTextView, |
R.string.android_history_has_synced_results, LEARN_MORE_LINK); |
+ MarginResizer.createWithViewAdapter(mSignedInSyncedTextView, |
+ mHistoryManager.getSelectableListLayout().getUiConfig(), |
+ getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx()); |
mOtherFormsOfBrowsingHistoryTextView = (TextView) v.findViewById( |
R.id.other_forms_of_browsing_history); |
setPrivacyDisclaimerText(mOtherFormsOfBrowsingHistoryTextView, |
R.string.android_history_other_forms_of_history, GOOGLE_HISTORY_LINK); |
+ MarginResizer.createWithViewAdapter(mOtherFormsOfBrowsingHistoryTextView, |
+ mHistoryManager.getSelectableListLayout().getUiConfig(), |
+ getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx()); |
setPrivacyDisclaimerVisibility(); |
@@ -282,11 +310,21 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
R.layout.indeterminate_progress_view, parent, false)); |
} |
+ @Override |
+ protected DateViewHolder createDateViewHolder(ViewGroup parent) { |
+ DateViewHolder viewHolder = super.createDateViewHolder(parent); |
+ MarginResizer.createWithViewAdapter(viewHolder.itemView, |
+ mHistoryManager.getSelectableListLayout().getUiConfig(), |
+ getDefaultTextMargin(parent.getResources()), |
+ mHistoryManager.getListItemLateralShadowSizePx()); |
+ return viewHolder; |
+ } |
+ |
private void setPrivacyDisclaimerText(TextView view, int stringId, final String url) { |
NoUnderlineClickableSpan link = new NoUnderlineClickableSpan() { |
@Override |
public void onClick(View view) { |
- mManager.openUrl(url, null, true); |
+ mHistoryManager.openUrl(url, null, true); |
} |
}; |
SpannableString spannable = SpanApplier.applySpans( |
@@ -308,6 +346,20 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor |
mHasOtherFormsOfBrowsingData ? View.VISIBLE : View.GONE); |
} |
+ private void updateClearBrowsingDataButtonVisibility() { |
+ mClearBrowsingDataButtonContainer.setVisibility( |
+ !PrefServiceBridge.getInstance().canDeleteBrowsingHistory() ? View.GONE : |
+ View.VISIBLE); |
+ } |
+ |
+ private int getDefaultTextMargin(Resources resources) { |
+ if (mDefaultTextMargin == 0) { |
+ mDefaultTextMargin = resources.getDimensionPixelSize( |
+ R.dimen.history_default_text_margin); |
+ } |
+ return mDefaultTextMargin; |
+ } |
+ |
@VisibleForTesting |
TextView getSignedInNotSyncedViewForTests() { |
return mSignedInNotSyncedTextView; |