diff --git a/app/src/main/java/com/aurora/extensions/Commons.kt b/app/src/main/java/com/aurora/extensions/Commons.kt
index af88aebbf..90c2b48a4 100644
--- a/app/src/main/java/com/aurora/extensions/Commons.kt
+++ b/app/src/main/java/com/aurora/extensions/Commons.kt
@@ -19,11 +19,14 @@
package com.aurora.extensions
+import android.graphics.Color
import android.text.format.DateFormat
+import androidx.annotation.ColorInt
import java.io.PrintWriter
import java.io.StringWriter
import java.util.Calendar
import java.util.Locale
+import javax.annotation.Nullable
fun Long.toDate(): String {
val calendar = Calendar.getInstance(Locale.getDefault())
@@ -42,4 +45,51 @@ fun Throwable.stackTraceToString(): String {
fun isValidPackageName(packageName: String): Boolean {
val packageRegex = "^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*$".toRegex()
return packageName.matches(packageRegex)
+}
+
+/**
+ * Computes a darker color from the given color.
+ * @param color The color to darken.
+ * @param factor The factor to darken the color by.
+ * - higher factor values will result in a lighter color.
+ * @return The darker color.
+ */
+fun darkenColor(@ColorInt color: Int, factor: Float = 0.25f): Int {
+ val a = Color.alpha(color)
+ val r = (Color.red(color) * factor).coerceIn(0f, 255f).toInt()
+ val g = (Color.green(color) * factor).coerceIn(0f, 255f).toInt()
+ val b = (Color.blue(color) * factor).coerceIn(0f, 255f).toInt()
+
+ return Color.argb(a, r, g, b)
+}
+
+/**
+ * Computes a lighter color from the given color.
+ * @param color The color to lighten.
+ * @param factor The factor to lighten the color by.
+ * - higher factor values will result in a lighter color.
+ * @param alpha The alpha value to use for the lighter color.
+ * @return The lighter color.
+ */
+fun lightenColor(@ColorInt color: Int, factor: Float = 0.5f, @Nullable alpha: Int? = null): Int {
+ val a = alpha ?: Color.alpha(color)
+ val r = (Color.red(color) + (255 - Color.red(color)) * factor).toInt()
+ val g = (Color.green(color) + (255 - Color.green(color)) * factor).toInt()
+ val b = (Color.blue(color) + (255 - Color.blue(color)) * factor).toInt()
+
+ return Color.argb(a, r, g, b)
+}
+
+/**
+ * Computes a contrasting color from the given color.
+ * @param color The color to contrast.
+ * @return The contrasting color.
+ */
+fun contrastingColor(@ColorInt color: Int): Int {
+ val red = Color.red(color)
+ val green = Color.green(color)
+ val blue = Color.blue(color)
+ val yiq = ((red * 299) + (green * 587) + (blue * 114)) / 1000
+
+ return if (yiq >= 128) Color.BLACK else Color.WHITE
}
\ No newline at end of file
diff --git a/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt b/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
index 49ba8a8fe..95a7dcff3 100644
--- a/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
+++ b/app/src/main/java/com/aurora/store/view/custom/layouts/button/UpdateButton.kt
@@ -20,9 +20,13 @@
package com.aurora.store.view.custom.layouts.button
import android.content.Context
+import android.content.res.ColorStateList
import android.util.AttributeSet
import android.widget.RelativeLayout
+import com.aurora.extensions.accentColor
+import com.aurora.extensions.darkenColor
import com.aurora.extensions.getString
+import com.aurora.extensions.lightenColor
import com.aurora.extensions.runOnUiThread
import com.aurora.store.R
import com.aurora.store.data.model.DownloadStatus
@@ -51,6 +55,15 @@ class UpdateButton : RelativeLayout {
private fun init(context: Context) {
val view = inflate(context, R.layout.view_update_button, this)
binding = ViewUpdateButtonBinding.bind(view)
+
+ // Apply primaryColor tint to all buttons with alpha
+ val alphaAccent = lightenColor(context.accentColor(), alpha = 200)
+ binding.btnPositive.backgroundTintList = ColorStateList.valueOf(alphaAccent)
+ binding.btnNegative.backgroundTintList = ColorStateList.valueOf(alphaAccent)
+
+ val textColor = darkenColor(context.accentColor())
+ binding.btnPositive.setTextColor(textColor)
+ binding.btnNegative.setTextColor(textColor)
}
fun setText(text: String) {
@@ -65,9 +78,8 @@ class UpdateButton : RelativeLayout {
fun updateState(downloadStatus: DownloadStatus) {
val displayChild = when (downloadStatus) {
- DownloadStatus.QUEUED,
+ DownloadStatus.QUEUED -> 1
DownloadStatus.DOWNLOADING -> 2
-
else -> 0
}
diff --git a/app/src/main/java/com/aurora/store/view/epoxy/views/UpdateHeaderView.kt b/app/src/main/java/com/aurora/store/view/epoxy/views/UpdateHeaderView.kt
index 8faaf1a90..0452a4ebd 100644
--- a/app/src/main/java/com/aurora/store/view/epoxy/views/UpdateHeaderView.kt
+++ b/app/src/main/java/com/aurora/store/view/epoxy/views/UpdateHeaderView.kt
@@ -25,6 +25,8 @@ import com.airbnb.epoxy.CallbackProp
import com.airbnb.epoxy.ModelProp
import com.airbnb.epoxy.ModelView
import com.airbnb.epoxy.OnViewRecycled
+import com.aurora.extensions.accentColor
+import com.aurora.extensions.contrastingColor
import com.aurora.store.databinding.ViewHeaderUpdateBinding
@@ -46,6 +48,7 @@ class UpdateHeaderView @JvmOverloads constructor(
@ModelProp
fun action(action: String) {
binding.btnAction.text = action
+ binding.btnAction.setTextColor(contrastingColor(context.accentColor()))
}
@CallbackProp
diff --git a/app/src/main/res/layout/view_app_update.xml b/app/src/main/res/layout/view_app_update.xml
index 04368ff7b..8e421cd53 100644
--- a/app/src/main/res/layout/view_app_update.xml
+++ b/app/src/main/res/layout/view_app_update.xml
@@ -106,6 +106,7 @@
android:layout_alignTop="@id/txt_line1"
android:layout_toStartOf="@id/btn_action"
android:contentDescription="@string/details_changelog"
+ app:iconTint="?colorControlNormal"
app:icon="@drawable/ic_arrow_down" />
+ android:text="@string/action_update_all"
+ android:textAppearance="@style/TextAppearance.Aurora.Line1" />
diff --git a/app/src/main/res/layout/view_state_button.xml b/app/src/main/res/layout/view_state_button.xml
index ba6bdd0db..5d0637c62 100644
--- a/app/src/main/res/layout/view_state_button.xml
+++ b/app/src/main/res/layout/view_state_button.xml
@@ -25,14 +25,16 @@
diff --git a/app/src/main/res/layout/view_update_button.xml b/app/src/main/res/layout/view_update_button.xml
index 18a0bccbe..366a5efb0 100644
--- a/app/src/main/res/layout/view_update_button.xml
+++ b/app/src/main/res/layout/view_update_button.xml
@@ -36,6 +36,7 @@
-
-
-
-
-