package ani.dantotsu.settings import android.app.AlertDialog import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams import ani.dantotsu.R import ani.dantotsu.databinding.ActivityUserInterfaceSettingsBinding import ani.dantotsu.initActivity import ani.dantotsu.navBarHeight import ani.dantotsu.restartApp import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import ani.dantotsu.util.customAlertDialog class UserInterfaceSettingsActivity : AppCompatActivity() { lateinit var binding: ActivityUserInterfaceSettingsBinding private val ui = "ui_settings" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() binding = ActivityUserInterfaceSettingsBinding.inflate(layoutInflater) setContentView(binding.root) initActivity(this) binding.uiSettingsContainer.updateLayoutParams { topMargin = statusBarHeight bottomMargin = navBarHeight } binding.uiSettingsBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() } binding.uiSettingsHomeLayout.setOnClickListener { val set = PrefManager.getVal>(PrefName.HomeLayout).toMutableList() val views = resources.getStringArray(R.array.home_layouts) customAlertDialog().apply { setTitle(getString(R.string.home_layout_show)) multiChoiceItems( items = views, checkedItems = PrefManager.getVal>(PrefName.HomeLayout).toBooleanArray() ) { selectedItems -> for (i in selectedItems.indices) { set[i] = selectedItems[i] } } setPosButton(R.string.ok) { PrefManager.setVal(PrefName.HomeLayout, set) restartApp() } show() } } binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView) binding.uiSettingsSmallView.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.SmallView, isChecked) restartApp() } binding.uiSettingsImmersive.isChecked = PrefManager.getVal(PrefName.ImmersiveMode) binding.uiSettingsImmersive.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.ImmersiveMode, isChecked) restartApp() } binding.uiSettingsHideRedDot.isChecked = !PrefManager.getVal(PrefName.ShowNotificationRedDot) binding.uiSettingsHideRedDot.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.ShowNotificationRedDot, !isChecked) } binding.uiSettingsBannerAnimation.isChecked = PrefManager.getVal(PrefName.BannerAnimations) binding.uiSettingsBannerAnimation.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.BannerAnimations, isChecked) restartApp() } binding.uiSettingsLayoutAnimation.isChecked = PrefManager.getVal(PrefName.LayoutAnimations) binding.uiSettingsLayoutAnimation.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.LayoutAnimations, isChecked) restartApp() } binding.uiSettingsTrendingScroller.isChecked = PrefManager.getVal(PrefName.TrendingScroller) binding.uiSettingsTrendingScroller.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.TrendingScroller, isChecked) } val map = mapOf( 2f to 0.5f, 1.75f to 0.625f, 1.5f to 0.75f, 1.25f to 0.875f, 1f to 1f, 0.75f to 1.25f, 0.5f to 1.5f, 0.25f to 1.75f, 0f to 0f ) val mapReverse = map.map { it.value to it.key }.toMap() binding.uiSettingsAnimationSpeed.value = mapReverse[PrefManager.getVal(PrefName.AnimationSpeed)] ?: 1f binding.uiSettingsAnimationSpeed.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.AnimationSpeed, map[value] ?: 1f) restartApp() } binding.uiSettingsBlurBanners.isChecked = PrefManager.getVal(PrefName.BlurBanners) binding.uiSettingsBlurBanners.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.BlurBanners, isChecked) restartApp() } binding.uiSettingsBlurRadius.value = (PrefManager.getVal(PrefName.BlurRadius) as Float) binding.uiSettingsBlurRadius.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.BlurRadius, value) restartApp() } binding.uiSettingsBlurSampling.value = (PrefManager.getVal(PrefName.BlurSampling) as Float) binding.uiSettingsBlurSampling.addOnChangeListener { _, value, _ -> PrefManager.setVal(PrefName.BlurSampling, value) restartApp() } } }