Fix dark theme selected row color

This commit is contained in:
Philipp Heckel 2022-01-19 22:57:07 -05:00
parent 0a5470cfe1
commit a135f5b312
4 changed files with 33 additions and 8 deletions

View file

@ -92,7 +92,8 @@ class DetailAdapter(private val activity: Activity, private val repository: Repo
tagsView.visibility = View.GONE tagsView.visibility = View.GONE
} }
if (selected.contains(notification.id)) { if (selected.contains(notification.id)) {
itemView.setBackgroundResource(R.color.primarySelectedRowColor); val backgroundColor = if (isDarkThemeOn(context, repository)) R.color.primaryDarkSelectedRowColor else R.color.primaryLightSelectedRowColor
itemView.setBackgroundResource(backgroundColor);
} }
renderPriority(context, notification) renderPriority(context, notification)
maybeRenderAttachment(context, notification) maybeRenderAttachment(context, notification)

View file

@ -5,6 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatDelegate
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -13,6 +14,7 @@ import io.heckel.ntfy.R
import io.heckel.ntfy.db.ConnectionState import io.heckel.ntfy.db.ConnectionState
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.util.isDarkThemeOn
import io.heckel.ntfy.util.topicShortUrl import io.heckel.ntfy.util.topicShortUrl
import java.text.DateFormat import java.text.DateFormat
import java.util.* import java.util.*
@ -100,7 +102,8 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs
itemView.setOnClickListener { onClick(subscription) } itemView.setOnClickListener { onClick(subscription) }
itemView.setOnLongClickListener { onLongClick(subscription); true } itemView.setOnLongClickListener { onLongClick(subscription); true }
if (selected.contains(subscription.id)) { if (selected.contains(subscription.id)) {
itemView.setBackgroundResource(R.color.primarySelectedRowColor); val backgroundColor = if (isDarkThemeOn(context, repository)) R.color.primaryDarkSelectedRowColor else R.color.primaryLightSelectedRowColor
itemView.setBackgroundResource(backgroundColor)
} }
} }
} }

View file

@ -4,14 +4,18 @@ import android.animation.ArgbEvaluator
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.res.Configuration
import android.content.res.Configuration.UI_MODE_NIGHT_YES
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.PowerManager import android.os.PowerManager
import android.provider.OpenableColumns import android.provider.OpenableColumns
import android.provider.Settings import android.provider.Settings
import android.view.Window import android.view.Window
import androidx.appcompat.app.AppCompatDelegate
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.db.Notification import io.heckel.ntfy.db.Notification
import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import java.security.SecureRandom import java.security.SecureRandom
import java.text.DateFormat import java.text.DateFormat
@ -200,3 +204,19 @@ fun isIgnoringBatteryOptimizations(context: Context): Boolean {
return true return true
} }
// Returns true if dark mode is on, see https://stackoverflow.com/a/60761189/1440785
fun Context.isDarkThemeOn(): Boolean {
return resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK == UI_MODE_NIGHT_YES
}
fun isDarkThemeOn(context: Context, repository: Repository): Boolean {
val darkMode = repository.getDarkMode()
if (darkMode == AppCompatDelegate.MODE_NIGHT_YES) {
return true
}
if (darkMode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM && context.isDarkThemeOn()) {
return true
}
return false
}

View file

@ -1,12 +1,13 @@
<!--?xml version="1.0" encoding="UTF-8"?--> <!--?xml version="1.0" encoding="UTF-8"?-->
<resources> <resources>
<color name="primaryColor">#338574</color> <color name="primaryColor">#338574</color>
<color name="primaryLightColor">#338574</color>
<color name="primaryDarkColor">#2A6E60</color>
<color name="primaryLightTextColor">#FFFFFF</color>
<color name="primarySelectedRowColor">#EEEEEE</color>
<color name="primaryDangerButtonColor">#C30000</color> <color name="primaryDangerButtonColor">#C30000</color>
<color name="primaryPriorityUrgentColor">#C30000</color>
<color name="primaryPriorityHighColor">#E10000</color> <color name="primaryLightColor">#338574</color>
<color name="primaryLightTextColor">#FFFFFF</color>
<color name="primaryLightSelectedRowColor">#EEEEEE</color>
<color name="primaryDarkColor">#2A6E60</color>
<color name="primaryDarkSelectedRowColor">#444444</color>
</resources> </resources>