MainActivity.kt 2.5 KB

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