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 03a277aa..ac619d7c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -48,6 +48,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { private var storedShowContactThumbnails = false private var storedShowPhoneNumbers = false private var storedStartNameWithSurname = false + private var storedFilterDuplicates = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -118,6 +119,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { favorites_fragment?.startNameWithSurnameChanged(configStartNameWithSurname) } + if (storedFilterDuplicates != config.filterDuplicates) { + refreshContacts(ALL_TABS_MASK) + } + if (werePermissionsHandled && !isFirstResume) { if (viewpager.adapter == null) { initFragments() @@ -175,6 +180,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { storedShowContactThumbnails = showContactThumbnails storedShowPhoneNumbers = showPhoneNumbers storedStartNameWithSurname = startNameWithSurname + storedFilterDuplicates = filterDuplicates } } 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 9b76f9eb..1cf3bb24 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt @@ -31,6 +31,7 @@ class SettingsActivity : SimpleActivity() { setupShowContactThumbnails() setupShowPhoneNumbers() setupStartNameWithSurname() + setupFilterDuplicates() setupOnContactClick() updateTextColors(settings_holder) } @@ -97,6 +98,14 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupFilterDuplicates() { + settings_filter_duplicates.isChecked = config.filterDuplicates + settings_filter_duplicates_holder.setOnClickListener { + settings_filter_duplicates.toggle() + config.filterDuplicates = settings_filter_duplicates.isChecked + } + } + private fun setupOnContactClick() { settings_on_contact_click.text = getOnContactClickText() settings_on_contact_click_holder.setOnClickListener { 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 24eea65d..ad8384ba 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt @@ -44,4 +44,8 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(SHOW_CONTACT_FIELDS, SHOW_FIRST_NAME_FIELD or SHOW_SURNAME_FIELD or SHOW_PHONE_NUMBERS_FIELD or SHOW_EMAILS_FIELD or SHOW_ADDRESSES_FIELD or SHOW_EVENTS_FIELD or SHOW_NOTES_FIELD or SHOW_GROUPS_FIELD or SHOW_CONTACT_SOURCE_FIELD) set(showContactFields) = prefs.edit().putInt(SHOW_CONTACT_FIELDS, showContactFields).apply() + + var filterDuplicates: Boolean + get() = prefs.getBoolean(FILTER_DUPLICATES, true) + set(filterDuplicates) = prefs.edit().putBoolean(FILTER_DUPLICATES, filterDuplicates).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 0b2e1b25..d38e8294 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -12,6 +12,7 @@ const val LOCAL_ACCOUNT_NAME = "local_account_name" const val LOCAL_ACCOUNT_TYPE = "local_account_type" const val ON_CONTACT_CLICK = "on_contact_click" const val SHOW_CONTACT_FIELDS = "show_contact_fields" +const val FILTER_DUPLICATES = "filter_duplicates" const val CONTACT_ID = "contact_id" const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps 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 3c229d62..079cc8ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -41,9 +41,11 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val contactsSize = contacts.size() var resultContacts = ArrayList(contactsSize) (0 until contactsSize).mapTo(resultContacts) { contacts.valueAt(it) } - resultContacts = resultContacts.distinctBy { - it.getHashToCompare() - } as ArrayList + if (activity.config.filterDuplicates) { + resultContacts = resultContacts.distinctBy { + it.getHashToCompare() + } as ArrayList + } // groups are obtained with contactID, not rawID, so assign them to proper contacts like this val groups = getContactGroups(getStoredGroups()) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index d1fedd67..18addc99 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -193,6 +193,29 @@ + + + + + + Show favorites tab Show groups tab Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts Email diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 8edd848d..717a7ce1 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -48,7 +48,7 @@ Εμφάνιση καρτέλας αγαπημένων Εμφάνιση καρτέλας ομάδων Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts Email diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 48c81874..aaded17e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -48,7 +48,7 @@ Afficher l\'onglet favoris Afficher l\'onglet groupes Configurer l\'affichage des champs des contacts - Try filtering out duplicate contacts + Try filtering out duplicate contacts E-mail diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index c3245290..08d418e7 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -48,7 +48,7 @@ Prikaži karticu favorita Prikaži karticu grupa Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts E-pošta diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 5f67c6a9..99536a44 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -48,7 +48,7 @@ Show favorites tab Show groups tab Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts 이메일 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 6a11b153..f5ee1255 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -48,7 +48,7 @@ Rodyti mėgiamiausiųjų skirtuką Rodyti grupių skirtuką Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts Elektroninis paštas diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c2dee1e5..486feb5a 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -48,7 +48,7 @@ Mostrar favoritos Mostrar grupos Gerir campos a exibir - Try filtering out duplicate contacts + Try filtering out duplicate contacts E-mail diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1f911ede..6a44ca04 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -48,7 +48,7 @@ Показывать вкладку избранного Показывать вкладку групп Управление отображаемыми полями контактов - Try filtering out duplicate contacts + Try filtering out duplicate contacts Эл. почта diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index bb8e35a1..c1f6d985 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -48,7 +48,7 @@ Zobraziť okno s obľúbenými Zobraziť okno so skupinami Spravovať zobrazené polia kontaktov - Pokúsiť sa vyfiltrovať duplicitné kontakty + Pokúsiť sa vyfiltrovať duplicitné kontakty Email diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index fb7326ad..42f606b5 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -48,7 +48,7 @@ Visa fliken Favoriter Visa fliken Grupper Hantera visade kontaktfält - Try filtering out duplicate contacts + Try filtering out duplicate contacts E-post diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index be892fb4..79766c2a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -48,7 +48,7 @@ 顯示我的最愛頁面 顯示群組頁面 管理顯示的聯絡人欄位 - Try filtering out duplicate contacts + Try filtering out duplicate contacts 電子信箱 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 55942b99..a3c3eede 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,7 +48,7 @@ Show favorites tab Show groups tab Manage shown contact fields - Try filtering out duplicate contacts + Try filtering out duplicate contacts Email