summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java b/mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java
new file mode 100644
index 000000000..9c98e8a0d
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/widget/HistoryDividerItemDecoration.java
@@ -0,0 +1,66 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.widget;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.home.CombinedHistoryItem;
+
+public class HistoryDividerItemDecoration extends RecyclerView.ItemDecoration {
+ private final int mDividerHeight;
+ private final Paint mDividerPaint;
+
+ public HistoryDividerItemDecoration(Context context) {
+ mDividerHeight = (int) context.getResources().getDimension(R.dimen.page_row_divider_height);
+
+ mDividerPaint = new Paint();
+ mDividerPaint.setColor(ContextCompat.getColor(context, R.color.toolbar_divider_grey));
+ mDividerPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+ }
+
+ @Override
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+ final int position = parent.getChildAdapterPosition(view);
+ if (position == RecyclerView.NO_POSITION) {
+ // This view is no longer corresponds to an adapter position (pending changes).
+ return;
+ }
+
+ if (parent.getAdapter().getItemViewType(position) !=
+ CombinedHistoryItem.ItemType.itemTypeToViewType(CombinedHistoryItem.ItemType.SECTION_HEADER)) {
+ outRect.set(0, 0, 0, mDividerHeight);
+ }
+ }
+
+ @Override
+ public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ if (parent.getChildCount() == 0) {
+ return;
+ }
+
+ for (int i = 0; i < parent.getChildCount(); i++) {
+ final View child = parent.getChildAt(i);
+ final int position = parent.getChildAdapterPosition(child);
+
+ if (position == RecyclerView.NO_POSITION) {
+ // This view is no longer corresponds to an adapter position (pending changes).
+ continue;
+ }
+
+ if (parent.getAdapter().getItemViewType(position) !=
+ CombinedHistoryItem.ItemType.itemTypeToViewType(CombinedHistoryItem.ItemType.SECTION_HEADER)) {
+ final float bottom = child.getBottom() + child.getTranslationY();
+ c.drawRect(0, bottom, parent.getWidth(), bottom + mDividerHeight, mDividerPaint);
+ }
+ }
+ }
+}