From ef10ce088fe679b452b7703118439df03e2ba0fa Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 24 Mar 2022 10:40:13 +0100 Subject: [PATCH] fix #582, allow disabling duplicate contact merging --- .../contacts/pro/activities/SettingsActivity.kt | 9 +++++++++ .../pro/activities/ViewContactActivity.kt | 8 +++++--- .../contacts/pro/helpers/Config.kt | 10 ++++++++-- .../contacts/pro/helpers/Constants.kt | 1 + .../contacts/pro/helpers/ContactsHelper.kt | 2 +- app/src/main/res/layout/activity_settings.xml | 16 ++++++++++++++++ 6 files changed, 40 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt index 065c05c6..8e2dd378 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt @@ -34,6 +34,7 @@ class SettingsActivity : SimpleActivity() { setupShowPhoneNumbers() setupShowContactsWithNumbers() setupStartNameWithSurname() + setupMergeDuplicateContacts() setupShowCallConfirmation() setupShowDialpadButton() setupShowPrivateContacts() @@ -216,4 +217,12 @@ class SettingsActivity : SimpleActivity() { config.showCallConfirmation = settings_show_call_confirmation.isChecked } } + + private fun setupMergeDuplicateContacts() { + settings_merge_duplicate_contacts.isChecked = config.mergeDuplicateContacts + settings_merge_duplicate_contacts_holder.setOnClickListener { + settings_merge_duplicate_contacts.toggle() + config.mergeDuplicateContacts = settings_merge_duplicate_contacts.isChecked + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt index 1e4915c5..be5aa9ab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt @@ -245,9 +245,11 @@ class ViewContactActivity : ContactActivity() { contactSources = it runOnUiThread { setupContactDetails() - getDuplicateContacts { - if (duplicateContacts.isNotEmpty()) { - setupContactDetails() + if (config.mergeDuplicateContacts) { + getDuplicateContacts { + if (duplicateContacts.isNotEmpty()) { + setupContactDetails() + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Config.kt index e177179e..fe209b56 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Config.kt @@ -33,8 +33,10 @@ class Config(context: Context) : BaseConfig(context) { set(onContactClick) = prefs.edit().putInt(ON_CONTACT_CLICK, onContactClick).apply() var showContactFields: Int - 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) + 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 showTabs: Int @@ -60,4 +62,8 @@ class Config(context: Context) : BaseConfig(context) { var showPrivateContacts: Boolean get() = prefs.getBoolean(SHOW_PRIVATE_CONTACTS, true) set(showPrivateContacts) = prefs.edit().putBoolean(SHOW_PRIVATE_CONTACTS, showPrivateContacts).apply() + + var mergeDuplicateContacts: Boolean + get() = prefs.getBoolean(MERGE_DUPLICATE_CONTACTS, true) + set(mergeDuplicateContacts) = prefs.edit().putBoolean(MERGE_DUPLICATE_CONTACTS, mergeDuplicateContacts).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt index 5f4edd4c..8a347061 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt @@ -21,6 +21,7 @@ const val SPEED_DIAL = "speed_dial" const val LAST_EXPORT_PATH = "last_export_path" const val WAS_LOCAL_ACCOUNT_INITIALIZED = "was_local_account_initialized" const val SHOW_PRIVATE_CONTACTS = "show_private_contacts" +const val MERGE_DUPLICATE_CONTACTS = "merge_duplicate_contacts" const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps const val GROUP = "group" diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt index 51c394d0..5781b4e7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt @@ -72,7 +72,7 @@ class ContactsHelper(val context: Context) { contacts.valueAt(it) } - if (ignoredContactSources.isEmpty() && !getAll) { + if (context.config.mergeDuplicateContacts && ignoredContactSources.isEmpty() && !getAll) { tempContacts.filter { displayContactSources.contains(it.source) }.groupBy { it.getNameToDisplay().toLowerCase() }.values.forEach { it -> if (it.size == 1) { resultContacts.add(it.first()) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 5ff9a0de..22247bbf 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -114,6 +114,22 @@ + + + + + +