MainActivity.kt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.ethosa.ktc.ui.activities
  2. import android.os.Build
  3. import android.os.Bundle
  4. import androidx.appcompat.app.AppCompatActivity
  5. import androidx.navigation.findNavController
  6. import androidx.navigation.ui.setupWithNavController
  7. import com.ethosa.ktc.Preferences
  8. import com.ethosa.ktc.R
  9. import com.ethosa.ktc.databinding.ActivityMainBinding
  10. import com.ethosa.ktc.ui.dialog.AppUpdater
  11. import com.ethosa.ktc.utils.AppDynamicTheme
  12. /**
  13. * The main app activity.
  14. */
  15. class MainActivity : AppCompatActivity() {
  16. private lateinit var binding: ActivityMainBinding
  17. private lateinit var preferences: Preferences
  18. override fun onCreate(savedInstanceState: Bundle?) {
  19. super.onCreate(savedInstanceState)
  20. // Load adaptive or not theme
  21. preferences = Preferences(this)
  22. preferences.load()
  23. AppDynamicTheme(this).loadTheme()
  24. binding = ActivityMainBinding.inflate(layoutInflater)
  25. setContentView(binding.root)
  26. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
  27. binding.navView.itemActiveIndicatorColor = getColorStateList(R.color.active_indicator)
  28. val navController = findNavController(R.id.nav_host_fragment_activity_main)
  29. binding.navView.setupWithNavController(navController)
  30. // Navigate to the last menu
  31. binding.navView.setOnItemSelectedListener {
  32. Preferences.currentFragment = getMenuNumber(it.itemId)
  33. navController.navigate(getMenuId())
  34. preferences.saveApp()
  35. true
  36. }
  37. binding.navView.selectedItemId = getMenuId()
  38. // Check to updates
  39. AppUpdater(this).checkToUpdate()
  40. }
  41. /**
  42. * @return saved menu unique ID.
  43. */
  44. private fun getMenuId(): Int {
  45. return when (Preferences.currentFragment) {
  46. 0 -> R.id.navigation_news
  47. 1 -> R.id.navigation_timetable
  48. 2 -> R.id.navigation_gallery
  49. else -> R.id.navigation_account
  50. }
  51. }
  52. /**
  53. * @param id unique menu ID.
  54. * @return menu number by it's ID.
  55. */
  56. private fun getMenuNumber(id: Int): Int {
  57. return when (id) {
  58. R.id.navigation_news -> 0
  59. R.id.navigation_timetable -> 1
  60. R.id.navigation_gallery -> 2
  61. else -> 3
  62. }
  63. }
  64. }