use of it.niedermann.android.sharedpreferences.SharedPreferenceIntLiveData in project nextcloud-notes by stefan-niedermann.
the class NotesRepository method getCategoryOrder.
/**
* Gets the sorting method of a {@link NavigationCategory}, the category can be normal
* {@link CategoryOptions} or one of {@link ENavigationCategoryType}.
* If the category no normal {@link CategoryOptions}, sorting method will be got from
* {@link SharedPreferences}.
* <p>
* The sorting method of the category can be used to decide to use which sorting method to show
* the notes for each categories.
*
* @param selectedCategory The category
* @return The sorting method in CategorySortingMethod enum format
*/
@NonNull
@MainThread
public LiveData<CategorySortingMethod> getCategoryOrder(@NonNull NavigationCategory selectedCategory) {
final var sp = PreferenceManager.getDefaultSharedPreferences(context);
String prefKey;
switch(selectedCategory.getType()) {
// TODO make this account specific
case RECENT:
{
prefKey = context.getString(R.string.action_sorting_method) + ' ' + context.getString(R.string.label_all_notes);
break;
}
case FAVORITES:
{
prefKey = context.getString(R.string.action_sorting_method) + ' ' + context.getString(R.string.label_favorites);
break;
}
case UNCATEGORIZED:
{
prefKey = context.getString(R.string.action_sorting_method) + ' ' + context.getString(R.string.action_uncategorized);
break;
}
case DEFAULT_CATEGORY:
default:
{
final String category = selectedCategory.getCategory();
if (category != null) {
return db.getCategoryOptionsDao().getCategoryOrder(selectedCategory.getAccountId(), category);
} else {
Log.e(TAG, "Cannot read " + CategorySortingMethod.class.getSimpleName() + " for " + ENavigationCategoryType.DEFAULT_CATEGORY + ".");
return new MutableLiveData<>(CategorySortingMethod.SORT_MODIFIED_DESC);
}
}
}
return map(new SharedPreferenceIntLiveData(sp, prefKey, CategorySortingMethod.SORT_MODIFIED_DESC.getId()), CategorySortingMethod::findById);
}
Aggregations