| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package com.sduduzog.slimlauncher
- import android.content.SharedPreferences
- import android.content.res.Resources
- import android.os.Bundle
- import android.view.View
- import androidx.appcompat.app.AppCompatActivity
- import androidx.navigation.NavController
- import androidx.navigation.Navigation.findNavController
- import com.sduduzog.slimlauncher.di.MainFragmentFactoryEntryPoint
- import com.sduduzog.slimlauncher.utils.BaseFragment
- import com.sduduzog.slimlauncher.utils.HomeWatcher
- import com.sduduzog.slimlauncher.utils.IPublisher
- import com.sduduzog.slimlauncher.utils.ISubscriber
- import dagger.hilt.android.AndroidEntryPoint
- import dagger.hilt.android.EntryPointAccessors
- @AndroidEntryPoint
- class MainActivity : AppCompatActivity(),
- SharedPreferences.OnSharedPreferenceChangeListener,
- HomeWatcher.OnHomePressedListener, IPublisher {
- private lateinit var settings: SharedPreferences
- private lateinit var navigator: NavController
- private lateinit var homeWatcher: HomeWatcher
- private val subscribers: MutableSet<BaseFragment> = mutableSetOf()
- override fun attachSubscriber(s: ISubscriber) {
- subscribers.add(s as BaseFragment)
- }
- override fun detachSubscriber(s: ISubscriber) {
- subscribers.remove(s as BaseFragment)
- }
- private fun dispatchBack() {
- for (s in subscribers) if (s.onBack()) return
- completeBackAction()
- }
- private fun dispatchHome() {
- for (s in subscribers) s.onHome()
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- val entryPoint = EntryPointAccessors.fromActivity(this, MainFragmentFactoryEntryPoint::class.java)
- supportFragmentManager.fragmentFactory = entryPoint.getMainFragmentFactory()
- super.onCreate(savedInstanceState)
- setContentView(R.layout.main_activity)
- settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
- settings.registerOnSharedPreferenceChangeListener(this)
- navigator = findNavController(this, R.id.nav_host_fragment)
- homeWatcher = HomeWatcher(this)
- homeWatcher.setOnHomePressedListener(this)
- }
- override fun onResume() {
- super.onResume()
- overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
- toggleStatusBar()
- }
- override fun onStart() {
- super.onStart()
- homeWatcher.startWatch()
- }
- override fun onStop() {
- super.onStop()
- homeWatcher.stopWatch()
- }
- override fun onWindowFocusChanged(hasFocus: Boolean) {
- super.onWindowFocusChanged(hasFocus)
- if (hasFocus) toggleStatusBar()
- }
- override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, s: String?) {
- if (s.equals(getString(R.string.prefs_settings_key_theme), true)) {
- recreate()
- }
- if (s.equals(getString(R.string.prefs_settings_key_toggle_status_bar), true)) {
- toggleStatusBar()
- }
- }
- override fun getTheme(): Resources.Theme {
- val theme = super.getTheme()
- settings = getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE)
- val active = settings.getInt(getString(R.string.prefs_settings_key_theme), 0)
- theme.applyStyle(resolveTheme(active), true)
- return theme
- }
- override fun onBackPressed() {
- dispatchBack()
- }
- override fun onHomePressed() {
- dispatchHome()
- navigator.popBackStack(R.id.homeFragment, false)
- }
- private fun showSystemUI() {
- window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
- }
- private fun hideSystemUI() {
- window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- or View.SYSTEM_UI_FLAG_FULLSCREEN)
- }
- private fun toggleStatusBar() {
- val isHidden = settings.getBoolean(getString(R.string.prefs_settings_key_toggle_status_bar), false)
- if (isHidden) {
- hideSystemUI()
- } else {
- showSystemUI()
- }
- }
- companion object {
- fun resolveTheme(i: Int): Int {
- return when (i) {
- 1 -> R.style.AppDarkTheme
- 2 -> R.style.AppGreyTheme
- 3 -> R.style.AppTealTheme
- 4 -> R.style.AppCandyTheme
- 5 -> R.style.AppPinkTheme
- else -> R.style.AppTheme
- }
- }
- }
- private fun completeBackAction() {
- super.onBackPressed()
- }
- }
|