added swipe to delete for cookies and command templates items
This commit is contained in:
parent
d6c5e6b692
commit
7073a358eb
5 changed files with 173 additions and 65 deletions
|
|
@ -50,9 +50,6 @@ class CookieAdapter(onItemClickListener: OnItemClickListener, activity: Activity
|
|||
onItemClickListener.onItemClick(item!!)
|
||||
}
|
||||
|
||||
card.setOnLongClickListener {
|
||||
onItemClickListener.onDelete(item!!); true
|
||||
}
|
||||
}
|
||||
|
||||
interface OnItemClickListener {
|
||||
|
|
|
|||
|
|
@ -55,10 +55,6 @@ class TemplatesAdapter(onItemClickListener: OnItemClickListener, activity: Activ
|
|||
card.setOnClickListener {
|
||||
onItemClickListener.onItemClick(item!!, position)
|
||||
}
|
||||
|
||||
card.setOnLongClickListener {
|
||||
onItemClickListener.onDelete(item!!); true
|
||||
}
|
||||
}
|
||||
|
||||
interface OnItemClickListener {
|
||||
|
|
|
|||
|
|
@ -7,34 +7,26 @@ import android.content.Context.CLIPBOARD_SERVICE
|
|||
import android.content.res.ColorStateList
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.RippleDrawable
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.text.Editable
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.Log
|
||||
import android.view.*
|
||||
import android.view.View.*
|
||||
import android.widget.*
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.view.ActionMode
|
||||
import androidx.appcompat.view.StandaloneActionMode
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import androidx.core.view.children
|
||||
import androidx.core.view.forEach
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.deniscerri.ytdlnis.App
|
||||
import com.deniscerri.ytdlnis.MainActivity
|
||||
import com.deniscerri.ytdlnis.R
|
||||
import com.deniscerri.ytdlnis.adapter.HomeAdapter
|
||||
|
|
@ -87,6 +79,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
private var layoutinflater: LayoutInflater? = null
|
||||
private var shimmerCards: ShimmerFrameLayout? = null
|
||||
private var searchBar: SearchBar? = null
|
||||
private var searchView: SearchView? = null
|
||||
private var linkYouCopied: ConstraintLayout? = null
|
||||
private var queriesChipGroup: ChipGroup? = null
|
||||
private var recyclerView: RecyclerView? = null
|
||||
private var uiHandler: Handler? = null
|
||||
|
|
@ -130,6 +124,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
//initViews
|
||||
shimmerCards = view.findViewById(R.id.shimmer_results_framelayout)
|
||||
searchBar = view.findViewById(R.id.search_bar)
|
||||
searchView = view.findViewById(R.id.search_view)
|
||||
linkYouCopied = searchView?.findViewById<ConstraintLayout>(R.id.link_you_copied)
|
||||
appBarLayout = view.findViewById(R.id.home_appbarlayout)
|
||||
queriesChipGroup = view.findViewById(R.id.queries)
|
||||
searchSuggestions = view.findViewById(R.id.search_suggestions_scroll_view)
|
||||
|
|
@ -206,19 +202,20 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
override fun onResume() {
|
||||
super.onResume()
|
||||
resultViewModel.checkTrending()
|
||||
if (searchView?.currentTransitionState == SearchView.TransitionState.SHOWN){
|
||||
updateSearchViewItems(searchView?.editText?.text, linkYouCopied)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
private fun initMenu() {
|
||||
val searchView = requireView().findViewById<SearchView>(R.id.search_view)
|
||||
val queriesConstraint = requireView().findViewById<ConstraintLayout>(R.id.queries_constraint)
|
||||
val queriesInitStartBtn = queriesConstraint.findViewById<MaterialButton>(R.id.init_search_query)
|
||||
val isRightToLeft = resources.getBoolean(R.bool.is_right_to_left)
|
||||
|
||||
|
||||
infoUtil = InfoUtil(requireContext())
|
||||
val linkYouCopied = searchView.findViewById<ConstraintLayout>(R.id.link_you_copied)
|
||||
searchView.addTransitionListener { view, previousState, newState ->
|
||||
searchView!!.addTransitionListener { _, _, newState ->
|
||||
if (newState == SearchView.TransitionState.SHOWN) {
|
||||
try{
|
||||
val clipboard =
|
||||
|
|
@ -227,11 +224,11 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
"(https?://(?:www\\.|(?!www))[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|www\\.[a-zA-Z\\d][a-zA-Z\\d-]+[a-zA-Z\\d]\\.\\S{2,}|https?://(?:www\\.|(?!www))[a-zA-Z\\d]+\\.\\S{2,}|www\\.[a-zA-Z\\d]+\\.\\S{2,})".toRegex()
|
||||
val clip = clipboard.primaryClip!!.getItemAt(0).text
|
||||
if (regex.containsMatchIn(clip.toString())) {
|
||||
linkYouCopied.visibility = VISIBLE
|
||||
val textView = linkYouCopied.findViewById<TextView>(R.id.suggestion_text)
|
||||
linkYouCopied!!.visibility = VISIBLE
|
||||
val textView = linkYouCopied!!.findViewById<TextView>(R.id.suggestion_text)
|
||||
textView.text = getString(R.string.link_you_copied)
|
||||
textView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_language, 0, 0, 0)
|
||||
val mb = linkYouCopied.findViewById<ImageButton>(R.id.set_search_query_button)
|
||||
val mb = linkYouCopied!!.findViewById<ImageButton>(R.id.set_search_query_button)
|
||||
mb.setImageResource(R.drawable.ic_plus)
|
||||
|
||||
mb.setOnClickListener {
|
||||
|
|
@ -247,31 +244,31 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
}
|
||||
if (queriesChipGroup!!.childCount == 0) queriesConstraint.visibility = GONE
|
||||
else queriesConstraint.visibility = VISIBLE
|
||||
searchView.editText.setText("")
|
||||
linkYouCopied.visibility = GONE
|
||||
searchView!!.editText.setText("")
|
||||
linkYouCopied!!.visibility = GONE
|
||||
}
|
||||
|
||||
textView.setOnClickListener {
|
||||
searchView.setText(clip.toString())
|
||||
initSearch(searchView)
|
||||
searchView!!.setText(clip.toString())
|
||||
initSearch(searchView!!)
|
||||
}
|
||||
}else{
|
||||
linkYouCopied.visibility = GONE
|
||||
linkYouCopied!!.visibility = GONE
|
||||
}
|
||||
updateSearchViewItems(searchView.editText.text, searchView, linkYouCopied)
|
||||
updateSearchViewItems(searchView!!.editText.text, linkYouCopied)
|
||||
}catch (e: Exception){
|
||||
e.printStackTrace()
|
||||
linkYouCopied.visibility = GONE
|
||||
linkYouCopied!!.visibility = GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
searchView.editText.doAfterTextChanged {
|
||||
if (searchView.currentTransitionState != SearchView.TransitionState.SHOWN) return@doAfterTextChanged
|
||||
updateSearchViewItems(it, searchView, linkYouCopied)
|
||||
searchView!!.editText.doAfterTextChanged {
|
||||
if (searchView!!.currentTransitionState != SearchView.TransitionState.SHOWN) return@doAfterTextChanged
|
||||
updateSearchViewItems(it, linkYouCopied)
|
||||
}
|
||||
|
||||
searchView.editText.setOnTouchListener(OnTouchListener { v, event ->
|
||||
searchView!!.editText.setOnTouchListener(OnTouchListener { v, event ->
|
||||
try{
|
||||
val drawableLeft = 0
|
||||
val drawableTop = 1
|
||||
|
|
@ -279,14 +276,14 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
val drawableBottom = 3
|
||||
if (event.action == MotionEvent.ACTION_UP) {
|
||||
if (
|
||||
(isRightToLeft && (event.x < (searchView.editText.left - searchView.editText.compoundDrawables[drawableLeft].bounds.width()))) ||
|
||||
(!isRightToLeft && (event.x > (searchView.editText.right - searchView.editText.compoundDrawables[drawableRight].bounds.width())))
|
||||
(isRightToLeft && (event.x < (searchView!!.editText.left - searchView!!.editText.compoundDrawables[drawableLeft].bounds.width()))) ||
|
||||
(!isRightToLeft && (event.x > (searchView!!.editText.right - searchView!!.editText.compoundDrawables[drawableRight].bounds.width())))
|
||||
){
|
||||
|
||||
val present = queriesChipGroup!!.children.firstOrNull { (it as Chip).text.toString() == searchView.editText.text.toString() }
|
||||
val present = queriesChipGroup!!.children.firstOrNull { (it as Chip).text.toString() == searchView!!.editText.text.toString() }
|
||||
if (present == null) {
|
||||
val chip = layoutinflater!!.inflate(R.layout.input_chip, queriesChipGroup, false) as Chip
|
||||
chip.text = searchView.editText.text
|
||||
chip.text = searchView!!.editText.text
|
||||
chip.chipBackgroundColor = ColorStateList.valueOf(MaterialColors.getColor(requireContext(), R.attr.colorSecondaryContainer, Color.BLACK))
|
||||
chip.setOnClickListener {
|
||||
queriesChipGroup!!.removeView(chip)
|
||||
|
|
@ -295,7 +292,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
}
|
||||
if (queriesChipGroup!!.childCount == 0) queriesConstraint.visibility = GONE
|
||||
else queriesConstraint.visibility = VISIBLE
|
||||
searchView.editText.setText("")
|
||||
searchView!!.editText.setText("")
|
||||
return@OnTouchListener true
|
||||
|
||||
}
|
||||
|
|
@ -304,8 +301,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
false
|
||||
})
|
||||
|
||||
searchView.editText.setOnEditorActionListener { textView, i, keyEvent ->
|
||||
initSearch(searchView)
|
||||
searchView!!.editText.setOnEditorActionListener { _, _, _ ->
|
||||
initSearch(searchView!!)
|
||||
true
|
||||
}
|
||||
|
||||
|
|
@ -314,7 +311,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
R.id.delete_results -> {
|
||||
resultViewModel.getTrending()
|
||||
selectedObjects = ArrayList()
|
||||
searchBar!!.setText("")
|
||||
searchBar!!.text = ""
|
||||
downloadAllFabCoordinator!!.visibility = GONE
|
||||
downloadFabs!!.visibility = GONE
|
||||
}
|
||||
|
|
@ -328,15 +325,15 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
queriesChipGroup!!.addOnLayoutChangeListener { view, i, i2, i3, i4, i5, i6, i7, i8 ->
|
||||
if (queriesChipGroup!!.childCount == 0) queriesConstraint.visibility = GONE
|
||||
else queriesConstraint.visibility = VISIBLE
|
||||
searchView.editText.setText("")
|
||||
searchView!!.editText.setText("")
|
||||
}
|
||||
|
||||
queriesInitStartBtn.setOnClickListener {
|
||||
initSearch(searchView)
|
||||
initSearch(searchView!!)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSearchViewItems(it: Editable?, searchView: SearchView, linkYouCopied: View?){
|
||||
private fun updateSearchViewItems(it: Editable?, linkYouCopied: View?){
|
||||
lifecycleScope.launch {
|
||||
searchSuggestionsLinearLayout!!.removeAllViews()
|
||||
searchHistoryLinearLayout!!.removeAllViews()
|
||||
|
|
@ -345,10 +342,10 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
searchHistoryLinearLayout!!.visibility = GONE
|
||||
linkYouCopied!!.visibility = GONE
|
||||
|
||||
if (searchView.editText.text.isEmpty()){
|
||||
searchView.editText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0)
|
||||
if (searchView!!.editText.text.isEmpty()){
|
||||
searchView!!.editText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0)
|
||||
}else{
|
||||
searchView.editText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.ic_plus, 0)
|
||||
searchView!!.editText.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.ic_plus, 0)
|
||||
}
|
||||
val suggestions = withContext(Dispatchers.IO){
|
||||
if (it!!.isEmpty()) {
|
||||
|
|
@ -371,8 +368,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
)
|
||||
}
|
||||
textView.setOnClickListener {
|
||||
searchView.setText(textView.text)
|
||||
initSearch(searchView)
|
||||
searchView!!.setText(textView.text)
|
||||
initSearch(searchView!!)
|
||||
}
|
||||
textView.setOnLongClickListener {
|
||||
val deleteDialog = MaterialAlertDialogBuilder(requireContext())
|
||||
|
|
@ -388,8 +385,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
|
||||
val mb = v.findViewById<ImageButton>(R.id.set_search_query_button)
|
||||
mb.setOnClickListener {
|
||||
searchView.setText(textView.text)
|
||||
searchView.editText.setSelection(searchView.editText.length())
|
||||
searchView!!.setText(textView.text)
|
||||
searchView!!.editText.setSelection(searchView!!.editText.length())
|
||||
}
|
||||
}
|
||||
searchHistoryLinearLayout!!.visibility = VISIBLE
|
||||
|
|
@ -408,13 +405,13 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
)
|
||||
}
|
||||
textView.setOnClickListener {
|
||||
searchView.setText(textView.text)
|
||||
initSearch(searchView)
|
||||
searchView!!.setText(textView.text)
|
||||
initSearch(searchView!!)
|
||||
}
|
||||
val mb = v.findViewById<ImageButton>(R.id.set_search_query_button)
|
||||
mb.setOnClickListener {
|
||||
searchView.setText(textView.text)
|
||||
searchView.editText.setSelection(searchView.editText.length())
|
||||
searchView!!.setText(textView.text)
|
||||
searchView!!.editText.setSelection(searchView!!.editText.length())
|
||||
}
|
||||
}
|
||||
searchSuggestionsLinearLayout!!.visibility = VISIBLE
|
||||
|
|
@ -442,7 +439,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
|
||||
if (queryList.isEmpty()) return
|
||||
if (queryList.size == 1){
|
||||
searchBar!!.setText(searchView.text)
|
||||
searchBar!!.text = searchView.text
|
||||
}
|
||||
|
||||
searchView.hide()
|
||||
|
|
@ -466,16 +463,6 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
|
|||
(searchBar!!.parent as AppBarLayout).setExpanded(true, true)
|
||||
}
|
||||
|
||||
private fun findVideo(url: String): ResultItem? {
|
||||
for (i in resultsList!!.indices) {
|
||||
val v = resultsList!![i]
|
||||
if (v!!.url == url) {
|
||||
return v
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@SuppressLint("ResourceType")
|
||||
override fun onButtonClick(videoURL: String, type: DownloadViewModel.Type?) {
|
||||
Log.e(TAG, type.toString() + " " + videoURL)
|
||||
|
|
|
|||
|
|
@ -2,12 +2,15 @@ package com.deniscerri.ytdlnis.ui.more
|
|||
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.deniscerri.ytdlnis.R
|
||||
|
|
@ -20,6 +23,7 @@ import com.deniscerri.ytdlnis.util.UiUtil
|
|||
import com.google.android.material.appbar.MaterialToolbar
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import it.xabaras.android.recyclerview.swipedecorator.RecyclerViewSwipeDecorator
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
|
@ -31,12 +35,14 @@ class CommandTemplatesActivity : BaseActivity(), TemplatesAdapter.OnItemClickLis
|
|||
private lateinit var topAppBar: MaterialToolbar
|
||||
private lateinit var commandTemplateViewModel: CommandTemplateViewModel
|
||||
private lateinit var uiUtil: UiUtil
|
||||
private lateinit var templatesList: List<CommandTemplate>
|
||||
var context: Context? = null
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_command_templates)
|
||||
context = baseContext
|
||||
templatesList = listOf()
|
||||
|
||||
topAppBar = findViewById(R.id.logs_toolbar)
|
||||
topAppBar.setNavigationOnClickListener { onBackPressedDispatcher.onBackPressed() }
|
||||
|
|
@ -49,11 +55,14 @@ class CommandTemplatesActivity : BaseActivity(), TemplatesAdapter.OnItemClickLis
|
|||
recyclerView = findViewById(R.id.template_recyclerview)
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
recyclerView.adapter = templatesAdapter
|
||||
val itemTouchHelper = ItemTouchHelper(simpleCallback)
|
||||
itemTouchHelper.attachToRecyclerView(recyclerView)
|
||||
|
||||
uiUtil = UiUtil(FileUtil())
|
||||
|
||||
commandTemplateViewModel = ViewModelProvider(this)[CommandTemplateViewModel::class.java]
|
||||
commandTemplateViewModel.items.observe(this) {
|
||||
templatesList = it
|
||||
templatesAdapter.submitList(it)
|
||||
}
|
||||
initMenu()
|
||||
|
|
@ -117,4 +126,58 @@ class CommandTemplatesActivity : BaseActivity(), TemplatesAdapter.OnItemClickLis
|
|||
}
|
||||
deleteDialog.show()
|
||||
}
|
||||
|
||||
private var simpleCallback: ItemTouchHelper.SimpleCallback =
|
||||
object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT ) {
|
||||
override fun onMove(recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
|
||||
): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
val position = viewHolder.bindingAdapterPosition
|
||||
when (direction) {
|
||||
ItemTouchHelper.LEFT -> {
|
||||
val deletedItem = templatesList[position]
|
||||
templatesAdapter.notifyItemChanged(position)
|
||||
onDelete(deletedItem)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChildDraw(
|
||||
c: Canvas,
|
||||
recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder,
|
||||
dX: Float,
|
||||
dY: Float,
|
||||
actionState: Int,
|
||||
isCurrentlyActive: Boolean
|
||||
) {
|
||||
RecyclerViewSwipeDecorator.Builder(
|
||||
context,
|
||||
c,
|
||||
recyclerView,
|
||||
viewHolder,
|
||||
dX,
|
||||
dY,
|
||||
actionState,
|
||||
isCurrentlyActive
|
||||
)
|
||||
.addSwipeLeftBackgroundColor(Color.RED)
|
||||
.addSwipeLeftActionIcon(R.drawable.baseline_delete_24)
|
||||
.create()
|
||||
.decorate()
|
||||
super.onChildDraw(
|
||||
c,
|
||||
recyclerView,
|
||||
viewHolder,
|
||||
dX,
|
||||
dY,
|
||||
actionState,
|
||||
isCurrentlyActive
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ package com.deniscerri.ytdlnis.ui.more
|
|||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
|
|
@ -12,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.deniscerri.ytdlnis.R
|
||||
|
|
@ -19,11 +22,14 @@ import com.deniscerri.ytdlnis.adapter.CookieAdapter
|
|||
import com.deniscerri.ytdlnis.database.models.CookieItem
|
||||
import com.deniscerri.ytdlnis.database.viewmodel.CookieViewModel
|
||||
import com.deniscerri.ytdlnis.ui.BaseActivity
|
||||
import com.deniscerri.ytdlnis.ui.downloadcard.DownloadBottomSheetDialog
|
||||
import com.deniscerri.ytdlnis.util.FileUtil
|
||||
import com.deniscerri.ytdlnis.util.UiUtil
|
||||
import com.google.android.material.appbar.MaterialToolbar
|
||||
import com.google.android.material.chip.Chip
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import it.xabaras.android.recyclerview.swipedecorator.RecyclerViewSwipeDecorator
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
|
@ -35,6 +41,7 @@ class CookiesActivity : BaseActivity(), CookieAdapter.OnItemClickListener {
|
|||
private lateinit var topAppBar: MaterialToolbar
|
||||
private lateinit var cookiesViewModel: CookieViewModel
|
||||
private lateinit var uiUtil: UiUtil
|
||||
private lateinit var cookiesList: List<CookieItem>
|
||||
var context: Context? = null
|
||||
|
||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -44,6 +51,7 @@ class CookiesActivity : BaseActivity(), CookieAdapter.OnItemClickListener {
|
|||
|
||||
topAppBar = findViewById(R.id.logs_toolbar)
|
||||
topAppBar.setNavigationOnClickListener { onBackPressedDispatcher.onBackPressed() }
|
||||
cookiesList = listOf()
|
||||
|
||||
listAdapter =
|
||||
CookieAdapter(
|
||||
|
|
@ -53,11 +61,14 @@ class CookiesActivity : BaseActivity(), CookieAdapter.OnItemClickListener {
|
|||
recyclerView = findViewById(R.id.template_recyclerview)
|
||||
recyclerView.layoutManager = LinearLayoutManager(context)
|
||||
recyclerView.adapter = listAdapter
|
||||
val itemTouchHelper = ItemTouchHelper(simpleCallback)
|
||||
itemTouchHelper.attachToRecyclerView(recyclerView)
|
||||
|
||||
uiUtil = UiUtil(FileUtil())
|
||||
|
||||
cookiesViewModel = ViewModelProvider(this)[CookieViewModel::class.java]
|
||||
cookiesViewModel.items.observe(this) {
|
||||
cookiesList = it
|
||||
listAdapter.submitList(it)
|
||||
}
|
||||
initMenu()
|
||||
|
|
@ -155,4 +166,58 @@ class CookiesActivity : BaseActivity(), CookieAdapter.OnItemClickListener {
|
|||
}
|
||||
deleteDialog.show()
|
||||
}
|
||||
|
||||
private var simpleCallback: ItemTouchHelper.SimpleCallback =
|
||||
object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT ) {
|
||||
override fun onMove(recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
|
||||
): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
val position = viewHolder.bindingAdapterPosition
|
||||
when (direction) {
|
||||
ItemTouchHelper.LEFT -> {
|
||||
val deletedItem = cookiesList[position]
|
||||
listAdapter.notifyItemChanged(position)
|
||||
onDelete(deletedItem)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChildDraw(
|
||||
c: Canvas,
|
||||
recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder,
|
||||
dX: Float,
|
||||
dY: Float,
|
||||
actionState: Int,
|
||||
isCurrentlyActive: Boolean
|
||||
) {
|
||||
RecyclerViewSwipeDecorator.Builder(
|
||||
context,
|
||||
c,
|
||||
recyclerView,
|
||||
viewHolder,
|
||||
dX,
|
||||
dY,
|
||||
actionState,
|
||||
isCurrentlyActive
|
||||
)
|
||||
.addSwipeLeftBackgroundColor(Color.RED)
|
||||
.addSwipeLeftActionIcon(R.drawable.baseline_delete_24)
|
||||
.create()
|
||||
.decorate()
|
||||
super.onChildDraw(
|
||||
c,
|
||||
recyclerView,
|
||||
viewHolder,
|
||||
dX,
|
||||
dY,
|
||||
actionState,
|
||||
isCurrentlyActive
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue