add extra filter to hide entered habits

pull/610/head
KristianTashkov 5 years ago
parent e7f0f59379
commit c4be9794da

@ -88,6 +88,11 @@ public abstract class ListHabitsSteps
clickViewWithId(R.id.action_filter); clickViewWithId(R.id.action_filter);
clickText(R.string.hide_completed); clickText(R.string.hide_completed);
break; break;
case TOGGLE_ENTERED:
clickViewWithId(R.id.action_filter);
clickText(R.string.hide_entered);
break;
} }
} }
@ -156,6 +161,6 @@ public abstract class ListHabitsSteps
public enum MenuItem public enum MenuItem
{ {
ABOUT, HELP, SETTINGS, EDIT, DELETE, ARCHIVE, TOGGLE_ARCHIVED, ABOUT, HELP, SETTINGS, EDIT, DELETE, ARCHIVE, TOGGLE_ARCHIVED,
UNARCHIVE, TOGGLE_COMPLETED, ADD UNARCHIVE, TOGGLE_COMPLETED, TOGGLE_ENTERED, ADD
} }
} }

@ -39,10 +39,12 @@ class ListHabitsMenu @Inject constructor(
val nightModeItem = menu.findItem(R.id.actionToggleNightMode) val nightModeItem = menu.findItem(R.id.actionToggleNightMode)
val hideArchivedItem = menu.findItem(R.id.actionHideArchived) val hideArchivedItem = menu.findItem(R.id.actionHideArchived)
val hideCompletedItem = menu.findItem(R.id.actionHideCompleted) val hideCompletedItem = menu.findItem(R.id.actionHideCompleted)
val hideEnteredItem = menu.findItem(R.id.actionHideEntered)
nightModeItem.isChecked = themeSwitcher.isNightMode nightModeItem.isChecked = themeSwitcher.isNightMode
hideArchivedItem.isChecked = !preferences.showArchived hideArchivedItem.isChecked = !preferences.showArchived
hideCompletedItem.isChecked = !preferences.showCompleted hideCompletedItem.isChecked = !preferences.showCompleted
hideEnteredItem.isChecked = !preferences.showEntered
} }
override fun onItemSelected(item: MenuItem): Boolean { override fun onItemSelected(item: MenuItem): Boolean {
@ -84,6 +86,12 @@ class ListHabitsMenu @Inject constructor(
return true return true
} }
R.id.actionHideEntered -> {
behavior.onToggleShowEntered()
invalidate()
return true
}
R.id.actionSortColor -> { R.id.actionSortColor -> {
behavior.onSortByColor() behavior.onSortByColor()
return true return true

@ -48,6 +48,12 @@
android:enabled="true" android:enabled="true"
android:title="@string/hide_completed"/> android:title="@string/hide_completed"/>
<item
android:id="@+id/actionHideEntered"
android:checkable="true"
android:enabled="true"
android:title="@string/hide_entered"/>
<item android:title="@string/sort"> <item android:title="@string/sort">
<menu> <menu>
<item <item

@ -146,6 +146,7 @@
<string name="filter">Filter</string> <string name="filter">Filter</string>
<string name="hide_completed">Hide completed</string> <string name="hide_completed">Hide completed</string>
<string name="hide_archived">Hide archived</string> <string name="hide_archived">Hide archived</string>
<string name="hide_entered">Hide entered</string>
<string name="sticky_notifications">Make notifications sticky</string> <string name="sticky_notifications">Make notifications sticky</string>
<string name="sticky_notifications_description">Prevents notifications from being swiped away.</string> <string name="sticky_notifications_description">Prevents notifications from being swiped away.</string>
<string name="led_notifications">Notification light</string> <string name="led_notifications">Notification light</string>

@ -334,6 +334,13 @@ public class Habit
else return (todayCheckmark != UNCHECKED && todayCheckmark != UNCHECKED_EXPLICITLY_NECESSARY); else return (todayCheckmark != UNCHECKED && todayCheckmark != UNCHECKED_EXPLICITLY_NECESSARY);
} }
public synchronized boolean isEnteredToday()
{
int todayCheckmark = getCheckmarks().getTodayValue();
if (isNumerical()) return todayCheckmark > 0;
else return (todayCheckmark != UNCHECKED && todayCheckmark != CHECKED_IMPLICITLY);
}
public synchronized boolean isNumerical() public synchronized boolean isNumerical()
{ {
return data.type == NUMBER_HABIT; return data.type == NUMBER_HABIT;

@ -32,13 +32,17 @@ public class HabitMatcher
private final boolean completedAllowed; private final boolean completedAllowed;
private final boolean enteredAllowed;
public HabitMatcher(boolean allowArchived, public HabitMatcher(boolean allowArchived,
boolean reminderRequired, boolean reminderRequired,
boolean completedAllowed) boolean completedAllowed,
boolean enteredAllowed)
{ {
this.archivedAllowed = allowArchived; this.archivedAllowed = allowArchived;
this.reminderRequired = reminderRequired; this.reminderRequired = reminderRequired;
this.completedAllowed = completedAllowed; this.completedAllowed = completedAllowed;
this.enteredAllowed = enteredAllowed;
} }
public boolean isArchivedAllowed() public boolean isArchivedAllowed()
@ -51,6 +55,11 @@ public class HabitMatcher
return completedAllowed; return completedAllowed;
} }
public boolean isEnteredAllowed()
{
return enteredAllowed;
}
public boolean isReminderRequired() public boolean isReminderRequired()
{ {
return reminderRequired; return reminderRequired;
@ -61,6 +70,7 @@ public class HabitMatcher
if (!isArchivedAllowed() && habit.isArchived()) return false; if (!isArchivedAllowed() && habit.isArchived()) return false;
if (isReminderRequired() && !habit.hasReminder()) return false; if (isReminderRequired() && !habit.hasReminder()) return false;
if (!isCompletedAllowed() && habit.isCompletedToday()) return false; if (!isCompletedAllowed() && habit.isCompletedToday()) return false;
if (!isEnteredAllowed() && habit.isEnteredToday()) return false;
return true; return true;
} }
} }

@ -27,10 +27,12 @@ public class HabitMatcherBuilder
private boolean completedAllowed = true; private boolean completedAllowed = true;
private boolean enteredAllowed = true;
public HabitMatcher build() public HabitMatcher build()
{ {
return new HabitMatcher(archivedAllowed, reminderRequired, return new HabitMatcher(archivedAllowed, reminderRequired,
completedAllowed); completedAllowed, enteredAllowed);
} }
public HabitMatcherBuilder setArchivedAllowed(boolean archivedAllowed) public HabitMatcherBuilder setArchivedAllowed(boolean archivedAllowed)
@ -45,6 +47,12 @@ public class HabitMatcherBuilder
return this; return this;
} }
public HabitMatcherBuilder setEnteredAllowed(boolean enteredAllowed)
{
this.enteredAllowed = enteredAllowed;
return this;
}
public HabitMatcherBuilder setReminderRequired(boolean reminderRequired) public HabitMatcherBuilder setReminderRequired(boolean reminderRequired)
{ {
this.reminderRequired = reminderRequired; this.reminderRequired = reminderRequired;

@ -141,6 +141,16 @@ public class Preferences
storage.putBoolean("pref_show_completed", showCompleted); storage.putBoolean("pref_show_completed", showCompleted);
} }
public boolean getShowEntered()
{
return storage.getBoolean("pref_show_entered", true);
}
public void setShowEntered(boolean showEntered)
{
storage.putBoolean("pref_show_entered", showEntered);
}
public long getSnoozeInterval() public long getSnoozeInterval()
{ {
return Long.parseLong(storage.getString("pref_snooze_interval", "15")); return Long.parseLong(storage.getString("pref_snooze_interval", "15"));

@ -45,6 +45,8 @@ public class ListHabitsMenuBehavior
private boolean showArchived; private boolean showArchived;
private boolean showEntered;
@Inject @Inject
public ListHabitsMenuBehavior(@NonNull Screen screen, public ListHabitsMenuBehavior(@NonNull Screen screen,
@NonNull Adapter adapter, @NonNull Adapter adapter,
@ -58,6 +60,7 @@ public class ListHabitsMenuBehavior
showCompleted = preferences.getShowCompleted(); showCompleted = preferences.getShowCompleted();
showArchived = preferences.getShowArchived(); showArchived = preferences.getShowArchived();
showEntered = preferences.getShowEntered();
updateAdapterFilter(); updateAdapterFilter();
} }
@ -95,6 +98,13 @@ public class ListHabitsMenuBehavior
updateAdapterFilter(); updateAdapterFilter();
} }
public void onToggleShowEntered()
{
showEntered = !showEntered;
preferences.setShowEntered(showEntered);
updateAdapterFilter();
}
public void onSortByColor() public void onSortByColor()
{ {
if (adapter.getOrder() != HabitList.Order.BY_COLOR_ASC) { if (adapter.getOrder() != HabitList.Order.BY_COLOR_ASC) {
@ -138,6 +148,7 @@ public class ListHabitsMenuBehavior
adapter.setFilter(new HabitMatcherBuilder() adapter.setFilter(new HabitMatcherBuilder()
.setArchivedAllowed(showArchived) .setArchivedAllowed(showArchived)
.setCompletedAllowed(showCompleted) .setCompletedAllowed(showCompleted)
.setEnteredAllowed(showEntered)
.build()); .build());
adapter.refresh(); adapter.refresh();
} }

Loading…
Cancel
Save