mirror of
				https://github.com/SimpleMobileTools/Simple-Contacts.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	show the modified contact source at the FilterContactSources adapter
This commit is contained in:
		| @@ -9,19 +9,24 @@ import com.simplemobiletools.commons.interfaces.MyAdapterListener | |||||||
| import com.simplemobiletools.contacts.R | import com.simplemobiletools.contacts.R | ||||||
| import com.simplemobiletools.contacts.activities.SimpleActivity | import com.simplemobiletools.contacts.activities.SimpleActivity | ||||||
| import com.simplemobiletools.contacts.extensions.config | import com.simplemobiletools.contacts.extensions.config | ||||||
|  | import com.simplemobiletools.contacts.models.ContactSource | ||||||
| import kotlinx.android.synthetic.main.item_filter_contact_source.view.* | import kotlinx.android.synthetic.main.item_filter_contact_source.view.* | ||||||
| import java.util.* | import java.util.* | ||||||
|  |  | ||||||
| class FilterContactSourcesAdapter(val activity: SimpleActivity, private val contactSources: List<String>, private val displayContactSources: Set<String>) : | class FilterContactSourcesAdapter(val activity: SimpleActivity, private val contactSources: List<ContactSource>, private val displayContactSources: Set<String>) : | ||||||
|         RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() { |         RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() { | ||||||
|     private val itemViews = SparseArray<View>() |     private val itemViews = SparseArray<View>() | ||||||
|     private val selectedPositions = HashSet<Int>() |     private val selectedPositions = HashSet<Int>() | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         contactSources.forEachIndexed { index, value -> |         contactSources.forEachIndexed { index, contactSource -> | ||||||
|             if (activity.config.showAllContacts() || displayContactSources.contains(value)) { |             if (activity.config.showAllContacts() || displayContactSources.contains(contactSource.name)) { | ||||||
|                 selectedPositions.add(index) |                 selectedPositions.add(index) | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             if (contactSource.name == activity.config.localAccountName && contactSource.type == activity.config.localAccountType) { | ||||||
|  |                 contactSource.name = activity.getString(R.string.phone_storage) | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -47,11 +52,7 @@ class FilterContactSourcesAdapter(val activity: SimpleActivity, private val cont | |||||||
|         override fun itemLongClicked(position: Int) {} |         override fun itemLongClicked(position: Int) {} | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fun getSelectedItemsSet(): HashSet<String> { |     fun getSelectedItemsSet() = selectedPositions | ||||||
|         val selectedItemsSet = HashSet<String>(selectedPositions.size) |  | ||||||
|         selectedPositions.forEach { selectedItemsSet.add(contactSources[it]) } |  | ||||||
|         return selectedItemsSet |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { |     override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { | ||||||
|         val view = activity.layoutInflater.inflate(R.layout.item_filter_contact_source, parent, false) |         val view = activity.layoutInflater.inflate(R.layout.item_filter_contact_source, parent, false) | ||||||
| @@ -60,7 +61,7 @@ class FilterContactSourcesAdapter(val activity: SimpleActivity, private val cont | |||||||
|  |  | ||||||
|     override fun onBindViewHolder(holder: ViewHolder, position: Int) { |     override fun onBindViewHolder(holder: ViewHolder, position: Int) { | ||||||
|         val contactSource = contactSources[position] |         val contactSource = contactSources[position] | ||||||
|         itemViews.put(position, holder.bindView(contactSource)) |         itemViews.put(position, holder.bindView(contactSource.name)) | ||||||
|         toggleItemSelection(selectedPositions.contains(position), position) |         toggleItemSelection(selectedPositions.contains(position), position) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,10 +8,13 @@ import com.simplemobiletools.contacts.activities.SimpleActivity | |||||||
| import com.simplemobiletools.contacts.adapters.FilterContactSourcesAdapter | import com.simplemobiletools.contacts.adapters.FilterContactSourcesAdapter | ||||||
| import com.simplemobiletools.contacts.extensions.config | import com.simplemobiletools.contacts.extensions.config | ||||||
| import com.simplemobiletools.contacts.helpers.ContactsHelper | import com.simplemobiletools.contacts.helpers.ContactsHelper | ||||||
|  | import com.simplemobiletools.contacts.models.ContactSource | ||||||
| import kotlinx.android.synthetic.main.dialog_export_contacts.view.* | import kotlinx.android.synthetic.main.dialog_export_contacts.view.* | ||||||
| import java.io.File | import java.io.File | ||||||
|  | import java.util.* | ||||||
|  |  | ||||||
| class ExportContactsDialog(val activity: SimpleActivity, val path: String, private val callback: (file: File, contactSources: HashSet<String>) -> Unit) { | class ExportContactsDialog(val activity: SimpleActivity, val path: String, private val callback: (file: File, contactSources: HashSet<String>) -> Unit) { | ||||||
|  |     private var contactSources = ArrayList<ContactSource>() | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         val view = (activity.layoutInflater.inflate(R.layout.dialog_export_contacts, null) as ViewGroup).apply { |         val view = (activity.layoutInflater.inflate(R.layout.dialog_export_contacts, null) as ViewGroup).apply { | ||||||
| @@ -19,8 +22,9 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva | |||||||
|             export_contacts_filename.setText("contacts_${System.currentTimeMillis() / 1000}") |             export_contacts_filename.setText("contacts_${System.currentTimeMillis() / 1000}") | ||||||
|  |  | ||||||
|             ContactsHelper(activity).getContactSources { |             ContactsHelper(activity).getContactSources { | ||||||
|  |                 it.mapTo(contactSources, { it.copy() }) | ||||||
|                 activity.runOnUiThread { |                 activity.runOnUiThread { | ||||||
|                     export_contacts_list.adapter = FilterContactSourcesAdapter(activity, it.map { it.name }, activity.config.displayContactSources) |                     export_contacts_list.adapter = FilterContactSourcesAdapter(activity, it, activity.config.displayContactSources) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -41,8 +45,12 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva | |||||||
|                                 return@setOnClickListener |                                 return@setOnClickListener | ||||||
|                             } |                             } | ||||||
|  |  | ||||||
|                             val contactSources = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet() |                             val selectedIndexes = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet() | ||||||
|                             callback(file, contactSources) |                             val selectedContactSources = HashSet<String>() | ||||||
|  |                             selectedIndexes.forEach { | ||||||
|  |                                 selectedContactSources.add(contactSources[it].name) | ||||||
|  |                             } | ||||||
|  |                             callback(file, selectedContactSources) | ||||||
|                             dismiss() |                             dismiss() | ||||||
|                         } |                         } | ||||||
|                         else -> activity.toast(R.string.invalid_name) |                         else -> activity.toast(R.string.invalid_name) | ||||||
|   | |||||||
| @@ -7,11 +7,14 @@ import com.simplemobiletools.contacts.activities.SimpleActivity | |||||||
| import com.simplemobiletools.contacts.adapters.FilterContactSourcesAdapter | import com.simplemobiletools.contacts.adapters.FilterContactSourcesAdapter | ||||||
| import com.simplemobiletools.contacts.extensions.config | import com.simplemobiletools.contacts.extensions.config | ||||||
| import com.simplemobiletools.contacts.helpers.ContactsHelper | import com.simplemobiletools.contacts.helpers.ContactsHelper | ||||||
|  | import com.simplemobiletools.contacts.models.ContactSource | ||||||
| import kotlinx.android.synthetic.main.dialog_filter_contact_sources.view.* | import kotlinx.android.synthetic.main.dialog_filter_contact_sources.view.* | ||||||
|  | import java.util.* | ||||||
|  |  | ||||||
| class FilterContactSourcesDialog(val activity: SimpleActivity, private val callback: () -> Unit) { | class FilterContactSourcesDialog(val activity: SimpleActivity, private val callback: () -> Unit) { | ||||||
|     private var dialog: AlertDialog? = null |     private var dialog: AlertDialog? = null | ||||||
|     private val view = activity.layoutInflater.inflate(R.layout.dialog_filter_contact_sources, null) |     private val view = activity.layoutInflater.inflate(R.layout.dialog_filter_contact_sources, null) | ||||||
|  |     private var contactSources = ArrayList<ContactSource>() | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         ContactsHelper(activity).getContactSources { |         ContactsHelper(activity).getContactSources { | ||||||
| @@ -19,9 +22,10 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb | |||||||
|                 return@getContactSources |                 return@getContactSources | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             it.mapTo(contactSources, { it.copy() }) | ||||||
|             val selectedSources = activity.config.displayContactSources |             val selectedSources = activity.config.displayContactSources | ||||||
|             activity.runOnUiThread { |             activity.runOnUiThread { | ||||||
|                 view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, it.map { it.name }, selectedSources) |                 view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, it, selectedSources) | ||||||
|  |  | ||||||
|                 dialog = AlertDialog.Builder(activity) |                 dialog = AlertDialog.Builder(activity) | ||||||
|                         .setPositiveButton(R.string.ok, { dialogInterface, i -> confirmEventTypes() }) |                         .setPositiveButton(R.string.ok, { dialogInterface, i -> confirmEventTypes() }) | ||||||
| @@ -34,9 +38,14 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun confirmEventTypes() { |     private fun confirmEventTypes() { | ||||||
|         val selectedItems = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet() |         val selectedIndexes = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet() | ||||||
|         if (activity.config.displayContactSources != selectedItems) { |         val selectedContactSources = HashSet<String>() | ||||||
|             activity.config.displayContactSources = selectedItems |         selectedIndexes.forEach { | ||||||
|  |             selectedContactSources.add(contactSources[it].name) | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (activity.config.displayContactSources != selectedContactSources) { | ||||||
|  |             activity.config.displayContactSources = selectedContactSources | ||||||
|             callback() |             callback() | ||||||
|         } |         } | ||||||
|         dialog?.dismiss() |         dialog?.dismiss() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user