MainActivity.kt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.sduduzog.slimlauncher
  2. import androidx.lifecycle.ViewModelProviders
  3. import android.content.SharedPreferences
  4. import android.content.res.Resources
  5. import android.os.Bundle
  6. import androidx.appcompat.app.AppCompatActivity
  7. import androidx.navigation.NavController
  8. import androidx.navigation.NavDestination
  9. import androidx.navigation.Navigation.findNavController
  10. import com.sduduzog.slimlauncher.ui.main.model.MainViewModel
  11. class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener, NavController.OnNavigatedListener {
  12. private lateinit var settings: SharedPreferences
  13. private val label = "main_fragment"
  14. private lateinit var currentLabel: String
  15. private lateinit var viewModel: MainViewModel
  16. private lateinit var navigator: NavController
  17. var onBackPressedListener: OnBackPressedListener? = null
  18. override fun onCreate(savedInstanceState: Bundle?) {
  19. super.onCreate(savedInstanceState)
  20. setContentView(R.layout.main_activity)
  21. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  22. settings.registerOnSharedPreferenceChangeListener(this)
  23. navigator = findNavController(this, R.id.nav_host_fragment)
  24. navigator.addOnNavigatedListener(this)
  25. viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
  26. }
  27. override fun onStart() {
  28. super.onStart()
  29. viewModel.updateApps()
  30. }
  31. override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, s: String?) {
  32. if (s.equals(getString(R.string.prefs_settings_key_theme), true)) {
  33. recreate()
  34. }
  35. }
  36. override fun getTheme(): Resources.Theme {
  37. val theme = super.getTheme()
  38. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  39. val active = settings.getInt(getString(R.string.prefs_settings_key_theme), 0)
  40. theme.applyStyle(resolveTheme(active), true)
  41. return theme
  42. }
  43. override fun onBackPressed() {
  44. if (currentLabel != label)
  45. super.onBackPressed()
  46. else onBackPressedListener?.onBackPressed()
  47. }
  48. override fun onNavigated(controller: NavController, destination: NavDestination) {
  49. currentLabel = destination.label.toString()
  50. }
  51. companion object {
  52. fun resolveTheme(i: Int): Int {
  53. when (i) {
  54. 1 -> {
  55. return R.style.AppDarkTheme
  56. }
  57. 2 -> {
  58. return R.style.AppGreyTheme
  59. }
  60. 3 -> {
  61. return R.style.AppTealTheme
  62. }
  63. 4 -> {
  64. return R.style.AppPinkTheme
  65. }
  66. }
  67. return R.style.AppTheme
  68. }
  69. }
  70. interface OnBackPressedListener{
  71. fun onBackPressed()
  72. }
  73. }