Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-12-09 14:12:18 +0300
committerStefan Niedermann <info@niedermann.it>2020-12-09 14:12:18 +0300
commit61506f9d29daf0559fa12c70a25a45a4c6d83fa1 (patch)
tree26c3ad677b9c2a086d947fd9ff86166f27af30f2 /app/src/main/java/it/niedermann/nextcloud/deck/ui
parent48dd2fe1a86e86f44040b41f22c9b0f1b5d9f487 (diff)
Prepare support of thumbnail generation
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentAdapter.java56
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java61
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java19
3 files changed, 76 insertions, 60 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
index b17b34137..c7d32bd37 100644
--- 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
@@ -1,43 +1,31 @@
package it.niedermann.nextcloud.deck.ui.attachments;
import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.DataSource;
-import com.bumptech.glide.load.engine.GlideException;
-import com.bumptech.glide.request.RequestListener;
-import com.bumptech.glide.request.target.Target;
-
+import java.util.ArrayList;
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;
-import it.niedermann.nextcloud.deck.util.MimeTypeUtil;
public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder> {
private final Account account;
private final long cardRemoteId;
@NonNull
- private List<Attachment> attachments;
- private Context context;
+ private final List<Attachment> attachments = new ArrayList<>();
@SuppressWarnings("WeakerAccess")
public AttachmentAdapter(@NonNull Account account, long cardRemoteId, @NonNull List<Attachment> attachments) {
super();
- this.attachments = attachments;
+ this.attachments.clear();
+ this.attachments.addAll(attachments);
this.account = account;
this.cardRemoteId = cardRemoteId;
}
@@ -45,43 +33,13 @@ public class AttachmentAdapter extends RecyclerView.Adapter<AttachmentViewHolder
@NonNull
@Override
public AttachmentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- this.context = parent.getContext();
- return new AttachmentViewHolder(ItemAttachmentBinding.inflate(LayoutInflater.from(context), parent, false));
+ final Context context = parent.getContext();
+ return new AttachmentViewHolder(context, ItemAttachmentBinding.inflate(LayoutInflater.from(context), parent, false));
}
@Override
public void onBindViewHolder(@NonNull AttachmentViewHolder holder, int position) {
- final Attachment attachment = attachments.get(position);
- final String uri = AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment);
- if (MimeTypeUtil.isImage(attachment.getMimetype())) {
- 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)
- .listener(new RequestListener<Drawable>() {
- @Override
- public boolean onLoadFailed(@Nullable GlideException e, Object model,
- Target<Drawable> target, boolean isFirstResource) {
- if (context instanceof FragmentActivity) {
- ((FragmentActivity) context).supportStartPostponedEnterTransition();
- }
- return false;
- }
-
- @Override
- public boolean onResourceReady(Drawable resource, Object model,
- Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
- if (context instanceof FragmentActivity) {
- ((FragmentActivity) context).supportStartPostponedEnterTransition();
- }
- return false;
- }
- })
- .error(R.drawable.ic_image_grey600_24dp)
- .into(holder.binding.preview);
- }
+ holder.bind(account, attachments.get(position), cardRemoteId);
}
@Override
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java
index 584a57d1d..6f4fe3c74 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/attachments/AttachmentViewHolder.java
@@ -1,15 +1,72 @@
package it.niedermann.nextcloud.deck.ui.attachments;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.engine.GlideException;
+import com.bumptech.glide.request.RequestListener;
+import com.bumptech.glide.request.target.Target;
+
+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;
+import it.niedermann.nextcloud.deck.util.MimeTypeUtil;
public class AttachmentViewHolder extends RecyclerView.ViewHolder {
- public ItemAttachmentBinding binding;
+ @NonNull
+ private final Context parentContext;
+ @NonNull
+ private final ItemAttachmentBinding binding;
@SuppressWarnings("WeakerAccess")
- public AttachmentViewHolder(ItemAttachmentBinding binding) {
+ public AttachmentViewHolder(@NonNull Context parentContext, @NonNull ItemAttachmentBinding binding) {
super(binding.getRoot());
+ this.parentContext = parentContext;
this.binding = binding;
}
+
+ public void bind(@NonNull Account account, @NonNull Attachment attachment, long cardRemoteId) {
+ if (MimeTypeUtil.isImage(attachment.getMimetype())) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ binding.preview.setTransitionName(parentContext.getString(R.string.transition_attachment_preview, String.valueOf(attachment.getLocalId())));
+ }
+ binding.preview.setImageResource(R.drawable.ic_image_grey600_24dp);
+ binding.preview.post(() -> {
+ final String uri = AttachmentUtil.getThumbnailUrl(account.getServerDeckVersionAsObject(), account.getUrl(), cardRemoteId, attachment, binding.preview.getWidth());
+ Glide.with(parentContext)
+ .load(uri)
+ .listener(new RequestListener<Drawable>() {
+ @Override
+ public boolean onLoadFailed(@Nullable GlideException e, Object model,
+ Target<Drawable> target, boolean isFirstResource) {
+ if (parentContext instanceof FragmentActivity) {
+ ((FragmentActivity) parentContext).supportStartPostponedEnterTransition();
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onResourceReady(Drawable resource, Object model,
+ Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
+ if (parentContext instanceof FragmentActivity) {
+ ((FragmentActivity) parentContext).supportStartPostponedEnterTransition();
+ }
+ return false;
+ }
+ })
+ .error(R.drawable.ic_image_grey600_24dp)
+ .into(binding.preview);
+ });
+ }
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java
index e3139295f..3c95da1b7 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/ImageAttachmentViewHolder.java
@@ -18,7 +18,7 @@ import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.util.AttachmentUtil;
public class ImageAttachmentViewHolder extends AttachmentViewHolder {
- private ItemAttachmentImageBinding binding;
+ private final ItemAttachmentImageBinding binding;
@SuppressWarnings("WeakerAccess")
public ImageAttachmentViewHolder(ItemAttachmentImageBinding binding) {
@@ -37,16 +37,17 @@ public class ImageAttachmentViewHolder extends AttachmentViewHolder {
}
public void bind(@NonNull Account account, @NonNull MenuInflater menuInflater, @NonNull FragmentManager fragmentManager, Long cardRemoteId, Attachment attachment, @Nullable View.OnClickListener onClickListener, @ColorInt int mainColor) {
- @Nullable final String uri = AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment);
+ super.bind(menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor, AttachmentUtil.getRemoteOrLocalUrl(account.getUrl(), cardRemoteId, attachment));
- super.bind(menuInflater, fragmentManager, cardRemoteId, attachment, onClickListener, mainColor, uri);
+ getPreview().post(() -> {
+ @Nullable final String uri = AttachmentUtil.getThumbnailUrl(account.getServerDeckVersionAsObject(), account.getUrl(), cardRemoteId, attachment, getPreview().getWidth());
+ Glide.with(getPreview().getContext())
+ .load(uri)
+ .placeholder(R.drawable.ic_image_grey600_24dp)
+ .error(R.drawable.ic_image_grey600_24dp)
+ .into(getPreview());
+ });
- getPreview().setImageResource(R.drawable.ic_image_grey600_24dp);
- Glide.with(getPreview().getContext())
- .load(uri)
- .placeholder(R.drawable.ic_image_grey600_24dp)
- .error(R.drawable.ic_image_grey600_24dp)
- .into(getPreview());
itemView.setOnClickListener(onClickListener);
}
} \ No newline at end of file