Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.limelife.android.screens.main.tabFragments.tasks.adapters
- import android.content.Context
- import android.view.LayoutInflater
- import android.view.MotionEvent
- import android.view.View
- import android.view.ViewGroup
- import android.widget.FrameLayout
- import android.widget.RelativeLayout
- import android.widget.TimePicker
- import androidx.core.content.ContextCompat
- import androidx.recyclerview.widget.DiffUtil
- import androidx.recyclerview.widget.RecyclerView
- import com.bumptech.glide.Glide
- import com.bumptech.glide.load.engine.DiskCacheStrategy
- import com.bumptech.glide.request.RequestOptions
- import com.limelife.android.R
- import com.limelife.android.data.api.response.Task
- import com.limelife.android.screens.main.tabFragments.tasks.entities.TaskRow
- import com.limelife.android.utils.hide
- import com.limelife.android.utils.invisible
- import com.limelife.android.utils.show
- import com.limelife.android.utils.views.SwipeMenuLayout
- import com.limelife.android.utils.views.UnitUtils
- import com.limelife.android.utils.views.expandablePanelView.SlidingUpPanelLayout
- import io.reactivex.subjects.PublishSubject
- import kotlinx.android.synthetic.main.adapter_task.view.*
- import timber.log.Timber
- class TaskAdapter(
- private val context: Context,
- private val selectTaskSubject: PublishSubject<TaskRow>,
- private val putInDoneSubject: PublishSubject<TaskRow>,
- private val putInDeleteSubject: PublishSubject<TaskRow>
- ) : RecyclerView.Adapter<TaskAdapter.ViewHolder>() {
- private var isSwiping = false
- private var tasks = mutableListOf<Task>()
- fun setTasksData(newTasks: MutableList<Task>) {
- val diffCallback = TasksDiffCallback(tasks, newTasks)
- val diffResult = DiffUtil.calculateDiff(diffCallback)
- tasks.clear()
- tasks.addAll(newTasks)
- diffResult.dispatchUpdatesTo(this)
- notifyDataSetChanged()
- }
- fun getTaskList(): MutableList<Task> {
- return tasks
- }
- override fun getItemCount(): Int = tasks.size
- override fun getItemId(position: Int): Long {
- return tasks[position].taskId?.toLong() ?: position.toLong()
- }
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
- ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.adapter_task, parent, false))
- override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(tasks[position])
- inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
- fun bind(item: Task) {
- itemView.let {
- setTaskDetails(item)
- setTaskSwipeActions(item)
- itemView.taskVisibleContent.setOnClickListener {
- selectTaskSubject.onNext(TaskRow(adapterPosition, item))
- itemView.taskSwipeLayout.close(false)
- itemView.taskVisibleContent.background = ContextCompat.getDrawable(context, R.drawable.border_task_filled_1)
- }
- }
- itemView.taskSwipeLayout.close(false)
- if (itemView.taskSwipeLayout.isClosed) {
- itemView.taskVisibleContent.background = ContextCompat.getDrawable(context, R.drawable.border_task_filled_1)
- }
- }
- fun closeSwipe() {
- itemView.taskSwipeLayout.close(false)
- }
- private fun setTaskDetails(item: Task) {
- itemView.tvTaskTitle.text = item.title
- if (!item.shortContext.isNullOrEmpty()) {
- itemView.tvTaskDescription.text = item.shortContext
- } else {
- itemView.tvTaskDescription.text = context.getString(R.string.subtitle)
- }
- if (!item.icon.isNullOrEmpty()) {
- val options = RequestOptions()
- options.centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL)
- Glide.with(context)
- .load(item.icon)
- .apply(options)
- .into(itemView.ivTaskIcon)
- }
- }
- /*
- android:layout_marginBottom="@dimen/space_10dp"
- android:layout_marginEnd="@dimen/space_10dp"
- android:layout_marginStart="@dimen/space_20dp"
- */
- private fun setTaskSwipeActions(item: Task) {
- // val paramsWithoutMarginRight = itemView.taskVisibleContent.layoutParams as FrameLayout.LayoutParams
- // paramsWithoutMarginRight.setMargins(
- // 0,
- // 0,
- // 0,
- // 0)
- //
- // itemView.taskVisibleContent.layoutParams = paramsWithoutMarginRight
- // val paramsWithMarginRight = itemView.taskVisibleContent.layoutParams as FrameLayout.LayoutParams
- // paramsWithMarginRight.setMargins(
- // UnitUtils.dip2px(context, 20F),
- // 0,
- // UnitUtils.dip2px(context, 10F),
- // UnitUtils.dip2px(context, 10F))
- itemView.swipeOptionDone.setOnClickListener {}
- itemView.swipeOptionDelete.setOnClickListener {}
- var left =0
- itemView.taskSwipeLayout.setSwipeListener(object : SwipeMenuLayout.SwipeListener {
- override fun onClosed(view: SwipeMenuLayout?) {
- var params = itemView.maskLayout.layoutParams as RelativeLayout.LayoutParams
- params.marginStart = UnitUtils.dip2px(context,20F)
- itemView.maskLayout.layoutParams= params
- //itemView.maskLayout.left =UnitUtils.dip2px(context,20F)
- //itemView.maskLayout.right =itemView.taskSwipeLayout.right
- //itemView.maskLayout.right =itemView.maskLayout.left+itemView.maskLayout.measuredWidth
- //itemView.additionalMenuView.translationX = UnitUtils.dip2px(context,10F).toFloat()
- //itemView.additionalMenuView.invisible()
- //itemView.taskVisibleContent.setPadding(itemView.taskVisibleContent.paddingLeft, itemView.taskVisibleContent.paddingTop, UnitUtils.dip2px(context, 10F), itemView.taskVisibleContent.paddingBottom)
- //itemView.taskVisibleContent.background = ContextCompat.getDrawable(context, R.drawable.border_task_filled_1)
- //itemView.taskVisibleContent.layoutParams = paramsWithoutMarginRight
- isSwiping = false
- item.swipeStatus = false
- // Timber.e("offset clise ${slideOffset}")
- }
- override fun onOpened(view: SwipeMenuLayout?) {
- //itemView.maskLayout.left =slideOffset.toInt()
- //itemView.maskLayout.right =itemView.taskSwipeLayout.right
- //Timber.e("itemWidth ${itemView.maskLayout.width}")
- //itemView.additionalMenuView.show()
- //itemView.taskVisibleContent.setPadding(itemView.taskVisibleContent.paddingLeft, itemView.taskVisibleContent.paddingTop, 0, itemView.taskVisibleContent.paddingBottom)
- // itemView.taskVisibleContent.background = ContextCompat.getDrawable(context, R.drawable.border_task_white_filled_right_corners_rounded_1)
- //itemView.taskVisibleContent.layoutParams = paramsWithoutMarginRight
- isSwiping = false
- item.swipeStatus = true
- }
- override fun onSlide(view: SwipeMenuLayout?, slideOffset: Float) {
- var params = itemView.maskLayout.layoutParams as RelativeLayout.LayoutParams
- params.marginStart = itemView.front_layout.left + UnitUtils.dip2px(context,20F)
- itemView.maskLayout.layoutParams= params
- // itemView.maskLayout.layout(
- // itemView.front_layout.left + UnitUtils.dip2px(context,20F),
- // itemView.maskLayout.top,
- // itemView.taskSwipeLayout.right,
- // itemView.maskLayout.bottom
- // )
- Timber.e("${itemView.taskSwipeLayout.right}")
- // if(itemView.maskLayout.right> itemView.maskLayout.left +itemView.maskLayout.measuredWidth +UnitUtils.dip2px(context,20F)){
- // itemView.maskLayout.right=itemView.maskLayout.left +itemView.maskLayout.measuredWidth +UnitUtils.dip2px(context,20F)
- // }
- //itemView.maskLayout.requestLayout()
- //itemView.maskLayout.layout(itemView.taskVisibleContent.left,itemView.maskLayout.top,itemView.maskLayout.right,itemView.maskLayout.bottom)
- //itemView.maskLayout.translationX = slideOffset * 100
- //itemView.maskLayout.offsetLeftAndRight(((slideOffset * itemView.maskLayout.width)/100).toInt())
- Timber.e("offset slide ${slideOffset}")
- if (!isSwiping)
- //itemView.additionalMenuView.show()
- // itemView.additionalMenuView.translationX = UnitUtils.dip2px(context,-10F).toFloat()
- //itemView.taskVisibleContent.layoutParams = paramsWithoutMarginRight
- //itemView.taskVisibleContent.setPadding(itemView.taskVisibleContent.paddingLeft, itemView.taskVisibleContent.paddingTop, 0, itemView.taskVisibleContent.paddingBottom)
- //itemView.taskVisibleContent.background = ContextCompat.getDrawable(context, R.drawable.border_task_white_filled_right_corners_rounded_1)
- isSwiping = true
- }
- })
- val lastIndex = tasks.lastIndex
- itemView.swipeOptionDone.setOnTouchListener { _, event ->
- when (event.action) {
- MotionEvent.ACTION_UP -> {
- if (adapterPosition != -1) {
- if (adapterPosition == lastIndex || adapterPosition > lastIndex - 6) {
- putInDoneSubject.onNext(TaskRow(adapterPosition, tasks[adapterPosition], isLastTask = true))
- } else {
- putInDoneSubject.onNext(TaskRow(adapterPosition, tasks[adapterPosition]))
- }
- }
- }
- }
- false
- }
- itemView.swipeOptionDelete.setOnTouchListener { _, event ->
- when (event.action) {
- MotionEvent.ACTION_UP -> {
- if (adapterPosition != -1) {
- if (adapterPosition == lastIndex || adapterPosition > lastIndex - 6) {
- putInDeleteSubject.onNext(TaskRow(adapterPosition, tasks[adapterPosition], isLastTask = true))
- } else {
- putInDeleteSubject.onNext(TaskRow(adapterPosition, tasks[adapterPosition]))
- }
- }
- }
- }
- false
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement