Skip to content

Commit 1aad36d

Browse files
authored
Merge pull request SimpleMobileTools#465 from Aga-C/add-custom-sorting
Added custom sorting (SimpleMobileTools#464)
2 parents fd14f01 + 74b360d commit 1aad36d

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/ChecklistAdapter.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.simplemobiletools.commons.extensions.applyColorFilter
1515
import com.simplemobiletools.commons.extensions.beVisibleIf
1616
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
1717
import com.simplemobiletools.commons.extensions.removeBit
18+
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
1819
import com.simplemobiletools.commons.interfaces.ItemMoveCallback
1920
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
2021
import com.simplemobiletools.commons.interfaces.StartReorderDragListener
@@ -209,6 +210,7 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList<Checkl
209210
}
210211

211212
override fun onRowMoved(fromPosition: Int, toPosition: Int) {
213+
activity.config.sorting = SORT_BY_CUSTOM
212214
if (fromPosition < toPosition) {
213215
for (i in fromPosition until toPosition) {
214216
Collections.swap(items, i, i + 1)

app/src/main/kotlin/com/simplemobiletools/notes/pro/dialogs/SortChecklistDialog.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.simplemobiletools.notes.pro.dialogs
22

33
import androidx.appcompat.app.AlertDialog
4+
import com.simplemobiletools.commons.extensions.beGoneIf
45
import com.simplemobiletools.commons.extensions.setupDialogStuff
6+
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
57
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_CREATED
68
import com.simplemobiletools.commons.helpers.SORT_BY_TITLE
79
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
@@ -29,12 +31,24 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
2931

3032
private fun setupSortRadio() {
3133
val fieldRadio = view.sorting_dialog_radio_sorting
34+
fieldRadio.setOnCheckedChangeListener { group, checkedId ->
35+
val isCustomSorting = checkedId == fieldRadio.sorting_dialog_radio_custom.id
36+
view.sorting_dialog_radio_order.beGoneIf(isCustomSorting)
37+
view.sorting_dialog_order_divider.beGoneIf(isCustomSorting)
38+
view.move_undone_checklist_items_divider.beGoneIf(isCustomSorting)
39+
view.settings_move_undone_checklist_items_holder.beGoneIf(isCustomSorting)
40+
}
41+
3242
var fieldBtn = fieldRadio.sorting_dialog_radio_title
3343

3444
if (currSorting and SORT_BY_DATE_CREATED != 0) {
3545
fieldBtn = fieldRadio.sorting_dialog_radio_date_created
3646
}
3747

48+
if (currSorting and SORT_BY_CUSTOM != 0) {
49+
fieldBtn = fieldRadio.sorting_dialog_radio_custom
50+
}
51+
3852
fieldBtn.isChecked = true
3953
}
4054

@@ -60,10 +74,13 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
6074
val sortingRadio = view.sorting_dialog_radio_sorting
6175
var sorting = when (sortingRadio.checkedRadioButtonId) {
6276
R.id.sorting_dialog_radio_date_created -> SORT_BY_DATE_CREATED
77+
R.id.sorting_dialog_radio_custom -> SORT_BY_CUSTOM
6378
else -> SORT_BY_TITLE
6479
}
6580

66-
if (view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) {
81+
if (sortingRadio.checkedRadioButtonId != R.id.sorting_dialog_radio_custom
82+
&& view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending
83+
) {
6784
sorting = sorting or SORT_DESCENDING
6885
}
6986

app/src/main/kotlin/com/simplemobiletools/notes/pro/fragments/ChecklistFragment.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.ViewGroup
77
import com.google.gson.Gson
88
import com.google.gson.reflect.TypeToken
99
import com.simplemobiletools.commons.extensions.*
10+
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
1011
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1112
import com.simplemobiletools.notes.pro.R
1213
import com.simplemobiletools.notes.pro.activities.SimpleActivity
@@ -65,7 +66,8 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
6566
migrateCheckListOnFailure(storedNote)
6667
}
6768

68-
if (config?.moveDoneChecklistItems == true) {
69+
val sorting = config?.sorting ?: 0
70+
if (sorting and SORT_BY_CUSTOM == 0 && config?.moveDoneChecklistItems == true) {
6971
items.sortBy { it.isDone }
7072
}
7173

@@ -159,9 +161,11 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
159161
private fun setupAdapter() {
160162
updateUIVisibility()
161163
ChecklistItem.sorting = requireContext().config.sorting
162-
items.sort()
163-
if (context?.config?.moveDoneChecklistItems == true) {
164-
items.sortBy { it.isDone }
164+
if (ChecklistItem.sorting and SORT_BY_CUSTOM == 0) {
165+
items.sort()
166+
if (context?.config?.moveDoneChecklistItems == true) {
167+
items.sortBy { it.isDone }
168+
}
165169
}
166170
ChecklistAdapter(
167171
activity = activity as SimpleActivity,
@@ -217,6 +221,7 @@ class ChecklistFragment : NoteFragment(), ChecklistItemsListener {
217221
}
218222

219223
override fun refreshItems() {
224+
loadNoteById(noteId)
220225
setupAdapter()
221226
}
222227
}

app/src/main/res/layout/dialog_sort_checklist.xml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,19 @@
3232
android:paddingBottom="@dimen/normal_margin"
3333
android:text="@string/date_created" />
3434

35+
<com.simplemobiletools.commons.views.MyCompatRadioButton
36+
android:id="@+id/sorting_dialog_radio_custom"
37+
android:layout_width="match_parent"
38+
android:layout_height="wrap_content"
39+
android:paddingTop="@dimen/normal_margin"
40+
android:paddingBottom="@dimen/normal_margin"
41+
android:text="@string/custom" />
42+
3543
</RadioGroup>
3644

37-
<include layout="@layout/divider" />
45+
<include
46+
android:id="@+id/sorting_dialog_order_divider"
47+
layout="@layout/divider" />
3848

3949
<RadioGroup
4050
android:id="@+id/sorting_dialog_radio_order"
@@ -62,7 +72,9 @@
6272

6373
</RadioGroup>
6474

65-
<include layout="@layout/divider" />
75+
<include
76+
android:id="@+id/move_undone_checklist_items_divider"
77+
layout="@layout/divider" />
6678

6779
<RelativeLayout
6880
android:id="@+id/settings_move_undone_checklist_items_holder"

0 commit comments

Comments
 (0)