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 androidx.navigation.compose.rememberNavController
|
||||||
import me.rhunk.snapenhance.RemoteSideContext
|
import me.rhunk.snapenhance.RemoteSideContext
|
||||||
import me.rhunk.snapenhance.SharedContextHolder
|
import me.rhunk.snapenhance.SharedContextHolder
|
||||||
import me.rhunk.snapenhance.ui.AppMaterialTheme
|
import me.rhunk.snapenhance.common.ui.AppMaterialTheme
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
private lateinit var sections: Map<EnumSection, Section>
|
private lateinit var sections: Map<EnumSection, Section>
|
||||||
|
@ -24,7 +24,7 @@ import androidx.navigation.compose.rememberNavController
|
|||||||
import com.arthenica.ffmpegkit.Packages.getPackageName
|
import com.arthenica.ffmpegkit.Packages.getPackageName
|
||||||
import me.rhunk.snapenhance.R
|
import me.rhunk.snapenhance.R
|
||||||
import me.rhunk.snapenhance.RemoteSideContext
|
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.EnumSection
|
||||||
import me.rhunk.snapenhance.ui.manager.Navigation
|
import me.rhunk.snapenhance.ui.manager.Navigation
|
||||||
import me.rhunk.snapenhance.ui.manager.sections.features.FeaturesSection
|
import me.rhunk.snapenhance.ui.manager.sections.features.FeaturesSection
|
||||||
@ -117,20 +117,16 @@ class SettingsOverlay(
|
|||||||
}
|
}
|
||||||
|
|
||||||
dialog.setContentView(
|
dialog.setContentView(
|
||||||
overlayComposeView(context.androidContext).apply {
|
createComposeView(context.androidContext) {
|
||||||
setContent {
|
Column(
|
||||||
Column(
|
modifier = Modifier
|
||||||
modifier = Modifier
|
.fillMaxSize()
|
||||||
.fillMaxSize()
|
.padding(start = 15.dp, end = 15.dp, top = 25.dp, bottom = 25.dp)
|
||||||
.padding(start = 15.dp, end = 15.dp, top = 25.dp, bottom = 25.dp)
|
.clip(shape = MaterialTheme.shapes.large),
|
||||||
.clip(shape = MaterialTheme.shapes.large),
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
verticalArrangement = Arrangement.Center
|
||||||
verticalArrangement = Arrangement.Center
|
) {
|
||||||
) {
|
OverlayContent()
|
||||||
AppMaterialTheme {
|
|
||||||
OverlayContent()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -27,7 +27,7 @@ import androidx.navigation.compose.NavHost
|
|||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import me.rhunk.snapenhance.SharedContextHolder
|
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.SetupScreen
|
||||||
import me.rhunk.snapenhance.ui.setup.screens.impl.MappingsScreen
|
import me.rhunk.snapenhance.ui.setup.screens.impl.MappingsScreen
|
||||||
import me.rhunk.snapenhance.ui.setup.screens.impl.PermissionsScreen
|
import me.rhunk.snapenhance.ui.setup.screens.impl.PermissionsScreen
|
||||||
|
@ -10,6 +10,11 @@ android {
|
|||||||
buildFeatures {
|
buildFeatures {
|
||||||
aidl = true
|
aidl = true
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
|
||||||
|
composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
@ -38,5 +43,13 @@ dependencies {
|
|||||||
implementation(libs.androidx.documentfile)
|
implementation(libs.androidx.documentfile)
|
||||||
implementation(libs.rhino)
|
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"))
|
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.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.OnBackPressedDispatcher
|
import androidx.activity.OnBackPressedDispatcher
|
||||||
import androidx.activity.OnBackPressedDispatcherOwner
|
import androidx.activity.OnBackPressedDispatcherOwner
|
||||||
import androidx.activity.setViewTreeOnBackPressedDispatcherOwner
|
import androidx.activity.setViewTreeOnBackPressedDispatcherOwner
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Recomposer
|
import androidx.compose.runtime.Recomposer
|
||||||
import androidx.compose.ui.platform.AndroidUiDispatcher
|
import androidx.compose.ui.platform.AndroidUiDispatcher
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
@ -19,7 +20,7 @@ import kotlinx.coroutines.CoroutineScope
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
// https://github.com/tberghuis/FloatingCountdownTimer/blob/master/app/src/main/java/xyz/tberghuis/floatingtimer/service/overlayViewFactory.kt
|
// 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)
|
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||||
val lifecycleOwner = OverlayLifecycleOwner().apply {
|
val lifecycleOwner = OverlayLifecycleOwner().apply {
|
||||||
performRestore(null)
|
performRestore(null)
|
||||||
@ -49,6 +50,12 @@ fun overlayComposeView(service: Context) = ComposeView(service).apply {
|
|||||||
runRecomposeScope.launch {
|
runRecomposeScope.launch {
|
||||||
recomposer.runRecomposeAndApplyChanges()
|
recomposer.runRecomposeAndApplyChanges()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setContent {
|
||||||
|
AppMaterialTheme {
|
||||||
|
content()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class OverlayLifecycleOwner : SavedStateRegistryOwner {
|
private class OverlayLifecycleOwner : SavedStateRegistryOwner {
|
@ -1,4 +1,4 @@
|
|||||||
package me.rhunk.snapenhance.ui
|
package me.rhunk.snapenhance.common.ui
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
import androidx.compose.foundation.isSystemInDarkTheme
|
@ -11,6 +11,14 @@ android {
|
|||||||
minSdk = 28
|
minSdk = 28
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
|
||||||
|
composeOptions {
|
||||||
|
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
|
||||||
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
@ -33,4 +41,12 @@ dependencies {
|
|||||||
implementation(project(":common"))
|
implementation(project(":common"))
|
||||||
implementation(project(":mapper"))
|
implementation(project(":mapper"))
|
||||||
implementation(project(":native"))
|
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