MainActivity.kt 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. private lateinit var navigator: NavController
  16. var onBackPressedListener: OnBackPressedListener? = null
  17. override fun onCreate(savedInstanceState: Bundle?) {
  18. super.onCreate(savedInstanceState)
  19. setContentView(R.layout.main_activity)
  20. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  21. settings.registerOnSharedPreferenceChangeListener(this)
  22. navigator = findNavController(this, R.id.nav_host_fragment)
  23. navigator.addOnNavigatedListener(this)
  24. viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
  25. }
  26. override fun onStart() {
  27. super.onStart()
  28. viewModel.updateApps()
  29. }
  30. override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, s: String?) {
  31. if (s.equals(getString(R.string.prefs_settings_key_theme), true)) {
  32. recreate()
  33. }
  34. }
  35. override fun getTheme(): Resources.Theme {
  36. val theme = super.getTheme()
  37. settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
  38. val active = settings.getInt(getString(R.string.prefs_settings_key_theme), 0)
  39. theme.applyStyle(resolveTheme(active), true)
  40. return theme
  41. }
  42. override fun onBackPressed() {
  43. if (currentLabel != label)
  44. super.onBackPressed()
  45. else onBackPressedListener?.onBackPressed()
  46. }
  47. override fun onNavigated(controller: NavController, destination: NavDestination) {
  48. currentLabel = destination.label.toString()
  49. }
  50. companion object {
  51. fun resolveTheme(i: Int): Int {
  52. when (i) {
  53. 1 -> {
  54. return R.style.AppDarkTheme
  55. }
  56. 2 -> {
  57. return R.style.AppGreyTheme
  58. }
  59. 3 -> {
  60. return R.style.AppTealTheme
  61. }
  62. 4 -> {
  63. return R.style.AppPinkTheme
  64. }
  65. }
  66. return R.style.AppTheme
  67. }
  68. }
  69. interface OnBackPressedListener{
  70. fun onBackPressed()
  71. }
  72. }