diff options
author | stefan-niedermann <info@niedermann.it> | 2020-03-07 21:24:43 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2020-03-07 21:24:43 +0300 |
commit | f180824ec20453fe281d859bdd04aac53684ae16 (patch) | |
tree | c635b2ce5e2b2a5ad54f395970b5b120d35f21d1 /app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments | |
parent | 656f1d4cc1596a7b6b5fc4b2aa28d8726956acc7 (diff) |
Make attachment viewer swipeable
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java new file mode 100644 index 000000000..1d7307ccd --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java @@ -0,0 +1,74 @@ +package it.niedermann.nextcloud.deck.ui.attachments; + +import android.content.Context; +import android.os.Build; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; + +import java.util.List; + +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.databinding.ItemAttachmentBinding; +import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Attachment; +import it.niedermann.nextcloud.deck.util.AttachmentUtil; + +public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentAdapter.AttachmentViewHolder> { + + private final Account account; + private final long cardRemoteId; + @NonNull + private List<Attachment> attachments; + private Context context; + + public AttachmentAdapter(@NonNull Account account, long cardRemoteId, @NonNull List<Attachment> attachments) { + super(); + this.attachments = attachments; + this.account = account; + this.cardRemoteId = cardRemoteId; + } + + @NonNull + @Override + public AttachmentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + this.context = parent.getContext(); + return new AttachmentViewHolder(ItemAttachmentBinding.inflate(LayoutInflater.from(context), parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) { + Attachment attachment = attachments.get(position); + String uri = AttachmentUtil.getUrl(account.getUrl(), cardRemoteId, attachment.getId()); + if (attachment.getMimetype() != null) { + if (attachment.getMimetype().startsWith("image")) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + holder.binding.preview.setTransitionName(context.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId()))); + } + holder.binding.preview.setImageResource(R.drawable.ic_image_grey600_24dp); + Glide.with(context) + .load(uri) + .error(R.drawable.ic_image_grey600_24dp) + .into(holder.binding.preview); + } + } + } + + @Override + public int getItemCount() { + return attachments.size(); + } + + static class AttachmentViewHolder extends RecyclerView.ViewHolder { + private ItemAttachmentBinding binding; + + private AttachmentViewHolder(ItemAttachmentBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } +} |