mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
allow reordering favorites by drag and drop
This commit is contained in:
@ -63,7 +63,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:1dfdd8d34d'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:34fdfce71c'
|
||||||
implementation 'com.googlecode.ez-vcard:ez-vcard:0.11.3'
|
implementation 'com.googlecode.ez-vcard:ez-vcard:0.11.3'
|
||||||
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||||
|
@ -22,7 +22,6 @@ import com.bumptech.glide.Glide
|
|||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import com.bumptech.glide.signature.ObjectKey
|
import com.bumptech.glide.signature.ObjectKey
|
||||||
import com.google.gson.Gson
|
|
||||||
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
@ -70,6 +69,7 @@ class ContactsAdapter(
|
|||||||
|
|
||||||
private var touchHelper: ItemTouchHelper? = null
|
private var touchHelper: ItemTouchHelper? = null
|
||||||
private var startReorderDragListener: StartReorderDragListener? = null
|
private var startReorderDragListener: StartReorderDragListener? = null
|
||||||
|
var onDragEndListener: (() -> Unit)? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
setupDragListener(true)
|
setupDragListener(true)
|
||||||
@ -462,8 +462,6 @@ class ContactsAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onRowClear(myViewHolder: ViewHolder?) {
|
override fun onRowClear(myViewHolder: ViewHolder?) {
|
||||||
val orderIds = contactItems.map { it.id }
|
onDragEndListener?.invoke()
|
||||||
val orderGsonString = Gson().toJson(orderIds)
|
|
||||||
activity.config.favoritesContactsOrder = orderGsonString
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import android.content.Intent
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
|
import com.google.gson.Gson
|
||||||
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
@ -242,11 +243,20 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
location = location,
|
location = location,
|
||||||
removeListener = null,
|
removeListener = null,
|
||||||
recyclerView = fragment_list,
|
recyclerView = fragment_list,
|
||||||
enableDrag = enableDragReorder
|
enableDrag = enableDragReorder,
|
||||||
) {
|
) {
|
||||||
(activity as RefreshContactsListener).contactClicked(it as Contact)
|
(activity as RefreshContactsListener).contactClicked(it as Contact)
|
||||||
}.apply {
|
}.apply {
|
||||||
fragment_list.adapter = this
|
fragment_list.adapter = this
|
||||||
|
if (enableDragReorder) {
|
||||||
|
onDragEndListener = {
|
||||||
|
val adapter = fragment_list?.adapter
|
||||||
|
if (adapter is ContactsAdapter) {
|
||||||
|
saveCustomOrderToPrefs(adapter.contactItems)
|
||||||
|
}
|
||||||
|
refreshContacts(contacts)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context.areSystemAnimationsEnabled) {
|
if (context.areSystemAnimationsEnabled) {
|
||||||
@ -262,6 +272,14 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun saveCustomOrderToPrefs(items: ArrayList<Contact>) {
|
||||||
|
activity?.apply {
|
||||||
|
val orderIds = items.map { it.id }
|
||||||
|
val orderGsonString = Gson().toJson(orderIds)
|
||||||
|
config.favoritesContactsOrder = orderGsonString
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun showContactThumbnailsChanged(showThumbnails: Boolean) {
|
fun showContactThumbnailsChanged(showThumbnails: Boolean) {
|
||||||
if (this is GroupsFragment) {
|
if (this is GroupsFragment) {
|
||||||
(fragment_list.adapter as? GroupsAdapter)?.apply {
|
(fragment_list.adapter as? GroupsAdapter)?.apply {
|
||||||
|
Reference in New Issue
Block a user