mirror of
https://github.com/SimpleMobileTools/Simple-Notes.git
synced 2025-03-23 20:10:07 +01:00
Persist sort state globally
This commit is contained in:
parent
a90bfb9a0a
commit
17579ac451
@ -7,16 +7,32 @@ import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.notes.pro.R
|
||||
import com.simplemobiletools.notes.pro.activities.SimpleActivity
|
||||
import com.simplemobiletools.notes.pro.extensions.config
|
||||
import com.simplemobiletools.notes.pro.models.ChecklistSort
|
||||
import com.simplemobiletools.notes.pro.models.ChecklistSortDirection
|
||||
import com.simplemobiletools.notes.pro.models.ChecklistSortField
|
||||
import kotlinx.android.synthetic.main.dialog_sort_checklist.view.separate_items_checkbox
|
||||
import kotlinx.android.synthetic.main.dialog_sort_checklist.view.sort_direction_type
|
||||
import kotlinx.android.synthetic.main.dialog_sort_checklist.view.sort_field_type
|
||||
import kotlinx.android.synthetic.main.dialog_sort_checklist.view.*
|
||||
|
||||
class SortChecklistDialog(private val activity: SimpleActivity, val callback: (ChecklistSort) -> Unit) {
|
||||
init {
|
||||
val view = (activity.layoutInflater.inflate(R.layout.dialog_sort_checklist, null) as ViewGroup)
|
||||
val config = activity.config
|
||||
val view = (activity.layoutInflater.inflate(R.layout.dialog_sort_checklist, null) as ViewGroup).apply {
|
||||
sort_field_type.check(
|
||||
when (config.checklistSortField) {
|
||||
ChecklistSortField.TITLE -> sort_field_title.id
|
||||
ChecklistSortField.DATE_CREATED -> sort_field_date_created.id
|
||||
}
|
||||
)
|
||||
|
||||
sort_direction_type.check(
|
||||
when (config.checklistSortDirection) {
|
||||
ChecklistSortDirection.ASCENDING -> sort_direction_asc.id
|
||||
ChecklistSortDirection.DESCENDING -> sort_direction_desc.id
|
||||
}
|
||||
)
|
||||
|
||||
separate_done_from_undone.isChecked = config.checklistSeparateDoneFromUndone
|
||||
}
|
||||
|
||||
AlertDialog.Builder(activity)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
@ -24,13 +40,13 @@ class SortChecklistDialog(private val activity: SimpleActivity, val callback: (C
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this, R.string.sort_checklist) {
|
||||
getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener {
|
||||
callback.invoke(
|
||||
ChecklistSort(
|
||||
field = getSortField(view),
|
||||
direction = getSortDirection(view),
|
||||
separateCheckedFromUnchecked = view.separate_items_checkbox.isChecked
|
||||
)
|
||||
)
|
||||
val sortField = getSortField(view)
|
||||
val sortDirection = getSortDirection(view)
|
||||
val separateDoneFromUndone = view.separate_done_from_undone.isChecked
|
||||
config.checklistSortField = sortField
|
||||
config.checklistSortDirection = sortDirection
|
||||
config.checklistSeparateDoneFromUndone = separateDoneFromUndone
|
||||
callback.invoke(ChecklistSort(sortField, sortDirection, separateDoneFromUndone))
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,8 @@ import android.content.Context
|
||||
import android.os.Environment
|
||||
import android.view.Gravity
|
||||
import com.simplemobiletools.commons.helpers.BaseConfig
|
||||
import com.simplemobiletools.notes.pro.models.ChecklistSortDirection
|
||||
import com.simplemobiletools.notes.pro.models.ChecklistSortField
|
||||
|
||||
class Config(context: Context) : BaseConfig(context) {
|
||||
companion object {
|
||||
@ -93,4 +95,16 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
var addNewChecklistItemsTop: Boolean
|
||||
get() = prefs.getBoolean(ADD_NEW_CHECKLIST_ITEMS_TOP, false)
|
||||
set(addNewCheckListItemsTop) = prefs.edit().putBoolean(ADD_NEW_CHECKLIST_ITEMS_TOP, addNewCheckListItemsTop).apply()
|
||||
|
||||
var checklistSortField: ChecklistSortField
|
||||
get() = ChecklistSortField.valueOf(prefs.getString(CHECKLIST_SORT_FIELD, ChecklistSortField.TITLE.name)!!)
|
||||
set(sortField) = prefs.edit().putString(CHECKLIST_SORT_FIELD, sortField.name).apply()
|
||||
|
||||
var checklistSortDirection: ChecklistSortDirection
|
||||
get() = ChecklistSortDirection.valueOf(prefs.getString(CHECKLIST_SORT_DIRECTION, ChecklistSortDirection.ASCENDING.name)!!)
|
||||
set(sortDirection) = prefs.edit().putString(CHECKLIST_SORT_DIRECTION, sortDirection.name).apply()
|
||||
|
||||
var checklistSeparateDoneFromUndone: Boolean
|
||||
get() = prefs.getBoolean(CHECKLIST_SEPARATE_DONE_FROM_UNDONE, false)
|
||||
set(separate) = prefs.edit().putBoolean(CHECKLIST_SEPARATE_DONE_FROM_UNDONE, separate).apply()
|
||||
}
|
||||
|
@ -32,6 +32,9 @@ const val LAST_CREATED_NOTE_TYPE = "last_created_note_type"
|
||||
const val MOVE_DONE_CHECKLIST_ITEMS = "move_undone_checklist_items" // it has been replaced from moving undone items at the top to moving done to bottom
|
||||
const val FONT_SIZE_PERCENTAGE = "font_size_percentage"
|
||||
const val ADD_NEW_CHECKLIST_ITEMS_TOP = "add_new_checklist_items_top"
|
||||
const val CHECKLIST_SORT_FIELD = "checklist_sort_field"
|
||||
const val CHECKLIST_SORT_DIRECTION = "checklist_sort_direction"
|
||||
const val CHECKLIST_SEPARATE_DONE_FROM_UNDONE = "checklist_done_from_undone"
|
||||
|
||||
// gravity
|
||||
const val GRAVITY_LEFT = 0
|
||||
|
@ -3,13 +3,9 @@ package com.simplemobiletools.notes.pro.models
|
||||
data class ChecklistSort(
|
||||
val field: ChecklistSortField,
|
||||
val direction: ChecklistSortDirection,
|
||||
val separateCheckedFromUnchecked: Boolean,
|
||||
val separateDoneFromUndone: Boolean,
|
||||
) {
|
||||
|
||||
companion object {
|
||||
val DEFAULT = ChecklistSort(ChecklistSortField.TITLE, ChecklistSortDirection.ASCENDING, false)
|
||||
}
|
||||
|
||||
fun getSortComparator(): Comparator<ChecklistItem> {
|
||||
return when (field) {
|
||||
ChecklistSortField.TITLE -> compareWithSortDirection { it.title }
|
||||
@ -19,8 +15,10 @@ data class ChecklistSort(
|
||||
|
||||
private fun compareWithSortDirection(compareFunc: (ChecklistItem) -> Comparable<*>): Comparator<ChecklistItem> {
|
||||
return when (direction) {
|
||||
ChecklistSortDirection.ASCENDING -> if(separateCheckedFromUnchecked) compareBy<ChecklistItem> { it.isDone }.thenBy(compareFunc) else compareBy(compareFunc)
|
||||
ChecklistSortDirection.DESCENDING -> if(separateCheckedFromUnchecked) compareByDescending<ChecklistItem> { it.isDone }.thenByDescending(compareFunc) else compareByDescending(compareFunc)
|
||||
ChecklistSortDirection.ASCENDING -> if (separateDoneFromUndone) compareBy({ it.isDone }, compareFunc) else compareBy(compareFunc)
|
||||
ChecklistSortDirection.DESCENDING -> if (separateDoneFromUndone) compareByDescending<ChecklistItem> { it.isDone }.thenByDescending(compareFunc) else compareByDescending(
|
||||
compareFunc
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,10 +72,10 @@
|
||||
</RadioGroup>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/separate_items_checkbox"
|
||||
android:id="@+id/separate_done_from_undone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:text="@string/sort_separate_checked_from_unchecked" />
|
||||
android:text="@string/sort_separate_done_from_undone" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -63,6 +63,9 @@
|
||||
<string name="add_new_checklist_items">Add new checklist items</string>
|
||||
<string name="checklist_is_empty">The checklist is empty</string>
|
||||
<string name="remove_done_items">Remove done items</string>
|
||||
<string name="sort_direction">Sort direction</string>
|
||||
<string name="sort_separate_done_from_undone">Separate done items from undone items</string>
|
||||
<string name="sort_checklist">Sort checklist</string>
|
||||
|
||||
<!-- Import / Export -->
|
||||
<string name="export_all_notes">Export all notes as files</string>
|
||||
@ -109,9 +112,6 @@
|
||||
<b>Reddit:</b>
|
||||
https://www.reddit.com/r/SimpleMobileTools
|
||||
</string>
|
||||
<string name="sort_direction">Sort direction</string>
|
||||
<string name="sort_separate_checked_from_unchecked">Separately sort checked from unchecked items</string>
|
||||
<string name="sort_checklist">Sort checklist</string>
|
||||
|
||||
<!--
|
||||
Haven't found some strings? There's more at
|
||||
|
Loading…
x
Reference in New Issue
Block a user