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-11-04 19:20:21 +0300
committerStefan Niedermann <info@niedermann.it>2020-11-04 19:20:21 +0300
commita78b0f8935d90870527b3e75ed27c4f35349972f (patch)
tree10ae160c54cecf15c2cd954e61bf7254f977e238 /app/src/main/java/it/niedermann/nextcloud/deck/ui
parent660b9b28978fe5cd373dffaf6ccf682228625174 (diff)
Small refactorings
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/card/attachments/picker/AbstractPickerAdapter.java20
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java16
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactNativeItemViewHolder.java22
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactPickerItemViewHolder.java27
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java16
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileNativeItemViewHolder.java22
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FilePickerItemViewHolder.java27
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java (renamed from app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPickerItemViewHolder.java)4
9 files changed, 82 insertions, 90 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
index 32634ad66..1518b5913 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
@@ -3,6 +3,7 @@ package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.Bitmap;
import android.net.Uri;
import androidx.annotation.NonNull;
@@ -10,6 +11,8 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.Arrays;
import java.util.Objects;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.function.Consumer;
import static android.database.Cursor.FIELD_TYPE_BLOB;
@@ -19,10 +22,15 @@ import static android.database.Cursor.FIELD_TYPE_NULL;
import static android.database.Cursor.FIELD_TYPE_STRING;
import static androidx.recyclerview.widget.RecyclerView.NO_ID;
+/**
+ * An {@link RecyclerView.Adapter} which provides previews of one type of files and also an option to open a native dialog.
+ * <p>
+ * Example: Previews for images of the gallery as well a one option to take a photo
+ */
public abstract class AbstractPickerAdapter<T extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<T> {
protected static final int VIEW_TYPE_ITEM = 0;
- protected static final int VIEW_TYPE_ITEM_PICKER = 1;
+ protected static final int VIEW_TYPE_ITEM_NATIVE = 1;
private final int count;
protected final int columnIndex;
@@ -36,6 +44,12 @@ public abstract class AbstractPickerAdapter<T extends RecyclerView.ViewHolder> e
@NonNull
protected final ContentResolver contentResolver;
+ /**
+ * Should be used to bind heavy operations like when dealing with {@link Bitmap}
+ */
+ @NonNull
+ protected final ExecutorService bindExecutor = Executors.newCachedThreadPool();
+
public AbstractPickerAdapter(@NonNull Context context, @NonNull Consumer<Uri> onSelect, @NonNull Runnable openNativePicker, Uri subject, String idColumn, String sortOrder) {
this(context, onSelect, openNativePicker, subject, idColumn, new String[]{idColumn}, sortOrder);
}
@@ -85,12 +99,12 @@ public abstract class AbstractPickerAdapter<T extends RecyclerView.ViewHolder> e
@Override
public int getItemViewType(int position) {
return position == 0
- ? VIEW_TYPE_ITEM_PICKER
+ ? VIEW_TYPE_ITEM_NATIVE
: VIEW_TYPE_ITEM;
}
/**
- * Call this method when the {@link AbstractPickerAdapter} is no longe need to free resources.
+ * Call this method when the {@link AbstractPickerAdapter} is no longer need to free resources.
*/
public void onDestroy() {
cursor.close();
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
index 9207362a3..e1cefcd59 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
@@ -16,11 +16,9 @@ import androidx.recyclerview.widget.RecyclerView;
import java.io.IOException;
import java.io.InputStream;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.function.Consumer;
-import it.niedermann.nextcloud.deck.databinding.ItemFilterUserBinding;
+import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
import it.niedermann.nextcloud.deck.databinding.ItemPickerUserBinding;
import static android.provider.ContactsContract.Contacts.CONTENT_LOOKUP_URI;
@@ -33,8 +31,6 @@ public class ContactAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
private final int displayNameColumnIndex;
- @NonNull
- private final ExecutorService bitmapExecutor = Executors.newCachedThreadPool();
public ContactAdapter(@NonNull Context context, @NonNull Consumer<Uri> onSelect, @NonNull Runnable onSelectPicker) {
super(context, onSelect, onSelectPicker, CONTENT_URI, LOOKUP_KEY, new String[]{LOOKUP_KEY, DISPLAY_NAME}, SORT_KEY_PRIMARY);
@@ -46,8 +42,8 @@ public class ContactAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
- case VIEW_TYPE_ITEM_PICKER:
- return new ContactPickerItemViewHolder(ItemFilterUserBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ case VIEW_TYPE_ITEM_NATIVE:
+ return new ContactNativeItemViewHolder(ItemPickerNativeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
case VIEW_TYPE_ITEM:
return new ContactItemViewHolder(ItemPickerUserBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
default:
@@ -58,12 +54,12 @@ public class ContactAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
- case VIEW_TYPE_ITEM_PICKER: {
- ((ContactPickerItemViewHolder) holder).bind(openNativePicker);
+ case VIEW_TYPE_ITEM_NATIVE: {
+ ((ContactNativeItemViewHolder) holder).bind(openNativePicker);
break;
}
case VIEW_TYPE_ITEM: {
- bitmapExecutor.execute(() -> {
+ bindExecutor.execute(() -> {
final ContactItemViewHolder viewHolder = (ContactItemViewHolder) holder;
final long id = getItemId(position);
final String name = cursor.getString(displayNameColumnIndex);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactNativeItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactNativeItemViewHolder.java
new file mode 100644
index 000000000..e4d1a0a2e
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactNativeItemViewHolder.java
@@ -0,0 +1,22 @@
+package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
+
+public class ContactNativeItemViewHolder extends RecyclerView.ViewHolder {
+
+ private final ItemPickerNativeBinding binding;
+
+ public ContactNativeItemViewHolder(@NonNull ItemPickerNativeBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public void bind(@NonNull Runnable onOpenMajorPicker) {
+ binding.title.setText(R.string.show_all_contacts);
+ itemView.setOnClickListener((v) -> onOpenMajorPicker.run());
+ }
+}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactPickerItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactPickerItemViewHolder.java
deleted file mode 100644
index 7978dde93..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactPickerItemViewHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.bumptech.glide.Glide;
-
-import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.databinding.ItemFilterUserBinding;
-
-public class ContactPickerItemViewHolder extends RecyclerView.ViewHolder {
-
- private final ItemFilterUserBinding binding;
-
- public ContactPickerItemViewHolder(@NonNull ItemFilterUserBinding binding) {
- super(binding.getRoot());
- this.binding = binding;
- }
-
- public void bind(Runnable onOpenMajorPicker) {
- Glide.with(itemView.getContext())
- .load(R.drawable.ic_baseline_account_circle_24)
- .into(binding.avatar);
- binding.displayName.setText("Show all contacts");
- itemView.setOnClickListener((v) -> onOpenMajorPicker.run());
- }
-}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java
index addf4979b..8f8c45d1e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java
@@ -12,11 +12,9 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.function.Consumer;
-import it.niedermann.nextcloud.deck.databinding.ItemFilterUserBinding;
+import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
import it.niedermann.nextcloud.deck.databinding.ItemPickerUserBinding;
import static android.provider.BaseColumns._ID;
@@ -28,8 +26,6 @@ public class FileAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolder>
private final int displayNameColumnIndex;
private final int sizeColumnIndex;
- @NonNull
- private final ExecutorService bitmapExecutor = Executors.newCachedThreadPool();
public FileAdapter(@NonNull Context context, @NonNull Consumer<Uri> onSelect, @NonNull Runnable onSelectPicker) {
super(context, onSelect, onSelectPicker, MediaStore.Files.getContentUri("external"), _ID, new String[]{_ID, TITLE, SIZE}, DATE_ADDED + " DESC");
@@ -42,8 +38,8 @@ public class FileAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolder>
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
- case VIEW_TYPE_ITEM_PICKER:
- return new FilePickerItemViewHolder(ItemFilterUserBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ case VIEW_TYPE_ITEM_NATIVE:
+ return new FileNativeItemViewHolder(ItemPickerNativeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
case VIEW_TYPE_ITEM:
return new FileItemViewHolder(ItemPickerUserBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
default:
@@ -54,12 +50,12 @@ public class FileAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolder>
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
- case VIEW_TYPE_ITEM_PICKER: {
- ((FilePickerItemViewHolder) holder).bind(openNativePicker);
+ case VIEW_TYPE_ITEM_NATIVE: {
+ ((FileNativeItemViewHolder) holder).bind(openNativePicker);
break;
}
case VIEW_TYPE_ITEM: {
- bitmapExecutor.execute(() -> {
+ bindExecutor.execute(() -> {
final long id = getItemId(position);
final String name = cursor.getString(displayNameColumnIndex);
final long size = cursor.getLong(sizeColumnIndex);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileNativeItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileNativeItemViewHolder.java
new file mode 100644
index 000000000..e7adc968a
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileNativeItemViewHolder.java
@@ -0,0 +1,22 @@
+package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
+
+public class FileNativeItemViewHolder extends RecyclerView.ViewHolder {
+
+ private final ItemPickerNativeBinding binding;
+
+ public FileNativeItemViewHolder(@NonNull ItemPickerNativeBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public void bind(Runnable onOpenMajorPicker) {
+ binding.title.setText(R.string.show_all_files);
+ itemView.setOnClickListener((v) -> onOpenMajorPicker.run());
+ }
+}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FilePickerItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FilePickerItemViewHolder.java
deleted file mode 100644
index 2cf012acb..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FilePickerItemViewHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.bumptech.glide.Glide;
-
-import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.databinding.ItemFilterUserBinding;
-
-public class FilePickerItemViewHolder extends RecyclerView.ViewHolder {
-
- private final ItemFilterUserBinding binding;
-
- public FilePickerItemViewHolder(@NonNull ItemFilterUserBinding binding) {
- super(binding.getRoot());
- this.binding = binding;
- }
-
- public void bind(Runnable onOpenMajorPicker) {
- Glide.with(itemView.getContext())
- .load(R.drawable.ic_attach_file_grey600_24dp)
- .into(binding.avatar);
- binding.displayName.setText("Show all files");
- itemView.setOnClickListener((v) -> onOpenMajorPicker.run());
- }
-}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java
index b7f76f3d3..fddd87f51 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java
@@ -17,8 +17,6 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.recyclerview.widget.RecyclerView;
import java.io.IOException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
import java.util.function.Consumer;
import it.niedermann.nextcloud.deck.databinding.ItemAttachmentImageBinding;
@@ -32,8 +30,6 @@ import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
public class GalleryAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolder> {
@NonNull
- private final ExecutorService bitmapExecutor = Executors.newCachedThreadPool();
- @NonNull
private final LifecycleOwner lifecycleOwner;
@SuppressLint("InlinedApi")
@@ -51,8 +47,8 @@ public class GalleryAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
- case VIEW_TYPE_ITEM_PICKER:
- return new GalleryPickerItemViewHolder(ItemPhotoPreviewBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ case VIEW_TYPE_ITEM_NATIVE:
+ return new GalleryPhotoPreviewItemViewHolder(ItemPhotoPreviewBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
case VIEW_TYPE_ITEM:
return new GalleryItemViewHolder(ItemAttachmentImageBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
default:
@@ -64,12 +60,12 @@ public class GalleryAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
- case VIEW_TYPE_ITEM_PICKER: {
- ((GalleryPickerItemViewHolder) holder).bind(openNativePicker, lifecycleOwner);
+ case VIEW_TYPE_ITEM_NATIVE: {
+ ((GalleryPhotoPreviewItemViewHolder) holder).bind(openNativePicker, lifecycleOwner);
break;
}
case VIEW_TYPE_ITEM: {
- bitmapExecutor.execute(() -> {
+ bindExecutor.execute(() -> {
final long id = getItemId(position);
try {
final Bitmap thumbnail;
@@ -94,8 +90,8 @@ public class GalleryAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
@Override
public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
- if(holder instanceof GalleryPickerItemViewHolder) {
- ((GalleryPickerItemViewHolder) holder).unbind();
+ if(holder instanceof GalleryPhotoPreviewItemViewHolder) {
+ ((GalleryPhotoPreviewItemViewHolder) holder).unbind();
}
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPickerItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java
index 6aecfb373..e77503d02 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPickerItemViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java
@@ -16,12 +16,12 @@ import it.niedermann.nextcloud.deck.databinding.ItemPhotoPreviewBinding;
import static androidx.camera.core.CameraSelector.DEFAULT_BACK_CAMERA;
-public class GalleryPickerItemViewHolder extends RecyclerView.ViewHolder {
+public class GalleryPhotoPreviewItemViewHolder extends RecyclerView.ViewHolder {
private final ItemPhotoPreviewBinding binding;
private ProcessCameraProvider cameraProvider;
- public GalleryPickerItemViewHolder(@NonNull ItemPhotoPreviewBinding binding) {
+ public GalleryPhotoPreviewItemViewHolder(@NonNull ItemPhotoPreviewBinding binding) {
super(binding.getRoot());
this.binding = binding;
}