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:
authorNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2024-01-19 23:51:42 +0300
committerGitHub <noreply@github.com>2024-01-19 23:51:42 +0300
commit3ae26363d56157a0869dd6717ce6e069a4a8cc44 (patch)
tree915b29251d207582d6d5a7666f1eaf720e2870f5 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java
parent8e38a9dbb28630619d40a722c9eff6fc50b30908 (diff)
parent01b4549095a30d5724c09b3d9dc320b71fb24eb4 (diff)
Merge pull request #1563 from stefan-niedermann/mark-card-as-done
feat: Mark card as done
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java
new file mode 100644
index 000000000..d194f78ab
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDoneTypeAdapter.java
@@ -0,0 +1,96 @@
+package it.niedermann.nextcloud.deck.ui.filter;
+
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.Arrays;
+
+import it.niedermann.nextcloud.deck.databinding.ItemFilterDonetypeBinding;
+import it.niedermann.nextcloud.deck.model.enums.EDoneType;
+import it.niedermann.nextcloud.deck.ui.theme.ThemeUtils;
+import it.niedermann.nextcloud.deck.ui.theme.Themed;
+
+public class FilterDoneTypeAdapter extends RecyclerView.Adapter<FilterDoneTypeAdapter.DoneTypeViewHolder> {
+ @NonNull
+ private final EDoneType[] doneTypes = EDoneType.values();
+ private int selectedDoneTypePosition;
+ @Nullable
+ private final SelectionListener<EDoneType> selectionListener;
+ @ColorInt
+ private final int color;
+
+ @SuppressWarnings("WeakerAccess")
+ public FilterDoneTypeAdapter(@NonNull EDoneType selectedDoneType, @Nullable SelectionListener<EDoneType> selectionListener, @ColorInt int color) {
+ super();
+ this.selectedDoneTypePosition = Arrays.binarySearch(doneTypes, selectedDoneType);
+ this.selectionListener = selectionListener;
+ this.color = color;
+ setHasStableIds(true);
+ }
+
+ @NonNull
+ @Override
+ public DoneTypeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new DoneTypeViewHolder(ItemFilterDonetypeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull DoneTypeViewHolder viewHolder, int position) {
+ viewHolder.bind(doneTypes[position]);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public int getItemCount() {
+ return doneTypes.length;
+ }
+
+ class DoneTypeViewHolder extends RecyclerView.ViewHolder implements Themed {
+ private final ItemFilterDonetypeBinding binding;
+
+ DoneTypeViewHolder(@NonNull ItemFilterDonetypeBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ void bind(final EDoneType doneType) {
+ binding.doneType.setText(doneType.toString(binding.doneType.getContext()));
+ itemView.setSelected(doneTypes[selectedDoneTypePosition].equals(doneType));
+ applyTheme(color);
+
+ itemView.setOnClickListener(view -> {
+ final int oldSelection = selectedDoneTypePosition;
+ if (doneTypes[selectedDoneTypePosition].equals(doneType)) {
+ selectedDoneTypePosition = Arrays.binarySearch(doneTypes, EDoneType.NO_FILTER);
+ itemView.setSelected(false);
+ if (selectionListener != null) {
+ selectionListener.onItemSelected(EDoneType.NO_FILTER);
+ }
+ notifyItemChanged(selectedDoneTypePosition);
+ } else {
+ selectedDoneTypePosition = Arrays.binarySearch(doneTypes, doneType);
+ itemView.setSelected(true);
+ if (selectionListener != null) {
+ selectionListener.onItemSelected(doneType);
+ }
+ }
+ notifyItemChanged(oldSelection);
+ });
+ }
+
+ @Override
+ public void applyTheme(int color) {
+ final var utils = ThemeUtils.of(color, itemView.getContext());
+ utils.deck.themeSelectedCheck(binding.selectedCheck.getContext(), binding.selectedCheck.getDrawable());
+ }
+ }
+}