MainActivity.kt 3.7 KB

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