MainActivity.kt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.sduduzog.slimlauncher
  2. import android.content.SharedPreferences
  3. import android.content.res.Resources
  4. import android.os.Bundle
  5. import android.view.View
  6. import androidx.appcompat.app.AppCompatActivity
  7. import androidx.navigation.NavController
  8. import androidx.navigation.Navigation.findNavController
  9. import com.sduduzog.slimlauncher.utils.BaseFragment
  10. class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
  11. private lateinit var settings: SharedPreferences
  12. private lateinit var navigator: NavController
  13. private val subscribers: MutableSet<BaseFragment> = mutableSetOf()
  14. fun attachSubscriber(s: BaseFragment) {
  15. subscribers.add(s)
  16. }
  17. fun detachSubscriber(s: BaseFragment) {
  18. subscribers.remove(s)
  19. }
  20. private fun dispatchBack() {
  21. for (s in subscribers) if (s.onBack()) return
  22. completeBackAction()
  23. }
  24. override fun onCreate(savedInstanceState: Bundle?) {
  25. super.onCreate(savedInstanceState)
  26. setContentView(R.layout.main_activity)
  27. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  28. settings.registerOnSharedPreferenceChangeListener(this)
  29. navigator = findNavController(this, R.id.nav_host_fragment)
  30. }
  31. override fun onResume() {
  32. super.onResume()
  33. overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
  34. toggleStatusBar()
  35. }
  36. override fun onWindowFocusChanged(hasFocus: Boolean) {
  37. super.onWindowFocusChanged(hasFocus)
  38. if (hasFocus) toggleStatusBar()
  39. }
  40. override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, s: String?) {
  41. if (s.equals(getString(R.string.prefs_settings_key_theme), true)) {
  42. recreate()
  43. }
  44. if (s.equals(getString(R.string.prefs_settings_key_toggle_status_bar), true)) {
  45. toggleStatusBar()
  46. }
  47. }
  48. override fun getTheme(): Resources.Theme {
  49. val theme = super.getTheme()
  50. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  51. val active = settings.getInt(getString(R.string.prefs_settings_key_theme), 0)
  52. theme.applyStyle(resolveTheme(active), true)
  53. return theme
  54. }
  55. override fun onBackPressed() {
  56. dispatchBack()
  57. }
  58. private fun showSystemUI() {
  59. window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
  60. }
  61. private fun hideSystemUI() {
  62. window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  63. or View.SYSTEM_UI_FLAG_FULLSCREEN)
  64. }
  65. private fun toggleStatusBar() {
  66. val isHidden = settings.getBoolean(getString(R.string.prefs_settings_key_toggle_status_bar), false)
  67. if (isHidden) {
  68. hideSystemUI()
  69. } else {
  70. showSystemUI()
  71. }
  72. }
  73. companion object {
  74. fun resolveTheme(i: Int): Int {
  75. when (i) {
  76. 1 -> {
  77. return R.style.AppDarkTheme
  78. }
  79. 2 -> {
  80. return R.style.AppGreyTheme
  81. }
  82. 3 -> {
  83. return R.style.AppTealTheme
  84. }
  85. 4 -> {
  86. return R.style.AppCandyTheme
  87. }
  88. 5 -> {
  89. return R.style.AppPinkTheme
  90. }
  91. }
  92. return R.style.AppTheme
  93. }
  94. }
  95. private fun completeBackAction() {
  96. super.onBackPressed()
  97. }
  98. }