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

View File

@ -31,6 +31,7 @@ class SettingsActivity : SimpleActivity() {
setupShowContactThumbnails()
setupShowPhoneNumbers()
setupStartNameWithSurname()
setupFilterDuplicates()
setupOnContactClick()
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() {
settings_on_contact_click.text = getOnContactClickText()
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
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 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 ON_CONTACT_CLICK = "on_contact_click"
const val SHOW_CONTACT_FIELDS = "show_contact_fields"
const val FILTER_DUPLICATES = "filter_duplicates"
const val CONTACT_ID = "contact_id"
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()
var resultContacts = ArrayList<Contact>(contactsSize)
(0 until contactsSize).mapTo(resultContacts) { contacts.valueAt(it) }
resultContacts = resultContacts.distinctBy {
it.getHashToCompare()
} as ArrayList<Contact>
if (activity.config.filterDuplicates) {
resultContacts = resultContacts.distinctBy {
it.getHashToCompare()
} as ArrayList<Contact>
}
// groups are obtained with contactID, not rawID, so assign them to proper contacts like this
val groups = getContactGroups(getStoredGroups())

View File

@ -193,6 +193,29 @@
</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
android:id="@+id/settings_on_contact_click_holder"
android:layout_width="match_parent"

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Show favorites tab</string>
<string name="show_groups_tab">Show groups tab</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 -->
<string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Εμφάνιση καρτέλας αγαπημένων</string>
<string name="show_groups_tab">Εμφάνιση καρτέλας ομάδων</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 -->
<string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Afficher l\'onglet favoris</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="filter_out_duplicates">Try filtering out duplicate contacts</string>
<string name="filter_duplicates">Try filtering out duplicate contacts</string>
<!-- Emails -->
<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_groups_tab">Prikaži karticu grupa</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 -->
<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_groups_tab">Show groups tab</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 -->
<string name="email">이메일</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Rodyti mėgiamiausiųjų skirtuką</string>
<string name="show_groups_tab">Rodyti grupių skirtuką</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 -->
<string name="email">Elektroninis paštas</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Mostrar favoritos</string>
<string name="show_groups_tab">Mostrar grupos</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 -->
<string name="email">E-mail</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Показывать вкладку избранного</string>
<string name="show_groups_tab">Показывать вкладку групп</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 -->
<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_groups_tab">Zobraziť okno so skupinami</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 -->
<string name="email">Email</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Visa fliken Favoriter</string>
<string name="show_groups_tab">Visa fliken Grupper</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 -->
<string name="email">E-post</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">顯示我的最愛頁面</string>
<string name="show_groups_tab">顯示群組頁面</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 -->
<string name="email">電子信箱</string>

View File

@ -48,7 +48,7 @@
<string name="show_favorites_tab">Show favorites tab</string>
<string name="show_groups_tab">Show groups tab</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 -->
<string name="email">Email</string>