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 @@
+
+