fix: extension dragging
This commit is contained in:
parent
d53781e75a
commit
1e7b546b75
3 changed files with 48 additions and 35 deletions
|
@ -199,10 +199,19 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder,
|
viewHolder: RecyclerView.ViewHolder,
|
||||||
target: RecyclerView.ViewHolder
|
target: RecyclerView.ViewHolder
|
||||||
): Boolean {
|
): Boolean {
|
||||||
extensionsAdapter.onMove(
|
val newList = extensionsAdapter.currentList.toMutableList()
|
||||||
viewHolder.absoluteAdapterPosition,
|
val fromPosition = viewHolder.absoluteAdapterPosition
|
||||||
target.absoluteAdapterPosition
|
val toPosition = target.absoluteAdapterPosition
|
||||||
)
|
if (fromPosition < toPosition) { //probably need to switch to a recyclerview adapter
|
||||||
|
for (i in fromPosition until toPosition) {
|
||||||
|
Collections.swap(newList, i, i + 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i in fromPosition downTo toPosition + 1) {
|
||||||
|
Collections.swap(newList, i, i - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
extensionsAdapter.submitList(newList)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,6 +230,7 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder
|
viewHolder: RecyclerView.ViewHolder
|
||||||
) {
|
) {
|
||||||
super.clearView(recyclerView, viewHolder)
|
super.clearView(recyclerView, viewHolder)
|
||||||
|
extensionsAdapter.updatePref()
|
||||||
viewHolder.itemView.elevation = 0f
|
viewHolder.itemView.elevation = 0f
|
||||||
viewHolder.itemView.translationZ = 0f
|
viewHolder.itemView.translationZ = 0f
|
||||||
}
|
}
|
||||||
|
@ -230,7 +240,6 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
animeExtensionManager.installedExtensionsFlow.collect { extensions ->
|
animeExtensionManager.installedExtensionsFlow.collect { extensions ->
|
||||||
logger("asdfg: Extensions updated")
|
|
||||||
extensionsAdapter.updateData(sortToAnimeSourcesList(extensions))
|
extensionsAdapter.updateData(sortToAnimeSourcesList(extensions))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,21 +276,16 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
) : ListAdapter<AnimeExtension.Installed, AnimeExtensionsAdapter.ViewHolder>(
|
) : ListAdapter<AnimeExtension.Installed, AnimeExtensionsAdapter.ViewHolder>(
|
||||||
DIFF_CALLBACK_INSTALLED
|
DIFF_CALLBACK_INSTALLED
|
||||||
) {
|
) {
|
||||||
private val data: MutableList<AnimeExtension.Installed> = mutableListOf()
|
|
||||||
|
|
||||||
fun updateData(newExtensions: List<AnimeExtension.Installed>) {
|
fun updateData(newExtensions: List<AnimeExtension.Installed>) {
|
||||||
submitList(newExtensions)
|
submitList(newExtensions)
|
||||||
data.clear()
|
|
||||||
data.addAll(newExtensions)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMove(fromPosition: Int, toPosition: Int) {
|
fun updatePref() {
|
||||||
Collections.swap(data, fromPosition, toPosition)
|
val map = currentList.map { it.name }
|
||||||
val map = data.map { it.name }.toList()
|
|
||||||
PrefManager.setVal(PrefName.AnimeSourcesOrder, map)
|
PrefManager.setVal(PrefName.AnimeSourcesOrder, map)
|
||||||
AnimeSources.pinnedAnimeSources = map
|
AnimeSources.pinnedAnimeSources = map
|
||||||
AnimeSources.performReorderAnimeSources()
|
AnimeSources.performReorderAnimeSources()
|
||||||
notifyItemMoved(fromPosition, toPosition)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
|
|
|
@ -195,10 +195,19 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder,
|
viewHolder: RecyclerView.ViewHolder,
|
||||||
target: RecyclerView.ViewHolder
|
target: RecyclerView.ViewHolder
|
||||||
): Boolean {
|
): Boolean {
|
||||||
extensionsAdapter.onMove(
|
val newList = extensionsAdapter.currentList.toMutableList()
|
||||||
viewHolder.absoluteAdapterPosition,
|
val fromPosition = viewHolder.absoluteAdapterPosition
|
||||||
target.absoluteAdapterPosition
|
val toPosition = target.absoluteAdapterPosition
|
||||||
)
|
if (fromPosition < toPosition) { //probably need to switch to a recyclerview adapter
|
||||||
|
for (i in fromPosition until toPosition) {
|
||||||
|
Collections.swap(newList, i, i + 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i in fromPosition downTo toPosition + 1) {
|
||||||
|
Collections.swap(newList, i, i - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
extensionsAdapter.submitList(newList)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,6 +226,7 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder
|
viewHolder: RecyclerView.ViewHolder
|
||||||
) {
|
) {
|
||||||
super.clearView(recyclerView, viewHolder)
|
super.clearView(recyclerView, viewHolder)
|
||||||
|
extensionsAdapter.updatePref()
|
||||||
viewHolder.itemView.elevation = 0f
|
viewHolder.itemView.elevation = 0f
|
||||||
viewHolder.itemView.translationZ = 0f
|
viewHolder.itemView.translationZ = 0f
|
||||||
}
|
}
|
||||||
|
@ -262,12 +272,8 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
DIFF_CALLBACK_INSTALLED
|
DIFF_CALLBACK_INSTALLED
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val data: MutableList<MangaExtension.Installed> = mutableListOf()
|
|
||||||
|
|
||||||
fun updateData(newExtensions: List<MangaExtension.Installed>) {
|
fun updateData(newExtensions: List<MangaExtension.Installed>) {
|
||||||
submitList(newExtensions)
|
submitList(newExtensions)
|
||||||
data.clear()
|
|
||||||
data.addAll(newExtensions)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
|
@ -276,13 +282,11 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
return ViewHolder(view)
|
return ViewHolder(view)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMove(fromPosition: Int, toPosition: Int) {
|
fun updatePref() {
|
||||||
Collections.swap(data, fromPosition, toPosition)
|
val map = currentList.map { it.name }.toList()
|
||||||
val map = data.map { it.name }.toList()
|
|
||||||
PrefManager.setVal(PrefName.MangaSourcesOrder, map)
|
PrefManager.setVal(PrefName.MangaSourcesOrder, map)
|
||||||
MangaSources.pinnedMangaSources = map
|
MangaSources.pinnedMangaSources = map
|
||||||
MangaSources.performReorderMangaSources()
|
MangaSources.performReorderMangaSources()
|
||||||
notifyItemMoved(fromPosition, toPosition)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
||||||
|
|
|
@ -124,10 +124,19 @@ class InstalledNovelExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder,
|
viewHolder: RecyclerView.ViewHolder,
|
||||||
target: RecyclerView.ViewHolder
|
target: RecyclerView.ViewHolder
|
||||||
): Boolean {
|
): Boolean {
|
||||||
extensionsAdapter.onMove(
|
val newList = extensionsAdapter.currentList.toMutableList()
|
||||||
viewHolder.absoluteAdapterPosition,
|
val fromPosition = viewHolder.absoluteAdapterPosition
|
||||||
target.absoluteAdapterPosition
|
val toPosition = target.absoluteAdapterPosition
|
||||||
)
|
if (fromPosition < toPosition) { //probably need to switch to a recyclerview adapter
|
||||||
|
for (i in fromPosition until toPosition) {
|
||||||
|
Collections.swap(newList, i, i + 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i in fromPosition downTo toPosition + 1) {
|
||||||
|
Collections.swap(newList, i, i - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
extensionsAdapter.submitList(newList)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,6 +155,7 @@ class InstalledNovelExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
viewHolder: RecyclerView.ViewHolder
|
viewHolder: RecyclerView.ViewHolder
|
||||||
) {
|
) {
|
||||||
super.clearView(recyclerView, viewHolder)
|
super.clearView(recyclerView, viewHolder)
|
||||||
|
extensionsAdapter.updatePref()
|
||||||
viewHolder.itemView.elevation = 0f
|
viewHolder.itemView.elevation = 0f
|
||||||
viewHolder.itemView.translationZ = 0f
|
viewHolder.itemView.translationZ = 0f
|
||||||
}
|
}
|
||||||
|
@ -191,21 +201,16 @@ class InstalledNovelExtensionsFragment : Fragment(), SearchQueryHandler {
|
||||||
) : ListAdapter<NovelExtension.Installed, NovelExtensionsAdapter.ViewHolder>(
|
) : ListAdapter<NovelExtension.Installed, NovelExtensionsAdapter.ViewHolder>(
|
||||||
DIFF_CALLBACK_INSTALLED
|
DIFF_CALLBACK_INSTALLED
|
||||||
) {
|
) {
|
||||||
private val data: MutableList<NovelExtension.Installed> = mutableListOf()
|
|
||||||
|
|
||||||
fun updateData(newExtensions: List<NovelExtension.Installed>) {
|
fun updateData(newExtensions: List<NovelExtension.Installed>) {
|
||||||
submitList(newExtensions)
|
submitList(newExtensions)
|
||||||
data.clear()
|
|
||||||
data.addAll(newExtensions)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMove(fromPosition: Int, toPosition: Int) {
|
fun updatePref() {
|
||||||
Collections.swap(data, fromPosition, toPosition)
|
val map = currentList.map { it.name }
|
||||||
val map = data.map { it.name }.toList()
|
|
||||||
PrefManager.setVal(PrefName.NovelSourcesOrder, map)
|
PrefManager.setVal(PrefName.NovelSourcesOrder, map)
|
||||||
NovelSources.pinnedNovelSources = map
|
NovelSources.pinnedNovelSources = map
|
||||||
NovelSources.performReorderNovelSources()
|
NovelSources.performReorderNovelSources()
|
||||||
notifyItemMoved(fromPosition, toPosition)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue