mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-25 00:56:35 +00:00
swipe left to remove clipboard history entry
This commit is contained in:
parent
b921667c22
commit
3168d7738c
2 changed files with 22 additions and 0 deletions
|
@ -5,7 +5,9 @@ package org.dslul.openboard.inputmethod.keyboard.clipboard
|
|||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.dslul.openboard.inputmethod.latin.ClipboardHistoryManager
|
||||
|
||||
class ClipboardHistoryRecyclerView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
@ -14,6 +16,19 @@ class ClipboardHistoryRecyclerView @JvmOverloads constructor(
|
|||
) : RecyclerView(context, attrs, defStyleAttr) {
|
||||
|
||||
var placeholderView: View? = null
|
||||
val historyManager: ClipboardHistoryManager? get() = (adapter as? ClipboardAdapter?)?.clipboardHistoryManager
|
||||
private val touchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
|
||||
override fun onMove(recyclerView: RecyclerView, viewHolder: ViewHolder, target: ViewHolder) = false
|
||||
override fun getSwipeDirs(recyclerView: RecyclerView, viewHolder: ViewHolder): Int {
|
||||
if (historyManager?.canRemove(viewHolder.absoluteAdapterPosition) == false)
|
||||
return 0 // block swipe for pinned items
|
||||
return super.getSwipeDirs(recyclerView, viewHolder)
|
||||
}
|
||||
override fun onSwiped(viewHolder: ViewHolder, dir: Int) {
|
||||
historyManager?.removeEntry(viewHolder.absoluteAdapterPosition)
|
||||
adapter?.notifyItemRemoved(viewHolder.absoluteAdapterPosition)
|
||||
}
|
||||
}).attachToRecyclerView(this)
|
||||
|
||||
private val adapterDataObserver: AdapterDataObserver = object : AdapterDataObserver() {
|
||||
|
||||
|
|
|
@ -92,6 +92,13 @@ class ClipboardHistoryManager(
|
|||
}
|
||||
}
|
||||
|
||||
fun canRemove(index: Int) = historyEntries.getOrNull(index)?.isPinned != true
|
||||
|
||||
fun removeEntry(index: Int) {
|
||||
if (canRemove(index))
|
||||
historyEntries.removeAt(index)
|
||||
}
|
||||
|
||||
private fun sortHistoryEntries() {
|
||||
historyEntries.sort()
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue