Skip to content

Commit

Permalink
update navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
dattrxng committed Dec 2, 2024
1 parent 2fc7925 commit 44fd52d
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 19 deletions.
95 changes: 78 additions & 17 deletions app/src/main/java/com/example/harmonyhub/HarmonyHubApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,41 @@ fun HarmonyHubApp(
Nav3(navController, authenticationMainViewModel)
}
composable(route = HarmonyHubScreen.Search.name) {
SearchScreen(
onSearchQueryChanged = { /* Handle search query change */ },
onPlaySongClicked = {
navController.navigate(HarmonyHubScreen.Play.name)
},
onAddToPlaylistClicked = {
navController.navigate(HarmonyHubScreen.AddToPlaylistFromSong.name)
},
onAddToFavoriteClicked = { /* Handle add to favorite logic */ },
onShareClicked = { /* Handle share logic */ },
onDownloadClicked = { /* Handle download logic */ }
)
val searchNavController = rememberNavController()
NavHost(
navController = searchNavController,
startDestination = "Search"
) {
composable(route = "Search") {
SearchScreen(
onSearchQueryChanged = { /* Handle search query change */ },
onPlaySongClicked = {
navController.navigate(HarmonyHubScreen.Play.name)
},
onAddToPlaylistClicked = {
navController.navigate(HarmonyHubScreen.AddToPlaylistFromSong.name)
},
onAddToFavoriteClicked = { /* Handle add to favorite logic */ },
onShareClicked = { /* Handle share logic */ },
onDownloadClicked = { /* Handle download logic */ },
navController = searchNavController
)
}
composable(
route = "AddToPlaylistFromSong?name={selectedSong.url}",
arguments = listOf(
navArgument(name = "selectedSong.url") {
type = NavType.StringType
nullable = true
}
)
) { backStackEntry ->
AddToPlaylistFromSongScreen(
url = backStackEntry.arguments?.getString("selectedSong.url"),
onBackButtonClicked = { searchNavController.popBackStack() }
)
}
}
}
composable(route = HarmonyHubScreen.Play.name) {
PlayScreen(
Expand Down Expand Up @@ -340,11 +363,11 @@ fun HarmonyHubApp(
onBackButtonClicked = { navController.popBackStack() }
)
}
composable(route = HarmonyHubScreen.AddToPlaylistFromSong.name) {
AddToPlaylistFromSongScreen(
onBackButtonClicked = { navController.popBackStack() }
)
}
// composable(route = HarmonyHubScreen.AddToPlaylistFromSong.name) {
// AddToPlaylistFromSongScreen(
// onBackButtonClicked = { navController.popBackStack() }
// )
// }

composable(route = HarmonyHubScreen.Friends.name) {
FriendsScreen(
Expand Down Expand Up @@ -534,6 +557,44 @@ fun Nav3(
}
}
}
@Composable
fun Nav4(
parentNavController: NavHostController,
) {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "Search") {
composable(route = "Home") {
SearchScreen(
onSearchQueryChanged = { /* Handle search query change */ },
onPlaySongClicked = {
parentNavController.navigate(HarmonyHubScreen.Play.name)
},
onAddToPlaylistClicked = {
parentNavController.navigate(HarmonyHubScreen.AddToPlaylistFromSong.name)
},
onAddToFavoriteClicked = { /* Handle add to favorite logic */ },
onShareClicked = { /* Handle share logic */ },
onDownloadClicked = { /* Handle download logic */ },

navController = navController
)
}
composable(
route = "AddToPlaylistFromSong?name={selectedSong.url}",
arguments = listOf(
navArgument(name = "selectedSong.url") {
type = NavType.StringType
nullable = true
}
)
) { backStackEntry ->
AddToPlaylistFromSongScreen(
url = backStackEntry.arguments?.getString("selectedSong.url"),
onBackButtonClicked = { navController.popBackStack() }
)
}
}
}
//@OptIn(ExperimentalMaterial3Api::class)
//@Composable
//fun HarmonyHubAppbar(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import com.example.harmonyhub.presentation.viewmodel.UserDataViewModel
import com.example.harmonyhub.ui.components.Song
import com.example.harmonyhub.ui.theme.NotoSans
import kotlinx.coroutines.launch
import retrofit2.http.Url

private val gradientBackground = Brush.verticalGradient(
colors = listOf(Color(0xFF04A8A3), Color(0xFF0A91BD))
Expand All @@ -74,6 +75,7 @@ private val gradientBackground = Brush.verticalGradient(
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AddToPlaylistFromSongScreen(
url: String?,
onBackButtonClicked: () -> Unit,
userDataViewModel: UserDataViewModel = hiltViewModel(),
playlistViewModel: PlaylistViewModel = hiltViewModel(),
Expand Down Expand Up @@ -117,7 +119,6 @@ fun AddToPlaylistFromSongScreen(
else -> {}
}
}

val searchResults = allPlaylists.filter { it.contains(query, ignoreCase = true) }
Column(
modifier = Modifier
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.harmonyhub.ui.search

import android.widget.MediaController
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
Expand Down Expand Up @@ -50,6 +51,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavHostController
import coil.compose.rememberAsyncImagePainter
import com.example.harmonyhub.R
import com.example.harmonyhub.data.SongRepository
Expand All @@ -64,6 +66,7 @@ import com.example.harmonyhub.ui.theme.NotoSans
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchScreen(
navController: NavHostController,
onSearchQueryChanged: (String) -> Unit,
onPlaySongClicked: () -> Unit,
onAddToPlaylistClicked: () -> Unit,
Expand Down Expand Up @@ -182,7 +185,9 @@ fun SearchScreen(
onDismiss = { isBottomSheetVisible = false },
selectedSong = selectedSong,
screenType = "SearchScreen",
onAddToPlaylistClicked = onAddToPlaylistClicked,
onAddToPlaylistClicked = {selectedSong?.let {
navController.navigate("AddToPlaylistFromSong?name=${it.url}")
}},
onAddToFavoriteClicked = onAddToFavoriteClicked,
onDeleteClicked = {},
onShareClicked = onShareClicked,
Expand Down

0 comments on commit 44fd52d

Please sign in to comment.