@@ -19,7 +19,9 @@ import androidx.compose.animation.fadeIn
1919import androidx.compose.animation.fadeOut
2020import androidx.compose.animation.slideInHorizontally
2121import androidx.compose.foundation.ExperimentalFoundationApi
22+ import androidx.compose.foundation.layout.Box
2223import androidx.compose.foundation.layout.Column
24+ import androidx.compose.foundation.layout.fillMaxSize
2325import androidx.compose.foundation.layout.fillMaxWidth
2426import androidx.compose.foundation.layout.height
2527import androidx.compose.foundation.layout.heightIn
@@ -40,14 +42,21 @@ import androidx.compose.ui.Modifier
4042import androidx.compose.ui.graphics.Color
4143import androidx.compose.ui.graphics.toArgb
4244import androidx.compose.ui.res.stringResource
45+ import androidx.compose.ui.text.SpanStyle
46+ import androidx.compose.ui.text.TextLinkStyles
47+ import androidx.compose.ui.text.font.FontWeight
4348import androidx.compose.ui.text.style.TextDecoration
4449import androidx.compose.ui.unit.dp
50+ import androidx.compose.ui.unit.sp
4551import androidx.compose.ui.window.DialogProperties
4652import androidx.core.net.toUri
4753import androidx.core.os.LocaleListCompat
4854import androidx.lifecycle.compose.collectAsStateWithLifecycle
55+ import androidx.navigation.NavDestination.Companion.hasRoute
4956import androidx.navigation.compose.currentBackStackEntryAsState
5057import androidx.navigation.compose.rememberNavController
58+ import com.kyant.backdrop.backdrop
59+ import com.kyant.backdrop.rememberBackdrop
5160import com.maxrave.common.FIRST_TIME_MIGRATION
5261import com.maxrave.common.R
5362import com.maxrave.common.SELECTED_LANGUAGE
@@ -60,14 +69,17 @@ import com.maxrave.domain.mediaservice.handler.MediaPlayerHandler
6069import com.maxrave.logger.Logger
6170import com.maxrave.simpmusic.di.viewModelModule
6271import com.maxrave.simpmusic.ui.component.AppBottomNavigationBar
72+ import com.maxrave.simpmusic.ui.component.LiquidGlassAppBottomNavigationBar
6373import com.maxrave.simpmusic.ui.navigation.destination.home.NotificationDestination
6474import com.maxrave.simpmusic.ui.navigation.destination.list.AlbumDestination
6575import com.maxrave.simpmusic.ui.navigation.destination.list.ArtistDestination
6676import com.maxrave.simpmusic.ui.navigation.destination.list.PlaylistDestination
77+ import com.maxrave.simpmusic.ui.navigation.destination.search.SearchDestination
6778import com.maxrave.simpmusic.ui.navigation.graph.AppNavigationGraph
6879import com.maxrave.simpmusic.ui.screen.MiniPlayer
6980import com.maxrave.simpmusic.ui.screen.player.NowPlayingScreen
7081import com.maxrave.simpmusic.ui.theme.AppTheme
82+ import com.maxrave.simpmusic.ui.theme.fontFamily
7183import com.maxrave.simpmusic.ui.theme.typo
7284import com.maxrave.simpmusic.utils.VersionManager
7385import com.maxrave.simpmusic.viewModel.SharedViewModel
@@ -229,11 +241,16 @@ class MainActivity : AppCompatActivity() {
229241 val intent by viewModel.intent.collectAsStateWithLifecycle()
230242
231243 val isTranslucentBottomBar by viewModel.getTranslucentBottomBar().collectAsStateWithLifecycle(DataStoreManager .FALSE )
244+ val isLiquidGlassEnabled by viewModel.getEnableLiquidGlass().collectAsStateWithLifecycle(DataStoreManager .FALSE )
232245 // MiniPlayer visibility logic
233246 var isShowMiniPlayer by rememberSaveable {
234247 mutableStateOf(true )
235248 }
236249
250+ var isInSearchPage by rememberSaveable {
251+ mutableStateOf(false )
252+ }
253+
237254 // Now playing screen
238255 var isShowNowPlaylistScreen by rememberSaveable {
239256 mutableStateOf(false )
@@ -340,8 +357,11 @@ class MainActivity : AppCompatActivity() {
340357 if (navBackStackEntry?.destination?.route?.contains(" FullscreenDestination" ) == true ) {
341358 isShowNowPlaylistScreen = false
342359 }
360+ navBackStackEntry?.destination?.let { current ->
361+ isInSearchPage = current.hasRoute(SearchDestination ::class )
362+ }
343363 }
344-
364+ val backdrop = rememberBackdrop()
345365 AppTheme {
346366 Scaffold (
347367 bottomBar = {
@@ -352,7 +372,7 @@ class MainActivity : AppCompatActivity() {
352372 ) {
353373 Column {
354374 AnimatedVisibility (
355- isShowMiniPlayer,
375+ isShowMiniPlayer && ( ! isInSearchPage || isLiquidGlassEnabled == DataStoreManager . FALSE ) ,
356376 enter = fadeIn() + slideInHorizontally(),
357377 exit = fadeOut(),
358378 ) {
@@ -365,6 +385,7 @@ class MainActivity : AppCompatActivity() {
365385 ).padding(
366386 bottom = 4 .dp,
367387 ),
388+ backdrop = backdrop,
368389 onClick = {
369390 isShowNowPlaylistScreen = true
370391 },
@@ -374,29 +395,47 @@ class MainActivity : AppCompatActivity() {
374395 },
375396 )
376397 }
377- AppBottomNavigationBar (
378- navController = navController,
379- isTranslucentBackground = isTranslucentBottomBar == DataStoreManager .TRUE ,
380- ) { klass ->
381- viewModel.reloadDestination(klass)
398+ if (isLiquidGlassEnabled == DataStoreManager .TRUE ) {
399+ LiquidGlassAppBottomNavigationBar (
400+ navController = navController,
401+ backdrop = backdrop,
402+ viewModel = viewModel,
403+ shouldShowMiniPlayer = isShowMiniPlayer,
404+ onOpenNowPlaying = { isShowNowPlaylistScreen = true },
405+ ) { klass ->
406+ viewModel.reloadDestination(klass)
407+ }
408+ } else {
409+ AppBottomNavigationBar (
410+ navController = navController,
411+ isTranslucentBackground = isTranslucentBottomBar == DataStoreManager .TRUE ,
412+ ) { klass ->
413+ viewModel.reloadDestination(klass)
414+ }
382415 }
383416 }
384417 }
385418 },
386419 content = { innerPadding ->
387- AppNavigationGraph (
388- innerPadding = innerPadding,
389- navController = navController,
390- hideNavBar = {
391- isNavBarVisible = false
392- },
393- showNavBar = {
394- isNavBarVisible = true
395- },
396- showNowPlayingSheet = {
397- isShowNowPlaylistScreen = true
398- },
399- )
420+ Box (
421+ Modifier
422+ .fillMaxSize()
423+ .backdrop(backdrop),
424+ ) {
425+ AppNavigationGraph (
426+ innerPadding = innerPadding,
427+ navController = navController,
428+ hideNavBar = {
429+ isNavBarVisible = false
430+ },
431+ showNavBar = {
432+ isNavBarVisible = true
433+ },
434+ showNowPlayingSheet = {
435+ isShowNowPlaylistScreen = true
436+ },
437+ )
438+ }
400439
401440 if (isShowNowPlaylistScreen) {
402441 NowPlayingScreen (
@@ -535,9 +574,14 @@ class MainActivity : AppCompatActivity() {
535574 text = typo.bodySmall,
536575 bullet = typo.bodySmall,
537576 paragraph = typo.bodySmall,
538- link =
539- typo.bodySmall.copy(
540- textDecoration = TextDecoration .Underline ,
577+ textLink =
578+ TextLinkStyles (
579+ SpanStyle (
580+ fontSize = 11 .sp,
581+ fontWeight = FontWeight .Normal ,
582+ fontFamily = fontFamily,
583+ textDecoration = TextDecoration .Underline ,
584+ ),
541585 ),
542586 ),
543587 )
0 commit comments