From 23cdd2511b48f011deee12851a81d76caf573128 Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Tue, 12 Oct 2021 15:49:30 +0200 Subject: [PATCH 1/2] Added custom sorting (#464) --- .../notes/pro/adapters/ChecklistAdapter.kt | 2 ++ .../notes/pro/dialogs/SortChecklistDialog.kt | 18 +++++++++++++++++- .../notes/pro/fragments/ChecklistFragment.kt | 13 +++++++++---- .../main/res/layout/dialog_sort_checklist.xml | 16 ++++++++++++++-- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt index 6a083b19..6d7a1044 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt @@ -15,6 +15,7 @@ import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor 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.ItemTouchHelperContract import com.simplemobiletools.commons.interfaces.StartReorderDragListener @@ -209,6 +210,7 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList + 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 if (currSorting and SORT_BY_DATE_CREATED != 0) { fieldBtn = fieldRadio.sorting_dialog_radio_date_created } + if (currSorting and SORT_BY_CUSTOM != 0) { + fieldBtn = fieldRadio.sorting_dialog_radio_custom + } + fieldBtn.isChecked = true } @@ -60,10 +74,12 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call val sortingRadio = view.sorting_dialog_radio_sorting var sorting = when (sortingRadio.checkedRadioButtonId) { R.id.sorting_dialog_radio_date_created -> SORT_BY_DATE_CREATED + R.id.sorting_dialog_radio_custom -> SORT_BY_CUSTOM 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 } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt index 6e5b2e9c..f9d0d511 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.activities.SimpleActivity @@ -65,7 +66,8 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener { 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 } } @@ -159,9 +161,11 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener { private fun setupAdapter() { updateUIVisibility() ChecklistItem.sorting = requireContext().config.sorting - items.sort() - if (context?.config?.moveDoneChecklistItems == true) { - items.sortBy { it.isDone } + if (ChecklistItem.sorting and SORT_BY_CUSTOM == 0) { + items.sort() + if (context?.config?.moveDoneChecklistItems == true) { + items.sortBy { it.isDone } + } } ChecklistAdapter( activity = activity as SimpleActivity, @@ -217,6 +221,7 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener { } override fun refreshItems() { + loadNoteById(noteId) setupAdapter() } } diff --git a/app/src/main/res/layout/dialog_sort_checklist.xml b/app/src/main/res/layout/dialog_sort_checklist.xml index cf2b42a7..042dad42 100644 --- a/app/src/main/res/layout/dialog_sort_checklist.xml +++ b/app/src/main/res/layout/dialog_sort_checklist.xml @@ -32,9 +32,19 @@ android:paddingBottom="@dimen/normal_margin" android:text="@string/date_created" /> + + - + - + Date: Tue, 12 Oct 2021 23:21:12 +0200 Subject: [PATCH 2/2] flipping some logic to make it clearer --- .../notes/pro/dialogs/SortChecklistDialog.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/SortChecklistDialog.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/SortChecklistDialog.kt index 0652cb77..3a5d2d1b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/SortChecklistDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/SortChecklistDialog.kt @@ -1,7 +1,7 @@ package com.simplemobiletools.notes.pro.dialogs import androidx.appcompat.app.AlertDialog -import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.extensions.beGoneIf import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM import com.simplemobiletools.commons.helpers.SORT_BY_DATE_CREATED @@ -33,10 +33,10 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call 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) + view.sorting_dialog_radio_order.beGoneIf(isCustomSorting) + view.sorting_dialog_order_divider.beGoneIf(isCustomSorting) + view.move_undone_checklist_items_divider.beGoneIf(isCustomSorting) + view.settings_move_undone_checklist_items_holder.beGoneIf(isCustomSorting) } var fieldBtn = fieldRadio.sorting_dialog_radio_title @@ -79,7 +79,8 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call } if (sortingRadio.checkedRadioButtonId != R.id.sorting_dialog_radio_custom - && view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) { + && view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending + ) { sorting = sorting or SORT_DESCENDING }