|
|
@ -8,9 +8,14 @@ import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
import io.legado.app.base.adapter.ItemViewHolder |
|
|
|
import io.legado.app.base.adapter.ItemViewHolder |
|
|
|
import io.legado.app.base.adapter.RecyclerAdapter |
|
|
|
import io.legado.app.base.adapter.RecyclerAdapter |
|
|
|
import io.legado.app.constant.AppConst |
|
|
|
import io.legado.app.data.appDb |
|
|
|
|
|
|
|
import io.legado.app.data.entities.KeyboardAssist |
|
|
|
import io.legado.app.databinding.ItemFilletTextBinding |
|
|
|
import io.legado.app.databinding.ItemFilletTextBinding |
|
|
|
import io.legado.app.databinding.PopupKeyboardToolBinding |
|
|
|
import io.legado.app.databinding.PopupKeyboardToolBinding |
|
|
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
|
|
|
|
import kotlinx.coroutines.Dispatchers.IO |
|
|
|
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
|
|
|
|
import kotlinx.coroutines.withContext |
|
|
|
import splitties.systemservices.layoutInflater |
|
|
|
import splitties.systemservices.layoutInflater |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -18,6 +23,7 @@ import splitties.systemservices.layoutInflater |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class KeyboardToolPop( |
|
|
|
class KeyboardToolPop( |
|
|
|
context: Context, |
|
|
|
context: Context, |
|
|
|
|
|
|
|
private val scope: CoroutineScope, |
|
|
|
private val callBack: CallBack |
|
|
|
private val callBack: CallBack |
|
|
|
) : PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) { |
|
|
|
) : PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) { |
|
|
|
|
|
|
|
|
|
|
@ -48,11 +54,16 @@ class KeyboardToolPop( |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
adapter.setItems(AppConst.charsets) |
|
|
|
scope.launch { |
|
|
|
|
|
|
|
val items = withContext(IO) { |
|
|
|
|
|
|
|
appDb.keyboardAssistsDao.getOrDefault() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
adapter.setItems(items) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inner class Adapter(context: Context) : |
|
|
|
inner class Adapter(context: Context) : |
|
|
|
RecyclerAdapter<String, ItemFilletTextBinding>(context) { |
|
|
|
RecyclerAdapter<KeyboardAssist, ItemFilletTextBinding>(context) { |
|
|
|
|
|
|
|
|
|
|
|
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding { |
|
|
|
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding { |
|
|
|
return ItemFilletTextBinding.inflate(inflater, parent, false) |
|
|
|
return ItemFilletTextBinding.inflate(inflater, parent, false) |
|
|
@ -61,11 +72,11 @@ class KeyboardToolPop( |
|
|
|
override fun convert( |
|
|
|
override fun convert( |
|
|
|
holder: ItemViewHolder, |
|
|
|
holder: ItemViewHolder, |
|
|
|
binding: ItemFilletTextBinding, |
|
|
|
binding: ItemFilletTextBinding, |
|
|
|
item: String, |
|
|
|
item: KeyboardAssist, |
|
|
|
payloads: MutableList<Any> |
|
|
|
payloads: MutableList<Any> |
|
|
|
) { |
|
|
|
) { |
|
|
|
binding.run { |
|
|
|
binding.run { |
|
|
|
textView.text = item |
|
|
|
textView.text = item.key |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -73,7 +84,7 @@ class KeyboardToolPop( |
|
|
|
holder.itemView.apply { |
|
|
|
holder.itemView.apply { |
|
|
|
setOnClickListener { |
|
|
|
setOnClickListener { |
|
|
|
getItemByLayoutPosition(holder.layoutPosition)?.let { |
|
|
|
getItemByLayoutPosition(holder.layoutPosition)?.let { |
|
|
|
callBack.sendText(it) |
|
|
|
callBack.sendText(it.value) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|