diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 2b86f63e2..f598bc9f6 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -855,7 +855,6 @@
Switch to list view
Switch to grid view
Confirm deletion
- New Task
Create %s
Details
Share Challenge with
diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml
index 000f05950..2549edd4e 100644
--- a/common/src/main/res/values/strings.xml
+++ b/common/src/main/res/values/strings.xml
@@ -21,4 +21,6 @@
Rewards
Stats
Settings
+ New Task
+ Avatar
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/models/MenuItem.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/MenuItem.kt
new file mode 100644
index 000000000..a15f71089
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/models/MenuItem.kt
@@ -0,0 +1,12 @@
+package com.habitrpg.wearos.habitica.models
+
+import android.graphics.drawable.Drawable
+
+data class MenuItem(
+ val identifier: String,
+ val title: String,
+ val icon: Drawable?,
+ val color: Int,
+ val isProminent: Boolean = false,
+ val onClick: () -> Unit
+)
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt
index f31e7cc9c..5134cf788 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/MainActivity.kt
@@ -1,29 +1,19 @@
package com.habitrpg.wearos.habitica.ui.activities
import android.content.Intent
-import android.graphics.drawable.Drawable
import android.os.Bundle
-import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat
-import androidx.recyclerview.widget.RecyclerView
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.ActivityMainBinding
+import com.habitrpg.wearos.habitica.models.MenuItem
import com.habitrpg.wearos.habitica.ui.adapters.HubAdapter
import com.habitrpg.wearos.habitica.ui.viewmodels.MainViewModel
+import com.habitrpg.wearos.habitica.util.HabiticaScrollingLayoutCallback
import dagger.hilt.android.AndroidEntryPoint
-import kotlin.math.abs
-
-data class MenuItem(
- val identifier: String,
- val title: String,
- val icon: Drawable?,
- val color: Int,
- val onClick: () -> Unit
-)
@AndroidEntryPoint
class MainActivity : BaseActivity() {
@@ -47,19 +37,28 @@ class MainActivity : BaseActivity() {
override fun onStart() {
super.onStart()
adapter.data = listOf(
+ MenuItem(
+ "createTask",
+ getString(R.string.new_task),
+ AppCompatResources.getDrawable(this, R.drawable.icon_plus),
+ ContextCompat.getColor(this, R.color.brand_400),
+ true
+ ) {
+ openAvatarActivity()
+ },
MenuItem(
"avatar",
- "Avatar",
- AppCompatResources.getDrawable(this, R.drawable.ic_avatar),
+ getString(R.string.avatar),
+ AppCompatResources.getDrawable(this, R.drawable.icon_avatar),
ContextCompat.getColor(this, R.color.brand_400)
) {
- openAvatarActivity()
+ openStatsActivity()
},
MenuItem(
"Stats",
getString(R.string.stats),
- AppCompatResources.getDrawable(this, R.drawable.ic_stats),
- ContextCompat.getColor(this, R.color.red_100)
+ AppCompatResources.getDrawable(this, R.drawable.icon_stats),
+ ContextCompat.getColor(this, R.color.brand_400)
) {
},
@@ -67,7 +66,7 @@ class MainActivity : BaseActivity() {
"habits",
getString(R.string.habits),
AppCompatResources.getDrawable(this, R.drawable.icon_habits),
- ContextCompat.getColor(this, R.color.orange_100)
+ ContextCompat.getColor(this, R.color.brand_400)
) {
openTasklist(TaskType.HABIT)
},
@@ -75,7 +74,7 @@ class MainActivity : BaseActivity() {
"dailies",
getString(R.string.dailies),
AppCompatResources.getDrawable(this, R.drawable.icon_dailies),
- ContextCompat.getColor(this, R.color.yellow_100)
+ ContextCompat.getColor(this, R.color.brand_400)
) {
openTasklist(TaskType.DAILY)
},
@@ -83,7 +82,7 @@ class MainActivity : BaseActivity() {
"todos",
getString(R.string.todos),
AppCompatResources.getDrawable(this, R.drawable.icon_todos),
- ContextCompat.getColor(this, R.color.green_100)
+ ContextCompat.getColor(this, R.color.brand_400)
) {
openTasklist(TaskType.TODO)
},
@@ -91,16 +90,17 @@ class MainActivity : BaseActivity() {
"rewards",
getString(R.string.rewards),
AppCompatResources.getDrawable(this, R.drawable.icon_rewards),
- ContextCompat.getColor(this, R.color.teal_100)
+ ContextCompat.getColor(this, R.color.brand_400)
) {
openTasklist(TaskType.REWARD)
},
MenuItem(
"settings",
getString(R.string.settings),
- AppCompatResources.getDrawable(this, R.drawable.ic_settings),
- ContextCompat.getColor(this, R.color.blue_100)
+ AppCompatResources.getDrawable(this, R.drawable.icon_settings),
+ ContextCompat.getColor(this, R.color.brand_400)
) {
+ openSettingsActivity()
}
)
viewModel.user.observe(this) {
@@ -109,44 +109,27 @@ class MainActivity : BaseActivity() {
}
}
+ private fun openTaskFormActivity() {
+ startActivity(Intent(this, TaskFormActivity::class.java))
+ }
+
private fun openAvatarActivity() {
startActivity(Intent(this, AvatarActivity::class.java))
}
+
+ private fun openStatsActivity() {
+ startActivity(Intent(this, StatsActivity::class.java))
+ }
+
+ private fun openSettingsActivity() {
+ startActivity(Intent(this, SettingsActivity::class.java))
+ }
+
private fun openTasklist(type: TaskType) {
val intent = Intent(this, TaskListActivity::class.java).apply {
putExtra("task_type", type.value)
}
startActivity(intent)
}
-}
-
-private const val MAX_ICON_PROGRESS = 0.8f
-
-class HabiticaScrollingLayoutCallback : WearableLinearLayoutManager.LayoutCallback() {
-
- private var progressToCenter: Float = 0f
-
- override fun onLayoutFinished(child: View, parent: RecyclerView) {
- child.apply {
- // Figure out % progress from top to bottom
- val centerOffset = height.toFloat() / 2.0f / parent.height.toFloat()
- val yRelativeToCenterOffset = y / parent.height + centerOffset
-
- // Normalize for center
- progressToCenter = abs(0.5f - yRelativeToCenterOffset) - 0.25f
- if (progressToCenter < 0) {
- scaleX = 1f
- scaleY = 1f
- alpha = 1f
- return
- }
- // Adjust to the maximum scale
- progressToCenter = Math.min(progressToCenter * 1.5f, MAX_ICON_PROGRESS)
-
- scaleX = 1 - progressToCenter
- scaleY = 1 - progressToCenter
- alpha = 1 - progressToCenter * 2
- }
- }
}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt
new file mode 100644
index 000000000..da3e0e0ce
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/SettingsActivity.kt
@@ -0,0 +1,17 @@
+package com.habitrpg.wearos.habitica.ui.activities
+
+import android.os.Bundle
+import androidx.activity.viewModels
+import com.habitrpg.wearos.habitica.databinding.ActivitySettingsBinding
+import com.habitrpg.wearos.habitica.ui.viewmodels.SettingsViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+@AndroidEntryPoint
+class SettingsActivity: BaseActivity() {
+ override val viewModel: SettingsViewModel by viewModels()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ binding = ActivitySettingsBinding.inflate(layoutInflater)
+ super.onCreate(savedInstanceState)
+ }
+}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/StatsActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/StatsActivity.kt
new file mode 100644
index 000000000..8c13afa33
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/StatsActivity.kt
@@ -0,0 +1,17 @@
+package com.habitrpg.wearos.habitica.ui.activities
+
+import android.os.Bundle
+import androidx.activity.viewModels
+import com.habitrpg.wearos.habitica.databinding.ActivityStatsBinding
+import com.habitrpg.wearos.habitica.ui.viewmodels.StatsViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+@AndroidEntryPoint
+class StatsActivity: BaseActivity() {
+ override val viewModel: StatsViewModel by viewModels()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ binding = ActivityStatsBinding.inflate(layoutInflater)
+ super.onCreate(savedInstanceState)
+ }
+}
\ No newline at end of file
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskFormActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskFormActivity.kt
new file mode 100644
index 000000000..80508c1dc
--- /dev/null
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/TaskFormActivity.kt
@@ -0,0 +1,17 @@
+package com.habitrpg.wearos.habitica.ui.activities
+
+import android.os.Bundle
+import androidx.activity.viewModels
+import com.habitrpg.wearos.habitica.databinding.ActivityTaskFormBinding
+import com.habitrpg.wearos.habitica.ui.viewmodels.TaskFormViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+@AndroidEntryPoint
+class TaskFormActivity: BaseActivity() {
+ override val viewModel: TaskFormViewModel by viewModels()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ binding = ActivityTaskFormBinding.inflate(layoutInflater)
+ super.onCreate(savedInstanceState)
+ }
+}
\ 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 a16cb6fe7..543107776 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
@@ -12,6 +12,7 @@ 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 com.habitrpg.wearos.habitica.util.HabiticaScrollingLayoutCallback
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HubAdapter.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HubAdapter.kt
index 44f6624c3..4b6fb02dc 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HubAdapter.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/adapters/HubAdapter.kt
@@ -1,14 +1,13 @@
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.RowHeaderBinding
import com.habitrpg.wearos.habitica.databinding.RowHubBinding
-import com.habitrpg.wearos.habitica.ui.activities.MenuItem
-import com.habitrpg.wearos.habitica.ui.viewHolders.BindableViewHolder
+import com.habitrpg.wearos.habitica.models.MenuItem
import com.habitrpg.wearos.habitica.ui.viewHolders.HeaderViewHolder
+import com.habitrpg.wearos.habitica.ui.viewHolders.HubViewHolder
class HubAdapter: RecyclerView.Adapter() {
var title: String = ""
@@ -44,15 +43,3 @@ class HubAdapter: RecyclerView.Adapter() {
}
}
-class HubViewHolder(itemView: View): BindableViewHolder