diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt index 42422c8f..2df09385 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt @@ -35,6 +35,7 @@ class SettingsActivity : SimpleActivity() { setupShowInfoBubble() setupShowContactThumbnails() setupShowPhoneNumbers() + setupShowContactsWithNumbers() setupStartNameWithSurname() setupUse24HourTimeFormat() setupFilterDuplicates() @@ -110,6 +111,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupShowContactsWithNumbers() { + settings_show_only_contacts_with_numbers.isChecked = config.showOnlyContactsWithNumbers + settings_show_only_contacts_with_numbers_holder.setOnClickListener { + settings_show_only_contacts_with_numbers.toggle() + config.showOnlyContactsWithNumbers = settings_show_only_contacts_with_numbers.isChecked + } + } + private fun setupStartNameWithSurname() { settings_start_with_surname.isChecked = config.startNameWithSurname settings_start_with_surname_holder.setOnClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt index 2f483619..6c16f433 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -104,7 +104,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } if (config.lastUsedContactSource.isEmpty()) { - val grouped = contacts.groupBy { it.source }.maxWith(compareBy { it.value.size }) + val grouped = contacts.asSequence().groupBy { it.source }.maxWith(compareBy { it.value.size }) config.lastUsedContactSource = grouped?.key ?: "" } @@ -154,7 +154,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } } - storedGroups = storedGroups.sortedWith(compareBy { it.title }).toMutableList() as ArrayList + storedGroups = storedGroups.asSequence().sortedWith(compareBy { it.title }).toMutableList() as ArrayList fragment_placeholder_2.beVisibleIf(storedGroups.isEmpty()) fragment_placeholder.beVisibleIf(storedGroups.isEmpty()) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt index 2370665b..ae605eb7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt @@ -20,6 +20,10 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getBoolean(SHOW_PHONE_NUMBERS, false) set(showPhoneNumbers) = prefs.edit().putBoolean(SHOW_PHONE_NUMBERS, showPhoneNumbers).apply() + var showOnlyContactsWithNumbers: Boolean + get() = prefs.getBoolean(SHOW_ONLY_CONTACTS_WITH_NUMBERS, false) + set(showOnlyContactsWithNumbers) = prefs.edit().putBoolean(SHOW_ONLY_CONTACTS_WITH_NUMBERS, showOnlyContactsWithNumbers).apply() + var startNameWithSurname: Boolean get() = prefs.getBoolean(START_NAME_WITH_SURNAME, false) set(startNameWithSurname) = prefs.edit().putBoolean(START_NAME_WITH_SURNAME, startNameWithSurname).apply() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 859347fd..ba870934 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -5,6 +5,7 @@ import android.provider.ContactsContract.CommonDataKinds // shared prefs const val SHOW_CONTACT_THUMBNAILS = "show_contact_thumbnails" const val SHOW_PHONE_NUMBERS = "show_phone_numbers" +const val SHOW_ONLY_CONTACTS_WITH_NUMBERS = "show_only_contacts_with_numbers" const val IGNORED_CONTACT_SOURCES = "ignored_contact_sources" const val START_NAME_WITH_SURNAME = "start_name_with_surname" const val LAST_USED_CONTACT_SOURCE = "last_used_contact_source" diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt index d5fb496a..a931c6f4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -43,9 +43,20 @@ class ContactsHelper(val activity: Activity) { } val contactsSize = contacts.size() + val showOnlyContactsWithNumbers = activity.config.showOnlyContactsWithNumbers var tempContacts = ArrayList(contactsSize) val resultContacts = ArrayList(contactsSize) - (0 until contactsSize).mapTo(tempContacts) { contacts.valueAt(it) } + + (0 until contactsSize).filter { + if (showOnlyContactsWithNumbers) { + contacts.valueAt(it).phoneNumbers.isNotEmpty() + } else { + true + } + }.mapTo(tempContacts) { + contacts.valueAt(it) + } + if (activity.config.filterDuplicates) { tempContacts = tempContacts.distinctBy { it.getHashToCompare() diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 39463477..3e231816 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -220,6 +220,30 @@ + + + + + +