From 781b158a58c0948aa2e0e876fbfc141ae89a9245 Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Tue, 21 Jul 2020 14:16:03 +0200 Subject: #615 Add filter "No tags" --- .../sync/adapters/db/DataBaseAdapter.java | 7 +++++- .../deck/ui/filter/FilterLabelsAdapter.java | 27 +++++++++++++++++++++- .../deck/ui/filter/FilterLabelsFragment.java | 22 ++++++++++++++---- .../nextcloud/deck/ui/filter/FilterViewModel.java | 6 +++++ 4 files changed, 55 insertions(+), 7 deletions(-) (limited to 'app/src/main/java/it') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index f69c93b19..74e609ea3 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -192,6 +192,11 @@ public class DataBaseAdapter { query.append("and exists(select 1 from joincardwithlabel j where c.localId = cardId and labelId in ("); fillSqlWithListValues(query, args, filter.getLabels()); query.append(") and j.status<>3) "); + if (filter.isNoAssignedLabel()) { + query.append("or not exists(select 1 from joincardwithlabel j where c.localId = cardId and j.status<>3)) "); + } else { + query.append(") "); + } } if (!filter.getUsers().isEmpty()) { @@ -555,7 +560,7 @@ public class DataBaseAdapter { } private void notifyStackWidgetsIfNeeded(String cardTitle, long... affectedStackIds) { - if (db.getStackWidgetModelDao().containsStackLocalId(affectedStackIds)){ + if (db.getStackWidgetModelDao().containsStackLocalId(affectedStackIds)) { DeckLog.info("Notifying " + StackWidget.class.getSimpleName() + " about card changes for \"" + cardTitle + "\""); StackWidget.notifyDatasetChanged(context); } 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 selectedLabels = new ArrayList<>(); @Nullable + private static final Label NOT_ASSIGNED = null; + @Nullable private final SelectionListener