summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java81
1 files changed, 57 insertions, 24 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java
index ac271cf47..4f7511df3 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ConversationDecoration.java
@@ -16,8 +16,10 @@ package fr.gouv.etalab.mastodon.drawers;
import android.content.Context;
+import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
+import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.view.View;
@@ -26,6 +28,8 @@ import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.client.Entities.Status;
import fr.gouv.etalab.mastodon.helper.Helper;
+import static fr.gouv.etalab.mastodon.drawers.StatusListAdapter.FOCUSED_STATUS;
+
/**
* Created by Thomas on 08/09/2018.
* Adapter for thread decoration
@@ -34,45 +38,74 @@ public class ConversationDecoration extends RecyclerView.ItemDecoration{
private Drawable divider;
private Context context;
- private int statusOpenedPosition;
+ private boolean compactMode;
- public ConversationDecoration(Context context, int statusOpenedPosition){
- divider = ContextCompat.getDrawable(context,R.drawable.line_divider);
- this.statusOpenedPosition = statusOpenedPosition;
+ public ConversationDecoration(Context context, int theme, boolean compactMode){
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ if( theme == Helper.THEME_BLACK)
+ divider = ContextCompat.getDrawable(context,R.drawable.line_divider_black);
+ else if(theme == Helper.THEME_DARK)
+ divider = ContextCompat.getDrawable(context,R.drawable.line_divider_dark);
+ else if(theme == Helper.THEME_LIGHT)
+ divider = ContextCompat.getDrawable(context,R.drawable.line_divider_light);
+ this.compactMode = compactMode;
this.context = context;
}
@Override
- public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
- canvas.save();
- int left = parent.getPaddingLeft();
- int right = parent.getWidth() - parent.getPaddingRight();
+ public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+
+ int leftSide;
+ if( compactMode)
+ leftSide = (int) Helper.convertDpToPixel(12, context);
+ else
+ leftSide = (int) Helper.convertDpToPixel(28, context);
+
+ int left = parent.getPaddingLeft() + leftSide;
+ int right = left + (int)Helper.convertDpToPixel(4, context);
int childCount = parent.getChildCount();
- int top = 0, bottom = 0;
- StatusListAdapter adapter = (StatusListAdapter) parent.getAdapter();
- int offSet = (int) Helper.convertDpToPixel(50, context);
+
+ int offSet = (int) Helper.convertDpToPixel(30, context);
+
for (int i = 0; i < childCount; i++) {
+
View child = parent.getChildAt(i);
+ StatusListAdapter adapter = (StatusListAdapter) parent.getAdapter();
int position = parent.getChildAdapterPosition(child);
+
+ assert adapter != null;
Status status = adapter.getItem(position);
+
+ int top, bottom;
if( status != null){
- Status statusBefore = null;
- if( position > 0)
- statusBefore = adapter.getItem(position - 1);
- top = (statusBefore != null && statusBefore.getId().equals(status.getIn_reply_to_id()))?
- child.getBottom(): (child.getTop() + offSet);
- Status statusAfter = null;
- if( adapter.getItemCount() > position+1)
- statusAfter = adapter.getItem(position + 1);
- bottom = (statusAfter != null && status.getId().equals(statusAfter.getIn_reply_to_id()) && position != statusOpenedPosition)?
- child.getTop():child.getTop()+offSet;
+ int itemViewType = status.getItemViewType();
+ Status statusBefore = null;
+ if( itemViewType != FOCUSED_STATUS || position == 0){
+ if( position > 0)
+ statusBefore = adapter.getItem(position - 1);
+ top = (statusBefore != null && statusBefore.getId().equals(status.getIn_reply_to_id()))?
+ child.getTop(): (child.getTop() + offSet);
+ Status statusAfter = null;
+ if( adapter.getItemCount() > position+1)
+ statusAfter = adapter.getItem(position + 1);
+ bottom = (statusAfter != null && status.getId().equals(statusAfter.getIn_reply_to_id()) )?
+ child.getBottom():child.getTop()+offSet;
+ if( position == 0 && childCount > 1)
+ top = bottom - (int)Helper.convertDpToPixel(14, context);
+ if( position == 0 && childCount <= 1 )
+ top = bottom;
+ }else{
+ top = child.getTop();
+ bottom = top + (int)Helper.convertDpToPixel(14, context);
+ }
+ divider.setBounds(left, top, right, bottom);
+ divider.draw(canvas);
}
- divider.setBounds(left, top, right, bottom);
- divider.draw(canvas);
+
}
- canvas.restore();
+
}
}