mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 01:08:50 -06:00
Add order menu
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -39,10 +39,13 @@ public class SQLiteHabitList extends HabitList
|
||||
|
||||
private static SQLiteHabitList instance;
|
||||
|
||||
@NonNull
|
||||
private final SQLiteUtils<HabitRecord> 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
|
||||
|
||||
@@ -45,6 +45,22 @@
|
||||
android:checkable="true"
|
||||
android:enabled="true"
|
||||
android:title="@string/hide_completed"/>
|
||||
|
||||
<item android:title="@string/sort">
|
||||
<menu>
|
||||
<item
|
||||
android:id="@+id/actionSortManual"
|
||||
android:title="@string/manually"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/actionSortName"
|
||||
android:title="@string/by_name"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/actionSortColor"
|
||||
android:title="@string/by_color"/>
|
||||
</menu>
|
||||
</item>
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
@@ -73,5 +89,4 @@
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/about"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
</menu>
|
||||
|
||||
@@ -196,4 +196,9 @@
|
||||
<string name="toggle">Toggle</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="habit">Habit</string>
|
||||
|
||||
<string name="sort">Sort</string>
|
||||
<string name="manually">Manually</string>
|
||||
<string name="by_name">By name</string>
|
||||
<string name="by_color">By color</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user