Persist previous order correctly

pull/660/head
Quentin Hibon 5 years ago
parent de04e2eed8
commit 3d96c32d16

@ -319,12 +319,23 @@ public class HabitCardListAdapter
preferences.setDefaultOrder(order);
}
@Override
public void setPreviousOrder(HabitList.Order order) {
cache.setPreviousOrder(order);
preferences.setDefaultPreviousOrder(order);
}
@Override
public HabitList.Order getOrder()
{
return cache.getOrder();
}
@Override
public HabitList.Order getPreviousOrder() {
return cache.getPreviousOrder();
}
/**
* Selects or deselects the item at a given position.
*

@ -109,13 +109,22 @@ public abstract class HabitList implements Iterable<Habit>
public abstract Order getOrder();
public abstract Order getPreviousOrder();
/**
* Changes the order of the elements on the list.
*
* @param order the new order criterea
* @param order the new order criterion
*/
public abstract void setOrder(@NonNull Order order);
/**
* Changes the previous order of the elements on the list.
*
* @param order the new order criterion
*/
public abstract void setPreviousOrder(@NonNull Order order);
/**
* Returns the index of the given habit in the list, or -1 if the list does
* not contain the habit.
@ -242,6 +251,8 @@ public abstract class HabitList implements Iterable<Habit>
csv.close();
}
public enum Order
{
BY_NAME_ASC,

@ -113,12 +113,26 @@ public class MemoryHabitList extends HabitList
return order;
}
@Override
public synchronized Order getPreviousOrder()
{
return previousOrder;
}
@Override
public synchronized void setOrder(@NonNull Order order)
{
this.previousOrder = this.order;
this.order = order;
this.comparator = getComposedComparatorByOrder(order, this.previousOrder);
this.comparator = getComposedComparatorByOrder(this.order, this.previousOrder);
resort();
getObservable().notifyListeners();
}
@Override
public void setPreviousOrder(@NonNull Order order)
{
this.previousOrder = order;
this.comparator = getComposedComparatorByOrder(this.order, this.previousOrder);
resort();
getObservable().notifyListeners();
}

@ -121,6 +121,12 @@ public class SQLiteHabitList extends HabitList
return list.getOrder();
}
@Override
public Order getPreviousOrder()
{
return list.getPreviousOrder();
}
@Override
public synchronized void setOrder(@NonNull Order order)
{
@ -128,6 +134,13 @@ public class SQLiteHabitList extends HabitList
getObservable().notifyListeners();
}
@Override
public synchronized void setPreviousOrder(@NonNull Order order)
{
list.setPreviousOrder(order);
getObservable().notifyListeners();
}
@Override
public synchronized int indexOf(@NonNull Habit h)
{

@ -80,6 +80,11 @@ public class Preferences
storage.putString("pref_default_order", order.name());
}
public void setDefaultPreviousOrder(HabitList.Order order)
{
storage.putString("pref_default_previous_order", order.name());
}
public int getDefaultScoreSpinnerPosition()
{
int defaultScoreInterval =

@ -121,6 +121,11 @@ public class HabitCardListCache implements CommandRunner.Listener
return filteredHabits.getOrder();
}
public synchronized HabitList.Order getPreviousOrder()
{
return filteredHabits.getPreviousOrder();
}
public synchronized double getScore(long habitId)
{
return data.scores.get(habitId);
@ -204,6 +209,14 @@ public class HabitCardListCache implements CommandRunner.Listener
refreshAllHabits();
}
public synchronized void setPreviousOrder(@NonNull HabitList.Order order)
{
allHabits.setPreviousOrder(order);
filteredHabits.setPreviousOrder(order);
refreshAllHabits();
}
/**
* Interface definition for a callback to be invoked when the data on the
* cache has been modified.

@ -95,44 +95,43 @@ public class ListHabitsMenuBehavior
updateAdapterFilter();
}
public void onSortByColor()
public void onSortByManually()
{
if (adapter.getOrder() != HabitList.Order.BY_COLOR_ASC) {
adapter.setOrder(HabitList.Order.BY_COLOR_ASC);
} else {
adapter.setOrder(HabitList.Order.BY_COLOR_DESC);
}
adapter.setOrder(HabitList.Order.BY_POSITION);
}
public void onSortByManually()
public void onSortByColor()
{
adapter.setOrder(HabitList.Order.BY_POSITION);
onSortToggleBy(HabitList.Order.BY_COLOR_ASC, HabitList.Order.BY_COLOR_DESC);
}
public void onSortByScore()
{
if (adapter.getOrder() != HabitList.Order.BY_SCORE_DESC) {
adapter.setOrder(HabitList.Order.BY_SCORE_DESC);
} else {
adapter.setOrder(HabitList.Order.BY_SCORE_ASC);
}
onSortToggleBy(HabitList.Order.BY_SCORE_DESC, HabitList.Order.BY_SCORE_ASC);
}
public void onSortByName()
{
if (adapter.getOrder() != HabitList.Order.BY_NAME_ASC) {
adapter.setOrder(HabitList.Order.BY_NAME_ASC);
} else {
adapter.setOrder(HabitList.Order.BY_NAME_DESC);
}
onSortToggleBy(HabitList.Order.BY_NAME_ASC, HabitList.Order.BY_NAME_DESC);
}
public void onSortByStatus()
{
onSortToggleBy(HabitList.Order.BY_STATUS_ASC, HabitList.Order.BY_STATUS_DESC);
}
public void onSortByStatus() {
if (adapter.getOrder() != HabitList.Order.BY_STATUS_ASC) {
adapter.setOrder(HabitList.Order.BY_STATUS_ASC);
private void onSortToggleBy(HabitList.Order defaultOrder, HabitList.Order reversedOrder)
{
if (adapter.getOrder() != defaultOrder) {
if (adapter.getOrder() != reversedOrder) {
adapter.setPreviousOrder(adapter.getOrder());
}
adapter.setOrder(defaultOrder);
} else {
adapter.setOrder(HabitList.Order.BY_STATUS_DESC);
adapter.setOrder(reversedOrder);
}
}
public void onToggleNightMode()
@ -158,7 +157,11 @@ public class ListHabitsMenuBehavior
void setOrder(HabitList.Order order);
void setPreviousOrder(HabitList.Order order);
HabitList.Order getOrder();
HabitList.Order getPreviousOrder();
}
public interface Screen

Loading…
Cancel
Save