From 5dc2346efef922cba14feb1c16ce6276957ab5cc Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 7 Nov 2020 21:40:31 +0100 Subject: [PATCH] adding a sorting menu button --- app/build.gradle | 2 +- .../applauncher/activities/MainActivity.kt | 8 +++ .../dialogs/ChangeSortingDialog.kt | 71 +++++++++++++++++++ .../main/res/layout/dialog_change_sorting.xml | 68 ++++++++++++++++++ app/src/main/res/menu/menu.xml | 5 ++ 5 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/applauncher/dialogs/ChangeSortingDialog.kt create mode 100644 app/src/main/res/layout/dialog_change_sorting.xml diff --git a/app/build.gradle b/app/build.gradle index c1051c7..44bf4a7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.31.25' + implementation 'com.simplemobiletools:commons:5.31.26' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt index 164dab3..8938204 100644 --- a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt @@ -8,6 +8,7 @@ import com.simplemobiletools.applauncher.BuildConfig import com.simplemobiletools.applauncher.R import com.simplemobiletools.applauncher.adapters.LaunchersAdapter import com.simplemobiletools.applauncher.dialogs.AddAppLauncherDialog +import com.simplemobiletools.applauncher.dialogs.ChangeSortingDialog import com.simplemobiletools.applauncher.extensions.config import com.simplemobiletools.applauncher.extensions.dbHelper import com.simplemobiletools.applauncher.extensions.getNotDisplayedLaunchers @@ -85,6 +86,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.sort -> showSortingDialog() R.id.increase_column_count -> increaseColumnCount() R.id.reduce_column_count -> reduceColumnCount() R.id.settings -> launchSettings() @@ -148,6 +150,12 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { } } + private fun showSortingDialog() { + ChangeSortingDialog(this) { + + } + } + private fun increaseColumnCount() { config.columnCnt = ++(launchers_grid.layoutManager as MyGridLayoutManager).spanCount columnCountChanged() diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/dialogs/ChangeSortingDialog.kt new file mode 100644 index 0000000..0d12166 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/dialogs/ChangeSortingDialog.kt @@ -0,0 +1,71 @@ +package com.simplemobiletools.applauncher.dialogs + +import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.applauncher.R +import com.simplemobiletools.applauncher.extensions.config +import com.simplemobiletools.commons.activities.BaseSimpleActivity +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_TITLE +import com.simplemobiletools.commons.helpers.SORT_DESCENDING +import kotlinx.android.synthetic.main.dialog_change_sorting.view.* + +class ChangeSortingDialog(val activity: BaseSimpleActivity, private val callback: () -> Unit) { + private var currSorting = 0 + private var config = activity.config + private var view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null) + + init { + AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this, R.string.sort_by) + } + + currSorting = config.sorting + setupSortRadio() + setupOrderRadio() + } + + private fun setupSortRadio() { + val sortingRadio = view.sorting_dialog_radio_sorting + sortingRadio.setOnCheckedChangeListener { group, checkedId -> + val isCustomSorting = checkedId == sortingRadio.sorting_dialog_radio_custom.id + view.sorting_dialog_radio_order.beGoneIf(isCustomSorting) + view.sorting_dialog_divider.beGoneIf(isCustomSorting) + } + + val sortBtn = when { + currSorting and SORT_BY_TITLE != 0 -> sortingRadio.sorting_dialog_radio_title + else -> sortingRadio.sorting_dialog_radio_custom + } + sortBtn.isChecked = true + } + + private fun setupOrderRadio() { + val orderRadio = view.sorting_dialog_radio_order + var orderBtn = orderRadio.sorting_dialog_radio_ascending + + if (currSorting and SORT_DESCENDING != 0) { + orderBtn = orderRadio.sorting_dialog_radio_descending + } + orderBtn.isChecked = true + } + + private fun dialogConfirmed() { + val sortingRadio = view.sorting_dialog_radio_sorting + var sorting = when (sortingRadio.checkedRadioButtonId) { + R.id.sorting_dialog_radio_title -> SORT_BY_TITLE + else -> SORT_BY_CUSTOM + } + + if (view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) { + sorting = sorting or SORT_DESCENDING + } + + config.sorting = sorting + callback() + } +} diff --git a/app/src/main/res/layout/dialog_change_sorting.xml b/app/src/main/res/layout/dialog_change_sorting.xml new file mode 100644 index 0000000..f163678 --- /dev/null +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index b8aac4d..72ebb79 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -1,6 +1,11 @@ +