package ani.dantotsu.settings import android.app.AlertDialog import android.content.Intent 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.settings.saving.PrefName import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import com.google.android.material.snackbar.Snackbar 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() } val views = resources.getStringArray(R.array.home_layouts) binding.uiSettingsHomeLayout.setOnClickListener { val dialog = AlertDialog.Builder(this, R.style.MyPopup) .setTitle(getString(R.string.home_layout_show)).apply { setMultiChoiceItems( views, PrefManager.getVal>(PrefName.HomeLayoutShow).toBooleanArray() ) { _, i, value -> val set = PrefManager.getVal>(PrefName.HomeLayoutShow).toMutableList() set[i] = value PrefManager.setVal(PrefName.HomeLayoutShow, set) } }.show() dialog.window?.setDimAmount(0.8f) } 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.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() } 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() } } private fun restartApp() { Snackbar.make( binding.root, R.string.restart_app, Snackbar.LENGTH_SHORT ).apply { val mainIntent = Intent.makeRestartActivityTask( context.packageManager.getLaunchIntentForPackage( context.packageName )!!.component ) setAction("Do it!") { context.startActivity(mainIntent) Runtime.getRuntime().exit(0) } show() } } }