mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-06-05 21:49:26 +02:00
make sure clips have unique values
This commit is contained in:
@ -20,6 +20,7 @@ import com.simplemobiletools.commons.views.bottomactionmenu.BottomActionMenuView
|
|||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import com.simplemobiletools.keyboard.dialogs.AddOrEditClipDialog
|
import com.simplemobiletools.keyboard.dialogs.AddOrEditClipDialog
|
||||||
import com.simplemobiletools.keyboard.extensions.clipsDB
|
import com.simplemobiletools.keyboard.extensions.clipsDB
|
||||||
|
import com.simplemobiletools.keyboard.helpers.ClipsHelper
|
||||||
import com.simplemobiletools.keyboard.models.Clip
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
import kotlinx.android.synthetic.main.item_clip_in_activity.view.*
|
import kotlinx.android.synthetic.main.item_clip_in_activity.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -80,7 +81,7 @@ class ClipsActivityAdapter(
|
|||||||
activity.clipsDB.deleteAll()
|
activity.clipsDB.deleteAll()
|
||||||
items.forEach { clip ->
|
items.forEach { clip ->
|
||||||
clip.id = null
|
clip.id = null
|
||||||
clip.id = activity.clipsDB.insertOrUpdate(clip)
|
clip.id = ClipsHelper(activity).insertClip(clip)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import com.simplemobiletools.keyboard.R
|
|||||||
import com.simplemobiletools.keyboard.extensions.clipsDB
|
import com.simplemobiletools.keyboard.extensions.clipsDB
|
||||||
import com.simplemobiletools.keyboard.extensions.config
|
import com.simplemobiletools.keyboard.extensions.config
|
||||||
import com.simplemobiletools.keyboard.extensions.getCurrentClip
|
import com.simplemobiletools.keyboard.extensions.getCurrentClip
|
||||||
|
import com.simplemobiletools.keyboard.helpers.ClipsHelper
|
||||||
import com.simplemobiletools.keyboard.helpers.ITEM_CLIP
|
import com.simplemobiletools.keyboard.helpers.ITEM_CLIP
|
||||||
import com.simplemobiletools.keyboard.helpers.ITEM_SECTION_LABEL
|
import com.simplemobiletools.keyboard.helpers.ITEM_SECTION_LABEL
|
||||||
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
|
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
|
||||||
@ -99,7 +100,7 @@ class ClipsKeyboardAdapter(
|
|||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
val currentClip = context.getCurrentClip() ?: return@ensureBackgroundThread
|
val currentClip = context.getCurrentClip() ?: return@ensureBackgroundThread
|
||||||
val clip = Clip(null, currentClip)
|
val clip = Clip(null, currentClip)
|
||||||
context.clipsDB.insertOrUpdate(clip)
|
ClipsHelper(context).insertClip(clip)
|
||||||
refreshClipsListener.refreshClips()
|
refreshClipsListener.refreshClips()
|
||||||
context.toast(R.string.text_pinned)
|
context.toast(R.string.text_pinned)
|
||||||
if (context.config.vibrateOnKeypress) {
|
if (context.config.vibrateOnKeypress) {
|
||||||
|
@ -9,6 +9,7 @@ import com.simplemobiletools.commons.extensions.value
|
|||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import com.simplemobiletools.keyboard.extensions.clipsDB
|
import com.simplemobiletools.keyboard.extensions.clipsDB
|
||||||
|
import com.simplemobiletools.keyboard.helpers.ClipsHelper
|
||||||
import com.simplemobiletools.keyboard.models.Clip
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
import kotlinx.android.synthetic.main.dialog_add_or_edit_clip.view.*
|
import kotlinx.android.synthetic.main.dialog_add_or_edit_clip.view.*
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ class AddOrEditClipDialog(val activity: BaseSimpleActivity, val originalClip: Cl
|
|||||||
}
|
}
|
||||||
|
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
activity.clipsDB.insertOrUpdate(clip)
|
ClipsHelper(activity).insertClip(clip)
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
callback()
|
callback()
|
||||||
dismiss()
|
dismiss()
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.simplemobiletools.keyboard.helpers
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import com.simplemobiletools.keyboard.extensions.clipsDB
|
||||||
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
|
|
||||||
|
class ClipsHelper(val context: Context) {
|
||||||
|
|
||||||
|
// make sure clips have unique values
|
||||||
|
fun insertClip(clip: Clip): Long {
|
||||||
|
clip.value = clip.value.trim()
|
||||||
|
return if (context.clipsDB.getClipWithValue(clip.value) == null) {
|
||||||
|
context.clipsDB.insertOrUpdate(clip)
|
||||||
|
} else {
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,9 @@ interface ClipsDao {
|
|||||||
@Query("SELECT * FROM clips ORDER BY id")
|
@Query("SELECT * FROM clips ORDER BY id")
|
||||||
fun getClips(): List<Clip>
|
fun getClips(): List<Clip>
|
||||||
|
|
||||||
|
@Query("SELECT id FROM clips WHERE value = :value COLLATE NOCASE")
|
||||||
|
fun getClipWithValue(value: String): Long?
|
||||||
|
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
fun insertOrUpdate(clip: Clip): Long
|
fun insertOrUpdate(clip: Clip): Long
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user