mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-06-05 21:49:26 +02:00
implement clip deleting from the activity
This commit is contained in:
@ -8,6 +8,7 @@ import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
|||||||
import com.simplemobiletools.commons.extensions.underlineText
|
import com.simplemobiletools.commons.extensions.underlineText
|
||||||
import com.simplemobiletools.commons.extensions.updateTextColors
|
import com.simplemobiletools.commons.extensions.updateTextColors
|
||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
|
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import com.simplemobiletools.keyboard.adapters.ClipsActivityAdapter
|
import com.simplemobiletools.keyboard.adapters.ClipsActivityAdapter
|
||||||
import com.simplemobiletools.keyboard.dialogs.AddClipDialog
|
import com.simplemobiletools.keyboard.dialogs.AddClipDialog
|
||||||
@ -15,7 +16,7 @@ import com.simplemobiletools.keyboard.extensions.clipsDB
|
|||||||
import com.simplemobiletools.keyboard.models.Clip
|
import com.simplemobiletools.keyboard.models.Clip
|
||||||
import kotlinx.android.synthetic.main.activity_manage_clipboard_items.*
|
import kotlinx.android.synthetic.main.activity_manage_clipboard_items.*
|
||||||
|
|
||||||
class ManageClipboardItemsActivity : SimpleActivity() {
|
class ManageClipboardItemsActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@ -52,7 +53,7 @@ class ManageClipboardItemsActivity : SimpleActivity() {
|
|||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
val clips = clipsDB.getClips().toMutableList() as ArrayList<Clip>
|
val clips = clipsDB.getClips().toMutableList() as ArrayList<Clip>
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
ClipsActivityAdapter(this, clips, clipboard_items_list) {
|
ClipsActivityAdapter(this, clips, clipboard_items_list, this) {
|
||||||
}.apply {
|
}.apply {
|
||||||
clipboard_items_list.adapter = this
|
clipboard_items_list.adapter = this
|
||||||
}
|
}
|
||||||
@ -69,4 +70,8 @@ class ManageClipboardItemsActivity : SimpleActivity() {
|
|||||||
updateClips()
|
updateClips()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun refreshItems() {
|
||||||
|
updateClips()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,22 @@ import androidx.recyclerview.widget.ItemTouchHelper
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.commons.interfaces.ItemMoveCallback
|
import com.simplemobiletools.commons.interfaces.ItemMoveCallback
|
||||||
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
|
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
|
||||||
|
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
|
||||||
import com.simplemobiletools.commons.interfaces.StartReorderDragListener
|
import com.simplemobiletools.commons.interfaces.StartReorderDragListener
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
import com.simplemobiletools.commons.views.bottomactionmenu.BottomActionMenuView
|
import com.simplemobiletools.commons.views.bottomactionmenu.BottomActionMenuView
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
|
import com.simplemobiletools.keyboard.extensions.clipsDB
|
||||||
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.*
|
||||||
|
|
||||||
class ClipsActivityAdapter(
|
class ClipsActivityAdapter(
|
||||||
activity: BaseSimpleActivity, var items: ArrayList<Clip>, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit
|
activity: BaseSimpleActivity, var items: ArrayList<Clip>, recyclerView: MyRecyclerView, val listener: RefreshRecyclerViewListener, itemClick: (Any) -> Unit
|
||||||
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract {
|
) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract {
|
||||||
|
|
||||||
private var touchHelper: ItemTouchHelper? = null
|
private var touchHelper: ItemTouchHelper? = null
|
||||||
@ -46,7 +50,7 @@ class ClipsActivityAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
when (id) {
|
when (id) {
|
||||||
R.id.cab_delete -> deleteSelection()
|
R.id.cab_delete -> askConfirmDelete()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,11 +60,9 @@ class ClipsActivityAdapter(
|
|||||||
|
|
||||||
override fun getItemSelectionKey(position: Int) = items.getOrNull(position)?.id?.toInt()
|
override fun getItemSelectionKey(position: Int) = items.getOrNull(position)?.id?.toInt()
|
||||||
|
|
||||||
override fun getItemKeyPosition(key: Int) = items.indexOfFirst { it.id == key.toLong() }
|
override fun getItemKeyPosition(key: Int) = items.indexOfFirst { it.id?.toInt() == key }
|
||||||
|
|
||||||
override fun onActionModeDestroyed() {
|
override fun onActionModeDestroyed() {}
|
||||||
notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_clip_in_activity, parent)
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_clip_in_activity, parent)
|
||||||
|
|
||||||
@ -74,9 +76,33 @@ class ClipsActivityAdapter(
|
|||||||
|
|
||||||
override fun getItemCount() = items.size
|
override fun getItemCount() = items.size
|
||||||
|
|
||||||
private fun deleteSelection() {}
|
private fun askConfirmDelete() {
|
||||||
|
ConfirmationDialog(activity, "", R.string.proceed_with_deletion, R.string.yes, R.string.cancel) {
|
||||||
|
deleteSelection()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getItemWithKey(key: Int): Clip? = items.firstOrNull { it.id == key.toLong() }
|
private fun deleteSelection() {
|
||||||
|
val deleteClips = ArrayList<Clip>(selectedKeys.size)
|
||||||
|
val positions = getSelectedItemPositions()
|
||||||
|
|
||||||
|
getSelectedItems().forEach {
|
||||||
|
deleteClips.add(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
items.removeAll(deleteClips)
|
||||||
|
removeSelectedItems(positions)
|
||||||
|
|
||||||
|
ensureBackgroundThread {
|
||||||
|
deleteClips.forEach { clip ->
|
||||||
|
activity.clipsDB.delete(clip.id!!.toLong())
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items.isEmpty()) {
|
||||||
|
listener.refreshItems()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getSelectedItems() = items.filter { selectedKeys.contains(it.id!!.toInt()) } as ArrayList<Clip>
|
private fun getSelectedItems() = items.filter { selectedKeys.contains(it.id!!.toInt()) } as ArrayList<Clip>
|
||||||
|
|
||||||
|
@ -13,4 +13,7 @@ interface ClipsDao {
|
|||||||
|
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
fun insertOrUpdate(clip: Clip): Long
|
fun insertOrUpdate(clip: Clip): Long
|
||||||
|
|
||||||
|
@Query("DELETE FROM clips WHERE id = :id")
|
||||||
|
fun delete(id: Long)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user