From aeed7e2456920980943a77179a87a6ffe90024c8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Dec 2018 17:44:14 +0100 Subject: [PATCH] fix #235, rely on both account name and type at filtering --- .../pro/dialogs/FilterContactSourcesDialog.kt | 8 ++++---- .../contacts/pro/extensions/Context.kt | 5 +++-- .../contacts/pro/helpers/ContactsHelper.kt | 6 ++++-- .../contacts/pro/models/ContactSource.kt | 12 +++++++++++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/FilterContactSourcesDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/FilterContactSourcesDialog.kt index 6fe2413f..3e1b7d4d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/FilterContactSourcesDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/FilterContactSourcesDialog.kt @@ -41,12 +41,12 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb private fun confirmEventTypes() { val selectedContactSources = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources() - val ignoredContactSourceNames = contactSources.filter { !selectedContactSources.contains(it) }.map { - if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name + val ignoredContactSources = contactSources.filter { !selectedContactSources.contains(it) }.map { + if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.getFullIdentifier() }.toHashSet() - if (activity.getVisibleContactSources() != ignoredContactSourceNames) { - activity.config.ignoredContactSources = ignoredContactSourceNames + if (activity.getVisibleContactSources() != ignoredContactSources) { + activity.config.ignoredContactSources = ignoredContactSources callback() } dialog?.dismiss() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt index 2d57f5b2..7cd82aad 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt @@ -308,8 +308,9 @@ fun Context.getVisibleContactSources(): ArrayList { val sources = ContactsHelper(this).getDeviceContactSources() val phoneSecret = getString(R.string.phone_storage_hidden) sources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret)) - val sourceNames = ArrayList(sources).map { if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name }.toMutableList() as ArrayList - sourceNames.removeAll(config.ignoredContactSources) + val ignoredContactSources = config.ignoredContactSources + val sourceNames = ArrayList(sources).filter { !ignoredContactSources.contains(it.getFullIdentifier()) } + .map { if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name }.toMutableList() as ArrayList return sourceNames } 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 1382b6e9..a4e69bf3 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 @@ -144,7 +144,8 @@ class ContactsHelper(val context: Context) { if (cursor?.moveToFirst() == true) { do { val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) ?: "" - if (ignoredSources.contains(accountName)) { + val accountType = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_TYPE) ?: "" + if (ignoredSources.contains("$accountName:$accountType")) { continue } @@ -884,7 +885,8 @@ class ContactsHelper(val context: Context) { CommonDataKinds.StructuredName.PHOTO_URI, CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI, CommonDataKinds.StructuredName.STARRED, - ContactsContract.RawContacts.ACCOUNT_NAME + ContactsContract.RawContacts.ACCOUNT_NAME, + ContactsContract.RawContacts.ACCOUNT_TYPE ) private fun getSortString(): String { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/ContactSource.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/ContactSource.kt index 4cd64377..a5f55e30 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/ContactSource.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/models/ContactSource.kt @@ -1,3 +1,13 @@ package com.simplemobiletools.contacts.pro.models -data class ContactSource(var name: String, var type: String, var publicName: String) +import com.simplemobiletools.contacts.pro.helpers.SMT_PRIVATE + +data class ContactSource(var name: String, var type: String, var publicName: String) { + fun getFullIdentifier(): String { + return if (type == SMT_PRIVATE) { + type + } else { + "$name:$type" + } + } +}