|
|
|
@ -22,6 +22,7 @@ import com.google.samples.apps.nowinandroid.R
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksRoute
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBaseRoute
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
|
|
|
|
|
import kotlin.reflect.KClass
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.bookmarks.R as bookmarksR
|
|
|
|
@ -29,9 +30,18 @@ import com.google.samples.apps.nowinandroid.feature.foryou.R as forYouR
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.search.R as searchR
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Type for the top level destinations in the application. Each of these destinations
|
|
|
|
|
* can contain one or more screens (based on the window size). Navigation from one screen to the
|
|
|
|
|
* next within a single destination will be handled directly in composables.
|
|
|
|
|
* Type for the top level destinations in the application. Contains metadata about the destination
|
|
|
|
|
* that is used in the top app bar and common navigation UI.
|
|
|
|
|
*
|
|
|
|
|
* @param selectedIcon The icon to be displayed in the navigation UI when this destination is
|
|
|
|
|
* selected.
|
|
|
|
|
* @param unselectedIcon The icon to be displayed in the navigation UI when this destination is
|
|
|
|
|
* not selected.
|
|
|
|
|
* @param iconTextId Text that to be displayed in the navigation UI.
|
|
|
|
|
* @param titleTextId Text that is displayed on the top app bar.
|
|
|
|
|
* @param route The route to use when navigating to this destination.
|
|
|
|
|
* @param baseRoute The highest ancestor of this destination. Defaults to [route], meaning that
|
|
|
|
|
* there is a single destination in that section of the app (no nested destinations).
|
|
|
|
|
*/
|
|
|
|
|
enum class TopLevelDestination(
|
|
|
|
|
val selectedIcon: ImageVector,
|
|
|
|
@ -39,13 +49,15 @@ enum class TopLevelDestination(
|
|
|
|
|
@StringRes val iconTextId: Int,
|
|
|
|
|
@StringRes val titleTextId: Int,
|
|
|
|
|
val route: KClass<*>,
|
|
|
|
|
val baseRoute: KClass<*> = route,
|
|
|
|
|
) {
|
|
|
|
|
FOR_YOU(
|
|
|
|
|
selectedIcon = NiaIcons.Upcoming,
|
|
|
|
|
unselectedIcon = NiaIcons.UpcomingBorder,
|
|
|
|
|
iconTextId = forYouR.string.feature_foryou_title,
|
|
|
|
|
titleTextId = R.string.app_name,
|
|
|
|
|
route = ForYouBaseRoute::class,
|
|
|
|
|
route = ForYouRoute::class,
|
|
|
|
|
baseRoute = ForYouBaseRoute::class,
|
|
|
|
|
),
|
|
|
|
|
BOOKMARKS(
|
|
|
|
|
selectedIcon = NiaIcons.Bookmarks,
|
|
|
|
|