From cf8487d4cd5f2e66ab82a8e2ea2b4944b511d8c3 Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Fri, 13 May 2022 17:20:08 +0300 Subject: [PATCH] sorting --- app/build.gradle | 2 +- .../dialer/activities/MainActivity.kt | 11 ++++ .../dialer/dialogs/ChangeSortingDialog.kt | 64 ++++++++++++++++++ .../main/res/layout/dialog_change_sorting.xml | 66 +++++++++++++++++++ app/src/main/res/menu/menu.xml | 5 ++ app/src/main/res/values/integers.xml | 1 + 6 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/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 c087cde9..64f195ef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,6 +61,6 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:e3376e4f56' + implementation 'com.github.pavelpoley:Simple-Commons:0580b1a8f4' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 653bf33f..6de0cfd0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -25,9 +25,11 @@ import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FAQItem +import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ViewPagerAdapter +import com.simplemobiletools.dialer.dialogs.ChangeSortingDialog import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.fragments.MyViewPagerFragment import com.simplemobiletools.dialer.helpers.OPEN_DIAL_PAD_AT_LAUNCH @@ -69,6 +71,8 @@ class MainActivity : SimpleActivity() { } hideTabs() + + SimpleContact.sorting = config.sorting } override fun onSaveInstanceState(outState: Bundle) { @@ -135,6 +139,7 @@ class MainActivity : SimpleActivity() { R.id.clear_call_history -> clearCallHistory() R.id.settings -> launchSettings() R.id.about -> launchAbout() + R.id.sort -> showSortingDialog() else -> return super.onOptionsItemSelected(item) } return true @@ -467,4 +472,10 @@ class MainActivity : SimpleActivity() { startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) } + + private fun showSortingDialog() { + ChangeSortingDialog(this) { + refreshFragments() + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt new file mode 100644 index 00000000..de6b3b12 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt @@ -0,0 +1,64 @@ +package com.simplemobiletools.dialer.dialogs + +import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.helpers.* +import com.simplemobiletools.commons.models.SimpleContact +import com.simplemobiletools.dialer.R +import com.simplemobiletools.dialer.extensions.config +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 + val sortBtn = when { + currSorting and SORT_BY_FULL_NAME != 0 -> sortingRadio.sorting_dialog_radio_full_name + else -> sortingRadio.sorting_dialog_radio_date_created + } + 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_full_name -> SORT_BY_FULL_NAME + else -> SORT_BY_DATE_CREATED + } + + if (view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) { + sorting = sorting or SORT_DESCENDING + } + + config.sorting = sorting + SimpleContact.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 00000000..fc2f957a --- /dev/null +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 0045494b..37104db2 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -1,6 +1,11 @@ + 2 + 65536