Make task form show correct colors when editing

This commit is contained in:
Phillip Thelen 2019-08-07 12:07:14 +02:00
parent 59bf5b10d6
commit d58992a0f3
8 changed files with 107 additions and 55 deletions

View file

@ -9,6 +9,7 @@
<attr name="textColorSecondary" format="color" />
<attr name="textColorPrimaryDark" format="color" />
<attr name="barColor" format="color" />
<attr name="taskFormTint" format="color" />
<attr name="textColorSecondaryDark" format="color" />
<attr name="statsColor" format="color" />
<attr name="statsTitle" format="string" />

View file

@ -25,6 +25,7 @@
<item name="colorPrimaryOffset">@color/brand_200</item>
<item name="colorPrimaryDistinct">@color/brand_500</item>
<item name="colorBadgeBackground">@color/brand_400</item>
<item name="taskFormTint">@color/brand_300</item>
<item name="textColorPrimary">@color/gray_50</item>
<item name="textColorSecondary">@color/gray_200</item>
@ -47,37 +48,6 @@
<item name="android:navigationBarColor">@color/brand_50</item>
</style>
<style name="MainAppTheme.Green">
<item name="colorPrimary">@color/green_10</item>
<item name="colorPrimaryDark">@color/green_5</item>
<item name="colorAccent">@color/green_100</item>
<item name="android:colorPrimary">@color/green_10</item>
<item name="android:colorPrimaryDark">@color/green_5</item>
<item name="android:colorAccent">@color/green_100</item>
<item name="colorPrimaryOffset">@color/green_50</item>
<item name="colorPrimaryDistinct">@color/green_500</item>
<item name="colorBadgeBackground">@color/green_100</item>
<item name="textColorSecondaryDark">@color/green_500</item>
<item name="android:textColorLink">@color/green_100</item>
<item name="textColorPrimaryDark">@color/green_500</item>
<item name="barColor">@color/green_10</item>
</style>
<style name="MainAppTheme.Blue">
<item name="colorPrimary">@color/blue_10</item>
<item name="colorPrimaryDark">@color/blue_5</item>
<item name="colorAccent">@color/blue_100</item>
<item name="android:colorPrimary">@color/blue_10</item>
<item name="android:colorPrimaryDark">@color/blue_5</item>
<item name="android:colorAccent">@color/blue_100</item>
<item name="colorPrimaryOffset">@color/blue_50</item>
<item name="colorPrimaryDistinct">@color/blue_500</item>
<item name="colorBadgeBackground">@color/blue_100</item>
<item name="textColorSecondaryDark">@color/blue_500</item>
<item name="android:textColorLink">@color/blue_100</item>
<item name="textColorPrimaryDark">@color/blue_500</item>
<item name="barColor">@color/blue_10</item>
</style>
<style name="MainAppTheme.Red">
<item name="colorPrimary">@color/red_5</item>
@ -93,6 +63,7 @@
<item name="android:textColorLink">@color/red_100</item>
<item name="textColorPrimaryDark">@color/red_500</item>
<item name="barColor">@color/red_5</item>
<item name="taskFormTint">@color/red_100</item>
</style>
<style name="MainAppTheme.Maroon">
@ -109,22 +80,7 @@
<item name="android:textColorLink">@color/maroon_100</item>
<item name="textColorPrimaryDark">@color/maroon_500</item>
<item name="barColor">@color/maroon_10</item>
</style>
<style name="MainAppTheme.Teal">
<item name="colorPrimary">@color/teal_10</item>
<item name="colorPrimaryDark">@color/teal_5</item>
<item name="colorAccent">@color/teal_100</item>
<item name="android:colorPrimary">@color/teal_10</item>
<item name="android:colorPrimaryDark">@color/teal_5</item>
<item name="android:colorAccent">@color/teal_100</item>
<item name="colorPrimaryOffset">@color/teal_50</item>
<item name="colorPrimaryDistinct">@color/teal_500</item>
<item name="colorBadgeBackground">@color/teal_100</item>
<item name="textColorSecondaryDark">@color/teal_500</item>
<item name="android:textColorLink">@color/teal_100</item>
<item name="textColorPrimaryDark">@color/teal_500</item>
<item name="barColor">@color/teal_10</item>
<item name="taskFormTint">@color/maroon_100</item>
</style>
<style name="MainAppTheme.Orange">
@ -141,6 +97,75 @@
<item name="android:textColorLink">@color/orange_100</item>
<item name="textColorPrimaryDark">@color/orange_500</item>
<item name="barColor">@color/orange_10</item>
<item name="taskFormTint">@color/orange_100</item>
</style>
<style name="MainAppTheme.Yellow">
<item name="colorPrimary">@color/yellow_10</item>
<item name="colorPrimaryDark">@color/yellow_5</item>
<item name="colorAccent">@color/yellow_100</item>
<item name="android:colorPrimary">@color/yellow_10</item>
<item name="android:colorPrimaryDark">@color/yellow_5</item>
<item name="android:colorAccent">@color/yellow_100</item>
<item name="colorPrimaryOffset">@color/yellow_50</item>
<item name="colorPrimaryDistinct">@color/yellow_500</item>
<item name="colorBadgeBackground">@color/yellow_100</item>
<item name="textColorSecondaryDark">@color/yellow_500</item>
<item name="android:textColorLink">@color/yellow_100</item>
<item name="textColorPrimaryDark">@color/yellow_500</item>
<item name="barColor">@color/yellow_10</item>
<item name="taskFormTint">@color/yellow_100</item>
</style>
<style name="MainAppTheme.Green">
<item name="colorPrimary">@color/green_10</item>
<item name="colorPrimaryDark">@color/green_5</item>
<item name="colorAccent">@color/green_100</item>
<item name="android:colorPrimary">@color/green_10</item>
<item name="android:colorPrimaryDark">@color/green_5</item>
<item name="android:colorAccent">@color/green_100</item>
<item name="colorPrimaryOffset">@color/green_50</item>
<item name="colorPrimaryDistinct">@color/green_500</item>
<item name="colorBadgeBackground">@color/green_100</item>
<item name="textColorSecondaryDark">@color/green_500</item>
<item name="android:textColorLink">@color/green_100</item>
<item name="textColorPrimaryDark">@color/green_500</item>
<item name="barColor">@color/green_10</item>
<item name="taskFormTint">@color/green_100</item>
</style>
<style name="MainAppTheme.Teal">
<item name="colorPrimary">@color/teal_10</item>
<item name="colorPrimaryDark">@color/teal_5</item>
<item name="colorAccent">@color/teal_100</item>
<item name="android:colorPrimary">@color/teal_10</item>
<item name="android:colorPrimaryDark">@color/teal_5</item>
<item name="android:colorAccent">@color/teal_100</item>
<item name="colorPrimaryOffset">@color/teal_50</item>
<item name="colorPrimaryDistinct">@color/teal_500</item>
<item name="colorBadgeBackground">@color/teal_100</item>
<item name="textColorSecondaryDark">@color/teal_500</item>
<item name="android:textColorLink">@color/teal_100</item>
<item name="textColorPrimaryDark">@color/teal_500</item>
<item name="barColor">@color/teal_10</item>
<item name="taskFormTint">@color/teal_100</item>
</style>
<style name="MainAppTheme.Blue">
<item name="colorPrimary">@color/blue_10</item>
<item name="colorPrimaryDark">@color/blue_5</item>
<item name="colorAccent">@color/blue_100</item>
<item name="android:colorPrimary">@color/blue_10</item>
<item name="android:colorPrimaryDark">@color/blue_5</item>
<item name="android:colorAccent">@color/blue_100</item>
<item name="colorPrimaryOffset">@color/blue_50</item>
<item name="colorPrimaryDistinct">@color/blue_500</item>
<item name="colorBadgeBackground">@color/blue_100</item>
<item name="textColorSecondaryDark">@color/blue_500</item>
<item name="android:textColorLink">@color/blue_100</item>
<item name="textColorPrimaryDark">@color/blue_500</item>
<item name="barColor">@color/blue_10</item>
<item name="taskFormTint">@color/blue_100</item>
</style>
<style name="BottomSheetTheme" parent="Theme.AppCompat.NoActionBar">

View file

@ -24,6 +24,7 @@ import java.util.*
abstract class BaseActivity : AppCompatActivity() {
private var currentTheme: String? = null
internal var forcedTheme: String? = null
private var destroyed: Boolean = false
protected abstract fun getLayoutResId(): Int
@ -80,12 +81,17 @@ abstract class BaseActivity : AppCompatActivity() {
}
private fun loadTheme(sharedPreferences: SharedPreferences) {
val theme = sharedPreferences.getString("theme_name", "purple")
val theme = if (forcedTheme != null) {
forcedTheme
} else {
sharedPreferences.getString("theme_name", "purple")
}
if (theme == currentTheme) return
setTheme(when (theme) {
"maroon" -> R.style.MainAppTheme_Maroon
"red" -> R.style.MainAppTheme_Red
"orange" -> R.style.MainAppTheme_Orange
"yellow" -> R.style.MainAppTheme_Yellow
"green" -> R.style.MainAppTheme_Green
"teal" -> R.style.MainAppTheme_Teal
"blue" -> R.style.MainAppTheme_Blue

View file

@ -113,6 +113,7 @@ class TaskFormActivity : BaseActivity() {
taskDifficultyButtons.tintColor = value
habitScoringButtons.tintColor = value
habitResetStreakButtons.tintColor = value
taskSchedulingControls.tintColor = value
supportActionBar?.setBackgroundDrawable(ColorDrawable(value))
updateTagViewsColors()
}
@ -126,18 +127,33 @@ class TaskFormActivity : BaseActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
val bundle = intent.extras ?: return
val taskId = bundle.getString(TASK_ID_KEY)
forcedTheme = if (taskId != null) {
val taskValue = bundle.getDouble(TASK_VALUE_KEY)
when {
taskValue < -20 -> "maroon"
taskValue < -10 -> "red"
taskValue < -1 -> "orange"
taskValue < 1 -> "yellow"
taskValue < 5 -> "green"
taskValue < 10 -> "teal"
else -> "blue"
}
} else {
"purple"
}
super.onCreate(savedInstanceState)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
tintColor = getThemeColor(R.attr.colorAccent)
val bundle = intent.extras ?: return
tintColor = getThemeColor(R.attr.taskFormTint)
isChallengeTask = bundle.getBoolean(IS_CHALLENGE_TASK, false)
taskType = bundle.getString(TASK_TYPE_KEY) ?: Task.TYPE_HABIT
val taskId = bundle.getString(TASK_ID_KEY)
preselectedTags = bundle.getStringArrayList(SELECTED_TAGS_KEY)
compositeSubscription.add(tagRepository.getTags()
@ -465,6 +481,7 @@ class TaskFormActivity : BaseActivity() {
companion object {
val SELECTED_TAGS_KEY = "selectedTags"
const val TASK_ID_KEY = "taskId"
const val TASK_VALUE_KEY = "taskValue"
const val USER_ID_KEY = "userId"
const val TASK_TYPE_KEY = "type"
const val IS_CHALLENGE_TASK = "isChallengeTask"

View file

@ -72,7 +72,7 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare
serverUrlPreference?.summary = preferenceManager.sharedPreferences.getString("server_url", "")
val themePreference = findPreference("theme_name") as? ListPreference
themePreference?.isVisible = configManager.testingLevel() == AppTestingLevel.ALPHA || BuildConfig.DEBUG
themePreference?.summary = preferenceManager.sharedPreferences.getString("theme_name", "")
themePreference?.summary = themePreference?.entry
}
override fun onResume() {

View file

@ -324,6 +324,7 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
val bundle = Bundle()
bundle.putString(TaskFormActivity.TASK_TYPE_KEY, task.type)
bundle.putString(TaskFormActivity.TASK_ID_KEY, task.id)
bundle.putDouble(TaskFormActivity.TASK_VALUE_KEY, task.value)
val intent = Intent(activity, TaskFormActivity::class.java)
intent.putExtras(bundle)

View file

@ -15,6 +15,7 @@ import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher
import com.habitrpg.android.habitica.extensions.dpToPx
import com.habitrpg.android.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.inflate
import com.habitrpg.android.habitica.models.tasks.ChecklistItem
import com.habitrpg.android.habitica.ui.helpers.bindView
@ -35,7 +36,7 @@ class ChecklistItemFormView @JvmOverloads constructor(
editText.setText(item.text)
}
var tintColor: Int = ContextCompat.getColor(context, R.color.brand_300)
var tintColor: Int = context.getThemeColor(R.attr.taskFormTint)
var textChangedListener: ((String) -> Unit)? = null
var animDuration = 0L
var isAddButton: Boolean = true

View file

@ -13,6 +13,7 @@ import android.widget.*
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.extensions.dpToPx
import com.habitrpg.android.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.inflate
import com.habitrpg.android.habitica.models.tasks.RemindersItem
import com.habitrpg.android.habitica.models.tasks.Task
@ -45,7 +46,7 @@ class ReminderItemFormView @JvmOverloads constructor(
textView.text = formatter.format(item.time)
}
var tintColor: Int = ContextCompat.getColor(context, R.color.brand_300)
var tintColor: Int = context.getThemeColor(R.attr.taskFormTint)
var valueChangedListener: ((Date) -> Unit)? = null
var animDuration = 0L
var isAddButton: Boolean = true