[Android] Implement the display settings model in the BaseActivity
Nicolas Pomepuy
git at videolan.org
Wed Mar 26 13:39:36 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Mar 25 14:25:43 2025 +0100| [982352a9a55a4286784252879043bd158a3d51e9] | committer: Duncan McNamara
Implement the display settings model in the BaseActivity
> https://code.videolan.org/videolan/vlc-android/commit/982352a9a55a4286784252879043bd158a3d51e9
---
.../src/org/videolan/vlc/gui/BaseActivity.kt | 23 ++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
index e170ff5c64..ea9ea665e7 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
+++ b/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(
More information about the Android
mailing list