refresh items after sorting/filtering/grouping only if something changed

This commit is contained in:
tibbi 2022-02-13 16:42:21 +01:00
parent f38612de5f
commit 80390c67f2
4 changed files with 33 additions and 21 deletions

View File

@ -12,26 +12,26 @@ import com.simplemobiletools.gallery.pro.helpers.*
import kotlinx.android.synthetic.main.dialog_change_grouping.view.* import kotlinx.android.synthetic.main.dialog_change_grouping.view.*
class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = "", val callback: () -> Unit) : class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String = "", val callback: () -> Unit) :
DialogInterface.OnClickListener { DialogInterface.OnClickListener {
private var currGrouping = 0 private var currGrouping = 0
private var config = activity.config private var config = activity.config
private val pathToUse = if (path.isEmpty()) SHOW_ALL else path private val pathToUse = if (path.isEmpty()) SHOW_ALL else path
private var view: View private var view: View
init { init {
currGrouping = config.getFolderGrouping(pathToUse)
view = activity.layoutInflater.inflate(R.layout.dialog_change_grouping, null).apply { view = activity.layoutInflater.inflate(R.layout.dialog_change_grouping, null).apply {
grouping_dialog_use_for_this_folder.isChecked = config.hasCustomGrouping(pathToUse) grouping_dialog_use_for_this_folder.isChecked = config.hasCustomGrouping(pathToUse)
grouping_dialog_radio_folder.beVisibleIf(path.isEmpty()) grouping_dialog_radio_folder.beVisibleIf(path.isEmpty())
} }
AlertDialog.Builder(activity) AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok, this) .setPositiveButton(R.string.ok, this)
.setNegativeButton(R.string.cancel, null) .setNegativeButton(R.string.cancel, null)
.create().apply { .create().apply {
activity.setupDialogStuff(view, this, R.string.group_by) activity.setupDialogStuff(view, this, R.string.group_by)
} }
currGrouping = config.getFolderGrouping(pathToUse)
setupGroupRadio() setupGroupRadio()
setupOrderRadio() setupOrderRadio()
view.grouping_dialog_show_file_count.isChecked = currGrouping and GROUP_SHOW_FILE_COUNT != 0 view.grouping_dialog_show_file_count.isChecked = currGrouping and GROUP_SHOW_FILE_COUNT != 0
@ -90,6 +90,7 @@ class ChangeGroupingDialog(val activity: BaseSimpleActivity, val path: String =
config.removeFolderGrouping(pathToUse) config.removeFolderGrouping(pathToUse)
config.groupBy = grouping config.groupBy = grouping
} }
callback() callback()
} }
} }

View File

@ -113,6 +113,9 @@ class ChangeSortingDialog(
config.sorting = sorting config.sorting = sorting
} }
} }
callback()
if (currSorting != sorting) {
callback()
}
} }
} }

View File

@ -47,15 +47,20 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val fromFoldersView
} }
AlertDialog.Builder(activity) AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
.setNegativeButton(R.string.cancel, null) .setNegativeButton(R.string.cancel, null)
.create().apply { .create().apply {
activity.setupDialogStuff(view, this) activity.setupDialogStuff(view, this)
} }
} }
private fun dialogConfirmed() { private fun dialogConfirmed() {
val viewType = if (view.change_view_type_dialog_radio.checkedRadioButtonId == view.change_view_type_dialog_radio_grid.id) VIEW_TYPE_GRID else VIEW_TYPE_LIST val viewType = if (view.change_view_type_dialog_radio.checkedRadioButtonId == view.change_view_type_dialog_radio_grid.id) {
VIEW_TYPE_GRID
} else {
VIEW_TYPE_LIST
}
if (fromFoldersView) { if (fromFoldersView) {
config.viewTypeFolders = viewType config.viewTypeFolders = viewType
config.groupDirectSubfolders = view.change_view_type_dialog_group_direct_subfolders.isChecked config.groupDirectSubfolders = view.change_view_type_dialog_group_direct_subfolders.isChecked
@ -68,6 +73,7 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val fromFoldersView
} }
} }
callback() callback()
} }
} }

View File

@ -23,11 +23,11 @@ class FilterMediaDialog(val activity: BaseSimpleActivity, val callback: (result:
} }
AlertDialog.Builder(activity) AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
.setNegativeButton(R.string.cancel, null) .setNegativeButton(R.string.cancel, null)
.create().apply { .create().apply {
activity.setupDialogStuff(view, this, R.string.filter_media) activity.setupDialogStuff(view, this, R.string.filter_media)
} }
} }
private fun dialogConfirmed() { private fun dialogConfirmed() {
@ -49,7 +49,9 @@ class FilterMediaDialog(val activity: BaseSimpleActivity, val callback: (result:
result = getDefaultFileFilter() result = getDefaultFileFilter()
} }
activity.config.filterMedia = result if (activity.config.filterMedia != result) {
callback(result) activity.config.filterMedia = result
callback(result)
}
} }
} }