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-07-21 15:16:03 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-07-21 21:22:40 +0300
commit781b158a58c0948aa2e0e876fbfc141ae89a9245 (patch)
tree2deea75f5a6753492402b51db28aa4d1b786f7a2 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter
parentec11924585d21889cfb9588bbda89932d81173fb (diff)
#615 Add filter "No tags"
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/filter')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java27
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java22
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterViewModel.java6
3 files changed, 49 insertions, 6 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
index 096f0db9c..17d3599e7 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsAdapter.java
@@ -7,11 +7,13 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
+import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemFilterLabelBinding;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.util.ColorUtil;
@@ -23,11 +25,16 @@ public class FilterLabelsAdapter extends RecyclerView.Adapter<FilterLabelsAdapte
@NonNull
private final List<Label> selectedLabels = new ArrayList<>();
@Nullable
+ private static final Label NOT_ASSIGNED = null;
+ @Nullable
private final SelectionListener<Label> selectionListener;
- public FilterLabelsAdapter(@NonNull List<Label> labels, @NonNull List<Label> selectedLabels, @Nullable SelectionListener<Label> selectionListener) {
+ public FilterLabelsAdapter(@NonNull List<Label> labels, @NonNull List<Label> selectedLabels, boolean noAssignedLabel, @Nullable SelectionListener<Label> selectionListener) {
super();
this.labels.addAll(labels);
+ if (noAssignedLabel) {
+ this.selectedLabels.add(NOT_ASSIGNED);
+ }
this.selectedLabels.addAll(selectedLabels);
this.selectionListener = selectionListener;
setHasStableIds(true);
@@ -47,7 +54,13 @@ public class FilterLabelsAdapter extends RecyclerView.Adapter<FilterLabelsAdapte
@Override
public void onBindViewHolder(@NonNull LabelViewHolder viewHolder, int position) {
+ final Label label = labels.get(position);
viewHolder.bind(labels.get(position));
+ if (position == 0) {
+ viewHolder.bindNotAssigned(label);
+ } else {
+ viewHolder.bind(label);
+ }
}
@Override
@@ -74,7 +87,19 @@ public class FilterLabelsAdapter extends RecyclerView.Adapter<FilterLabelsAdapte
final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
binding.label.setTextColor(color);
itemView.setSelected(selectedLabels.contains(label));
+ bindClickListener(label);
+ }
+
+ public void bindNotAssigned(Label label) {
+ binding.label.setText(itemView.getContext().getString(R.string.no_assigned_label));
+ binding.label.setTextColor(ColorStateList.valueOf(ContextCompat.getColor(itemView.getContext(), R.color.accent)));
+ binding.label.setChipIcon(ContextCompat.getDrawable(itemView.getContext(), R.drawable.ic_baseline_block_24));
+ binding.label.setChipBackgroundColor(ColorStateList.valueOf(ContextCompat.getColor(itemView.getContext(), android.R.color.transparent)));
+ binding.label.setRippleColor(null);
+ bindClickListener(label);
+ }
+ private void bindClickListener(@Nullable Label label) {
itemView.setOnClickListener(view -> {
if (selectedLabels.contains(label)) {
selectedLabels.remove(label);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
index 357f93cf9..fadf33b88 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterLabelsFragment.java
@@ -33,19 +33,31 @@ public class FilterLabelsFragment extends Fragment implements SelectionListener<
observeOnce(new SyncManager(requireContext()).findProposalsForLabelsToAssign(mainViewModel.getCurrentAccount().getId(), mainViewModel.getCurrentBoardLocalId()), requireActivity(), (labels) -> {
binding.labels.setNestedScrollingEnabled(false);
- binding.labels.setAdapter(new FilterLabelsAdapter(labels, requireNonNull(filterViewModel.getFilterInformationDraft().getValue()).getLabels(), this));
+ binding.labels.setAdapter(new FilterLabelsAdapter(
+ labels,
+ requireNonNull(filterViewModel.getFilterInformationDraft().getValue()).getLabels(),
+ requireNonNull(filterViewModel.getFilterInformationDraft().getValue()).isNoAssignedLabel(),
+ this));
});
return binding.getRoot();
}
@Override
- public void onItemSelected(Label item) {
- filterViewModel.addFilterInformationDraftLabel(item);
+ public void onItemSelected(@Nullable Label item) {
+ if (item == null) {
+ filterViewModel.setNotAssignedLabel(true);
+ } else {
+ filterViewModel.addFilterInformationDraftLabel(item);
+ }
}
@Override
- public void onItemDeselected(Label item) {
- filterViewModel.removeFilterInformationLabel(item);
+ public void onItemDeselected(@Nullable Label item) {
+ if (item == null) {
+ filterViewModel.setNotAssignedLabel(false);
+ } else {
+ filterViewModel.removeFilterInformationLabel(item);
+ }
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterViewModel.java
index 121df3387..50f287d62 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterViewModel.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterViewModel.java
@@ -72,6 +72,12 @@ public class FilterViewModel extends ViewModel {
this.filterInformationDraft.postValue(newDraft);
}
+ public void setNotAssignedLabel(boolean notAssignedLabel) {
+ FilterInformation newDraft = new FilterInformation(filterInformationDraft.getValue());
+ newDraft.setNoAssignedLabel(notAssignedLabel);
+ this.filterInformationDraft.postValue(newDraft);
+ }
+
public void removeFilterInformationLabel(@NonNull Label label) {
FilterInformation newDraft = new FilterInformation(filterInformationDraft.getValue());
newDraft.removeLabel(label);