mirror of https://github.com/Corewala/Buran
Implement using a color or another depending on light/dark mode setting
Signed-off-by: Ariel Costas <arielcostas@mailbox.org>
This commit is contained in:
parent
6de0568d11
commit
b364590d4b
|
@ -28,7 +28,6 @@ import androidx.databinding.DataBindingUtil
|
|||
import androidx.preference.PreferenceManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import corewala.*
|
||||
import corewala.buran.BuildConfig
|
||||
import corewala.buran.Buran
|
||||
import corewala.buran.OmniTerm
|
||||
|
@ -48,7 +47,14 @@ import corewala.buran.ui.content_text.TextDialog
|
|||
import corewala.buran.ui.gemtext_adapter.AbstractGemtextAdapter
|
||||
import corewala.buran.ui.modals_menus.history.HistoryDialog
|
||||
import corewala.buran.ui.modals_menus.overflow.OverflowPopup
|
||||
import corewala.buran.ui.settings.COLORSCHEME_DARK
|
||||
import corewala.buran.ui.settings.COLORSCHEME_LIGHT
|
||||
import corewala.buran.ui.settings.PAIRS
|
||||
import corewala.buran.ui.settings.SettingsActivity
|
||||
import corewala.hideKeyboard
|
||||
import corewala.showKeyboard
|
||||
import corewala.toURI
|
||||
import corewala.visibleRetainingSpace
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.io.FileOutputStream
|
||||
|
@ -360,22 +366,25 @@ class GemActivity : AppCompatActivity() {
|
|||
Buran.DEFAULT_SEARCH_BASE
|
||||
) ?: Buran.DEFAULT_SEARCH_BASE
|
||||
|
||||
if(
|
||||
if (
|
||||
!searchBase.startsWith("gemini://")
|
||||
or searchBase.contains(" ")
|
||||
or !searchBase.contains(".")
|
||||
or !searchBase.endsWith("?")
|
||||
){
|
||||
) {
|
||||
searchBase = Buran.DEFAULT_SEARCH_BASE
|
||||
}
|
||||
|
||||
when {
|
||||
prefs.contains("background_colour") -> {
|
||||
when (val backgroundColor = prefs.getString("background_colour", "#XXXXXX")) {
|
||||
"#XXXXXX" -> binding.rootCoord.background = null
|
||||
else -> binding.rootCoord.background = ColorDrawable(Color.parseColor("$backgroundColor"))
|
||||
}
|
||||
if (prefs.contains("bg_name")) {
|
||||
val backgroundName = prefs.getString("bg_name", "none")
|
||||
val colorscheme = if (prefs.getString("theme", null) == "theme_Dark") {
|
||||
COLORSCHEME_DARK
|
||||
} else {
|
||||
COLORSCHEME_LIGHT
|
||||
}
|
||||
val color =
|
||||
PAIRS[backgroundName]?.byTheme(colorscheme) ?: PAIRS["none"]!!.byTheme(colorscheme)
|
||||
binding.rootCoord.background = ColorDrawable(Color.parseColor(color))
|
||||
}
|
||||
|
||||
val showInlineIcons = prefs.getBoolean(
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package corewala.buran.ui.settings
|
||||
|
||||
val COLORSCHEME_DARK = "dark";
|
||||
val COLORSCHEME_LIGHT = "light";
|
||||
|
||||
data class ColorPair(val light: String, val dark: String) {
|
||||
fun byTheme(theme: String): String {
|
||||
return if (theme == COLORSCHEME_DARK) dark else light
|
||||
}
|
||||
}
|
||||
|
||||
val PAIRS: Map<String, ColorPair> = mapOf(
|
||||
Pair("none", ColorPair("#ffffff", "#000000")),
|
||||
Pair("red", ColorPair("#fee2e2", "#7f1d1d")),
|
||||
Pair("orange", ColorPair("#ffedd5", "#7c2d12")),
|
||||
Pair("yellow", ColorPair("#fef9c3", "#713f12")),
|
||||
Pair("green", ColorPair("#dcfce7", "#14532d")),
|
||||
Pair("sky", ColorPair("#e0f2fe", "#0c4a6e")),
|
||||
Pair("purple", ColorPair("#f3e8ff", "#581c87"))
|
||||
)
|
||||
|
||||
fun getNameByColor(color: String, colorscheme: String): String {
|
||||
for ((key, value) in PAIRS) {
|
||||
if (value.byTheme(colorscheme).toUpperCase() == color.toUpperCase()) {
|
||||
return key
|
||||
break
|
||||
}
|
||||
}
|
||||
return PAIRS["none"]!!.byTheme(colorscheme)
|
||||
}
|
|
@ -276,36 +276,31 @@ class SettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChan
|
|||
// Background colour picker
|
||||
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
val backgroundColourPreference = Preference(context)
|
||||
backgroundColourPreference.key = "background_colour"
|
||||
val colorscheme = if (themePreference.value == "theme_Dark") {
|
||||
COLORSCHEME_DARK
|
||||
} else {
|
||||
COLORSCHEME_LIGHT
|
||||
}
|
||||
|
||||
backgroundColourPreference.setTitle(R.string.prefs_override_page_background_title)
|
||||
backgroundColourPreference.setSummary(R.string.prefs_override_page_background)
|
||||
backgroundColourPreference.setOnPreferenceClickListener {
|
||||
ColorSheet().colorPicker(
|
||||
selectedColor = sharedPreferences.getInt(
|
||||
"background_colour_id",
|
||||
ColorSheet.NO_COLOR
|
||||
selectedColor = Color.parseColor(
|
||||
PAIRS[sharedPreferences.getString(
|
||||
"bg_name",
|
||||
null
|
||||
)]?.byTheme(colorscheme) ?: PAIRS["none"]!!.byTheme("none")
|
||||
),
|
||||
colors = listOf(
|
||||
Color.parseColor("#fee2e2"),
|
||||
Color.parseColor("#ffedd5"),
|
||||
Color.parseColor("#fef9c3"),
|
||||
Color.parseColor("#dcfce7"),
|
||||
Color.parseColor("#e0f2fe"),
|
||||
Color.parseColor("#f3e8ff"),
|
||||
|
||||
Color.parseColor("#7f1d1d"),
|
||||
Color.parseColor("#7c2d12"),
|
||||
Color.parseColor("#713f12"),
|
||||
Color.parseColor("#14532d"),
|
||||
Color.parseColor("#0c4a6e"),
|
||||
Color.parseColor("#581c87"),
|
||||
|
||||
).toIntArray(),
|
||||
noColorOption = true,
|
||||
colors = PAIRS.map {
|
||||
Color.parseColor(it.value.byTheme(colorscheme))
|
||||
}.toIntArray(),
|
||||
noColorOption = false,
|
||||
listener = {
|
||||
val chosenHex = ColorSheetUtils.colorToHex(it)
|
||||
val editor = sharedPreferences.edit()
|
||||
editor.putString(backgroundColourPreference.key, ColorSheetUtils.colorToHex(it))
|
||||
editor.putInt("background_colour_id", it)
|
||||
val namebycolor = getNameByColor(chosenHex, colorscheme)
|
||||
editor.putString("bg_name", namebycolor)
|
||||
editor.commit()
|
||||
backgroundColourPreference.callChangeListener(it)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue