From 1d7aed393fbab5eeeecb722d805932af60fae050 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Nov 2022 09:16:06 +0100 Subject: [PATCH] Comment issue #405 - Allow to increase max indentation --- .../android/helper/DividerDecoration.java | 37 ++++++++++++++----- app/src/main/res/values/colors.xml | 25 ++++++------- app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/xml/pref_timelines.xml | 9 +++++ 4 files changed, 51 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/helper/DividerDecoration.java b/app/src/main/java/app/fedilab/android/helper/DividerDecoration.java index 7245d29b..8b70c59d 100644 --- a/app/src/main/java/app/fedilab/android/helper/DividerDecoration.java +++ b/app/src/main/java/app/fedilab/android/helper/DividerDecoration.java @@ -39,12 +39,20 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { private final Context _mContext; private final List statusList; private final float fontScale; + private final int indentationMax; private final List colorList = Arrays.asList( R.color.decoration_1, R.color.decoration_2, R.color.decoration_3, R.color.decoration_4, - R.color.decoration_5 + R.color.decoration_5, + R.color.decoration_6, + R.color.decoration_7, + R.color.decoration_8, + R.color.decoration_9, + R.color.decoration_10, + R.color.decoration_11, + R.color.decoration_12 ); public DividerDecoration(Context context, List statuses) { @@ -52,6 +60,7 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { statusList = statuses; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_mContext); fontScale = prefs.getFloat(_mContext.getString(R.string.SET_FONT_SCALE), 1.1f); + indentationMax = prefs.getInt(_mContext.getString(R.string.SET_MAX_INDENTATION), 5); } @Override @@ -62,7 +71,7 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { Status status = statusAdapter.getItem(position); int start = (int) Helper.convertDpToPixel( - 6 * fontScale * CommentDecorationHelper.getIndentation(status.in_reply_to_id, statusList, colorList.size()), + 6 * fontScale * CommentDecorationHelper.getIndentation(status.in_reply_to_id, statusList, indentationMax), _mContext); if (parent.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { @@ -84,8 +93,8 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { Status status = statusAdapter.getItem(position); int indentation = Math.min( - CommentDecorationHelper.getIndentation(status.in_reply_to_id, statusList, colorList.size()), - colorList.size()); + CommentDecorationHelper.getIndentation(status.in_reply_to_id, statusList, indentationMax), + indentationMax); if (indentation > 0) { Paint paint = new Paint(); @@ -100,9 +109,14 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { startPx = c.getWidth() - startPx; float bottomPx = view.getBottom(); - - paint.setColor(ResourcesCompat.getColor(_mContext.getResources(), colorList.get(j), _mContext.getTheme())); - if (j == colorList.size() - 1) { + int color; + if (j >= colorList.size()) { + color = colorList.get(j - colorList.size()); + } else { + color = colorList.get(j); + } + paint.setColor(ResourcesCompat.getColor(_mContext.getResources(), color, _mContext.getTheme())); + if (j == indentationMax - 1) { paint.setPathEffect(new DashPathEffect( new float[]{Helper.convertDpToPixel(3, _mContext), Helper.convertDpToPixel(3, _mContext)}, 0)); @@ -111,8 +125,13 @@ public class DividerDecoration extends RecyclerView.ItemDecoration { c.drawLine(startPx, view.getTop() - margin, startPx, bottomPx, paint); } - - paint.setColor(ResourcesCompat.getColor(_mContext.getResources(), colorList.get(indentation - 1), _mContext.getTheme())); + int color; + if (indentation - 1 >= colorList.size()) { + color = colorList.get(indentation - 1 - colorList.size()); + } else { + color = colorList.get(indentation - 1); + } + paint.setColor(ResourcesCompat.getColor(_mContext.getResources(), color, _mContext.getTheme())); float startDp = 6 * fontScale * (indentation - 1) + 6 * fontScale; float centerPx = view.getBottom() - view.getHeight() / 2F; diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 522610ff..23c398ee 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -77,21 +77,18 @@ #f3f3f3 - #7986CB - #4DB6AC + #7986CB + #4DB6AC #FFD54F #64B5F6 - #9E9E9E - - - - - - - - - - - + #DCE775 + #E57373 + #4DD0E1 + #FFF176 + #81C784 + #A1887F + #AED581 + #FF8A65 + #9E9E9E diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 937f6d8e..387527eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -969,6 +969,8 @@ SET_NOTIF_POLL SET_NOTIF_STATUS SET_FONT_SCALE + SET_MAX_INDENTATION + SET_FONT_SCALE_INT SET_FONT_SCALE_ICON SET_FONT_SCALE_ICON_INT @@ -1560,4 +1562,5 @@ Message history Edited at %1$s Created at %1$s + Max indentation in threads diff --git a/app/src/main/res/xml/pref_timelines.xml b/app/src/main/res/xml/pref_timelines.xml index be2286c9..59cbfdd4 100644 --- a/app/src/main/res/xml/pref_timelines.xml +++ b/app/src/main/res/xml/pref_timelines.xml @@ -50,6 +50,15 @@ app:summary="@string/aggregate_notifications_summary" app:title="@string/aggregate_notifications" /> + +