From 222261c674d6498e01f730c2aeffe5ea9d17ab71 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 23 Nov 2016 06:35:07 -0500 Subject: [PATCH] Add order menu --- .../activities/habits/list/ListHabitsMenu.java | 12 ++++++++++++ .../habits/list/model/HabitCardListAdapter.java | 5 +++++ .../habits/list/model/HabitCardListCache.java | 7 +++++++ .../uhabits/models/sqlite/SQLiteHabitList.java | 10 +++++++--- app/src/main/res/menu/list_habits.xml | 17 ++++++++++++++++- app/src/main/res/values/strings.xml | 5 +++++ 6 files changed, 52 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.java index dc8fe057d..78cb2a4dc 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsMenu.java @@ -112,6 +112,18 @@ public class ListHabitsMenu extends BaseMenu invalidate(); return true; + case R.id.actionSortColor: + adapter.setOrder(HabitList.Order.BY_COLOR); + return true; + + case R.id.actionSortManual: + adapter.setOrder(HabitList.Order.BY_POSITION); + return true; + + case R.id.actionSortName: + adapter.setOrder(HabitList.Order.BY_NAME); + return true; + default: return false; } diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java index 71480dee6..f190c647e 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java @@ -260,6 +260,11 @@ public class HabitCardListAdapter this.listView = listView; } + public void setOrder(HabitList.Order order) + { + cache.setOrder(order); + } + /** * Selects or deselects the item at a given position. * diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java index 56356ec3f..fb059be95 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java @@ -180,6 +180,13 @@ public class HabitCardListCache implements CommandRunner.Listener this.listener = listener; } + public void setOrder(HabitList.Order order) + { + allHabits.setOrder(order); + filteredHabits.setOrder(order); + refreshAllHabits(); + } + /** * Interface definition for a callback to be invoked when the data on the * cache has been modified. diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java index dde89c7a0..4dcd03705 100644 --- a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java +++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java @@ -39,10 +39,13 @@ public class SQLiteHabitList extends HabitList private static SQLiteHabitList instance; + @NonNull private final SQLiteUtils sqlite; + @NonNull private final ModelFactory modelFactory; + @NonNull private Order order; public SQLiteHabitList(@NonNull ModelFactory modelFactory) @@ -56,14 +59,15 @@ public class SQLiteHabitList extends HabitList } protected SQLiteHabitList(@NonNull ModelFactory modelFactory, - @NonNull HabitMatcher filter) + @NonNull HabitMatcher filter, + @NonNull Order order) { super(filter); this.modelFactory = modelFactory; if (cache == null) cache = new HashMap<>(); sqlite = new SQLiteUtils<>(HabitRecord.class); - order = Order.BY_POSITION; + this.order = order; } public static SQLiteHabitList getInstance( @@ -122,7 +126,7 @@ public class SQLiteHabitList extends HabitList @Override public HabitList getFiltered(HabitMatcher filter) { - return new SQLiteHabitList(modelFactory, filter); + return new SQLiteHabitList(modelFactory, filter, order); } @Override diff --git a/app/src/main/res/menu/list_habits.xml b/app/src/main/res/menu/list_habits.xml index 3f50f4131..574fab101 100644 --- a/app/src/main/res/menu/list_habits.xml +++ b/app/src/main/res/menu/list_habits.xml @@ -45,6 +45,22 @@ android:checkable="true" android:enabled="true" android:title="@string/hide_completed"/> + + + + + + + + + + @@ -73,5 +89,4 @@ android:orderInCategory="100" android:title="@string/about" app:showAsAction="never"/> - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d4ac16b9a..763565762 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -196,4 +196,9 @@ Toggle Action Habit + + Sort + Manually + By name + By color \ No newline at end of file