2024/4/12

package com.example.to_do_application.fragments

import android.view.View
import android.widget.Spinner
import androidx.cardview.widget.CardView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.BindingAdapter
import androidx.lifecycle.MutableLiveData
import androidx.navigation.findNavController
import com.example.to_do_application.R
import com.example.to_do_application.data.models.Priority
import com.example.to_do_application.data.models.ToDoData
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.example.to_do_application.fragments.list.ListFragmentDirections.Companion as ListFragmentDirections1

class BindingAdapters {

companion object{
@BindingAdapter("android:navigateToAddFragment")
@JvmStatic
fun navigateToAddFragment(view: FloatingActionButton,navigate: Boolean){
view.setOnClickListener{
if(navigate){
view.findNavController().navigate(R.id.action_listFragment_to_addFragment)
}
}
}

@BindingAdapter("android:emptyDatabase")
@JvmStatic
fun emptyDatabase(view:View,emptyDatabase: MutableLiveData<Boolean>){
when(emptyDatabase.value){
true -> view.visibility = View.VISIBLE
false -> view.visibility = View.INVISIBLE
else -> {}
}
}

@BindingAdapter("android:parsePriorityToInt")
@JvmStatic
fun parsePriorityToInt(view:Spinner,priority: Priority){
when(priority){
Priority.HIGH -> {view.setSelection(0)}
Priority.MEDIUM -> {view.setSelection(1)}
Priority.LOW -> {view.setSelection(2)}
}
}

@BindingAdapter("android:parsePriorityColor")
@JvmStatic
fun parsePriorityColor(cardView: CardView, priority: Priority){
when(priority){
Priority.HIGH -> {cardView.setCardBackgroundColor(cardView.context.getColor(R.color.red))}
Priority.MEDIUM -> {cardView.setCardBackgroundColor(cardView.context.getColor(R.color.yellow))}
Priority.LOW -> {cardView.setCardBackgroundColor(cardView.context.getColor(R.color.green))}
}
}

@BindingAdapter("android:sendDataToUpdateFragment")
@JvmStatic
fun sendDataToUpdateFragment(view: ConstraintLayout,currentItem: ToDoData){
view.setOnClickListener{
val action = ListFragmentDirections1.actionListFragmentToUpdateFragment(currentItem)
view.findNavController().navigate(action)
}
}
}
}

package com.example.to_do_application.fragments

import android.app.Application
import android.text.TextUtils
import android.view.View
import android.view.ViewParent
import android.widget.AdapterView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import com.example.to_do_application.R
import com.example.to_do_application.data.models.Priority
import com.example.to_do_application.data.models.ToDoData

class SharedViewModel(application: Application): AndroidViewModel(application) {

val emptyDatabase: MutableLiveData<Boolean> = MutableLiveData(false)

fun checkIfDatabaseEmpty(toDoData: List<ToDoData>){
emptyDatabase.value = toDoData.isEmpty()
}

val listener: AdapterView.OnItemSelectedListener = object :
AdapterView.OnItemSelectedListener{
override fun onNothingSelected(p0: AdapterView<*>?) {}
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,position: Int,id: Long
) {
when(position){
0 -> {(parent?.getChildAt(0) as TextView).setTextColor(ContextCompat.getColor(application, R.color.red))}
1 -> {(parent?.getChildAt(0) as TextView).setTextColor(ContextCompat.getColor(application, R.color.yellow))}
2 -> {(parent?.getChildAt(0) as TextView).setTextColor(ContextCompat.getColor(application, R.color.green))}
}
}
}

fun verifyDataFromUser(title: String,description: String): Boolean{
return !(title.isEmpty() || description.isEmpty())
}

fun parsePriority(priority: String): Priority {
return when(priority){
"High Priorities" -> {
Priority.HIGH}
"Medium Priorities" -> {
Priority.MEDIUM}
"Low Priorities" -> {
Priority.LOW}
else -> Priority.LOW
}
}


}
posted @ 2024-04-12 19:32  Hbro  阅读(20)  评论(0)    收藏  举报