Add mentions unread counter.

This commit is contained in:
Alex Hart
2020-08-13 15:37:15 -03:00
committed by Greyson Parrelli
parent 3c90dfa660
commit 06eadd0c15
30 changed files with 588 additions and 165 deletions

View File

@@ -29,6 +29,7 @@ public class ConversationItemThumbnail extends FrameLayout {
private ConversationItemFooter footer;
private CornerMask cornerMask;
private Outliner outliner;
private Outliner pulseOutliner;
private boolean borderless;
public ConversationItemThumbnail(Context context) {
@@ -80,6 +81,14 @@ public class ConversationItemThumbnail extends FrameLayout {
outliner.draw(canvas);
}
}
if (pulseOutliner != null) {
pulseOutliner.draw(canvas);
}
}
public void setPulseOutliner(@NonNull Outliner outliner) {
this.pulseOutliner = outliner;
}
@Override

View File

@@ -0,0 +1,60 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.R;
public final class ConversationScrollToView extends FrameLayout {
private final TextView unreadCount;
private final ImageView scrollButton;
public ConversationScrollToView(@NonNull Context context) {
this(context, null);
}
public ConversationScrollToView(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public ConversationScrollToView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
inflate(context, R.layout.conversation_scroll_to, this);
unreadCount = findViewById(R.id.conversation_scroll_to_count);
scrollButton = findViewById(R.id.conversation_scroll_to_button);
if (attrs != null) {
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ConversationScrollToView);
Drawable src = array.getDrawable(R.styleable.ConversationScrollToView_cstv_scroll_button_src);
scrollButton.setImageDrawable(src);
array.recycle();
}
}
@Override
public void setOnClickListener(@Nullable OnClickListener l) {
scrollButton.setOnClickListener(l);
}
public void setUnreadCount(int unreadCount) {
this.unreadCount.setText(formatUnreadCount(unreadCount));
this.unreadCount.setVisibility(unreadCount > 0 ? VISIBLE : GONE);
}
private @NonNull CharSequence formatUnreadCount(int unreadCount) {
return unreadCount > 999 ? "999+" : String.valueOf(unreadCount);
}
}

View File

@@ -25,6 +25,14 @@ public class Outliner {
outlinePaint.setColor(color);
}
public void setStrokeWidth(float pixels) {
outlinePaint.setStrokeWidth(pixels);
}
public void setAlpha(int alpha) {
outlinePaint.setAlpha(alpha);
}
public void draw(Canvas canvas) {
draw(canvas, 0, canvas.getWidth(), canvas.getHeight(), 0);
}