adding a toggle for optional duplicate contact filtering, enabled by default

This commit is contained in:
tibbi 2018-04-30 20:13:22 +02:00
parent 23aa17df6f
commit 28dd320b9e
18 changed files with 60 additions and 15 deletions

View File

@ -48,6 +48,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
private var storedShowContactThumbnails = false private var storedShowContactThumbnails = false
private var storedShowPhoneNumbers = false private var storedShowPhoneNumbers = false
private var storedStartNameWithSurname = false private var storedStartNameWithSurname = false
private var storedFilterDuplicates = true
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -118,6 +119,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
favorites_fragment?.startNameWithSurnameChanged(configStartNameWithSurname) favorites_fragment?.startNameWithSurnameChanged(configStartNameWithSurname)
} }
if (storedFilterDuplicates != config.filterDuplicates) {
refreshContacts(ALL_TABS_MASK)
}
if (werePermissionsHandled && !isFirstResume) { if (werePermissionsHandled && !isFirstResume) {
if (viewpager.adapter == null) { if (viewpager.adapter == null) {
initFragments() initFragments()
@ -175,6 +180,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
storedShowContactThumbnails = showContactThumbnails storedShowContactThumbnails = showContactThumbnails
storedShowPhoneNumbers = showPhoneNumbers storedShowPhoneNumbers = showPhoneNumbers
storedStartNameWithSurname = startNameWithSurname storedStartNameWithSurname = startNameWithSurname
storedFilterDuplicates = filterDuplicates
} }
} }

View File

@ -31,6 +31,7 @@ class SettingsActivity : SimpleActivity() {
setupShowContactThumbnails() setupShowContactThumbnails()
setupShowPhoneNumbers() setupShowPhoneNumbers()
setupStartNameWithSurname() setupStartNameWithSurname()
setupFilterDuplicates()
setupOnContactClick() setupOnContactClick()
updateTextColors(settings_holder) 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() { private fun setupOnContactClick() {
settings_on_contact_click.text = getOnContactClickText() settings_on_contact_click.text = getOnContactClickText()
settings_on_contact_click_holder.setOnClickListener { settings_on_contact_click_holder.setOnClickListener {

View File

@ -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 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) 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() 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()
} }

View File

@ -12,6 +12,7 @@ const val LOCAL_ACCOUNT_NAME = "local_account_name"
const val LOCAL_ACCOUNT_TYPE = "local_account_type" const val LOCAL_ACCOUNT_TYPE = "local_account_type"
const val ON_CONTACT_CLICK = "on_contact_click" const val ON_CONTACT_CLICK = "on_contact_click"
const val SHOW_CONTACT_FIELDS = "show_contact_fields" const val SHOW_CONTACT_FIELDS = "show_contact_fields"
const val FILTER_DUPLICATES = "filter_duplicates"
const val CONTACT_ID = "contact_id" const val CONTACT_ID = "contact_id"
const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps const val SMT_PRIVATE = "smt_private" // used at the contact source of local contacts hidden from other apps

View File

@ -41,9 +41,11 @@ class ContactsHelper(val activity: BaseSimpleActivity) {
val contactsSize = contacts.size() val contactsSize = contacts.size()
var resultContacts = ArrayList<Contact>(contactsSize) var resultContacts = ArrayList<Contact>(contactsSize)
(0 until contactsSize).mapTo(resultContacts) { contacts.valueAt(it) } (0 until contactsSize).mapTo(resultContacts) { contacts.valueAt(it) }
resultContacts = resultContacts.distinctBy { if (activity.config.filterDuplicates) {
it.getHashToCompare() resultContacts = resultContacts.distinctBy {
} as ArrayList<Contact> it.getHashToCompare()
} as ArrayList<Contact>
}
// groups are obtained with contactID, not rawID, so assign them to proper contacts like this // groups are obtained with contactID, not rawID, so assign them to proper contacts like this
val groups = getContactGroups(getStoredGroups()) val groups = getContactGroups(getStoredGroups())

View File

@ -193,6 +193,29 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:id="@+id/settings_filter_duplicates_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingBottom="@dimen/activity_margin"
android:paddingLeft="@dimen/normal_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_filter_duplicates"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingLeft="@dimen/medium_margin"
android:paddingStart="@dimen/medium_margin"
android:text="@string/filter_duplicates"/>
</RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_on_contact_click_holder" android:id="@+id/settings_on_contact_click_holder"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Show favorites tab</string> <string name="show_favorites_tab">Show favorites tab</string>
<string name="show_groups_tab">Show groups tab</string> <string name="show_groups_tab">Show groups tab</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Email</string> <string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Εμφάνιση καρτέλας αγαπημένων</string> <string name="show_favorites_tab">Εμφάνιση καρτέλας αγαπημένων</string>
<string name="show_groups_tab">Εμφάνιση καρτέλας ομάδων</string> <string name="show_groups_tab">Εμφάνιση καρτέλας ομάδων</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Email</string> <string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Afficher l\'onglet favoris</string> <string name="show_favorites_tab">Afficher l\'onglet favoris</string>
<string name="show_groups_tab">Afficher l\'onglet groupes</string> <string name="show_groups_tab">Afficher l\'onglet groupes</string>
<string name="manage_shown_contact_fields">Configurer l\'affichage des champs des contacts</string> <string name="manage_shown_contact_fields">Configurer l\'affichage des champs des contacts</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">E-mail</string> <string name="email">E-mail</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Prikaži karticu favorita</string> <string name="show_favorites_tab">Prikaži karticu favorita</string>
<string name="show_groups_tab">Prikaži karticu grupa</string> <string name="show_groups_tab">Prikaži karticu grupa</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">E-pošta</string> <string name="email">E-pošta</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Show favorites tab</string> <string name="show_favorites_tab">Show favorites tab</string>
<string name="show_groups_tab">Show groups tab</string> <string name="show_groups_tab">Show groups tab</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">이메일</string> <string name="email">이메일</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Rodyti mėgiamiausiųjų skirtuką</string> <string name="show_favorites_tab">Rodyti mėgiamiausiųjų skirtuką</string>
<string name="show_groups_tab">Rodyti grupių skirtuką</string> <string name="show_groups_tab">Rodyti grupių skirtuką</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Elektroninis paštas</string> <string name="email">Elektroninis paštas</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Mostrar favoritos</string> <string name="show_favorites_tab">Mostrar favoritos</string>
<string name="show_groups_tab">Mostrar grupos</string> <string name="show_groups_tab">Mostrar grupos</string>
<string name="manage_shown_contact_fields">Gerir campos a exibir</string> <string name="manage_shown_contact_fields">Gerir campos a exibir</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">E-mail</string> <string name="email">E-mail</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Показывать вкладку избранного</string> <string name="show_favorites_tab">Показывать вкладку избранного</string>
<string name="show_groups_tab">Показывать вкладку групп</string> <string name="show_groups_tab">Показывать вкладку групп</string>
<string name="manage_shown_contact_fields">Управление отображаемыми полями контактов</string> <string name="manage_shown_contact_fields">Управление отображаемыми полями контактов</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Эл. почта</string> <string name="email">Эл. почта</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Zobraziť okno s obľúbenými</string> <string name="show_favorites_tab">Zobraziť okno s obľúbenými</string>
<string name="show_groups_tab">Zobraziť okno so skupinami</string> <string name="show_groups_tab">Zobraziť okno so skupinami</string>
<string name="manage_shown_contact_fields">Spravovať zobrazené polia kontaktov</string> <string name="manage_shown_contact_fields">Spravovať zobrazené polia kontaktov</string>
<string name="filter_out_duplicates">Pokúsiť sa vyfiltrovať duplicitné kontakty</string> <string name="filter_duplicates">Pokúsiť sa vyfiltrovať duplicitné kontakty</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Email</string> <string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Visa fliken Favoriter</string> <string name="show_favorites_tab">Visa fliken Favoriter</string>
<string name="show_groups_tab">Visa fliken Grupper</string> <string name="show_groups_tab">Visa fliken Grupper</string>
<string name="manage_shown_contact_fields">Hantera visade kontaktfält</string> <string name="manage_shown_contact_fields">Hantera visade kontaktfält</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">E-post</string> <string name="email">E-post</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">顯示我的最愛頁面</string> <string name="show_favorites_tab">顯示我的最愛頁面</string>
<string name="show_groups_tab">顯示群組頁面</string> <string name="show_groups_tab">顯示群組頁面</string>
<string name="manage_shown_contact_fields">管理顯示的聯絡人欄位</string> <string name="manage_shown_contact_fields">管理顯示的聯絡人欄位</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">電子信箱</string> <string name="email">電子信箱</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Show favorites tab</string> <string name="show_favorites_tab">Show favorites tab</string>
<string name="show_groups_tab">Show groups tab</string> <string name="show_groups_tab">Show groups tab</string>
<string name="manage_shown_contact_fields">Manage shown contact fields</string> <string name="manage_shown_contact_fields">Manage shown contact fields</string>
<string name="filter_out_duplicates">Try filtering out duplicate contacts</string> <string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails --> <!-- Emails -->
<string name="email">Email</string> <string name="email">Email</string>