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