mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-01 13:57:10 +01:00
Fix CommentIndentationView losing state.
This commit is contained in:
parent
ad78aebf67
commit
16014a8807
@ -238,7 +238,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
private int mCommentIconAndInfoColor;
|
private int mCommentIconAndInfoColor;
|
||||||
private int mFullyCollapsedCommentBackgroundColor;
|
private int mFullyCollapsedCommentBackgroundColor;
|
||||||
private int mAwardedCommentBackgroundColor;
|
private int mAwardedCommentBackgroundColor;
|
||||||
private int[] verticalBlockColors;
|
private Integer[] verticalBlockColors;
|
||||||
|
|
||||||
private Drawable mCommentIcon;
|
private Drawable mCommentIcon;
|
||||||
private float mScale;
|
private float mScale;
|
||||||
@ -572,7 +572,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
mFullyCollapsedCommentBackgroundColor = customThemeWrapper.getFullyCollapsedCommentBackgroundColor();
|
mFullyCollapsedCommentBackgroundColor = customThemeWrapper.getFullyCollapsedCommentBackgroundColor();
|
||||||
mAwardedCommentBackgroundColor = customThemeWrapper.getAwardedCommentBackgroundColor();
|
mAwardedCommentBackgroundColor = customThemeWrapper.getAwardedCommentBackgroundColor();
|
||||||
|
|
||||||
verticalBlockColors = new int[] {
|
verticalBlockColors = new Integer[] {
|
||||||
customThemeWrapper.getCommentVerticalBarColor1(),
|
customThemeWrapper.getCommentVerticalBarColor1(),
|
||||||
customThemeWrapper.getCommentVerticalBarColor2(),
|
customThemeWrapper.getCommentVerticalBarColor2(),
|
||||||
customThemeWrapper.getCommentVerticalBarColor3(),
|
customThemeWrapper.getCommentVerticalBarColor3(),
|
||||||
@ -1896,9 +1896,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
((CommentViewHolder) holder).downvoteButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
((CommentViewHolder) holder).downvoteButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
((CommentViewHolder) holder).replyButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
((CommentViewHolder) holder).replyButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
((CommentViewHolder) holder).itemView.setBackgroundColor(mCommentBackgroundColor);
|
((CommentViewHolder) holder).itemView.setBackgroundColor(mCommentBackgroundColor);
|
||||||
} else if (holder instanceof CommentFullyCollapsedViewHolder) {
|
} else if (holder instanceof PostDetailBaseViewHolder) {
|
||||||
} else if (holder instanceof LoadMoreChildCommentsViewHolder) {
|
|
||||||
} else if (holder instanceof PostDetailBaseViewHolder) {
|
|
||||||
((PostDetailBaseViewHolder) holder).mUpvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
((PostDetailBaseViewHolder) holder).mUpvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
((PostDetailBaseViewHolder) holder).mScoreTextView.setTextColor(mPostIconAndInfoColor);
|
((PostDetailBaseViewHolder) holder).mScoreTextView.setTextColor(mPostIconAndInfoColor);
|
||||||
((PostDetailBaseViewHolder) holder).mDownvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
((PostDetailBaseViewHolder) holder).mDownvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
|
@ -357,37 +357,37 @@ public class CustomThemeWrapper {
|
|||||||
getDefaultColor("#F0F0F0", "#3C3C3C", "#3C3C3C"));
|
getDefaultColor("#F0F0F0", "#3C3C3C", "#3C3C3C"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor1() {
|
public Integer getCommentVerticalBarColor1() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_1,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_1,
|
||||||
getDefaultColor("#1565C0", "#1565C0", "#1565C0"));
|
getDefaultColor("#1565C0", "#1565C0", "#1565C0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor2() {
|
public Integer getCommentVerticalBarColor2() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_2,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_2,
|
||||||
getDefaultColor("#EE02BE", "#C300B3", "#C300B3"));
|
getDefaultColor("#EE02BE", "#C300B3", "#C300B3"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor3() {
|
public Integer getCommentVerticalBarColor3() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_3,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_3,
|
||||||
getDefaultColor("#02DFEE", "#00B8DA", "#00B8DA"));
|
getDefaultColor("#02DFEE", "#00B8DA", "#00B8DA"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor4() {
|
public Integer getCommentVerticalBarColor4() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_4,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_4,
|
||||||
getDefaultColor("#EED502", "#EDCA00", "#EDCA00"));
|
getDefaultColor("#EED502", "#EDCA00", "#EDCA00"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor5() {
|
public Integer getCommentVerticalBarColor5() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_5,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_5,
|
||||||
getDefaultColor("#EE0220", "#EE0219", "#EE0219"));
|
getDefaultColor("#EE0220", "#EE0219", "#EE0219"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor6() {
|
public Integer getCommentVerticalBarColor6() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_6,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_6,
|
||||||
getDefaultColor("#02EE6E", "#00B925", "#00B925"));
|
getDefaultColor("#02EE6E", "#00B925", "#00B925"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCommentVerticalBarColor7() {
|
public Integer getCommentVerticalBarColor7() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_7,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.COMMENT_VERTICAL_BAR_COLOR_7,
|
||||||
getDefaultColor("#EE4602", "#EE4602", "#EE4602"));
|
getDefaultColor("#EE4602", "#EE4602", "#EE4602"));
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package ml.docilealligator.infinityforreddit.customviews;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
@ -16,13 +18,14 @@ public class CommentIndentationView extends LinearLayout {
|
|||||||
|
|
||||||
private final Paint paint;
|
private final Paint paint;
|
||||||
private int level;
|
private int level;
|
||||||
private int[] colors;
|
private Integer[] colors;
|
||||||
private ArrayList<Integer> startXs;
|
private ArrayList<Integer> startXs;
|
||||||
private final int spacing;
|
private final int spacing;
|
||||||
private final int pathWidth;
|
private final int pathWidth;
|
||||||
|
|
||||||
public CommentIndentationView(Context context, @Nullable AttributeSet attrs) {
|
public CommentIndentationView(Context context, @Nullable AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
setSaveEnabled(true);
|
||||||
setWillNotDraw(false);
|
setWillNotDraw(false);
|
||||||
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
pathWidth = (int) Utils.convertDpToPixel(2, context);
|
pathWidth = (int) Utils.convertDpToPixel(2, context);
|
||||||
@ -36,6 +39,7 @@ public class CommentIndentationView extends LinearLayout {
|
|||||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||||
super.onLayout(changed, left, top, right, bottom);
|
super.onLayout(changed, left, top, right, bottom);
|
||||||
|
|
||||||
|
startXs.clear();
|
||||||
for (int i = 0; i < level; i++) {
|
for (int i = 0; i < level; i++) {
|
||||||
startXs.add(spacing * (i + 1) + pathWidth);
|
startXs.add(spacing * (i + 1) + pathWidth);
|
||||||
}
|
}
|
||||||
@ -49,13 +53,67 @@ public class CommentIndentationView extends LinearLayout {
|
|||||||
paint.setColor(colors[i % 7]);
|
paint.setColor(colors[i % 7]);
|
||||||
canvas.drawLine(startXs.get(i), 0, startXs.get(i), getHeight(), paint);
|
canvas.drawLine(startXs.get(i), 0, startXs.get(i), getHeight(), paint);
|
||||||
}
|
}
|
||||||
startXs.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLevelAndColors(int level, int[] colors) {
|
@Nullable
|
||||||
|
@Override
|
||||||
|
protected Parcelable onSaveInstanceState() {
|
||||||
|
Parcelable parcelable = super.onSaveInstanceState();
|
||||||
|
SavedState myState = new SavedState(parcelable);
|
||||||
|
myState.startXs = this.startXs;
|
||||||
|
myState.colors = this.colors;
|
||||||
|
return parcelable;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onRestoreInstanceState(Parcelable state) {
|
||||||
|
SavedState savedState = (SavedState) state;
|
||||||
|
|
||||||
|
super.onRestoreInstanceState(savedState.getSuperState());
|
||||||
|
|
||||||
|
this.startXs = savedState.startXs;
|
||||||
|
this.colors = savedState.colors;
|
||||||
|
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLevelAndColors(int level, Integer[] colors) {
|
||||||
this.colors = colors;
|
this.colors = colors;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
int indentationSpacing = (level * spacing + pathWidth);
|
int indentationSpacing = (level * spacing + pathWidth);
|
||||||
setPaddingRelative(indentationSpacing, 0, pathWidth, 0);
|
setPaddingRelative(indentationSpacing, 0, pathWidth, 0);
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class SavedState extends BaseSavedState {
|
||||||
|
ArrayList<Integer> startXs;
|
||||||
|
Integer[] colors;
|
||||||
|
|
||||||
|
SavedState(Parcelable superState) {
|
||||||
|
super(superState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SavedState(Parcel in) {
|
||||||
|
super(in);
|
||||||
|
startXs = in.readArrayList(SavedState.class.getClassLoader());
|
||||||
|
colors = (Integer[]) in.readArray(SavedState.class.getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel out, int flags) {
|
||||||
|
super.writeToParcel(out, flags);
|
||||||
|
out.writeList(startXs);
|
||||||
|
out.writeArray(colors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() {
|
||||||
|
public SavedState createFromParcel(Parcel in) {
|
||||||
|
return new SavedState(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SavedState[] newArray(int size) {
|
||||||
|
return new SavedState[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user