compose: Introduce new compositionLocal for different Android OS
Android uses different variant of OS on devices such as TV, Wear, and Auto. Introduce a new compositionLocal to detect and show different UI as needed. Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -9,11 +9,15 @@ import android.os.Bundle
|
|||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.core.content.IntentCompat
|
import androidx.core.content.IntentCompat
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
|
import com.aurora.store.compose.compositions.UI
|
||||||
|
import com.aurora.store.compose.compositions.LocalUI
|
||||||
import com.aurora.store.compose.navigation.NavGraph
|
import com.aurora.store.compose.navigation.NavGraph
|
||||||
import com.aurora.store.compose.navigation.Screen
|
import com.aurora.store.compose.navigation.Screen
|
||||||
import com.aurora.store.compose.theme.AuroraTheme
|
import com.aurora.store.compose.theme.AuroraTheme
|
||||||
|
import com.aurora.store.util.PackageUtil
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
@@ -30,10 +34,17 @@ class ComposeActivity : ComponentActivity() {
|
|||||||
Screen::class.java
|
Screen::class.java
|
||||||
) ?: Screen.Blacklist
|
) ?: Screen.Blacklist
|
||||||
|
|
||||||
|
val localUI = when {
|
||||||
|
PackageUtil.isTv(this) -> UI.TV
|
||||||
|
else -> UI.DEFAULT
|
||||||
|
}
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
AuroraTheme {
|
CompositionLocalProvider(LocalUI provides localUI) {
|
||||||
val navController = rememberNavController()
|
AuroraTheme {
|
||||||
NavGraph(navHostController = navController, startDestination = startDestination)
|
val navController = rememberNavController()
|
||||||
|
NavGraph(navHostController = navController, startDestination = startDestination)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.compose.compositions
|
||||||
|
|
||||||
|
import androidx.compose.runtime.staticCompositionLocalOf
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Supported UI styles for different types of Android OS
|
||||||
|
*/
|
||||||
|
enum class UI {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Targets Phone, Foldable, Tablets, Desktop
|
||||||
|
*/
|
||||||
|
DEFAULT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Targets TV
|
||||||
|
*/
|
||||||
|
TV
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CompositionLocal to provide information on which UI style should be used
|
||||||
|
*/
|
||||||
|
val LocalUI = staticCompositionLocalOf { UI.DEFAULT }
|
||||||
Reference in New Issue
Block a user