mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-18 11:49:01 +00:00
improve login flow
This commit is contained in:
parent
3d6949e2cc
commit
587ec56600
37 changed files with 147 additions and 129 deletions
|
|
@ -4,7 +4,7 @@ import com.habitrpg.common.habitica.models.auth.UserAuth
|
|||
import com.habitrpg.common.habitica.models.auth.UserAuthResponse
|
||||
import com.habitrpg.common.habitica.models.auth.UserAuthSocial
|
||||
import com.habitrpg.common.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import com.habitrpg.wearos.habitica.models.WearableHabitResponse
|
||||
import com.habitrpg.wearos.habitica.models.tasks.BulkTaskScoringData
|
||||
import com.habitrpg.wearos.habitica.models.tasks.Task
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.habitrpg.wearos.habitica.data.repositories
|
|||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.asFlow
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.habitrpg.wearos.habitica.data.repositories
|
||||
|
||||
import com.habitrpg.wearos.habitica.data.ApiClient
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import javax.inject.Inject
|
||||
|
||||
class UserRepository @Inject constructor(val apiClient: ApiClient, val localRepository: UserLocalRepository) {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
|
||||
data class DisplayedError(val title: String)
|
||||
data class DisplayedError(val title: String, val subtitle: String? = null)
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.habitrpg.wearos.habitica.models.tasks
|
||||
|
||||
import com.habitrpg.common.habitica.models.responses.TaskDirectionData
|
||||
import com.habitrpg.wearos.habitica.models.Buffs
|
||||
import com.habitrpg.wearos.habitica.models.user.Buffs
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
|
|
|
|||
|
|
@ -92,68 +92,29 @@ 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.maroon_500
|
||||
this.value < -10 -> return R.color.red_500
|
||||
this.value < -1 -> return R.color.orange_500
|
||||
this.value < 1 -> return R.color.yellow_500
|
||||
this.value < 5 -> return R.color.green_500
|
||||
this.value < 10 -> return R.color.teal_500
|
||||
else -> R.color.blue_500
|
||||
}
|
||||
}
|
||||
|
||||
val lightTaskColor: Int
|
||||
get() {
|
||||
return when {
|
||||
this.value < -20 -> return R.color.maroon_100
|
||||
this.value < -10 -> return R.color.red_100
|
||||
this.value < -1 -> return R.color.orange_100
|
||||
this.value < 1 -> return R.color.yellow_100
|
||||
this.value < 5 -> return R.color.green_100
|
||||
this.value < 10 -> return R.color.teal_100
|
||||
else -> R.color.blue_100
|
||||
this.value < -20 -> return R.color.watch_maroon_100
|
||||
this.value < -10 -> return R.color.watch_red_100
|
||||
this.value < -1 -> return R.color.watch_orange_100
|
||||
this.value < 1 -> return R.color.watch_yellow_100
|
||||
this.value < 5 -> return R.color.watch_green_100
|
||||
this.value < 10 -> return R.color.watch_teal_100
|
||||
else -> R.color.watch_blue_100
|
||||
}
|
||||
}
|
||||
|
||||
val mediumTaskColor: Int
|
||||
get() {
|
||||
return when {
|
||||
this.value < -20 -> return R.color.maroon_50
|
||||
this.value < -10 -> return R.color.red_50
|
||||
this.value < -1 -> return R.color.orange_50
|
||||
this.value < 1 -> return R.color.yellow_10
|
||||
this.value < 5 -> return R.color.green_50
|
||||
this.value < 10 -> return R.color.teal_50
|
||||
else -> R.color.blue_50
|
||||
}
|
||||
}
|
||||
|
||||
val darkTaskColor: Int
|
||||
get() {
|
||||
return when {
|
||||
this.value < -20 -> return R.color.maroon_10
|
||||
this.value < -10 -> return R.color.red_10
|
||||
this.value < -1 -> return R.color.orange_10
|
||||
this.value < 1 -> return R.color.yellow_5
|
||||
this.value < 5 -> return R.color.green_10
|
||||
this.value < 10 -> return R.color.teal_10
|
||||
else -> R.color.blue_10
|
||||
}
|
||||
}
|
||||
|
||||
val darkestTaskColor: Int
|
||||
get() {
|
||||
return when {
|
||||
this.value < -20 -> return R.color.maroon_1
|
||||
this.value < -10 -> return R.color.red_1
|
||||
this.value < -1 -> return R.color.orange_1
|
||||
this.value < 1 -> return R.color.yellow_1
|
||||
this.value < 5 -> return R.color.green_1
|
||||
this.value < 10 -> return R.color.teal_1
|
||||
else -> R.color.blue_1
|
||||
this.value < -20 -> return R.color.watch_maroon_10
|
||||
this.value < -10 -> return R.color.watch_red_10
|
||||
this.value < -1 -> return R.color.watch_orange_10
|
||||
this.value < 1 -> return R.color.watch_yellow_10
|
||||
this.value < 5 -> return R.color.watch_green_10
|
||||
this.value < 10 -> return R.color.watch_teal_10
|
||||
else -> R.color.watch_blue_10
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarBuffs
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -14,4 +14,4 @@ class Buffs: AvatarBuffs {
|
|||
override var shinySeed: Boolean? = null
|
||||
override var snowball: Boolean? = null
|
||||
override var streaks: Boolean? = null
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarFlags
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -6,4 +6,4 @@ import com.squareup.moshi.JsonClass
|
|||
@JsonClass(generateAdapter = true)
|
||||
class Flags: AvatarFlags {
|
||||
override var classSelected: Boolean = false
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarHair
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -11,4 +11,4 @@ class Hair: AvatarHair {
|
|||
override var base: Int = 0
|
||||
override var flower: Int = 0
|
||||
override var color: String? = null
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarOutfit
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -13,4 +13,4 @@ class Outfit: AvatarOutfit {
|
|||
override var weapon: String = ""
|
||||
override var eyeWear: String = ""
|
||||
override var headAccessory: String = ""
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarPreferences
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -14,4 +14,4 @@ class Preferences: AvatarPreferences {
|
|||
override var background: String? = null
|
||||
override var chair: String? = null
|
||||
override var disableClasses: Boolean = false
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.AvatarStats
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.habitrpg.wearos.habitica.models
|
||||
package com.habitrpg.wearos.habitica.models.user
|
||||
|
||||
import com.habitrpg.common.habitica.models.Avatar
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
|
@ -47,6 +47,7 @@ abstract class BaseActivity<B: ViewBinding, VM: BaseViewModel> : ComponentActivi
|
|||
fun stopAnimatingProgress() {
|
||||
if (progressView != null) {
|
||||
wrapperBinding.root.removeView(progressView)
|
||||
progressView = null
|
||||
} else {
|
||||
wrapperBinding.root.children.forEach {
|
||||
if (it is IndeterminateProgressView) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@ class LoginActivity: BaseActivity<ActivityLoginBinding, LoginViewModel>() {
|
|||
showValidationError(getString(R.string.login_validation_error_fieldsmissing))
|
||||
return
|
||||
}
|
||||
viewModel.login(username, password)
|
||||
viewModel.login(username, password) {
|
||||
stopAnimatingProgress()
|
||||
}
|
||||
startAnimatingProgress()
|
||||
}
|
||||
|
||||
private fun loginGoogle() {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import androidx.wear.widget.WearableLinearLayoutManager
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.ActivityMainBinding
|
||||
import com.habitrpg.common.habitica.models.tasks.TaskType
|
||||
import com.habitrpg.wearos.habitica.models.MenuItem
|
||||
import com.habitrpg.wearos.habitica.models.user.MenuItem
|
||||
import com.habitrpg.wearos.habitica.ui.adapters.HubAdapter
|
||||
import com.habitrpg.wearos.habitica.ui.viewmodels.MainViewModel
|
||||
import com.habitrpg.wearos.habitica.util.HabiticaScrollingLayoutCallback
|
||||
|
|
@ -37,7 +37,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"createTask",
|
||||
getString(R.string.new_task),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_plus),
|
||||
ContextCompat.getColor(this, R.color.brand_400),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_100),
|
||||
ContextCompat.getColor(this, R.color.black),
|
||||
true
|
||||
) {
|
||||
|
|
@ -47,8 +47,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"habits",
|
||||
getString(R.string.habits),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_habits),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openTasklist(TaskType.HABIT)
|
||||
},
|
||||
|
|
@ -56,8 +56,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"dailies",
|
||||
getString(R.string.dailies),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_dailies),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openTasklist(TaskType.DAILY)
|
||||
},
|
||||
|
|
@ -65,8 +65,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"todos",
|
||||
getString(R.string.todos),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_todos),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openTasklist(TaskType.TODO)
|
||||
},
|
||||
|
|
@ -74,8 +74,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"rewards",
|
||||
getString(R.string.rewards),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_rewards),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openTasklist(TaskType.REWARD)
|
||||
},
|
||||
|
|
@ -83,8 +83,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"Stats",
|
||||
getString(R.string.stats),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_stats),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openStatsActivity()
|
||||
},
|
||||
|
|
@ -92,8 +92,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"avatar",
|
||||
getString(R.string.avatar),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_avatar),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openAvatarActivity()
|
||||
},
|
||||
|
|
@ -101,8 +101,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
|
|||
"settings",
|
||||
getString(R.string.settings),
|
||||
AppCompatResources.getDrawable(this, R.drawable.icon_settings),
|
||||
ContextCompat.getColor(this, R.color.brand_500),
|
||||
ContextCompat.getColor(this, R.color.brand_700)
|
||||
ContextCompat.getColor(this, R.color.watch_purple_200),
|
||||
ContextCompat.getColor(this, R.color.watch_purple_700)
|
||||
) {
|
||||
openSettingsActivity()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,8 +64,14 @@ class SplashActivity: BaseActivity<ActivitySplashBinding, SplashViewModel>() {
|
|||
}
|
||||
|
||||
private fun showAccountLoader(show: Boolean) {
|
||||
binding.progressBar.isVisible = show
|
||||
binding.textView.isVisible = show
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
if (show) {
|
||||
startAnimatingProgress()
|
||||
} else {
|
||||
stopAnimatingProgress()
|
||||
}
|
||||
binding.textView.isVisible = show
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.databinding.RowHeaderBinding
|
||||
import com.habitrpg.android.habitica.databinding.RowHubBinding
|
||||
import com.habitrpg.wearos.habitica.models.MenuItem
|
||||
import com.habitrpg.wearos.habitica.models.user.MenuItem
|
||||
import com.habitrpg.wearos.habitica.ui.viewHolders.HeaderViewHolder
|
||||
import com.habitrpg.wearos.habitica.ui.viewHolders.HubViewHolder
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import android.view.View
|
|||
import androidx.core.content.ContextCompat
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.RowHubBinding
|
||||
import com.habitrpg.wearos.habitica.models.MenuItem
|
||||
import com.habitrpg.wearos.habitica.models.user.MenuItem
|
||||
|
||||
class HubViewHolder(itemView: View): BindableViewHolder<MenuItem>(itemView) {
|
||||
val binding = RowHubBinding.bind(itemView)
|
||||
|
|
@ -19,7 +19,7 @@ class HubViewHolder(itemView: View): BindableViewHolder<MenuItem>(itemView) {
|
|||
binding.rowContainer.backgroundTintList = ColorStateList.valueOf(data.color)
|
||||
} else {
|
||||
binding.iconView.setColorFilter(data.color)
|
||||
binding.rowContainer.backgroundTintList = ContextCompat.getColorStateList(itemView.context, R.color.gray_5)
|
||||
binding.rowContainer.backgroundTintList = ContextCompat.getColorStateList(itemView.context, R.color.surface)
|
||||
}
|
||||
binding.root.setOnClickListener {
|
||||
data.onClick()
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@ class HabitViewHolder(itemView: View) : TaskViewHolder(itemView) {
|
|||
}
|
||||
}
|
||||
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))
|
||||
binding.habitButton.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.watch_gray_100))
|
||||
binding.habitButtonIcon.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.watch_gray_5))
|
||||
binding.habitButtonIcon.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.watch_gray_100))
|
||||
} else {
|
||||
binding.habitButton.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.lightTaskColor))
|
||||
binding.habitButtonIcon.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, data.mediumTaskColor))
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.habitrpg.wearos.habitica.ui.viewmodels
|
|||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.asLiveData
|
||||
import com.habitrpg.wearos.habitica.data.repositories.UserRepository
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import com.habitrpg.wearos.habitica.util.ExceptionHandlerBuilder
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import androidx.lifecycle.MutableLiveData
|
|||
import androidx.lifecycle.ViewModel
|
||||
import com.habitrpg.wearos.habitica.data.repositories.UserRepository
|
||||
import com.habitrpg.wearos.habitica.models.DisplayedError
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import com.habitrpg.wearos.habitica.util.ErrorPresenter
|
||||
import com.habitrpg.wearos.habitica.util.ExceptionHandlerBuilder
|
||||
|
||||
|
|
|
|||
|
|
@ -157,10 +157,13 @@ class LoginViewModel @Inject constructor(userRepository: UserRepository,
|
|||
}
|
||||
}
|
||||
|
||||
fun login(username: String, password: String) {
|
||||
fun login(username: String, password: String, onResult: (Boolean) -> Unit) {
|
||||
viewModelScope.launch(exceptionBuilder.userFacing(this)) {
|
||||
val response = apiClient.loginLocal(UserAuth(username, password))
|
||||
handleAuthResponse(response)
|
||||
onResult(response?.id != null)
|
||||
}.invokeOnCompletion {
|
||||
onResult(it == null)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import androidx.lifecycle.viewModelScope
|
|||
import com.habitrpg.common.habitica.api.HostConfig
|
||||
import com.habitrpg.wearos.habitica.data.repositories.TaskRepository
|
||||
import com.habitrpg.wearos.habitica.data.repositories.UserRepository
|
||||
import com.habitrpg.wearos.habitica.models.User
|
||||
import com.habitrpg.wearos.habitica.models.user.User
|
||||
import com.habitrpg.wearos.habitica.util.ExceptionHandlerBuilder
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ class AddTaskButton @JvmOverloads constructor(
|
|||
0f,
|
||||
0f,
|
||||
80.dpToPx(context).toFloat(),
|
||||
ContextCompat.getColor(context, R.color.brand_400),
|
||||
ContextCompat.getColor(context, R.color.blue_100),
|
||||
ContextCompat.getColor(context, R.color.watch_purple_100),
|
||||
ContextCompat.getColor(context, R.color.watch_blue_100),
|
||||
Shader.TileMode.CLAMP
|
||||
)
|
||||
private val path = Path()
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ class HabitDirectionPickerButton @JvmOverloads constructor(
|
|||
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 mainTaskColor: Int = ContextCompat.getColor(context, R.color.watch_gray_200)
|
||||
var darkerTaskColor: Int = ContextCompat.getColor(context, R.color.watch_gray_10)
|
||||
var iconColor: Int = ContextCompat.getColor(context, R.color.white)
|
||||
|
||||
private val radius = 15.dpToPx(context)
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@ class IndeterminateProgressView @JvmOverloads constructor(
|
|||
var progressBarWidth = 4f.dpToPx(context)
|
||||
|
||||
private val rainbow = listOf(
|
||||
ContextCompat.getColor(context, R.color.red_100),
|
||||
ContextCompat.getColor(context, R.color.orange_100),
|
||||
ContextCompat.getColor(context, R.color.yellow_100),
|
||||
ContextCompat.getColor(context, R.color.green_100),
|
||||
ContextCompat.getColor(context, R.color.blue_100),
|
||||
ContextCompat.getColor(context, R.color.brand_400),
|
||||
ContextCompat.getColor(context, R.color.red_100),
|
||||
ContextCompat.getColor(context, R.color.watch_red_100),
|
||||
ContextCompat.getColor(context, R.color.watch_orange_100),
|
||||
ContextCompat.getColor(context, R.color.watch_yellow_100),
|
||||
ContextCompat.getColor(context, R.color.watch_green_100),
|
||||
ContextCompat.getColor(context, R.color.watch_blue_100),
|
||||
ContextCompat.getColor(context, R.color.watch_purple_100),
|
||||
ContextCompat.getColor(context, R.color.watch_red_100),
|
||||
).toIntArray()
|
||||
val gradient = SweepGradient(225f, 225f, rainbow, null)
|
||||
private val paint = Paint()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<corners android:radius="40dp" />
|
||||
<solid android:color="@color/gray_5" />
|
||||
<solid android:color="@color/surface" />
|
||||
</shape>
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_400"/>
|
||||
android:textColor="@color/watch_gray_200"/>
|
||||
<TextView
|
||||
android:id="@+id/text_view"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -1,18 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center">
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"/>
|
||||
<TextView
|
||||
android:id="@+id/text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/syncing_account"
|
||||
android:visibility="gone"/>
|
||||
android:layout_margin="@dimen/spacing_xlarge"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:gravity="center"/>
|
||||
</LinearLayout>
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
style="@style/Chip"
|
||||
tools:text="Task Type"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="@color/brand_500"/>
|
||||
android:textColor="@color/watch_purple_500"/>
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</androidx.wear.widget.BoxInsetLayout>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:textColor="@color/brand_500"
|
||||
android:textColor="@color/watch_purple_500"
|
||||
tools:text="Header Text"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:textSize="16sp" />
|
||||
|
|
|
|||
|
|
@ -1,9 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">@color/brand_300</color>
|
||||
<color name="bar_background_color">#34313a</color>
|
||||
<color name="exp_bar_color">@color/yellow_100</color>
|
||||
<color name="mp_bar_color">#a9dcf6</color>
|
||||
<color name="hp_bar_color">#f2666a</color>
|
||||
<color name="watch_red_500">#FFF0EF</color>
|
||||
<color name="watch_red_200">#EFC0BD</color>
|
||||
<color name="watch_red_100">#F06B63</color>
|
||||
<color name="watch_red_10">#E43E42</color>
|
||||
<color name="watch_red_5">#2D2424</color>
|
||||
|
||||
<color name="watch_orange_500">#FFEDE0</color>
|
||||
<color name="watch_orange_200">#F8CCAE</color>
|
||||
<color name="watch_orange_100">#FF944C</color>
|
||||
<color name="watch_orange_10">#F37724</color>
|
||||
<color name="watch_orange_5">#2B2622</color>
|
||||
|
||||
<color name="watch_yellow_200">#FEDEAD</color>
|
||||
<color name="watch_yellow_100">#FFBE5D</color>
|
||||
<color name="watch_yellow_10">#FAA11F</color>
|
||||
|
||||
<color name="watch_green_500">#E8FBF4</color>
|
||||
<color name="watch_green_200">#9BDEC5</color>
|
||||
<color name="watch_green_100">#24CC8F</color>
|
||||
<color name="watch_green_10">#1FA574</color>
|
||||
<color name="watch_green_5">#202725</color>
|
||||
|
||||
<color name="watch_teal_200">#97EBF2</color>
|
||||
<color name="watch_teal_100">#3BCAD7</color>
|
||||
<color name="watch_teal_10">#26A0AB</color>
|
||||
|
||||
<color name="watch_blue_500">#EAF8FF</color>
|
||||
<color name="watch_blue_200">#B4DCF0</color>
|
||||
<color name="watch_blue_100">#50B5E9</color>
|
||||
<color name="watch_blue_10">#2B93CA</color>
|
||||
<color name="watch_blue_5">#23292C</color>
|
||||
|
||||
<color name="watch_maroon_200">#F19595</color>
|
||||
<color name="watch_maroon_100">#DE3F3F</color>
|
||||
<color name="watch_maroon_10">#B51A1A</color>
|
||||
|
||||
<color name="watch_purple_700">#ede7f6</color>
|
||||
<color name="watch_purple_500">#EAE3FF</color>
|
||||
<color name="watch_purple_200">#BEAAF9</color>
|
||||
<color name="watch_purple_100">#A675FF</color>
|
||||
<color name="watch_purple_10">#6133B4</color>
|
||||
<color name="watch_purple_5">#23202A</color>
|
||||
|
||||
<color name="watch_gray_500">#EFEFEF</color>
|
||||
<color name="watch_gray_200">#C3C0C7</color>
|
||||
<color name="watch_gray_100">#A5A1AC</color>
|
||||
<color name="watch_gray_10">#878190</color>
|
||||
<color name="watch_gray_5">#686274</color>
|
||||
|
||||
<color name="ic_launcher_background">@color/brand_300</color>
|
||||
<color name="surface">#23202A</color>
|
||||
</resources>
|
||||
Loading…
Reference in a new issue