mirror of
https://github.com/rhunk/SnapEnhance.git
synced 2025-06-13 13:47:47 +02:00
refactor: move compose view factory to common
This commit is contained in:
@ -12,7 +12,7 @@ import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import me.rhunk.snapenhance.RemoteSideContext
|
||||
import me.rhunk.snapenhance.SharedContextHolder
|
||||
import me.rhunk.snapenhance.ui.AppMaterialTheme
|
||||
import me.rhunk.snapenhance.common.ui.AppMaterialTheme
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
private lateinit var sections: Map<EnumSection, Section>
|
||||
|
@ -24,7 +24,7 @@ import androidx.navigation.compose.rememberNavController
|
||||
import com.arthenica.ffmpegkit.Packages.getPackageName
|
||||
import me.rhunk.snapenhance.R
|
||||
import me.rhunk.snapenhance.RemoteSideContext
|
||||
import me.rhunk.snapenhance.ui.AppMaterialTheme
|
||||
import me.rhunk.snapenhance.common.ui.createComposeView
|
||||
import me.rhunk.snapenhance.ui.manager.EnumSection
|
||||
import me.rhunk.snapenhance.ui.manager.Navigation
|
||||
import me.rhunk.snapenhance.ui.manager.sections.features.FeaturesSection
|
||||
@ -117,8 +117,7 @@ class SettingsOverlay(
|
||||
}
|
||||
|
||||
dialog.setContentView(
|
||||
overlayComposeView(context.androidContext).apply {
|
||||
setContent {
|
||||
createComposeView(context.androidContext) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
@ -127,12 +126,9 @@ class SettingsOverlay(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
AppMaterialTheme {
|
||||
OverlayContent()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
dialog.setCancelable(true)
|
||||
|
@ -27,7 +27,7 @@ import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import me.rhunk.snapenhance.SharedContextHolder
|
||||
import me.rhunk.snapenhance.ui.AppMaterialTheme
|
||||
import me.rhunk.snapenhance.common.ui.AppMaterialTheme
|
||||
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
|
||||
import me.rhunk.snapenhance.ui.setup.screens.impl.MappingsScreen
|
||||
import me.rhunk.snapenhance.ui.setup.screens.impl.PermissionsScreen
|
||||
|
@ -10,6 +10,11 @@ android {
|
||||
buildFeatures {
|
||||
aidl = true
|
||||
buildConfig = true
|
||||
compose = true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
@ -38,5 +43,13 @@ dependencies {
|
||||
implementation(libs.androidx.documentfile)
|
||||
implementation(libs.rhino)
|
||||
|
||||
compileOnly(libs.androidx.activity.ktx)
|
||||
compileOnly(platform(libs.androidx.compose.bom))
|
||||
compileOnly(libs.androidx.navigation.compose)
|
||||
compileOnly(libs.androidx.material.icons.core)
|
||||
compileOnly(libs.androidx.material.ripple)
|
||||
compileOnly(libs.androidx.material.icons.extended)
|
||||
compileOnly(libs.androidx.material3)
|
||||
|
||||
implementation(project(":mapper"))
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
package me.rhunk.snapenhance.ui.overlay
|
||||
package me.rhunk.snapenhance.common.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.activity.OnBackPressedDispatcher
|
||||
import androidx.activity.OnBackPressedDispatcherOwner
|
||||
import androidx.activity.setViewTreeOnBackPressedDispatcherOwner
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Recomposer
|
||||
import androidx.compose.ui.platform.AndroidUiDispatcher
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
@ -19,7 +20,7 @@ import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
// https://github.com/tberghuis/FloatingCountdownTimer/blob/master/app/src/main/java/xyz/tberghuis/floatingtimer/service/overlayViewFactory.kt
|
||||
fun overlayComposeView(service: Context) = ComposeView(service).apply {
|
||||
fun createComposeView(context: Context, content: @Composable () -> Unit) = ComposeView(context).apply {
|
||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
val lifecycleOwner = OverlayLifecycleOwner().apply {
|
||||
performRestore(null)
|
||||
@ -49,6 +50,12 @@ fun overlayComposeView(service: Context) = ComposeView(service).apply {
|
||||
runRecomposeScope.launch {
|
||||
recomposer.runRecomposeAndApplyChanges()
|
||||
}
|
||||
|
||||
setContent {
|
||||
AppMaterialTheme {
|
||||
content()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class OverlayLifecycleOwner : SavedStateRegistryOwner {
|
@ -1,4 +1,4 @@
|
||||
package me.rhunk.snapenhance.ui
|
||||
package me.rhunk.snapenhance.common.ui
|
||||
|
||||
import android.os.Build
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
@ -11,6 +11,14 @@ android {
|
||||
minSdk = 28
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
@ -33,4 +41,12 @@ dependencies {
|
||||
implementation(project(":common"))
|
||||
implementation(project(":mapper"))
|
||||
implementation(project(":native"))
|
||||
|
||||
compileOnly(libs.androidx.activity.ktx)
|
||||
compileOnly(platform(libs.androidx.compose.bom))
|
||||
compileOnly(libs.androidx.navigation.compose)
|
||||
compileOnly(libs.androidx.material.icons.core)
|
||||
compileOnly(libs.androidx.material.ripple)
|
||||
compileOnly(libs.androidx.material.icons.extended)
|
||||
compileOnly(libs.androidx.material3)
|
||||
}
|
Reference in New Issue
Block a user