mirror of
				https://github.com/SimpleMobileTools/Simple-Contacts.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	adding a toggle for optional duplicate contact filtering, enabled by default
This commit is contained in:
		| @@ -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 | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
| @@ -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() | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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()) | ||||
|   | ||||
| @@ -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" | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user