aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/mygram/droid/TileAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/mygram/droid/TileAdapter.java')
-rw-r--r--app/src/main/java/mygram/droid/TileAdapter.java28
1 files changed, 24 insertions, 4 deletions
diff --git a/app/src/main/java/mygram/droid/TileAdapter.java b/app/src/main/java/mygram/droid/TileAdapter.java
index cf80f51..5e53109 100644
--- a/app/src/main/java/mygram/droid/TileAdapter.java
+++ b/app/src/main/java/mygram/droid/TileAdapter.java
@@ -16,6 +16,7 @@ package mygram.droid;
import android.content.Context;
import android.graphics.Color;
+import android.graphics.drawable.GradientDrawable;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -35,6 +36,8 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> {
final String image, label;
final int icon, postId;
final Runnable click;
+ /** Photo or video mark in the top left; 0 for none. */
+ int badge;
/** image or icon is shown; postId is -1 for tiles that are not posts. */
Tile(String image, String label, int icon, int postId, Runnable click) {
@@ -47,18 +50,21 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> {
}
static Tile post(Post p, Runnable click) {
- return new Tile(p.media.get(0).thumbnailUrl, null, 0, p.id, click);
+ Tile t = new Tile(p.media.get(0).thumbnailUrl, null, 0, p.id, click);
+ t.badge = p.media.get(0).video ? R.drawable.ic_videocam : R.drawable.ic_photo;
+ return t;
}
static final class Holder extends RecyclerView.ViewHolder {
- final ImageView image, heart;
+ final ImageView image, heart, badge;
final TextView label;
- Holder(View v, ImageView image, TextView label, ImageView heart) {
+ Holder(View v, ImageView image, TextView label, ImageView heart, ImageView badge) {
super(v);
this.image = image;
this.label = label;
this.heart = heart;
+ this.badge = badge;
}
}
@@ -97,8 +103,19 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> {
FrameLayout.LayoutParams hp = new FrameLayout.LayoutParams(s, s, Gravity.TOP | Gravity.END);
hp.setMargins(p, p, p, p);
frame.addView(heart, hp);
+ ImageView badge = new ImageView(c);
+ GradientDrawable dot = new GradientDrawable();
+ dot.setShape(GradientDrawable.OVAL);
+ dot.setColor(0x80000000); // readable on bright thumbnails
+ badge.setBackground(dot);
+ int bp = Ui.dp(c, 4);
+ badge.setPadding(bp, bp, bp, bp);
+ int bs = Ui.dp(c, 26);
+ FrameLayout.LayoutParams bl = new FrameLayout.LayoutParams(bs, bs, Gravity.TOP | Gravity.START);
+ bl.setMargins(p, p, p, p);
+ frame.addView(badge, bl);
Ui.focusable(frame);
- return new Holder(frame, image, label, heart);
+ return new Holder(frame, image, label, heart, badge);
}
@Override
@@ -116,6 +133,9 @@ final class TileAdapter extends RecyclerView.Adapter<TileAdapter.Holder> {
}
h.label.setText(t.label);
h.label.setVisibility(t.label == null ? View.GONE : View.VISIBLE);
+ h.badge.setVisibility(t.badge == 0 ? View.GONE : View.VISIBLE);
+ h.badge.setImageResource(t.badge);
+ h.badge.setContentDescription(t.badge == R.drawable.ic_videocam ? "Video" : "Photo");
h.heart.setVisibility(t.postId >= 0 && Likes.has(t.postId) ? View.VISIBLE : View.GONE);
h.itemView.setContentDescription(t.label != null ? t.label : "Post");
h.itemView.setOnClickListener(v -> t.click.run());