Added custom sorting (#464)

This commit is contained in:
Agnieszka C 2021-10-12 15:49:30 +02:00
parent fd14f01f1f
commit 23cdd2511b
4 changed files with 42 additions and 7 deletions

View File

@ -15,6 +15,7 @@ import com.simplemobiletools.commons.extensions.applyColorFilter
import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
import com.simplemobiletools.commons.extensions.removeBit import com.simplemobiletools.commons.extensions.removeBit
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
import com.simplemobiletools.commons.interfaces.ItemMoveCallback import com.simplemobiletools.commons.interfaces.ItemMoveCallback
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
import com.simplemobiletools.commons.interfaces.StartReorderDragListener import com.simplemobiletools.commons.interfaces.StartReorderDragListener
@ -209,6 +210,7 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList<Checkl
} }
override fun onRowMoved(fromPosition: Int, toPosition: Int) { override fun onRowMoved(fromPosition: Int, toPosition: Int) {
activity.config.sorting = SORT_BY_CUSTOM
if (fromPosition < toPosition) { if (fromPosition < toPosition) {
for (i in fromPosition until toPosition) { for (i in fromPosition until toPosition) {
Collections.swap(items, i, i + 1) Collections.swap(items, i, i + 1)

View File

@ -1,7 +1,9 @@
package com.simplemobiletools.notes.pro.dialogs package com.simplemobiletools.notes.pro.dialogs
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_CREATED import com.simplemobiletools.commons.helpers.SORT_BY_DATE_CREATED
import com.simplemobiletools.commons.helpers.SORT_BY_TITLE import com.simplemobiletools.commons.helpers.SORT_BY_TITLE
import com.simplemobiletools.commons.helpers.SORT_DESCENDING import com.simplemobiletools.commons.helpers.SORT_DESCENDING
@ -29,12 +31,24 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
private fun setupSortRadio() { private fun setupSortRadio() {
val fieldRadio = view.sorting_dialog_radio_sorting val fieldRadio = view.sorting_dialog_radio_sorting
fieldRadio.setOnCheckedChangeListener { group, checkedId ->
val isCustomSorting = checkedId == fieldRadio.sorting_dialog_radio_custom.id
view.sorting_dialog_radio_order.beVisibleIf(!isCustomSorting)
view.sorting_dialog_order_divider.beVisibleIf(!isCustomSorting)
view.move_undone_checklist_items_divider.beVisibleIf((!isCustomSorting))
view.settings_move_undone_checklist_items_holder.beVisibleIf(!isCustomSorting)
}
var fieldBtn = fieldRadio.sorting_dialog_radio_title var fieldBtn = fieldRadio.sorting_dialog_radio_title
if (currSorting and SORT_BY_DATE_CREATED != 0) { if (currSorting and SORT_BY_DATE_CREATED != 0) {
fieldBtn = fieldRadio.sorting_dialog_radio_date_created fieldBtn = fieldRadio.sorting_dialog_radio_date_created
} }
if (currSorting and SORT_BY_CUSTOM != 0) {
fieldBtn = fieldRadio.sorting_dialog_radio_custom
}
fieldBtn.isChecked = true fieldBtn.isChecked = true
} }
@ -60,10 +74,12 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
val sortingRadio = view.sorting_dialog_radio_sorting val sortingRadio = view.sorting_dialog_radio_sorting
var sorting = when (sortingRadio.checkedRadioButtonId) { var sorting = when (sortingRadio.checkedRadioButtonId) {
R.id.sorting_dialog_radio_date_created -> SORT_BY_DATE_CREATED R.id.sorting_dialog_radio_date_created -> SORT_BY_DATE_CREATED
R.id.sorting_dialog_radio_custom -> SORT_BY_CUSTOM
else -> SORT_BY_TITLE else -> SORT_BY_TITLE
} }
if (view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) { if (sortingRadio.checkedRadioButtonId != R.id.sorting_dialog_radio_custom
&& view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) {
sorting = sorting or SORT_DESCENDING sorting = sorting or SORT_DESCENDING
} }

View File

@ -7,6 +7,7 @@ import android.view.ViewGroup
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.R
import com.simplemobiletools.notes.pro.activities.SimpleActivity import com.simplemobiletools.notes.pro.activities.SimpleActivity
@ -65,7 +66,8 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
migrateCheckListOnFailure(storedNote) migrateCheckListOnFailure(storedNote)
} }
if (config?.moveDoneChecklistItems == true) { val sorting = config?.sorting ?: 0
if (sorting and SORT_BY_CUSTOM == 0 && config?.moveDoneChecklistItems == true) {
items.sortBy { it.isDone } items.sortBy { it.isDone }
} }
@ -159,9 +161,11 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
private fun setupAdapter() { private fun setupAdapter() {
updateUIVisibility() updateUIVisibility()
ChecklistItem.sorting = requireContext().config.sorting ChecklistItem.sorting = requireContext().config.sorting
items.sort() if (ChecklistItem.sorting and SORT_BY_CUSTOM == 0) {
if (context?.config?.moveDoneChecklistItems == true) { items.sort()
items.sortBy { it.isDone } if (context?.config?.moveDoneChecklistItems == true) {
items.sortBy { it.isDone }
}
} }
ChecklistAdapter( ChecklistAdapter(
activity = activity as SimpleActivity, activity = activity as SimpleActivity,
@ -217,6 +221,7 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
} }
override fun refreshItems() { override fun refreshItems() {
loadNoteById(noteId)
setupAdapter() setupAdapter()
} }
} }

View File

@ -32,9 +32,19 @@
android:paddingBottom="@dimen/normal_margin" android:paddingBottom="@dimen/normal_margin"
android:text="@string/date_created" /> android:text="@string/date_created" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_custom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/custom" />
</RadioGroup> </RadioGroup>
<include layout="@layout/divider" /> <include
android:id="@+id/sorting_dialog_order_divider"
layout="@layout/divider" />
<RadioGroup <RadioGroup
android:id="@+id/sorting_dialog_radio_order" android:id="@+id/sorting_dialog_radio_order"
@ -62,7 +72,9 @@
</RadioGroup> </RadioGroup>
<include layout="@layout/divider" /> <include
android:id="@+id/move_undone_checklist_items_divider"
layout="@layout/divider" />
<RelativeLayout <RelativeLayout
android:id="@+id/settings_move_undone_checklist_items_holder" android:id="@+id/settings_move_undone_checklist_items_holder"