[skip ci] feat: theme crash fix

This commit is contained in:
aayush262 2024-04-18 01:55:15 +05:30
parent cd3bb20afd
commit 3d1040b280
15 changed files with 121 additions and 73 deletions

View file

@ -306,23 +306,18 @@ fun Activity.reloadActivity() {
initActivity(this) initActivity(this)
} }
fun Context.restartApp(view: View) { fun Activity.restartApp() {
val mainIntent = Intent.makeRestartActivityTask( val mainIntent = Intent.makeRestartActivityTask(
packageManager.getLaunchIntentForPackage(this.packageName)!!.component packageManager.getLaunchIntentForPackage(this.packageName)!!.component
) )
val component = ComponentName(this@restartApp.packageName, this@restartApp::class.qualifiedName!!) val component = ComponentName(this@restartApp.packageName, this@restartApp::class.qualifiedName!!)
Snackbar.make(view, R.string.restart_app, Snackbar.LENGTH_INDEFINITE).apply {
setAction(R.string.do_it) {
this.dismiss()
try { try {
startActivity(Intent().setComponent(component)) startActivity(Intent().setComponent(component))
} catch (anything: Exception) { } catch (e: Exception) {
startActivity(mainIntent) startActivity(mainIntent)
} }
Runtime.getRuntime().exit(0) finishAndRemoveTask()
} PrefManager.setCustomVal("reload", true)
show()
}
} }
open class BottomSheetDialogFragment : BottomSheetDialogFragment() { open class BottomSheetDialogFragment : BottomSheetDialogFragment() {

View file

@ -11,9 +11,9 @@ data class Settings(
val icon : Int, val icon : Int,
val onClick: ((ItemSettingsBinding) -> Unit)? = null, val onClick: ((ItemSettingsBinding) -> Unit)? = null,
val onLongClick: (() -> Unit)? = null, val onLongClick: (() -> Unit)? = null,
var isChecked : Boolean = false,
val switch: ((isChecked:Boolean , view: ItemSettingsSwitchBinding ) -> Unit)? = null, val switch: ((isChecked:Boolean , view: ItemSettingsSwitchBinding ) -> Unit)? = null,
val attach:((ItemSettingsBinding) -> Unit)? = null,
val isVisible: Boolean = true, val isVisible: Boolean = true,
val isActivity: Boolean = false, val isActivity: Boolean = false,
val attach:((ViewGroup) -> Unit)? = null var isChecked : Boolean = false,
) )

View file

@ -18,6 +18,7 @@ import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.PrefName
import ani.dantotsu.statusBarHeight import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager import ani.dantotsu.themes.ThemeManager
import ani.dantotsu.util.Logger
class SettingsAboutActivity : AppCompatActivity() { class SettingsAboutActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsAboutBinding private lateinit var binding: ActivitySettingsAboutBinding
@ -42,7 +43,7 @@ class SettingsAboutActivity : AppCompatActivity() {
Settings( Settings(
type = 1, type = 1,
name = getString(R.string.faq), name = getString(R.string.faq),
desc = getString(R.string.faq), desc = getString(R.string.faq_desc),
icon = R.drawable.ic_round_help_24, icon = R.drawable.ic_round_help_24,
onClick = { onClick = {
startActivity(Intent(context, FAQActivity::class.java)) startActivity(Intent(context, FAQActivity::class.java))
@ -52,7 +53,7 @@ class SettingsAboutActivity : AppCompatActivity() {
Settings( Settings(
type = 2, type = 2,
name = getString(R.string.check_app_updates), name = getString(R.string.check_app_updates),
desc = getString(R.string.check_app_updates), desc = getString(R.string.check_app_updates_desc),
icon = R.drawable.ic_round_new_releases_24, icon = R.drawable.ic_round_new_releases_24,
isChecked = PrefManager.getVal(PrefName.CheckUpdate), isChecked = PrefManager.getVal(PrefName.CheckUpdate),
switch = { isChecked, _ -> switch = { isChecked, _ ->
@ -63,7 +64,7 @@ class SettingsAboutActivity : AppCompatActivity() {
Settings( Settings(
type = 2, type = 2,
name = getString(R.string.share_username_in_crash_reports), name = getString(R.string.share_username_in_crash_reports),
desc = getString(R.string.share_username_in_crash_reports), desc = getString(R.string.share_username_in_crash_reports_desc),
icon = R.drawable.ic_round_search_24, icon = R.drawable.ic_round_search_24,
isChecked = PrefManager.getVal(PrefName.SharedUserID), isChecked = PrefManager.getVal(PrefName.SharedUserID),
switch = { isChecked, _ -> switch = { isChecked, _ ->
@ -79,13 +80,19 @@ class SettingsAboutActivity : AppCompatActivity() {
isChecked = PrefManager.getVal(PrefName.LogToFile), isChecked = PrefManager.getVal(PrefName.LogToFile),
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.LogToFile, isChecked) PrefManager.setVal(PrefName.LogToFile, isChecked)
restartApp(binding.root) restartApp()
}, },
attach = {
it.settingsDesc.setOnLongClickListener {
Logger.shareLog(context)
true
}
}
), ),
Settings( Settings(
type = 1, type = 1,
name = getString(R.string.devs), name = getString(R.string.devs),
desc= getString(R.string.devs), desc= getString(R.string.devs_desc),
icon = R.drawable.ic_round_accessible_forward_24, icon = R.drawable.ic_round_accessible_forward_24,
onClick = { onClick = {
DevelopersDialogFragment().show(supportFragmentManager, "dialog") DevelopersDialogFragment().show(supportFragmentManager, "dialog")
@ -94,7 +101,7 @@ class SettingsAboutActivity : AppCompatActivity() {
Settings( Settings(
type = 1, type = 1,
name = getString(R.string.forks), name = getString(R.string.forks),
desc = getString(R.string.forks), desc = getString(R.string.forks_desc),
icon = R.drawable.ic_round_restaurant_24, icon = R.drawable.ic_round_restaurant_24,
onClick = { onClick = {
ForksDialogFragment().show(supportFragmentManager, "dialog") ForksDialogFragment().show(supportFragmentManager, "dialog")
@ -103,7 +110,7 @@ class SettingsAboutActivity : AppCompatActivity() {
Settings( Settings(
type = 1, type = 1,
name = getString(R.string.disclaimer), name = getString(R.string.disclaimer),
desc = getString(R.string.disclaimer), desc = getString(R.string.disclaimer_desc),
icon = R.drawable.ic_round_info_24, icon = R.drawable.ic_round_info_24,
onClick = { onClick = {
val text = TextView(context) val text = TextView(context)

View file

@ -11,6 +11,7 @@ import android.os.Build.VERSION.SDK_INT
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import androidx.activity.addCallback
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
@ -28,6 +29,7 @@ import ani.dantotsu.others.AppUpdater
import ani.dantotsu.others.CustomBottomDialog import ani.dantotsu.others.CustomBottomDialog
import ani.dantotsu.pop import ani.dantotsu.pop
import ani.dantotsu.setSafeOnClickListener import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.snackString import ani.dantotsu.snackString
import ani.dantotsu.startMainActivity import ani.dantotsu.startMainActivity
import ani.dantotsu.statusBarHeight import ani.dantotsu.statusBarHeight
@ -40,9 +42,6 @@ import kotlin.random.Random
class SettingsActivity : AppCompatActivity() { class SettingsActivity : AppCompatActivity() {
private val restartMainActivity = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() = startMainActivity(this@SettingsActivity)
}
lateinit var binding: ActivitySettingsBinding lateinit var binding: ActivitySettingsBinding
private var cursedCounter = 0 private var cursedCounter = 0
@ -70,7 +69,14 @@ class SettingsActivity : AppCompatActivity() {
bottomMargin = navBarHeight bottomMargin = navBarHeight
} }
onBackPressedDispatcher.addCallback(context, restartMainActivity) onBackPressedDispatcher.addCallback(context){
if (PrefManager.getCustomVal("reload", false)) {
startMainActivity(context)
PrefManager.setCustomVal("reload", false)
}else{
finish()
}
}
settingsBack.setOnClickListener { settingsBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
@ -262,4 +268,8 @@ class SettingsActivity : AppCompatActivity() {
?: "Unknown Architecture" ?: "Unknown Architecture"
} }
} }
override fun onResume() {
ThemeManager(this).applyTheme()
super.onResume()
}
} }

View file

@ -64,7 +64,7 @@ class SettingsAdapter(private val settings: ArrayList<Settings>) :
b.settingsIconRight.visibility = b.settingsIconRight.visibility =
if (settings.isActivity) View.VISIBLE else View.GONE if (settings.isActivity) View.VISIBLE else View.GONE
b.attachView.visibility = if (settings.attach != null) View.VISIBLE else View.GONE b.attachView.visibility = if (settings.attach != null) View.VISIBLE else View.GONE
settings.attach?.invoke(b.attachView) settings.attach?.invoke(b)
} }
2 -> { 2 -> {

View file

@ -100,7 +100,7 @@ class SettingsAnimeActivity: AppCompatActivity(){
isChecked = PrefManager.getVal(PrefName.IncludeAnimeList), isChecked = PrefManager.getVal(PrefName.IncludeAnimeList),
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.IncludeAnimeList, isChecked) PrefManager.setVal(PrefName.IncludeAnimeList, isChecked)
restartApp(binding.root) restartApp()
} }
), ),
) )

View file

@ -73,14 +73,14 @@ class SettingsCommonActivity: AppCompatActivity(){
toast(getString(R.string.incorrect_password)) toast(getString(R.string.incorrect_password))
return@passwordAlertDialog return@passwordAlertDialog
} }
if (PreferencePackager.unpack(decryptedJson)) restartApp(binding.root) if (PreferencePackager.unpack(decryptedJson)) restartApp()
} else { } else {
toast(getString(R.string.password_cannot_be_empty)) toast(getString(R.string.password_cannot_be_empty))
} }
} }
} else if (name.endsWith(".ani")) { } else if (name.endsWith(".ani")) {
val decryptedJson = jsonString.toString(Charsets.UTF_8) val decryptedJson = jsonString.toString(Charsets.UTF_8)
if (PreferencePackager.unpack(decryptedJson)) restartApp(binding.root) if (PreferencePackager.unpack(decryptedJson)) restartApp()
} else { } else {
toast(getString(R.string.unknown_file_type)) toast(getString(R.string.unknown_file_type))
} }
@ -127,7 +127,7 @@ class SettingsCommonActivity: AppCompatActivity(){
settingsExtensionDns.setOnItemClickListener { _, _, i, _ -> settingsExtensionDns.setOnItemClickListener { _, _, i, _ ->
PrefManager.setVal(PrefName.DohProvider, i) PrefManager.setVal(PrefName.DohProvider, i)
settingsExtensionDns.clearFocus() settingsExtensionDns.clearFocus()
restartApp(binding.root) restartApp()
} }
settingsRecyclerView.adapter = SettingsAdapter( settingsRecyclerView.adapter = SettingsAdapter(
@ -294,7 +294,7 @@ class SettingsCommonActivity: AppCompatActivity(){
isChecked = PrefManager.getVal(PrefName.AdultOnly), isChecked = PrefManager.getVal(PrefName.AdultOnly),
switch = {isChecked, _ -> switch = {isChecked, _ ->
PrefManager.setVal(PrefName.AdultOnly, isChecked) PrefManager.setVal(PrefName.AdultOnly, isChecked)
restartApp(binding.root) restartApp()
}, },
isVisible = Anilist.adult isVisible = Anilist.adult

View file

@ -161,13 +161,12 @@ class SettingsExtensionsActivity: AppCompatActivity() {
desc = getString(R.string.anime_add_repository), desc = getString(R.string.anime_add_repository),
icon = R.drawable.ic_github, icon = R.drawable.ic_github,
onClick = { onClick = {
val dialogView = layoutInflater.inflate(R.layout.dialog_user_agent, null) val dialogView = DialogUserAgentBinding.inflate(layoutInflater)
val editText = val editText = dialogView.userAgentTextBox.apply {
dialogView.findViewById<TextInputEditText>(R.id.userAgentTextBox).apply {
hint = getString(R.string.anime_add_repository) hint = getString(R.string.anime_add_repository)
} }
val alertDialog = AlertDialog.Builder(context, R.style.MyPopup) val alertDialog = AlertDialog.Builder(context, R.style.MyPopup)
.setTitle(R.string.anime_add_repository).setView(dialogView) .setTitle(R.string.anime_add_repository).setView(dialogView.root)
.setPositiveButton(getString(R.string.ok)) { dialog, _ -> .setPositiveButton(getString(R.string.ok)) { dialog, _ ->
if (!editText.text.isNullOrBlank()) processUserInput( if (!editText.text.isNullOrBlank()) processUserInput(
editText.text.toString(), editText.text.toString(),
@ -183,8 +182,8 @@ class SettingsExtensionsActivity: AppCompatActivity() {
alertDialog.show() alertDialog.show()
alertDialog.window?.setDimAmount(0.8f) alertDialog.window?.setDimAmount(0.8f)
}, },
attach = { view -> attach = {
setExtensionOutput(view, MediaType.ANIME) setExtensionOutput(it.attachView, MediaType.ANIME)
} }
), ),
Settings( Settings(
@ -193,13 +192,12 @@ class SettingsExtensionsActivity: AppCompatActivity() {
desc = getString(R.string.manga_add_repository), desc = getString(R.string.manga_add_repository),
icon = R.drawable.ic_github, icon = R.drawable.ic_github,
onClick = { onClick = {
val dialogView = layoutInflater.inflate(R.layout.dialog_user_agent, null) val dialogView = DialogUserAgentBinding.inflate(layoutInflater)
val editText = val editText = dialogView.userAgentTextBox.apply {
dialogView.findViewById<TextInputEditText>(R.id.userAgentTextBox).apply {
hint = getString(R.string.manga_add_repository) hint = getString(R.string.manga_add_repository)
} }
val alertDialog = AlertDialog.Builder(context, R.style.MyPopup) val alertDialog = AlertDialog.Builder(context, R.style.MyPopup)
.setTitle(R.string.manga_add_repository).setView(dialogView) .setTitle(R.string.manga_add_repository).setView(dialogView.root)
.setPositiveButton(getString(R.string.ok)) { dialog, _ -> .setPositiveButton(getString(R.string.ok)) { dialog, _ ->
if (!editText.text.isNullOrBlank()) processUserInput( if (!editText.text.isNullOrBlank()) processUserInput(
editText.text.toString(), editText.text.toString(),
@ -215,8 +213,8 @@ class SettingsExtensionsActivity: AppCompatActivity() {
alertDialog.show() alertDialog.show()
alertDialog.window?.setDimAmount(0.8f) alertDialog.window?.setDimAmount(0.8f)
}, },
attach = { view -> attach = {
setExtensionOutput(view, MediaType.MANGA) setExtensionOutput(it.attachView, MediaType.MANGA)
} }
), ),
Settings( Settings(

View file

@ -123,7 +123,7 @@ class SettingsMangaActivity: AppCompatActivity(){
isChecked = PrefManager.getVal(PrefName.IncludeMangaList), isChecked = PrefManager.getVal(PrefName.IncludeMangaList),
switch = {isChecked, _ -> switch = {isChecked, _ ->
PrefManager.setVal(PrefName.IncludeMangaList, isChecked) PrefManager.setVal(PrefName.IncludeMangaList, isChecked)
restartApp(binding.root) restartApp()
} }
), ),
) )

View file

@ -1,10 +1,13 @@
package ani.dantotsu.settings package ani.dantotsu.settings
import android.content.ComponentName
import android.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
@ -37,8 +40,21 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
topMargin = statusBarHeight topMargin = statusBarHeight
bottomMargin = navBarHeight bottomMargin = navBarHeight
} }
themeSettingsBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() } onBackPressedDispatcher.addCallback(context) {
val mainIntent = Intent.makeRestartActivityTask(
packageManager.getLaunchIntentForPackage(packageName)!!.component
)
val component = ComponentName(packageName, SettingsActivity::class.qualifiedName!!)
try {
startActivity(Intent().setComponent(component))
} catch (anything: Exception) {
startActivity(mainIntent)
}
finishAndRemoveTask()
}
themeSettingsBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
var previous: View = when (PrefManager.getVal<Int>(PrefName.DarkMode)) { var previous: View = when (PrefManager.getVal<Int>(PrefName.DarkMode)) {
0 -> settingsUiAuto 0 -> settingsUiAuto
1 -> settingsUiLight 1 -> settingsUiLight
@ -87,7 +103,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
ThemeManager.Companion.Theme.entries[i].theme ThemeManager.Companion.Theme.entries[i].theme
) )
clearFocus() clearFocus()
restartApp(binding.root) reload()
} }
} }
@ -101,7 +117,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
isChecked = PrefManager.getVal(PrefName.UseOLED), isChecked = PrefManager.getVal(PrefName.UseOLED),
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.UseOLED, isChecked) PrefManager.setVal(PrefName.UseOLED, isChecked)
restartApp(binding.root) reload()
} }
), ),
Settings( Settings(
@ -113,7 +129,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.UseMaterialYou, isChecked) PrefManager.setVal(PrefName.UseMaterialYou, isChecked)
if (isChecked) PrefManager.setVal(PrefName.UseCustomTheme, false) if (isChecked) PrefManager.setVal(PrefName.UseCustomTheme, false)
restartApp(binding.root) reload()
}, },
isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R
), ),
@ -125,7 +141,6 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
isChecked = PrefManager.getVal(PrefName.UseSourceTheme), isChecked = PrefManager.getVal(PrefName.UseSourceTheme),
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.UseSourceTheme, isChecked) PrefManager.setVal(PrefName.UseSourceTheme, isChecked)
restartApp(binding.root)
}, },
isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R
), ),
@ -138,7 +153,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
switch = { isChecked, _ -> switch = { isChecked, _ ->
PrefManager.setVal(PrefName.UseCustomTheme, isChecked) PrefManager.setVal(PrefName.UseCustomTheme, isChecked)
if (isChecked) PrefManager.setVal(PrefName.UseMaterialYou, false) if (isChecked) PrefManager.setVal(PrefName.UseMaterialYou, false)
restartApp(binding.root) reload()
}, },
isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R isVisible = Build.VERSION.SDK_INT > Build.VERSION_CODES.R
), ),
@ -151,7 +166,7 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
val originalColor: Int = PrefManager.getVal(PrefName.CustomThemeInt) val originalColor: Int = PrefManager.getVal(PrefName.CustomThemeInt)
class CustomColorDialog : SimpleColorDialog() { class CustomColorDialog : SimpleColorDialog() {
override fun onPositiveButtonClick() { override fun onPositiveButtonClick() {
restartApp(binding.root) reload()
super.onPositiveButtonClick() super.onPositiveButtonClick()
} }
} }
@ -183,4 +198,9 @@ class SettingsThemeActivity : AppCompatActivity(), SimpleDialog.OnDialogResultLi
} }
return true return true
} }
fun reload(){
PrefManager.setCustomVal("reload", true)
restartApp()
}
} }

View file

@ -48,7 +48,7 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
} }
setPositiveButton("Done") { _, _ -> setPositiveButton("Done") { _, _ ->
PrefManager.setVal(PrefName.HomeLayoutShow, set) PrefManager.setVal(PrefName.HomeLayoutShow, set)
restartApp(binding.root) restartApp()
} }
}.show() }.show()
dialog.window?.setDimAmount(0.8f) dialog.window?.setDimAmount(0.8f)
@ -57,24 +57,24 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView) binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView)
binding.uiSettingsSmallView.setOnCheckedChangeListener { _, isChecked -> binding.uiSettingsSmallView.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.SmallView, isChecked) PrefManager.setVal(PrefName.SmallView, isChecked)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsImmersive.isChecked = PrefManager.getVal(PrefName.ImmersiveMode) binding.uiSettingsImmersive.isChecked = PrefManager.getVal(PrefName.ImmersiveMode)
binding.uiSettingsImmersive.setOnCheckedChangeListener { _, isChecked -> binding.uiSettingsImmersive.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.ImmersiveMode, isChecked) PrefManager.setVal(PrefName.ImmersiveMode, isChecked)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsBannerAnimation.isChecked = PrefManager.getVal(PrefName.BannerAnimations) binding.uiSettingsBannerAnimation.isChecked = PrefManager.getVal(PrefName.BannerAnimations)
binding.uiSettingsBannerAnimation.setOnCheckedChangeListener { _, isChecked -> binding.uiSettingsBannerAnimation.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.BannerAnimations, isChecked) PrefManager.setVal(PrefName.BannerAnimations, isChecked)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsLayoutAnimation.isChecked = PrefManager.getVal(PrefName.LayoutAnimations) binding.uiSettingsLayoutAnimation.isChecked = PrefManager.getVal(PrefName.LayoutAnimations)
binding.uiSettingsLayoutAnimation.setOnCheckedChangeListener { _, isChecked -> binding.uiSettingsLayoutAnimation.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.LayoutAnimations, isChecked) PrefManager.setVal(PrefName.LayoutAnimations, isChecked)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsTrendingScroller.isChecked = PrefManager.getVal(PrefName.TrendingScroller) binding.uiSettingsTrendingScroller.isChecked = PrefManager.getVal(PrefName.TrendingScroller)
@ -98,22 +98,22 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
mapReverse[PrefManager.getVal(PrefName.AnimationSpeed)] ?: 1f mapReverse[PrefManager.getVal(PrefName.AnimationSpeed)] ?: 1f
binding.uiSettingsAnimationSpeed.addOnChangeListener { _, value, _ -> binding.uiSettingsAnimationSpeed.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.AnimationSpeed, map[value] ?: 1f) PrefManager.setVal(PrefName.AnimationSpeed, map[value] ?: 1f)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsBlurBanners.isChecked = PrefManager.getVal(PrefName.BlurBanners) binding.uiSettingsBlurBanners.isChecked = PrefManager.getVal(PrefName.BlurBanners)
binding.uiSettingsBlurBanners.setOnCheckedChangeListener { _, isChecked -> binding.uiSettingsBlurBanners.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.BlurBanners, isChecked) PrefManager.setVal(PrefName.BlurBanners, isChecked)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsBlurRadius.value = (PrefManager.getVal(PrefName.BlurRadius) as Float) binding.uiSettingsBlurRadius.value = (PrefManager.getVal(PrefName.BlurRadius) as Float)
binding.uiSettingsBlurRadius.addOnChangeListener { _, value, _ -> binding.uiSettingsBlurRadius.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.BlurRadius, value) PrefManager.setVal(PrefName.BlurRadius, value)
restartApp(binding.root) restartApp()
} }
binding.uiSettingsBlurSampling.value = (PrefManager.getVal(PrefName.BlurSampling) as Float) binding.uiSettingsBlurSampling.value = (PrefManager.getVal(PrefName.BlurSampling) as Float)
binding.uiSettingsBlurSampling.addOnChangeListener { _, value, _ -> binding.uiSettingsBlurSampling.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.BlurSampling, value) PrefManager.setVal(PrefName.BlurSampling, value)
restartApp(binding.root) restartApp()
} }
} }
} }

View file

@ -3,8 +3,17 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_marginBottom="16dp" android:layout_marginBottom="8dp"
android:orientation="vertical"> android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:alpha="0.7"
android:fontFamily="@font/poppins_bold"
android:text="•"
android:textSize="16sp"
tools:ignore="HardcodedText,RtlSymmetry" />
<TextView <TextView
android:id="@+id/repositoryItem" android:id="@+id/repositoryItem"
@ -12,8 +21,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="12sp" android:textSize="12sp"
android:ellipsize="end" android:ellipsize="end"
android:layout_gravity="center"
android:alpha="0.66" android:alpha="0.66"
android:textAlignment="viewStart"
android:textColor="?attr/colorOnBackground" android:textColor="?attr/colorOnBackground"
android:singleLine="true" android:singleLine="true"
tools:text="xyz repo"/> tools:text="xyz repo"/>

View file

@ -6,13 +6,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:gravity="center_vertical|start"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/settingsIcon" android:id="@+id/settingsIcon"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_gravity="top"
android:layout_marginVertical="24dp" android:layout_marginVertical="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
app:srcCompat="@drawable/ic_circle_add" app:srcCompat="@drawable/ic_circle_add"
@ -43,23 +43,26 @@
android:fontFamily="@font/poppins_semi_bold" android:fontFamily="@font/poppins_semi_bold"
android:text="@string/slogan" android:text="@string/slogan"
android:textColor="?attr/colorOnSurfaceVariant" /> android:textColor="?attr/colorOnSurfaceVariant" />
<LinearLayout <LinearLayout
android:id="@+id/attachView" android:id="@+id/attachView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="4dp"
android:orientation="vertical" android:orientation="vertical"
android:visibility="gone" android:visibility="gone"
tools:ignore="RtlSymmetry" /> tools:ignore="RtlSymmetry" />
</LinearLayout> </LinearLayout>
<ImageView <ImageView
android:id="@+id/settingsIconRight" android:id="@+id/settingsIconRight"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginVertical="24dp"
android:rotation="180"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible"
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24" app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
app:tint="?attr/colorPrimary" app:tint="?attr/colorPrimary"
android:rotation="180" tools:ignore="ContentDescription"
tools:ignore="ContentDescription" /> tools:visibility="visible" />
</LinearLayout> </LinearLayout>

View file

@ -6,13 +6,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:gravity="center_vertical|start"
android:orientation="horizontal"> android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/settingsIcon" android:id="@+id/settingsIcon"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_gravity="top"
android:layout_marginVertical="24dp" android:layout_marginVertical="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
app:srcCompat="@drawable/ic_circle_add" app:srcCompat="@drawable/ic_circle_add"
@ -33,9 +33,9 @@
android:elegantTextHeight="true" android:elegantTextHeight="true"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/name" android:text="@string/name"
android:textSize="16sp"
android:textAlignment="viewStart" android:textAlignment="viewStart"
android:textColor="?attr/colorOnBackground" android:textColor="?attr/colorOnBackground"
android:textSize="16sp"
app:cornerRadius="0dp" app:cornerRadius="0dp"
app:drawableTint="?attr/colorPrimary" app:drawableTint="?attr/colorPrimary"
app:showText="false" app:showText="false"

View file

@ -377,7 +377,7 @@
<string name="search_source_list">Search next available source</string> <string name="search_source_list">Search next available source</string>
<string name="timestamp_proxy_desc">Useful if you are getting Handshake Fails</string> <string name="timestamp_proxy_desc">Useful if you are getting Handshake Fails</string>
<string name="timestamp_proxy">Use Proxy for Timestamps</string> <string name="timestamp_proxy">Use Proxy for Timestamps</string>
<string name="check_app_updates">Always check for App Updates</string> <string name="check_app_updates">Check for Updates</string>
<string name="author">Author</string> <string name="author">Author</string>
<string name="forks">Versions</string> <string name="forks">Versions</string>
<string name="faq">FAQ</string> <string name="faq">FAQ</string>
@ -716,7 +716,7 @@
<string name="purge_manga_downloads">Delete all Manga Downloads</string> <string name="purge_manga_downloads">Delete all Manga Downloads</string>
<string name="purge_novel_downloads">Delete all Novel Downloads</string> <string name="purge_novel_downloads">Delete all Novel Downloads</string>
<string name="requires_android_12">Requires Android 12+</string> <string name="requires_android_12">Requires Android 12+</string>
<string name="share_username_in_crash_reports">Share username in crash reports</string> <string name="share_username_in_crash_reports">Share username</string>
<string name="pinned_sources">Pinned Sources</string> <string name="pinned_sources">Pinned Sources</string>
<string name="backup_restore">Backup and Restore</string> <string name="backup_restore">Backup and Restore</string>
<string name="restore_settings">Import Settings</string> <string name="restore_settings">Import Settings</string>
@ -903,4 +903,10 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc
<string name="anime_desc">Choose how you watch</string> <string name="anime_desc">Choose how you watch</string>
<string name="manga_desc">Choose how you read</string> <string name="manga_desc">Choose how you read</string>
<string name="about_desc">Learn more about Dantotsu</string> <string name="about_desc">Learn more about Dantotsu</string>
<string name="faq_desc">General questions about Dantotsu</string>
<string name="check_app_updates_desc">Check Github for app updates</string>
<string name="share_username_in_crash_reports_desc">Share username in crash reports</string>
<string name="devs_desc">Dantotsu\'s very own unpaid labours </string>
<string name="forks_desc">More like Dantotsu</string>
<string name="disclaimer_desc">Something to keep in mind</string>
</resources> </resources>