diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/CurrencyViews.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/CurrencyViews.kt
index 8ee76d044..134a0089c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/CurrencyViews.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/CurrencyViews.kt
@@ -43,14 +43,14 @@ class CurrencyViews : LinearLayout {
get() = gemTextView.visibility
set(value) { gemTextView.visibility = value }
- constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
- val attributes = context?.theme?.obtainStyledAttributes(
+ constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
+ val attributes = context.theme?.obtainStyledAttributes(
attrs,
R.styleable.CurrencyViews,
0, 0
)
setupViews()
- val fallBackLight = context?.isUsingNightModeResources() != true
+ val fallBackLight = !context.isUsingNightModeResources()
lightBackground = attributes?.getBoolean(R.styleable.CurrencyViews_hasLightBackground, fallBackLight) ?: fallBackLight
}
diff --git a/wearos/src/main/AndroidManifest.xml b/wearos/src/main/AndroidManifest.xml
index b79825d79..541a59495 100644
--- a/wearos/src/main/AndroidManifest.xml
+++ b/wearos/src/main/AndroidManifest.xml
@@ -37,6 +37,7 @@
+
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt
index e538140e2..4f7a3361a 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskLocalRepository.kt
@@ -7,6 +7,7 @@ import com.habitrpg.wearos.habitica.models.tasks.Task
import com.habitrpg.wearos.habitica.models.tasks.TaskList
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.flow.flowOf
import javax.inject.Inject
import javax.inject.Singleton
@@ -46,4 +47,14 @@ class TaskLocalRepository @Inject constructor() {
}
tasks[task.type]?.value = oldList
}
+
+ fun getTask(taskID: String): Flow {
+ for (type in tasks.values) {
+ val task = type.value?.firstOrNull { it.id == taskID }
+ if (task != null) {
+ return flowOf(task)
+ }
+ }
+ return emptyFlow()
+ }
}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
index 973f058f3..6c86f520c 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
@@ -7,6 +7,7 @@ import com.habitrpg.wearos.habitica.data.ApiClient
import com.habitrpg.wearos.habitica.models.tasks.Task
import com.habitrpg.wearos.habitica.models.tasks.TaskList
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.emptyFlow
import javax.inject.Inject
class TaskRepository @Inject constructor(val apiClient: ApiClient, val localRepository: TaskLocalRepository) {
@@ -28,4 +29,9 @@ class TaskRepository @Inject constructor(val apiClient: ApiClient, val localRepo
}
return result?.let { TaskScoringResult(it, null) }
}
+
+ fun getTask(taskID: String?): Flow {
+ if (taskID == null) return emptyFlow()
+ return localRepository.getTask(taskID)
+ }
}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/HabitDirectionActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/HabitDirectionActivity.kt
new file mode 100644
index 000000000..4a3c058b8
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/HabitDirectionActivity.kt
@@ -0,0 +1,39 @@
+package com.habitrpg.wearos.habitica.ui.activities
+
+import android.os.Bundle
+import androidx.activity.viewModels
+import androidx.core.content.ContextCompat
+import com.habitrpg.android.habitica.databinding.ActivityHabitDirectionBinding
+import com.habitrpg.common.habitica.models.responses.TaskDirection
+import com.habitrpg.wearos.habitica.ui.viewmodels.HabitDrectionViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+@AndroidEntryPoint
+class HabitDirectionActivity: BaseActivity() {
+ override val viewModel: HabitDrectionViewModel by viewModels()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ binding = ActivityHabitDirectionBinding.inflate(layoutInflater)
+ super.onCreate(savedInstanceState)
+
+ viewModel.task.observe(this) {
+ if (it == null) return@observe
+ val lightTaskColor = ContextCompat.getColor(this, it.lightTaskColor)
+ val mediumTaskColor = ContextCompat.getColor(this, it.mediumTaskColor)
+ binding.plusButton.mainTaskColor = lightTaskColor
+ binding.plusButton.darkerTaskColor = mediumTaskColor
+ binding.minusButton.mainTaskColor = lightTaskColor
+ binding.minusButton.darkerTaskColor = mediumTaskColor
+ binding.textView.text = it.text
+ }
+
+ binding.plusButton.setOnClickListener {
+ viewModel.scoreTask(TaskDirection.UP)
+ finish()
+ }
+ binding.minusButton.setOnClickListener {
+ viewModel.scoreTask(TaskDirection.DOWN)
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt
index 52c934f88..f1944230f 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskListActivity.kt
@@ -51,13 +51,16 @@ class TaskListActivity: BaseActivity
scoreTask(it)
}
- binding.addTaskButton.setOnClickListener { }
+ binding.addTaskButton.setOnClickListener { openTaskFormActivity() }
}
private fun scoreTask(task: Task) {
var direction = TaskDirection.UP
if (task.type == TaskType.HABIT) {
if (task.up == true && task.down == true) {
+ startActivity(Intent(this, HabitDirectionActivity::class.java).apply {
+ putExtra("task_id", task.id)
+ })
return
} else {
direction = if (task.up == true) TaskDirection.UP else TaskDirection.DOWN
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/HabitViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
index 3d491841e..e4d96ea31 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
@@ -4,6 +4,7 @@ import android.content.res.ColorStateList
import android.view.View
import android.widget.TextView
import androidx.core.content.ContextCompat
+import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.RowHabitBinding
import com.habitrpg.wearos.habitica.models.tasks.Task
@@ -20,6 +21,26 @@ class HabitViewHolder(itemView: View) : TaskViewHolder(itemView) {
override fun bind(data: Task) {
super.bind(data)
- binding.habitButton.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.mediumTaskColor))
+
+ if (data.up == true && data.down == true) {
+ binding.habitButtonIcon.setBackgroundResource(R.drawable.habit_diagonal)
+ binding.habitButtonIcon.setImageResource(R.drawable.watch_habit_posneg)
+ } else {
+ binding.habitButtonIcon.setBackgroundResource(R.drawable.habit_button_round)
+ if (data.up == true) {
+ binding.habitButtonIcon.setImageResource(R.drawable.watch_habit_positive)
+ } else {
+ binding.habitButtonIcon.setImageResource(R.drawable.watch_habit_negative)
+ }
+ }
+ if (data.up != true && data.down != true) {
+ binding.habitButton.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.gray_300))
+ binding.habitButtonIcon.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.gray_100))
+ binding.habitButtonIcon.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.gray_300))
+ } else {
+ binding.habitButton.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.lightTaskColor))
+ binding.habitButtonIcon.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.mediumTaskColor))
+ binding.habitButtonIcon.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.white))
+ }
}
}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/HabitDrectionViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/HabitDrectionViewModel.kt
new file mode 100644
index 000000000..e3236e0a5
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/HabitDrectionViewModel.kt
@@ -0,0 +1,29 @@
+package com.habitrpg.wearos.habitica.ui.viewmodels
+
+import androidx.lifecycle.SavedStateHandle
+import androidx.lifecycle.asLiveData
+import androidx.lifecycle.viewModelScope
+import com.habitrpg.common.habitica.models.responses.TaskDirection
+import com.habitrpg.wearos.habitica.data.repositories.TaskRepository
+import com.habitrpg.wearos.habitica.data.repositories.UserRepository
+import com.habitrpg.wearos.habitica.util.ExceptionHandlerBuilder
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.launch
+import javax.inject.Inject
+
+@HiltViewModel
+class HabitDrectionViewModel @Inject constructor(
+ savedStateHandle: SavedStateHandle,
+ userRepository: UserRepository,
+ val taskRepository: TaskRepository,
+ exceptionBuilder: ExceptionHandlerBuilder
+) : BaseViewModel(userRepository, exceptionBuilder) {
+ val taskID = savedStateHandle.get("task_id")
+ val task = taskRepository.getTask(taskID).asLiveData()
+
+ fun scoreTask(direction: TaskDirection) {
+ viewModelScope.launch(exceptionBuilder.userFacing(this)) {
+ task.value?.let { taskRepository.scoreTask(it, direction) }
+ }
+ }
+}
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/AddTaskButton.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/AddTaskButton.kt
index 622f3d426..859c14cd4 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/AddTaskButton.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/AddTaskButton.kt
@@ -42,7 +42,7 @@ class AddTaskButton @JvmOverloads constructor(
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
super.onLayout(changed, left, top, right, bottom)
- rect.right = bottom.toFloat()
+ rect.right = right.toFloat()
rect.bottom = bottom.toFloat() / 2f
invalidate()
}
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabitDirectionPickerButton.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabitDirectionPickerButton.kt
new file mode 100644
index 000000000..c83282367
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/HabitDirectionPickerButton.kt
@@ -0,0 +1,91 @@
+package com.habitrpg.wearos.habitica.ui.views
+
+import android.content.Context
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.Path
+import android.graphics.RectF
+import android.graphics.drawable.BitmapDrawable
+import android.util.AttributeSet
+import android.widget.FrameLayout
+import androidx.core.content.ContextCompat
+import com.habitrpg.android.habitica.R
+import com.habitrpg.common.habitica.extensions.dpToPx
+
+class HabitDirectionPickerButton @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null
+) : FrameLayout(context, attrs) {
+ private var drawFromTop: Boolean
+ private var drawable: BitmapDrawable?
+
+ private val paint = Paint()
+ private val path = Path()
+ private val rect = RectF(0f, 0f, 0f, 0f)
+ private val bitmapRect = RectF(0f, 0f, 0f, 0f)
+
+ var mainTaskColor: Int = ContextCompat.getColor(context, R.color.gray_300)
+ var darkerTaskColor: Int = ContextCompat.getColor(context, R.color.gray_200)
+ var iconColor: Int = ContextCompat.getColor(context, R.color.white)
+
+ private val radius = 15.dpToPx(context)
+
+ init {
+ paint.style = Paint.Style.FILL
+ paint.isAntiAlias = true
+ setWillNotDraw(false)
+
+ val attributes = context.theme.obtainStyledAttributes(
+ attrs,
+ R.styleable.HabitDirectionPickerButton,
+ 0, 0
+ )
+ drawable = attributes.getDrawable(R.styleable.HabitDirectionPickerButton_drawable) as? BitmapDrawable
+ drawFromTop = attributes.getBoolean(R.styleable.HabitDirectionPickerButton_drawFromTop, false)
+ }
+
+ override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
+ super.onLayout(changed, left, top, right, bottom)
+ rect.left = right.toFloat() * 0.125f
+ rect.right = right.toFloat() * 0.875f
+ if (drawFromTop) {
+ rect.top = -bottom.toFloat()
+ rect.bottom = bottom.toFloat()
+ } else {
+ rect.bottom = bottom.toFloat() / 2f
+ }
+
+ val middleX = width / 2f
+ val middleY = height / 2f
+ val bitmapWidthHalf = (drawable?.bitmap?.width?.toFloat() ?: 0f) / 2f
+ val bitmapHeightHalf = (drawable?.bitmap?.height?.toFloat() ?: 0f) / 2f
+ bitmapRect.left = middleX - bitmapWidthHalf
+ bitmapRect.top = middleY - bitmapHeightHalf
+ bitmapRect.right = middleX + bitmapWidthHalf
+ bitmapRect.bottom = middleY + bitmapHeightHalf
+
+ invalidate()
+ }
+
+ override fun onDraw(canvas: Canvas?) {
+ super.onDraw(canvas)
+
+ if (canvas == null) return
+ path.reset()
+ if (drawFromTop) {
+ path.addArc(rect, 0f, 180f)
+ } else {
+ path.addArc(rect, 180f, 360f)
+ }
+ paint.color = mainTaskColor
+ canvas.drawPath(path, paint)
+
+ val middleX = width / 2f
+ val middleY = height / 2f
+ paint.color = darkerTaskColor
+ canvas.drawArc(middleX - radius, middleY - radius, middleX + radius, middleY + radius, 0f, 360f, true, paint)
+ drawable?.let {
+ paint.color = iconColor
+ canvas.drawBitmap(it.bitmap, null, bitmapRect, paint)
+ }
+ }
+}
\ No newline at end of file
diff --git a/wearos/src/main/res/drawable-hdpi/habit_diagonal.png b/wearos/src/main/res/drawable-hdpi/habit_diagonal.png
new file mode 100644
index 000000000..e16e1f5b6
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/habit_diagonal.png differ
diff --git a/wearos/src/main/res/drawable-hdpi/watch_habit_negative.png b/wearos/src/main/res/drawable-hdpi/watch_habit_negative.png
new file mode 100644
index 000000000..b33059881
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/watch_habit_negative.png differ
diff --git a/wearos/src/main/res/drawable-hdpi/watch_habit_positive.png b/wearos/src/main/res/drawable-hdpi/watch_habit_positive.png
new file mode 100644
index 000000000..2828fd1c5
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/watch_habit_positive.png differ
diff --git a/wearos/src/main/res/drawable-hdpi/watch_habit_posneg.png b/wearos/src/main/res/drawable-hdpi/watch_habit_posneg.png
new file mode 100644
index 000000000..449e2b35d
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/watch_habit_posneg.png differ
diff --git a/wearos/src/main/res/drawable-hdpi/watch_task_add.png b/wearos/src/main/res/drawable-hdpi/watch_task_add.png
new file mode 100644
index 000000000..9388cefde
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/watch_task_add.png differ
diff --git a/wearos/src/main/res/drawable-hdpi/watch_task_minus.png b/wearos/src/main/res/drawable-hdpi/watch_task_minus.png
new file mode 100644
index 000000000..d0af9df8b
Binary files /dev/null and b/wearos/src/main/res/drawable-hdpi/watch_task_minus.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/habit_diagonal.png b/wearos/src/main/res/drawable-mdpi/habit_diagonal.png
new file mode 100644
index 000000000..e16e1f5b6
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/habit_diagonal.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/watch_habit_negative.png b/wearos/src/main/res/drawable-mdpi/watch_habit_negative.png
new file mode 100644
index 000000000..87472b37c
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/watch_habit_negative.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/watch_habit_positive.png b/wearos/src/main/res/drawable-mdpi/watch_habit_positive.png
new file mode 100644
index 000000000..33685979e
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/watch_habit_positive.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/watch_habit_posneg.png b/wearos/src/main/res/drawable-mdpi/watch_habit_posneg.png
new file mode 100644
index 000000000..595dd0614
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/watch_habit_posneg.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/watch_task_add.png b/wearos/src/main/res/drawable-mdpi/watch_task_add.png
new file mode 100644
index 000000000..28c520279
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/watch_task_add.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/watch_task_minus.png b/wearos/src/main/res/drawable-mdpi/watch_task_minus.png
new file mode 100644
index 000000000..0cb8ab949
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/watch_task_minus.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/habit_diagonal.png b/wearos/src/main/res/drawable-xhdpi/habit_diagonal.png
new file mode 100644
index 000000000..3fbab0a14
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/habit_diagonal.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/watch_habit_negative.png b/wearos/src/main/res/drawable-xhdpi/watch_habit_negative.png
new file mode 100644
index 000000000..31487cdf0
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/watch_habit_negative.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/watch_habit_positive.png b/wearos/src/main/res/drawable-xhdpi/watch_habit_positive.png
new file mode 100644
index 000000000..e762dacd5
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/watch_habit_positive.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/watch_habit_posneg.png b/wearos/src/main/res/drawable-xhdpi/watch_habit_posneg.png
new file mode 100644
index 000000000..eda35c775
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/watch_habit_posneg.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/watch_task_add.png b/wearos/src/main/res/drawable-xhdpi/watch_task_add.png
new file mode 100644
index 000000000..cc7474925
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/watch_task_add.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/watch_task_minus.png b/wearos/src/main/res/drawable-xhdpi/watch_task_minus.png
new file mode 100644
index 000000000..d8f4536a5
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/watch_task_minus.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/habit_diagonal.png b/wearos/src/main/res/drawable-xxhdpi/habit_diagonal.png
new file mode 100644
index 000000000..bbd54c3c1
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/habit_diagonal.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/watch_habit_negative.png b/wearos/src/main/res/drawable-xxhdpi/watch_habit_negative.png
new file mode 100644
index 000000000..76b1ac67d
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/watch_habit_negative.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/watch_habit_positive.png b/wearos/src/main/res/drawable-xxhdpi/watch_habit_positive.png
new file mode 100644
index 000000000..c87abb893
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/watch_habit_positive.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/watch_habit_posneg.png b/wearos/src/main/res/drawable-xxhdpi/watch_habit_posneg.png
new file mode 100644
index 000000000..18c34f800
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/watch_habit_posneg.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/watch_task_add.png b/wearos/src/main/res/drawable-xxhdpi/watch_task_add.png
new file mode 100644
index 000000000..a65f54d00
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/watch_task_add.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/watch_task_minus.png b/wearos/src/main/res/drawable-xxhdpi/watch_task_minus.png
new file mode 100644
index 000000000..ade3510a0
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/watch_task_minus.png differ
diff --git a/wearos/src/main/res/drawable-xxxhdpi/watch_habit_negative.png b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_negative.png
new file mode 100644
index 000000000..31aeb3813
Binary files /dev/null and b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_negative.png differ
diff --git a/wearos/src/main/res/drawable-xxxhdpi/watch_habit_positive.png b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_positive.png
new file mode 100644
index 000000000..d02d33828
Binary files /dev/null and b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_positive.png differ
diff --git a/wearos/src/main/res/drawable-xxxhdpi/watch_habit_posneg.png b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_posneg.png
new file mode 100644
index 000000000..33d42253e
Binary files /dev/null and b/wearos/src/main/res/drawable-xxxhdpi/watch_habit_posneg.png differ
diff --git a/wearos/src/main/res/drawable-xxxhdpi/watch_task_add.png b/wearos/src/main/res/drawable-xxxhdpi/watch_task_add.png
new file mode 100644
index 000000000..ac116bdff
Binary files /dev/null and b/wearos/src/main/res/drawable-xxxhdpi/watch_task_add.png differ
diff --git a/wearos/src/main/res/drawable-xxxhdpi/watch_task_minus.png b/wearos/src/main/res/drawable-xxxhdpi/watch_task_minus.png
new file mode 100644
index 000000000..283caf99b
Binary files /dev/null and b/wearos/src/main/res/drawable-xxxhdpi/watch_task_minus.png differ
diff --git a/wearos/src/main/res/drawable/habit_button_diagonal_bg.xml b/wearos/src/main/res/drawable/habit_button_diagonal_bg.xml
new file mode 100644
index 000000000..a54f95a2b
--- /dev/null
+++ b/wearos/src/main/res/drawable/habit_button_diagonal_bg.xml
@@ -0,0 +1,14 @@
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wearos/src/main/res/drawable/habit_button_round.xml b/wearos/src/main/res/drawable/habit_button_round.xml
new file mode 100644
index 000000000..05a7aa191
--- /dev/null
+++ b/wearos/src/main/res/drawable/habit_button_round.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wearos/src/main/res/layout/activity_habit_direction.xml b/wearos/src/main/res/layout/activity_habit_direction.xml
new file mode 100644
index 000000000..47ae795f1
--- /dev/null
+++ b/wearos/src/main/res/layout/activity_habit_direction.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wearos/src/main/res/layout/row_habit.xml b/wearos/src/main/res/layout/row_habit.xml
index e66adba2e..853bb563c 100644
--- a/wearos/src/main/res/layout/row_habit.xml
+++ b/wearos/src/main/res/layout/row_habit.xml
@@ -7,13 +7,19 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Chip">
-
+ >
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wearos/src/main/res/values/strings.xml b/wearos/src/main/res/values/strings.xml
index 22bec8529..4c236dd9d 100644
--- a/wearos/src/main/res/values/strings.xml
+++ b/wearos/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
OK
Syncing Account from Phone
+ How did you do?
\ No newline at end of file