Skip to content
This repository has been archived by the owner on Aug 2, 2024. It is now read-only.

Commit

Permalink
Merge branch 'android:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
sahilsk3333 authored Nov 26, 2023
2 parents 5dd259b + d092c22 commit f7fb6de
Show file tree
Hide file tree
Showing 9 changed files with 86 additions and 33 deletions.
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
android:theme="@style/Theme.Sunflower">
<activity
android:name=".GardenActivity"
android:windowSoftInputMode="adjustResize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package com.google.samples.apps.sunflower
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.core.view.WindowCompat
import androidx.activity.enableEdgeToEdge
import com.google.samples.apps.sunflower.compose.SunflowerApp
import com.google.samples.apps.sunflower.ui.SunflowerTheme
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -31,12 +31,12 @@ class GardenActivity : ComponentActivity() {
super.onCreate(savedInstanceState)

// Displaying edge-to-edge
WindowCompat.setDecorFitsSystemWindows(window, false)
enableEdgeToEdge()
setContent {
SunflowerTheme {
SunflowerApp()
}
}

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.google.samples.apps.sunflower.compose

import androidx.navigation.NamedNavArgument
import androidx.navigation.NavType
import androidx.navigation.navArgument

sealed class Screen(
val route: String,
val navArguments: List<NamedNavArgument> = emptyList()
) {
data object Home : Screen("home")

data object PlantDetail : Screen(
route = "plantDetail/{plantId}",
navArguments = listOf(navArgument("plantId") {
type = NavType.StringType
})
) {
fun createRoute(plantId: String) = "plantDetail/${plantId}"
}

data object Gallery : Screen(
route = "gallery/{plantName}",
navArguments = listOf(navArgument("plantName") {
type = NavType.StringType
})
) {
fun createRoute(plantName: String) = "gallery/${plantName}"

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.core.app.ShareCompat
import androidx.navigation.NavHostController
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.google.samples.apps.sunflower.R
import com.google.samples.apps.sunflower.compose.gallery.GalleryScreen
import com.google.samples.apps.sunflower.compose.home.HomeScreen
Expand All @@ -46,35 +44,39 @@ fun SunFlowerNavHost(
navController: NavHostController
) {
val activity = (LocalContext.current as Activity)
NavHost(navController = navController, startDestination = "home") {
composable("home") {
NavHost(navController = navController, startDestination = Screen.Home.route) {
composable(route = Screen.Home.route) {
HomeScreen(
onPlantClick = {
navController.navigate("plantDetail/${it.plantId}")
navController.navigate(
Screen.PlantDetail.createRoute(
plantId = it.plantId
)
)
}
)
}
composable(
"plantDetail/{plantId}",
arguments = listOf(navArgument("plantId") {
type = NavType.StringType
})
route = Screen.PlantDetail.route,
arguments = Screen.PlantDetail.navArguments
) {
PlantDetailsScreen(
onBackClick = { navController.navigateUp() },
onShareClick = {
createShareIntent(activity, it)
},
onGalleryClick = {
navController.navigate("gallery/${it.name}")
navController.navigate(
Screen.Gallery.createRoute(
plantName = it.name
)
)
}
)
}
composable(
"gallery/{plantName}",
arguments = listOf(navArgument("plantName") {
type = NavType.StringType
})
route = Screen.Gallery.route,
arguments = Screen.Gallery.navArguments
) {
GalleryScreen(
onPhotoClick = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ fun GalleryScreen(
)
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun GalleryScreen(
plantPictures: Flow<PagingData<UnsplashPhoto>>,
Expand Down Expand Up @@ -150,4 +149,4 @@ private class GalleryScreenPreviewParamProvider :
)
),
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
Expand Down Expand Up @@ -98,7 +100,7 @@ private fun GardenList(
ReportDrawnWhen { gridState.layoutInfo.totalItemsCount > 0 }
LazyVerticalGrid(
columns = GridCells.Fixed(2),
modifier,
modifier.imePadding(),
state = gridState,
contentPadding = PaddingValues(
horizontal = dimensionResource(id = R.dimen.card_side_margin),
Expand Down Expand Up @@ -257,4 +259,4 @@ private class GardenScreenPreviewParamProvider :
)
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.google.samples.apps.sunflower.compose.home

import android.util.Log
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.ExperimentalFoundationApi
Expand All @@ -26,7 +27,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
Expand Down Expand Up @@ -85,11 +85,11 @@ fun HomeScreen(
scrollBehavior = scrollBehavior
)
}
) {
) { contentPadding ->
HomePagerScreen(
onPlantClick = onPlantClick,
pagerState = pagerState,
modifier = Modifier.padding(it)
Modifier.padding(top = contentPadding.calculateTopPadding())
)
}
}
Expand All @@ -102,9 +102,6 @@ fun HomePagerScreen(
modifier: Modifier = Modifier,
pages: Array<SunflowerPage> = SunflowerPage.values()
) {
// Use Modifier.nestedScroll + rememberNestedScrollInteropConnection() here so that this
// composable participates in the nested scroll hierarchy so that HomeScreen can be used in
// use cases like a collapsing toolbar
Column(modifier) {
val coroutineScope = rememberCoroutineScope()

Expand Down Expand Up @@ -181,7 +178,7 @@ private fun HomeTopAppBar(
)
}
},
modifier = modifier.statusBarsPadding(),
modifier = modifier,
actions = {
if (pagerState.currentPage == SunflowerPage.PLANT_LIST.ordinal) {
IconButton(onClick = onFilterClick) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
package com.google.samples.apps.sunflower.compose.plantlist

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
Expand All @@ -37,6 +40,7 @@ import com.google.samples.apps.sunflower.data.Plant
@Composable
fun PlantListScreen(
onPlantClick: (Plant) -> Unit,

modifier: Modifier = Modifier,
viewModel: PlantListViewModel = hiltViewModel(),
) {
Expand All @@ -52,7 +56,8 @@ fun PlantListScreen(
) {
LazyVerticalGrid(
columns = GridCells.Fixed(2),
modifier = modifier.testTag("plant_list"),
modifier = modifier.testTag("plant_list")
.imePadding(),
contentPadding = PaddingValues(
horizontal = dimensionResource(id = R.dimen.card_side_margin),
vertical = dimensionResource(id = R.dimen.header_margin)
Expand Down Expand Up @@ -88,4 +93,4 @@ private class PlantListPreviewParamProvider : PreviewParameterProvider<List<Plan
Plant("4", "Dill", "Dill", growZoneNumber = 3),
)
)
}
}
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
##
[versions]
accessibilityTestFramework = "4.0.0"
activityCompose = "1.7.2"
activityCompose = "1.8.1"
androidGradlePlugin = "8.1.2"
benchmark = "1.1.0"
# @keep
compileSdk = "33"
compileSdk = "34"
composeLatest = "1.4.0-alpha03"
composeBom = "2023.06.01"
compose-compiler = "1.5.3"
Expand Down Expand Up @@ -52,7 +52,7 @@ retrofit = "2.9.0"
room = "2.5.2"
runner = "1.0.1"
# @keep
targetSdk = "33"
targetSdk = "34"
testExtJunit = "1.1.5"
uiAutomator = "2.2.0"
viewModelCompose = "2.5.1"
Expand Down

0 comments on commit f7fb6de

Please sign in to comment.