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-04-24 14:50:30 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-04-24 15:12:11 +0300
commitad1375c0ce2aed19dd2c0058b996a42a4f778878 (patch)
treecac8c7f600e5ea82fed533039101f541741f8a71 /app/src/main/java/it/niedermann/nextcloud/deck/ui/filter
parent7edeb0be0c7faca4c6f264f0fa0fc4d05adfe014 (diff)
#396 Filter cards
Fix memory leak when switching between boards
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/FilterDialogFragment.java29
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/OverdueFilterAdapter.java11
2 files changed, 30 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
index a6bdfdadb..518d56dde 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
@@ -5,10 +5,9 @@ import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
-import android.widget.LinearLayout;
import androidx.annotation.NonNull;
-import androidx.annotation.Px;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
@@ -16,6 +15,7 @@ import androidx.lifecycle.ViewModelProvider;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogFilterBinding;
import it.niedermann.nextcloud.deck.model.Account;
+import it.niedermann.nextcloud.deck.model.enums.EDueType;
import it.niedermann.nextcloud.deck.model.internal.FilterInformation;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.MainActivity;
@@ -38,10 +38,6 @@ public class FilterDialogFragment extends BrandedDialogFragment {
private OverdueFilterAdapter overdueAdapter;
private FilterInformation filterInformation;
- @Px
- private int avatarSize;
- private LinearLayout.LayoutParams avatarLayoutParams;
-
private Account account;
private long boardId;
@@ -79,8 +75,7 @@ public class FilterDialogFragment extends BrandedDialogFragment {
}
final AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
-
- SyncManager syncManager = new SyncManager(requireActivity());
+ final SyncManager syncManager = new SyncManager(requireActivity());
binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
@@ -95,7 +90,7 @@ public class FilterDialogFragment extends BrandedDialogFragment {
@Override
public void onNothingSelected(AdapterView<?> parent) {
- filterInformation.setDueType(null);
+ filterInformation.setDueType(EDueType.NO_FILTER);
}
});
@@ -119,9 +114,11 @@ public class FilterDialogFragment extends BrandedDialogFragment {
.setPositiveButton(R.string.simple_filter, (a, b) -> {
filterInformation.clearLabels();
filterInformation.addAllLabels(labelAdapter.getSelected());
+
filterInformation.clearUsers();
filterInformation.addAllUsers(userAdapter.getSelected());
- viewModel.postFilterInformation(filterInformation);
+
+ viewModel.postFilterInformation(hasActiveFilter(filterInformation) ? filterInformation : null);
})
.create();
}
@@ -141,4 +138,16 @@ public class FilterDialogFragment extends BrandedDialogFragment {
public void applyBrand(int mainColor, int textColor) {
}
+
+ /**
+ * @return whether or not the given filterInformation has any actual filters set
+ */
+ private static boolean hasActiveFilter(@Nullable FilterInformation filterInformation) {
+ if (filterInformation == null) {
+ return false;
+ }
+ return (filterInformation.getDueType() != null && filterInformation.getDueType() != EDueType.NO_FILTER)
+ || filterInformation.getUsers().size() > 0
+ || filterInformation.getLabels().size() > 0;
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/OverdueFilterAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/OverdueFilterAdapter.java
index 71b351e39..5de6c50c8 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/OverdueFilterAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/OverdueFilterAdapter.java
@@ -37,6 +37,17 @@ public class OverdueFilterAdapter extends ArrayAdapter<EDueType> {
return getView(position, convertView, parent);
}
+ @NonNull
+ @Override
+ public EDueType getItem(int position) {
+ EDueType item = super.getItem(position);
+ if (item != null) {
+ return item;
+ } else {
+ return EDueType.NO_FILTER;
+ }
+ }
+
@NotNull
@Override
public View getView(int position, View convertView, @NotNull ViewGroup parent) {