Skip to content

Commit ef10ce0

Browse files
committed
fix #582, allow disabling duplicate contact merging
1 parent faf6a85 commit ef10ce0

File tree

6 files changed

+40
-6
lines changed

6 files changed

+40
-6
lines changed

app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class SettingsActivity : SimpleActivity() {
3434
setupShowPhoneNumbers()
3535
setupShowContactsWithNumbers()
3636
setupStartNameWithSurname()
37+
setupMergeDuplicateContacts()
3738
setupShowCallConfirmation()
3839
setupShowDialpadButton()
3940
setupShowPrivateContacts()
@@ -216,4 +217,12 @@ class SettingsActivity : SimpleActivity() {
216217
config.showCallConfirmation = settings_show_call_confirmation.isChecked
217218
}
218219
}
220+
221+
private fun setupMergeDuplicateContacts() {
222+
settings_merge_duplicate_contacts.isChecked = config.mergeDuplicateContacts
223+
settings_merge_duplicate_contacts_holder.setOnClickListener {
224+
settings_merge_duplicate_contacts.toggle()
225+
config.mergeDuplicateContacts = settings_merge_duplicate_contacts.isChecked
226+
}
227+
}
219228
}

app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,11 @@ class ViewContactActivity : ContactActivity() {
245245
contactSources = it
246246
runOnUiThread {
247247
setupContactDetails()
248-
getDuplicateContacts {
249-
if (duplicateContacts.isNotEmpty()) {
250-
setupContactDetails()
248+
if (config.mergeDuplicateContacts) {
249+
getDuplicateContacts {
250+
if (duplicateContacts.isNotEmpty()) {
251+
setupContactDetails()
252+
}
251253
}
252254
}
253255
}

app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Config.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ class Config(context: Context) : BaseConfig(context) {
3333
set(onContactClick) = prefs.edit().putInt(ON_CONTACT_CLICK, onContactClick).apply()
3434

3535
var showContactFields: Int
36-
get() = prefs.getInt(SHOW_CONTACT_FIELDS, SHOW_FIRST_NAME_FIELD or SHOW_SURNAME_FIELD or SHOW_PHONE_NUMBERS_FIELD or SHOW_EMAILS_FIELD or
37-
SHOW_ADDRESSES_FIELD or SHOW_EVENTS_FIELD or SHOW_NOTES_FIELD or SHOW_GROUPS_FIELD or SHOW_CONTACT_SOURCE_FIELD)
36+
get() = prefs.getInt(
37+
SHOW_CONTACT_FIELDS, SHOW_FIRST_NAME_FIELD or SHOW_SURNAME_FIELD or SHOW_PHONE_NUMBERS_FIELD or SHOW_EMAILS_FIELD or
38+
SHOW_ADDRESSES_FIELD or SHOW_EVENTS_FIELD or SHOW_NOTES_FIELD or SHOW_GROUPS_FIELD or SHOW_CONTACT_SOURCE_FIELD
39+
)
3840
set(showContactFields) = prefs.edit().putInt(SHOW_CONTACT_FIELDS, showContactFields).apply()
3941

4042
var showTabs: Int
@@ -60,4 +62,8 @@ class Config(context: Context) : BaseConfig(context) {
6062
var showPrivateContacts: Boolean
6163
get() = prefs.getBoolean(SHOW_PRIVATE_CONTACTS, true)
6264
set(showPrivateContacts) = prefs.edit().putBoolean(SHOW_PRIVATE_CONTACTS, showPrivateContacts).apply()
65+
66+
var mergeDuplicateContacts: Boolean
67+
get() = prefs.getBoolean(MERGE_DUPLICATE_CONTACTS, true)
68+
set(mergeDuplicateContacts) = prefs.edit().putBoolean(MERGE_DUPLICATE_CONTACTS, mergeDuplicateContacts).apply()
6369
}

app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/Constants.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const val SPEED_DIAL = "speed_dial"
2121
const val LAST_EXPORT_PATH = "last_export_path"
2222
const val WAS_LOCAL_ACCOUNT_INITIALIZED = "was_local_account_initialized"
2323
const val SHOW_PRIVATE_CONTACTS = "show_private_contacts"
24+
const val MERGE_DUPLICATE_CONTACTS = "merge_duplicate_contacts"
2425

2526
const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps
2627
const val GROUP = "group"

app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class ContactsHelper(val context: Context) {
7272
contacts.valueAt(it)
7373
}
7474

75-
if (ignoredContactSources.isEmpty() && !getAll) {
75+
if (context.config.mergeDuplicateContacts && ignoredContactSources.isEmpty() && !getAll) {
7676
tempContacts.filter { displayContactSources.contains(it.source) }.groupBy { it.getNameToDisplay().toLowerCase() }.values.forEach { it ->
7777
if (it.size == 1) {
7878
resultContacts.add(it.first())

app/src/main/res/layout/activity_settings.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,22 @@
114114

115115
</RelativeLayout>
116116

117+
<RelativeLayout
118+
android:id="@+id/settings_merge_duplicate_contacts_holder"
119+
style="@style/SettingsHolderCheckboxStyle"
120+
android:layout_width="match_parent"
121+
android:layout_height="wrap_content"
122+
android:background="@drawable/ripple_background">
123+
124+
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
125+
android:id="@+id/settings_merge_duplicate_contacts"
126+
style="@style/SettingsCheckboxStyle"
127+
android:layout_width="match_parent"
128+
android:layout_height="wrap_content"
129+
android:text="@string/merge_duplicate_contacts" />
130+
131+
</RelativeLayout>
132+
117133
<RelativeLayout
118134
android:id="@+id/settings_show_call_confirmation_holder"
119135
style="@style/SettingsHolderCheckboxStyle"

0 commit comments

Comments
 (0)