From 6ef2983906c9e12c17c7f974fa9a38660ab8b186 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 29 Jun 2016 20:12:09 -0400 Subject: [PATCH] Implement filter by colors --- .../isoron/uhabits/models/HabitMatcher.java | 17 ++++++++++++-- .../uhabits/models/HabitMatcherBuilder.java | 22 ++++++++++++++++++- .../ui/habits/list/ListHabitsActivity.java | 7 +++++- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/models/HabitMatcher.java b/app/src/main/java/org/isoron/uhabits/models/HabitMatcher.java index f33591a52..dadff87ae 100644 --- a/app/src/main/java/org/isoron/uhabits/models/HabitMatcher.java +++ b/app/src/main/java/org/isoron/uhabits/models/HabitMatcher.java @@ -19,6 +19,10 @@ package org.isoron.uhabits.models; +import android.support.annotation.*; + +import java.util.*; + import static org.isoron.uhabits.models.Checkmark.*; public class HabitMatcher @@ -34,13 +38,22 @@ public class HabitMatcher private final boolean completedAllowed; + private final List allowedColors; + public HabitMatcher(boolean allowArchived, boolean reminderRequired, - boolean completedAllowed) + boolean completedAllowed, + @NonNull List allowedColors) { this.archivedAllowed = allowArchived; this.reminderRequired = reminderRequired; this.completedAllowed = completedAllowed; + this.allowedColors = allowedColors; + } + + public List getAllowedColors() + { + return allowedColors; } public boolean isArchivedAllowed() @@ -65,7 +78,7 @@ public class HabitMatcher int todayCheckmark = habit.getCheckmarks().getTodayValue(); if (todayCheckmark != UNCHECKED && !isCompletedAllowed()) return false; - + if(!allowedColors.contains(habit.getColor())) return false; return true; } } diff --git a/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java b/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java index 9fd99061e..facc8cc4b 100644 --- a/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java +++ b/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java @@ -19,6 +19,10 @@ package org.isoron.uhabits.models; +import org.isoron.uhabits.utils.*; + +import java.util.*; + public class HabitMatcherBuilder { private boolean archivedAllowed = false; @@ -27,10 +31,20 @@ public class HabitMatcherBuilder private boolean completedAllowed = true; + private List allowedColors = allColors(); + + private static List allColors() + { + List colors = new ArrayList<>(); + for(int i = 0; i < ColorUtils.CSV_PALETTE.length; i++) + colors.add(i); + return colors; + } + public HabitMatcher build() { return new HabitMatcher(archivedAllowed, reminderRequired, - completedAllowed); + completedAllowed, allowedColors); } public HabitMatcherBuilder setArchivedAllowed(boolean archivedAllowed) @@ -39,6 +53,12 @@ public class HabitMatcherBuilder return this; } + public HabitMatcherBuilder setAllowedColors(List allowedColors) + { + this.allowedColors = allowedColors; + return this; + } + public HabitMatcherBuilder setCompletedAllowed(boolean completedAllowed) { this.completedAllowed = completedAllowed; diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java index 7109fab8f..d4440c178 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/list/ListHabitsActivity.java @@ -61,9 +61,14 @@ public class ListHabitsActivity extends BaseActivity system = new BaseSystem(this); adapter = new HabitCardListAdapter(habits, checkmarkCount); +// List colors = new ArrayList<>(); +// colors.add(0); +// colors.add(1); +// colors.add(2); +// // HabitMatcher matcher = new HabitMatcherBuilder() -// .setCompletedAllowed(false) // .setArchivedAllowed(false) +// .setAllowedColors(colors) // .build(); // adapter.setFilter(matcher);