mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-20 14:19:08 +00:00
store clipboard history as strings, fixes GH-1430
This commit is contained in:
parent
9e91e7562b
commit
efaddf6c51
2 changed files with 4 additions and 20 deletions
|
@ -2,18 +2,12 @@
|
||||||
|
|
||||||
package helium314.keyboard.latin
|
package helium314.keyboard.latin
|
||||||
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
|
||||||
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
|
||||||
import kotlinx.serialization.encoding.Decoder
|
|
||||||
import kotlinx.serialization.encoding.Encoder
|
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class ClipboardHistoryEntry (
|
data class ClipboardHistoryEntry (
|
||||||
var timeStamp: Long,
|
var timeStamp: Long,
|
||||||
@Serializable(with = CharSequenceStringSerializer::class)
|
val content: String,
|
||||||
val content: CharSequence,
|
|
||||||
var isPinned: Boolean = false
|
var isPinned: Boolean = false
|
||||||
) : Comparable<ClipboardHistoryEntry> {
|
) : Comparable<ClipboardHistoryEntry> {
|
||||||
override fun compareTo(other: ClipboardHistoryEntry): Int {
|
override fun compareTo(other: ClipboardHistoryEntry): Int {
|
||||||
|
@ -21,13 +15,3 @@ data class ClipboardHistoryEntry (
|
||||||
return if (result != 0) result else other.timeStamp.compareTo(timeStamp)
|
return if (result != 0) result else other.timeStamp.compareTo(timeStamp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CharSequenceStringSerializer : KSerializer<CharSequence> {
|
|
||||||
override val descriptor = PrimitiveSerialDescriptor("CharSequence", PrimitiveKind.STRING)
|
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: CharSequence) {
|
|
||||||
encoder.encodeString(value.toString())
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder) = decoder.decodeString()
|
|
||||||
}
|
|
|
@ -61,7 +61,7 @@ class ClipboardHistoryManager(
|
||||||
val content = clipItem.coerceToText(latinIME)
|
val content = clipItem.coerceToText(latinIME)
|
||||||
if (TextUtils.isEmpty(content)) return
|
if (TextUtils.isEmpty(content)) return
|
||||||
|
|
||||||
val duplicateEntryIndex = historyEntries.indexOfFirst { it.content.toString() == content.toString() }
|
val duplicateEntryIndex = historyEntries.indexOfFirst { it.content == content.toString() }
|
||||||
if (duplicateEntryIndex != -1) {
|
if (duplicateEntryIndex != -1) {
|
||||||
val existingEntry = historyEntries[duplicateEntryIndex]
|
val existingEntry = historyEntries[duplicateEntryIndex]
|
||||||
if (existingEntry.timeStamp == timeStamp) return // nothing to change (may occur frequently starting with API 30)
|
if (existingEntry.timeStamp == timeStamp) return // nothing to change (may occur frequently starting with API 30)
|
||||||
|
@ -74,9 +74,9 @@ class ClipboardHistoryManager(
|
||||||
onHistoryChangeListener?.onClipboardHistoryEntryMoved(duplicateEntryIndex, newIndex)
|
onHistoryChangeListener?.onClipboardHistoryEntryMoved(duplicateEntryIndex, newIndex)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (historyEntries.any { it.content.toString() == content.toString() }) return
|
if (historyEntries.any { it.content == content.toString() }) return
|
||||||
|
|
||||||
val entry = ClipboardHistoryEntry(timeStamp, content)
|
val entry = ClipboardHistoryEntry(timeStamp, content.toString())
|
||||||
historyEntries.add(entry)
|
historyEntries.add(entry)
|
||||||
sortHistoryEntries()
|
sortHistoryEntries()
|
||||||
val at = historyEntries.indexOf(entry)
|
val at = historyEntries.indexOf(entry)
|
||||||
|
|
Loading…
Add table
Reference in a new issue