From cb6c3fedec86f5eed17a19020415de89c1baab7b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 Dec 2017 16:19:50 +0100 Subject: [PATCH] add a sorting dialog --- .../contacts/activities/MainActivity.kt | 16 ++++- .../contacts/dialogs/ChangeSortingDialog.kt | 64 +++++++++++++++++ .../main/res/layout/dialog_change_sorting.xml | 68 +++++++++++++++++++ app/src/main/res/menu/menu.xml | 5 ++ app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ChangeSortingDialog.kt create mode 100644 app/src/main/res/layout/dialog_change_sorting.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index eb0b1d84..138b4f03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -14,6 +14,7 @@ import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.contacts.BuildConfig import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter +import com.simplemobiletools.contacts.dialogs.ChangeSortingDialog import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.models.Contact @@ -36,6 +37,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { finish() } } + + storeStateVariables() } override fun onResume() { @@ -58,6 +61,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.sort -> showSortingDialog() R.id.settings -> startActivity(Intent(applicationContext, SettingsActivity::class.java)) R.id.about -> launchAbout() else -> return super.onOptionsItemSelected(item) @@ -65,14 +69,20 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { return true } - private fun storeStateVariables() { - storedUseEnglish = config.useEnglish + private fun showSortingDialog() { + ChangeSortingDialog(this) { + initContacts() + } } private fun launchAbout() { startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_MULTISELECT, BuildConfig.VERSION_NAME) } + private fun storeStateVariables() { + storedUseEnglish = config.useEnglish + } + private fun initContacts() { ContactsHelper(this).getContacts { Contact.sorting = config.sorting @@ -113,6 +123,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { } override fun refreshItems() { - + initContacts() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ChangeSortingDialog.kt new file mode 100644 index 00000000..946ff2e7 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ChangeSortingDialog.kt @@ -0,0 +1,64 @@ +package com.simplemobiletools.contacts.dialogs + +import android.support.v7.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.helpers.SORT_BY_NAME +import com.simplemobiletools.commons.helpers.SORT_BY_NUMBER +import com.simplemobiletools.commons.helpers.SORT_DESCENDING +import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.extensions.config +import kotlinx.android.synthetic.main.dialog_change_sorting.view.* + +class ChangeSortingDialog(val activity: BaseSimpleActivity, 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_NUMBER != 0 -> sortingRadio.sorting_dialog_radio_number + else -> sortingRadio.sorting_dialog_radio_name + } + 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_number -> SORT_BY_NUMBER + else -> SORT_BY_NAME + } + + 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 00000000..7c35fc3c --- /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 815619cd..b422f365 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -1,6 +1,11 @@ + Jednoduché kontakty Kontakty + Číslo diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8fce040e..629c377f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ Simple Contacts Contacts + Number