diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/tasks/Task.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/tasks/Task.kt index 31107b137..0697073e3 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/tasks/Task.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/tasks/Task.kt @@ -92,6 +92,19 @@ open class Task constructor(): Parcelable { val completedChecklistCount: Int get() = checklist?.count { it.completed } ?: 0 + val extraLightTaskColor: Int + get() { + return when { + this.value < -20 -> return R.color.watch_maroon_200 + this.value < -10 -> return R.color.watch_red_200 + this.value < -1 -> return R.color.watch_orange_200 + this.value < 1 -> return R.color.watch_yellow_200 + this.value < 5 -> return R.color.watch_green_200 + this.value < 10 -> return R.color.watch_teal_200 + else -> R.color.watch_blue_200 + } + } + val lightTaskColor: Int get() { return when { diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/CheckedTaskViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/CheckedTaskViewHolder.kt new file mode 100644 index 000000000..54eaadc31 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/CheckedTaskViewHolder.kt @@ -0,0 +1,43 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.content.res.ColorStateList +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.core.content.ContextCompat +import com.habitrpg.android.habitica.R +import com.habitrpg.wearos.habitica.models.tasks.Task + +abstract class CheckedTaskViewHolder(itemView: View) : TaskViewHolder(itemView) { + abstract val checkbox: ImageView + abstract val checkboxWrapper: ViewGroup + + override fun bind(data: Task) { + checkboxWrapper.setOnClickListener { _ -> + onTaskScore?.invoke() + } + super.bind(data) + if (data.completed) { + checkbox.setImageResource(R.drawable.checkmark) + checkboxWrapper.backgroundTintList = + ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.amp_transparent)) + checkbox.backgroundTintList = ColorStateList.valueOf( + ContextCompat.getColor( + itemView.context, + R.color.gray_300 + ) + ) + } else { + checkbox.setImageDrawable(null) + + checkboxWrapper.backgroundTintList = + ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.lightTaskColor)) + checkbox.backgroundTintList = ColorStateList.valueOf( + ContextCompat.getColor( + itemView.context, + data.extraLightTaskColor + ) + ) + } + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/DailyViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/DailyViewHolder.kt index 0d21e6dd0..94499cc59 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/DailyViewHolder.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/DailyViewHolder.kt @@ -1,26 +1,17 @@ package com.habitrpg.wearos.habitica.ui.viewHolders.tasks -import android.content.res.ColorStateList import android.view.View +import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView -import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.databinding.RowDailyBinding -import com.habitrpg.wearos.habitica.models.tasks.Task -class DailyViewHolder(itemView: View) : TaskViewHolder(itemView) { +class DailyViewHolder(itemView: View) : CheckedTaskViewHolder(itemView) { private val binding = RowDailyBinding.bind(itemView) override val titleView: TextView get() = binding.title - - init { - binding.checkbox.setOnCheckedChangeListener { buttonView, isChecked -> - onTaskScore?.invoke() - } - } - - override fun bind(data: Task) { - super.bind(data) - binding.checkbox.isChecked = data.completed - binding.checkbox.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.mediumTaskColor)) - } + override val checkbox: ImageView + get() = binding.checkbox + override val checkboxWrapper: ViewGroup + get() = binding.checkboxWrapper } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/ToDoViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/ToDoViewHolder.kt index 31f136b3b..81a8b95aa 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/ToDoViewHolder.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/ToDoViewHolder.kt @@ -1,26 +1,17 @@ package com.habitrpg.wearos.habitica.ui.viewHolders.tasks -import android.content.res.ColorStateList import android.view.View +import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView -import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.databinding.RowTodoBinding -import com.habitrpg.wearos.habitica.models.tasks.Task -class ToDoViewHolder(itemView: View) : TaskViewHolder(itemView) { +class ToDoViewHolder(itemView: View) : CheckedTaskViewHolder(itemView) { private val binding = RowTodoBinding.bind(itemView) override val titleView: TextView get() = binding.title - - init { - binding.checkbox.setOnCheckedChangeListener { buttonView, isChecked -> - onTaskScore?.invoke() - } - } - - override fun bind(data: Task) { - super.bind(data) - binding.checkbox.isChecked = data.completed - binding.checkbox.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.mediumTaskColor)) - } + override val checkbox: ImageView + get() = binding.checkbox + override val checkboxWrapper: ViewGroup + get() = binding.checkboxWrapper } \ No newline at end of file diff --git a/wearos/src/main/res/drawable-mdpi/checkmark.png b/wearos/src/main/res/drawable-mdpi/checkmark.png new file mode 100644 index 000000000..5ef0f45ab Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/checkmark.png differ diff --git a/wearos/src/main/res/drawable-xhdpi/checkmark.png b/wearos/src/main/res/drawable-xhdpi/checkmark.png new file mode 100644 index 000000000..f55e2942e Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/checkmark.png differ diff --git a/wearos/src/main/res/drawable-xxhdpi/checkmark.png b/wearos/src/main/res/drawable-xxhdpi/checkmark.png new file mode 100644 index 000000000..d5a4ec6ff Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/checkmark.png differ diff --git a/wearos/src/main/res/layout/row_daily.xml b/wearos/src/main/res/layout/row_daily.xml index b08d0fadd..ed6996735 100644 --- a/wearos/src/main/res/layout/row_daily.xml +++ b/wearos/src/main/res/layout/row_daily.xml @@ -7,12 +7,20 @@ android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/Chip"> - + + + - + + + +