Merge pull request #465 from Aga-C/add-custom-sorting

Added custom sorting (#464)
This commit is contained in:
Tibor Kaputa 2021-10-12 23:21:52 +02:00 committed by GitHub
commit 1aad36d78f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 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.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<Checkl
}
override fun onRowMoved(fromPosition: Int, toPosition: Int) {
activity.config.sorting = SORT_BY_CUSTOM
if (fromPosition < toPosition) {
for (i in fromPosition until toPosition) {
Collections.swap(items, i, i + 1)

View File

@ -1,7 +1,9 @@
package com.simplemobiletools.notes.pro.dialogs
import androidx.appcompat.app.AlertDialog
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
import com.simplemobiletools.commons.helpers.SORT_BY_TITLE
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
@ -29,12 +31,24 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
private fun setupSortRadio() {
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.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
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,13 @@ 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
}

View File

@ -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()
}
}

View File

@ -32,9 +32,19 @@
android:paddingBottom="@dimen/normal_margin"
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>
<include layout="@layout/divider" />
<include
android:id="@+id/sorting_dialog_order_divider"
layout="@layout/divider" />
<RadioGroup
android:id="@+id/sorting_dialog_radio_order"
@ -62,7 +72,9 @@
</RadioGroup>
<include layout="@layout/divider" />
<include
android:id="@+id/move_undone_checklist_items_divider"
layout="@layout/divider" />
<RelativeLayout
android:id="@+id/settings_move_undone_checklist_items_holder"