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 c7f82d1de..a16cb6fe7 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 @@ -6,37 +6,53 @@ import androidx.wear.widget.WearableLinearLayoutManager import com.habitrpg.common.habitica.models.tasks.TaskType import com.habitrpg.wearos.habitica.R import com.habitrpg.wearos.habitica.databinding.ActivityTasklistBinding +import com.habitrpg.wearos.habitica.ui.adapters.DailyListAdapter +import com.habitrpg.wearos.habitica.ui.adapters.HabitListAdapter +import com.habitrpg.wearos.habitica.ui.adapters.RewardListAdapter import com.habitrpg.wearos.habitica.ui.adapters.TaskListAdapter +import com.habitrpg.wearos.habitica.ui.adapters.ToDoListAdapter import com.habitrpg.wearos.habitica.ui.viewmodels.TaskListViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class TaskListActivity: BaseActivity() { - private val adapter = TaskListAdapter() + private lateinit var adapter: TaskListAdapter override val viewModel: TaskListViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { binding = ActivityTasklistBinding.inflate(layoutInflater) super.onCreate(savedInstanceState) + configureAdapter() binding.root.apply { layoutManager = WearableLinearLayoutManager(this@TaskListActivity, HabiticaScrollingLayoutCallback()) adapter = this@TaskListActivity.adapter } - setAdapterTitle() viewModel.tasks.observe(this) { adapter.data = it } } - private fun setAdapterTitle() { - adapter.title = when (viewModel.taskType) { - TaskType.HABIT -> getString(R.string.habits) - TaskType.DAILY -> getString(R.string.dailies) - TaskType.TODO -> getString(R.string.todos) - TaskType.REWARD -> getString(R.string.rewards) - null -> "" + private fun configureAdapter() { + when (viewModel.taskType) { + TaskType.HABIT -> { + adapter = HabitListAdapter() + adapter.title = getString(R.string.habits) + } + TaskType.DAILY -> { + adapter = DailyListAdapter() + adapter.title = getString(R.string.dailies) + } + TaskType.TODO -> { + adapter = ToDoListAdapter() + adapter.title = getString(R.string.todos) + } + TaskType.REWARD -> { + adapter = RewardListAdapter() + adapter.title = getString(R.string.rewards) + } + else -> {} } } } \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/DailyListAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/DailyListAdapter.kt new file mode 100644 index 000000000..a1653dcf7 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/DailyListAdapter.kt @@ -0,0 +1,17 @@ +package com.habitrpg.wearos.habitica.ui.adapters + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.habitrpg.common.habitica.extensions.layoutInflater +import com.habitrpg.wearos.habitica.databinding.RowDailyBinding +import com.habitrpg.wearos.habitica.ui.viewHolders.tasks.DailyViewHolder + +class DailyListAdapter: TaskListAdapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (viewType == 1) { + return DailyViewHolder(RowDailyBinding.inflate(parent.context.layoutInflater, parent, false).root) + } else { + super.onCreateViewHolder(parent, viewType) + } + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HabitListAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HabitListAdapter.kt new file mode 100644 index 000000000..b11104bb0 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HabitListAdapter.kt @@ -0,0 +1,17 @@ +package com.habitrpg.wearos.habitica.ui.adapters + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.habitrpg.common.habitica.extensions.layoutInflater +import com.habitrpg.wearos.habitica.databinding.RowHabitBinding +import com.habitrpg.wearos.habitica.ui.viewHolders.tasks.HabitViewHolder + +class HabitListAdapter: TaskListAdapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (viewType == 1) { + return HabitViewHolder(RowHabitBinding.inflate(parent.context.layoutInflater, parent, false).root) + } else { + super.onCreateViewHolder(parent, viewType) + } + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/RewardViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/RewardViewHolder.kt new file mode 100644 index 000000000..95f068d3e --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/RewardViewHolder.kt @@ -0,0 +1,17 @@ +package com.habitrpg.wearos.habitica.ui.adapters + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.habitrpg.common.habitica.extensions.layoutInflater +import com.habitrpg.wearos.habitica.databinding.RowRewardBinding +import com.habitrpg.wearos.habitica.ui.viewHolders.tasks.RewardViewHolder + +class RewardListAdapter: TaskListAdapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (viewType == 1) { + return RewardViewHolder(RowRewardBinding.inflate(parent.context.layoutInflater, parent, false).root) + } else { + super.onCreateViewHolder(parent, viewType) + } + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt index 379120480..a8f598575 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/TaskListAdapter.kt @@ -1,16 +1,14 @@ package com.habitrpg.wearos.habitica.ui.adapters -import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.habitrpg.common.habitica.extensions.layoutInflater -import com.habitrpg.wearos.habitica.databinding.RowHabitBinding import com.habitrpg.wearos.habitica.databinding.RowHeaderBinding import com.habitrpg.wearos.habitica.models.tasks.Task -import com.habitrpg.wearos.habitica.ui.viewHolders.BindableViewHolder import com.habitrpg.wearos.habitica.ui.viewHolders.HeaderViewHolder +import com.habitrpg.wearos.habitica.ui.viewHolders.tasks.TaskViewHolder -class TaskListAdapter: RecyclerView.Adapter() { +open class TaskListAdapter(): RecyclerView.Adapter() { var title: String = "" var data: List = listOf() set(value) { @@ -19,11 +17,7 @@ class TaskListAdapter: RecyclerView.Adapter() { } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val inflater = parent.context.layoutInflater - return if (viewType == 0) { - HeaderViewHolder(RowHeaderBinding.inflate(inflater, parent, false).root) - } else { - TaskViewHolder(RowHabitBinding.inflate(inflater, parent, false).root) - } + return HeaderViewHolder(RowHeaderBinding.inflate(inflater, parent, false).root) } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { @@ -42,12 +36,4 @@ class TaskListAdapter: RecyclerView.Adapter() { override fun getItemCount(): Int { return data.size + 1 } -} - -class TaskViewHolder(itemView: View) : BindableViewHolder(itemView) { - val binding = RowHabitBinding.bind(itemView) - - override fun bind(task: Task) { - binding.title.text = task.text - } -} +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/ToDoListAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/ToDoListAdapter.kt new file mode 100644 index 000000000..1d38a1e82 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/ToDoListAdapter.kt @@ -0,0 +1,17 @@ +package com.habitrpg.wearos.habitica.ui.adapters + +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.habitrpg.common.habitica.extensions.layoutInflater +import com.habitrpg.wearos.habitica.databinding.RowTodoBinding +import com.habitrpg.wearos.habitica.ui.viewHolders.tasks.ToDoViewHolder + +class ToDoListAdapter: TaskListAdapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (viewType == 1) { + return ToDoViewHolder(RowTodoBinding.inflate(parent.context.layoutInflater, parent, false).root) + } else { + super.onCreateViewHolder(parent, viewType) + } + } +} \ 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 new file mode 100644 index 000000000..e5fdc1a09 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/DailyViewHolder.kt @@ -0,0 +1,16 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.view.View +import android.widget.TextView +import com.habitrpg.wearos.habitica.databinding.RowHabitBinding +import com.habitrpg.wearos.habitica.models.tasks.Task + +class DailyViewHolder(itemView: View) : TaskViewHolder(itemView) { + private val binding = RowHabitBinding.bind(itemView) + override val titleView: TextView + get() = binding.title + + override fun bind(data: Task) { + super.bind(data) + } +} \ No newline at end of file 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 new file mode 100644 index 000000000..011fb1299 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/HabitViewHolder.kt @@ -0,0 +1,16 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.view.View +import android.widget.TextView +import com.habitrpg.wearos.habitica.databinding.RowHabitBinding +import com.habitrpg.wearos.habitica.models.tasks.Task + +class HabitViewHolder(itemView: View) : TaskViewHolder(itemView) { + private val binding = RowHabitBinding.bind(itemView) + override val titleView: TextView + get() = binding.title + + override fun bind(data: Task) { + super.bind(data) + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/RewardViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/RewardViewHolder.kt new file mode 100644 index 000000000..06b599533 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/RewardViewHolder.kt @@ -0,0 +1,16 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.view.View +import android.widget.TextView +import com.habitrpg.wearos.habitica.databinding.RowRewardBinding +import com.habitrpg.wearos.habitica.models.tasks.Task + +class RewardViewHolder(itemView: View) : TaskViewHolder(itemView) { + private val binding = RowRewardBinding.bind(itemView) + override val titleView: TextView + get() = binding.title + + override fun bind(data: Task) { + super.bind(data) + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/TaskViewHolder.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/TaskViewHolder.kt new file mode 100644 index 000000000..660a4b98f --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/TaskViewHolder.kt @@ -0,0 +1,13 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.view.View +import android.widget.TextView +import com.habitrpg.wearos.habitica.models.tasks.Task +import com.habitrpg.wearos.habitica.ui.viewHolders.BindableViewHolder + +abstract class TaskViewHolder(itemView: View) : BindableViewHolder(itemView) { + abstract val titleView: TextView + override fun bind(data: Task) { + + } +} \ 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 new file mode 100644 index 000000000..7086bf8f2 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewHolders/tasks/ToDoViewHolder.kt @@ -0,0 +1,15 @@ +package com.habitrpg.wearos.habitica.ui.viewHolders.tasks + +import android.view.View +import android.widget.TextView +import com.habitrpg.wearos.habitica.databinding.RowTodoBinding +import com.habitrpg.wearos.habitica.models.tasks.Task + +class ToDoViewHolder(itemView: View) : TaskViewHolder(itemView) { + private val binding = RowTodoBinding.bind(itemView) + override val titleView: TextView + get() = binding.title + override fun bind(data: Task) { + super.bind(data) + } +} \ No newline at end of file diff --git a/wearos/src/main/res/layout/row_daily.xml b/wearos/src/main/res/layout/row_daily.xml new file mode 100644 index 000000000..9463ad380 --- /dev/null +++ b/wearos/src/main/res/layout/row_daily.xml @@ -0,0 +1,19 @@ + + + + + + \ 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 6862709d0..91bc8771c 100644 --- a/wearos/src/main/res/layout/row_habit.xml +++ b/wearos/src/main/res/layout/row_habit.xml @@ -3,15 +3,14 @@ xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingHorizontal="@dimen/spacing_medium" - android:paddingVertical="1dp"> + android:layout_height="wrap_content"> + android:gravity="center" + style="@style/Chip"> + + + + + + \ No newline at end of file diff --git a/wearos/src/main/res/layout/row_todo.xml b/wearos/src/main/res/layout/row_todo.xml new file mode 100644 index 000000000..9463ad380 --- /dev/null +++ b/wearos/src/main/res/layout/row_todo.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/wearos/src/main/res/values/styles.xml b/wearos/src/main/res/values/styles.xml new file mode 100644 index 000000000..f63786fbc --- /dev/null +++ b/wearos/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file