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

@ -48,6 +48,12 @@
android:enabled="true"
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">
<menu>
<item

@ -146,6 +146,7 @@
<string name="filter">Filter</string>
<string name="hide_completed">Hide completed</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_description">Prevents notifications from being swiped away.</string>
<string name="led_notifications">Notification light</string>

@ -334,6 +334,13 @@ public class Habit
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()
{
return data.type == NUMBER_HABIT;

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

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

@ -141,6 +141,16 @@ public class Preferences
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()
{
return Long.parseLong(storage.getString("pref_snooze_interval", "15"));

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

Loading…
Cancel
Save