Browse Source

Implement the display settings model in the BaseActivity

merge-requests/1594/merge
Nicolas Pomepuy 1 year ago
committed by Duncan McNamara
parent
commit
982352a9a5
  1. 23
      application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt

23
application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt

@ -15,11 +15,13 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.app.BaseContextWrappingDelegate
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.window.layout.WindowInfoTracker
@ -40,6 +42,7 @@ import org.videolan.vlc.media.MediaUtils
import org.videolan.vlc.util.FileUtils
import org.videolan.vlc.util.Permissions
import org.videolan.vlc.util.RemoteAccessUtils
import org.videolan.vlc.viewmodels.DisplaySettingsViewModel
abstract class BaseActivity : AppCompatActivity() {
@ -49,6 +52,7 @@ abstract class BaseActivity : AppCompatActivity() {
lateinit var settings: SharedPreferences
private var lastDisplayedOTPCode = ""
var windowLayoutInfo: WindowLayoutInfo? = null
private val displaySettingsViewModel: DisplaySettingsViewModel by viewModels()
open val displayTitle = false
open fun forcedTheme():Int? = null
@ -61,6 +65,14 @@ abstract class BaseActivity : AppCompatActivity() {
}
}
/**
* Triggered when a display setting is changed
*
* @param key the display settings key
* @param value the new display settings value
*/
open fun onDisplaySettingChanged(key:String, value:Any) { }
override fun onCreate(savedInstanceState: Bundle?) {
settings = Settings.getInstance(this)
/* Theme must be applied before super.onCreate */
@ -94,6 +106,17 @@ abstract class BaseActivity : AppCompatActivity() {
}
}
}
lifecycleScope.launch {
//listen to display settings changes
displaySettingsViewModel.settingChangeFlow
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.collect {
if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
onDisplaySettingChanged(it.key, it.value)
displaySettingsViewModel.consume()
}
}
}
}
override fun onRequestPermissionsResult(

Loading…
Cancel
Save