mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-02-17 04:10:40 +01:00
prepare for showing clip sections at keyboard
This commit is contained in:
parent
5c58c1224b
commit
8372368cc9
@ -9,10 +9,11 @@ import com.simplemobiletools.commons.extensions.removeUnderlines
|
|||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import com.simplemobiletools.keyboard.extensions.config
|
import com.simplemobiletools.keyboard.extensions.config
|
||||||
import com.simplemobiletools.keyboard.models.Clip
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
|
import com.simplemobiletools.keyboard.models.ListItem
|
||||||
import kotlinx.android.synthetic.main.item_clip_on_keyboard.view.*
|
import kotlinx.android.synthetic.main.item_clip_on_keyboard.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ClipsKeyboardAdapter(val context: Context, var clips: ArrayList<Clip>, val itemClick: (clip: Clip) -> Unit) :
|
class ClipsKeyboardAdapter(val context: Context, var clips: ArrayList<ListItem>, val itemClick: (clip: Clip) -> Unit) :
|
||||||
RecyclerView.Adapter<ClipsKeyboardAdapter.ViewHolderr>() {
|
RecyclerView.Adapter<ClipsKeyboardAdapter.ViewHolderr>() {
|
||||||
|
|
||||||
private val layoutInflater = LayoutInflater.from(context)
|
private val layoutInflater = LayoutInflater.from(context)
|
||||||
@ -27,13 +28,15 @@ class ClipsKeyboardAdapter(val context: Context, var clips: ArrayList<Clip>, val
|
|||||||
override fun onBindViewHolder(holder: ViewHolderr, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolderr, position: Int) {
|
||||||
val item = clips[position]
|
val item = clips[position]
|
||||||
holder.bindView(item) { itemView ->
|
holder.bindView(item) { itemView ->
|
||||||
setupView(itemView, item)
|
when (item) {
|
||||||
|
is Clip -> setupClip(itemView, item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = clips.size
|
override fun getItemCount() = clips.size
|
||||||
|
|
||||||
private fun setupView(view: View, clip: Clip) {
|
private fun setupClip(view: View, clip: Clip) {
|
||||||
view.clip_value.apply {
|
view.clip_value.apply {
|
||||||
text = clip.value
|
text = clip.value
|
||||||
removeUnderlines()
|
removeUnderlines()
|
||||||
@ -42,11 +45,14 @@ class ClipsKeyboardAdapter(val context: Context, var clips: ArrayList<Clip>, val
|
|||||||
}
|
}
|
||||||
|
|
||||||
open inner class ViewHolderr(view: View) : RecyclerView.ViewHolder(view) {
|
open inner class ViewHolderr(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(clip: Clip, callback: (itemView: View) -> Unit): View {
|
fun bindView(any: Any, callback: (itemView: View) -> Unit): View {
|
||||||
return itemView.apply {
|
return itemView.apply {
|
||||||
callback(this)
|
callback(this)
|
||||||
setOnClickListener {
|
|
||||||
itemClick.invoke(clip)
|
if (any is Clip) {
|
||||||
|
setOnClickListener {
|
||||||
|
itemClick.invoke(any)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,3 +10,7 @@ const val MAX_KEYS_PER_MINI_ROW = 5
|
|||||||
// shared prefs
|
// shared prefs
|
||||||
const val VIBRATE_ON_KEYPRESS = "vibrate_on_keypress"
|
const val VIBRATE_ON_KEYPRESS = "vibrate_on_keypress"
|
||||||
const val SHOW_POPUP_ON_KEYPRESS = "show_popup_on_keypress"
|
const val SHOW_POPUP_ON_KEYPRESS = "show_popup_on_keypress"
|
||||||
|
|
||||||
|
// differentiate current and pinned clips at the keyboards' Clipboard section
|
||||||
|
const val ITEM_SECTION_LABEL = 0
|
||||||
|
const val ITEM_CLIP = 1
|
||||||
|
@ -9,4 +9,4 @@ import androidx.room.PrimaryKey
|
|||||||
data class Clip(
|
data class Clip(
|
||||||
@PrimaryKey(autoGenerate = true) var id: Long?,
|
@PrimaryKey(autoGenerate = true) var id: Long?,
|
||||||
@ColumnInfo(name = "value") var value: String
|
@ColumnInfo(name = "value") var value: String
|
||||||
)
|
) : ListItem()
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
package com.simplemobiletools.keyboard.models
|
||||||
|
|
||||||
|
data class ClipsSectionLabel(val value: String) : ListItem()
|
@ -0,0 +1,3 @@
|
|||||||
|
package com.simplemobiletools.keyboard.models
|
||||||
|
|
||||||
|
open class ListItem
|
@ -42,6 +42,8 @@ import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_MODE_
|
|||||||
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SHIFT
|
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SHIFT
|
||||||
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
|
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
|
||||||
import com.simplemobiletools.keyboard.models.Clip
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
|
import com.simplemobiletools.keyboard.models.ClipsSectionLabel
|
||||||
|
import com.simplemobiletools.keyboard.models.ListItem
|
||||||
import kotlinx.android.synthetic.main.keyboard_popup_keyboard.view.*
|
import kotlinx.android.synthetic.main.keyboard_popup_keyboard.view.*
|
||||||
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
|
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -1326,14 +1328,30 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||||||
|
|
||||||
private fun setupStoredClips() {
|
private fun setupStoredClips() {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
val clips = context.clipsDB.getClips().toMutableList() as ArrayList<Clip>
|
val clips = ArrayList<ListItem>()
|
||||||
|
val clipboardManager = (context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager)
|
||||||
|
val clipboardContent = clipboardManager.primaryClip?.getItemAt(0)?.text?.trim()?.toString()
|
||||||
|
if (clipboardContent?.isNotEmpty() == true) {
|
||||||
|
val section = ClipsSectionLabel(context.getString(R.string.clipboard_current))
|
||||||
|
clips.add(section)
|
||||||
|
|
||||||
|
val clip = Clip(-1, clipboardContent)
|
||||||
|
clips.add(clip)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clipboardContent?.isNotEmpty() == true) {
|
||||||
|
val section = ClipsSectionLabel(context.getString(R.string.clipboard_pinned))
|
||||||
|
clips.add(section)
|
||||||
|
}
|
||||||
|
|
||||||
|
clips.addAll(context.clipsDB.getClips())
|
||||||
Handler(Looper.getMainLooper()).post {
|
Handler(Looper.getMainLooper()).post {
|
||||||
setupClipsAdapter(clips)
|
setupClipsAdapter(clips)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupClipsAdapter(clips: ArrayList<Clip>) {
|
private fun setupClipsAdapter(clips: ArrayList<ListItem>) {
|
||||||
mClipboardManagerHolder?.apply {
|
mClipboardManagerHolder?.apply {
|
||||||
clipboard_content_placeholder_1.beVisibleIf(clips.isEmpty())
|
clipboard_content_placeholder_1.beVisibleIf(clips.isEmpty())
|
||||||
clipboard_content_placeholder_2.beVisibleIf(clips.isEmpty())
|
clipboard_content_placeholder_2.beVisibleIf(clips.isEmpty())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user