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