Skip to content
This repository was archived by the owner on Nov 30, 2023. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: google-developer-training/android-demos
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: google-developer-training/android-demos
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: starter
Choose a head ref
Can’t automatically merge. Don’t worry, you can still create the pull request.
  • 4 commits
  • 238 files changed
  • 1 contributor

Commits on Apr 7, 2021

  1. NavigationUI starter code

    Murat Yener committed Apr 7, 2021
    Copy the full SHA
    c8439b8 View commit details

Commits on Apr 22, 2021

  1. Starter code for Conditional Navigation

    Murat Yener committed Apr 22, 2021
    Copy the full SHA
    42c2ab7 View commit details

Commits on May 9, 2021

  1. nested graphs and include starter code

    Murat Yener committed May 9, 2021
    Copy the full SHA
    d3868c2 View commit details

Commits on May 28, 2021

  1. starter code for Feature Modules

    Murat Yener committed May 28, 2021
    Copy the full SHA
    a22720f View commit details
Showing with 12,074 additions and 66 deletions.
  1. +27 −0 DonutTracker/ConditionalNavigation/.gitignore
  2. +27 −0 DonutTracker/ConditionalNavigation/README.md
  3. +121 −0 DonutTracker/ConditionalNavigation/app/build.gradle
  4. +41 −0 DonutTracker/ConditionalNavigation/app/src/main/AndroidManifest.xml
  5. +97 −0 ...tTracker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/MainActivity.kt
  6. +67 −0 DonutTracker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/Notifier.kt
  7. +82 −0 ...itionalNavigation/app/src/main/java/com/android/samples/donuttracker/UserPreferencesRepository.kt
  8. +118 −0 ...Navigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryDialogFragment.kt
  9. +67 −0 ...ionalNavigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryViewModel.kt
  10. +76 −0 ...ker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeList.kt
  11. +83 −0 ...ditionalNavigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListAdapter.kt
  12. +38 −0 ...tionalNavigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListViewModel.kt
  13. +34 −0 ...nalNavigation/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeViewModelFactory.kt
  14. +118 −0 ...alNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryDialogFragment.kt
  15. +69 −0 ...itionalNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryViewModel.kt
  16. +81 −0 ...acker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutList.kt
  17. +82 −0 ...onditionalNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutListAdapter.kt
  18. +47 −0 ...ditionalNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutListViewModel.kt
  19. +38 −0 ...ionalNavigation/app/src/main/java/com/android/samples/donuttracker/donut/DonutViewModelFactory.kt
  20. +31 −0 ...tTracker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/model/Coffee.kt
  21. +31 −0 DonutTracker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/model/Donut.kt
  22. +54 −0 ...nditionalNavigation/app/src/main/java/com/android/samples/donuttracker/setup/SelectionFragment.kt
  23. +52 −0 ...ditionalNavigation/app/src/main/java/com/android/samples/donuttracker/setup/SelectionViewModel.kt
  24. +42 −0 ...ker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/storage/CoffeeDao.kt
  25. +47 −0 ...cker/ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/storage/DonutDao.kt
  26. +54 −0 ...ConditionalNavigation/app/src/main/java/com/android/samples/donuttracker/storage/SnackDatabase.kt
  27. +46 −0 DonutTracker/ConditionalNavigation/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
  28. +128 −0 DonutTracker/ConditionalNavigation/app/src/main/res/drawable/coffee_cup.xml
  29. +141 −0 DonutTracker/ConditionalNavigation/app/src/main/res/drawable/donut_with_sprinkles.xml
  30. +25 −0 DonutTracker/ConditionalNavigation/app/src/main/res/drawable/ic_clear_24px.xml
  31. +185 −0 DonutTracker/ConditionalNavigation/app/src/main/res/drawable/ic_launcher_background.xml
  32. +59 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout-w960dp/activity_main.xml
  33. +48 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/activity_main.xml
  34. +144 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/coffee_entry_dialog.xml
  35. +79 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/coffee_item.xml
  36. +39 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/coffee_list.xml
  37. +144 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/donut_entry_dialog.xml
  38. +80 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/donut_item.xml
  39. +40 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/donut_list.xml
  40. +66 −0 DonutTracker/ConditionalNavigation/app/src/main/res/layout/fragment_selection.xml
  41. 0 DonutTracker/{NavigationUI → ConditionalNavigation}/app/src/main/res/menu/bottom_nav_menu.xml
  42. +26 −0 DonutTracker/ConditionalNavigation/app/src/main/res/menu/menu_main.xml
  43. 0 DonutTracker/{NavigationUI → ConditionalNavigation}/app/src/main/res/menu/nav_drawer_menu.xml
  44. +20 −0 DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  45. +20 −0 DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  46. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-hdpi/ic_launcher.png
  47. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  48. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-mdpi/ic_launcher.png
  49. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  50. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  51. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  52. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  53. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  54. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  55. BIN DonutTracker/ConditionalNavigation/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  56. +69 −0 DonutTracker/ConditionalNavigation/app/src/main/res/navigation/nav_graph.xml
  57. +22 −0 DonutTracker/ConditionalNavigation/app/src/main/res/values/colors.xml
  58. +19 −0 DonutTracker/ConditionalNavigation/app/src/main/res/values/dimens.xml
  59. +49 −0 DonutTracker/ConditionalNavigation/app/src/main/res/values/strings.xml
  60. +37 −0 DonutTracker/ConditionalNavigation/app/src/main/res/values/styles.xml
  61. +29 −0 DonutTracker/ConditionalNavigation/app/src/main/res/xml-v25/shortcuts.xml
  62. +23 −0 DonutTracker/ConditionalNavigation/app/src/main/res/xml/preferences.xml
  63. +31 −0 DonutTracker/ConditionalNavigation/app/src/main/res/xml/shortcuts.xml
  64. +61 −0 DonutTracker/ConditionalNavigation/build.gradle
  65. +21 −0 DonutTracker/ConditionalNavigation/gradle.properties
  66. BIN DonutTracker/ConditionalNavigation/gradle/wrapper/gradle-wrapper.jar
  67. +22 −0 DonutTracker/ConditionalNavigation/gradle/wrapper/gradle-wrapper.properties
  68. +172 −0 DonutTracker/ConditionalNavigation/gradlew
  69. +84 −0 DonutTracker/ConditionalNavigation/gradlew.bat
  70. BIN DonutTracker/ConditionalNavigation/screenshot.png
  71. +2 −0 DonutTracker/ConditionalNavigation/settings.gradle
  72. +226 −0 DonutTracker/ConditionalNavigation/versions.gradle
  73. +27 −0 DonutTracker/FeatureModules/.gitignore
  74. +27 −0 DonutTracker/FeatureModules/README.md
  75. +123 −0 DonutTracker/FeatureModules/app/build.gradle
  76. +52 −0 ...acker/FeatureModules/app/src/androidTest/java/com/android/samples/donuttracker/OneTimeFlowTest.kt
  77. +41 −0 DonutTracker/FeatureModules/app/src/main/AndroidManifest.xml
  78. +113 −0 DonutTracker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/MainActivity.kt
  79. +67 −0 DonutTracker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/Notifier.kt
  80. +82 −0 ...er/FeatureModules/app/src/main/java/com/android/samples/donuttracker/UserPreferencesRepository.kt
  81. +118 −0 ...atureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryDialogFragment.kt
  82. +69 −0 ...er/FeatureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryViewModel.kt
  83. +88 −0 DonutTracker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutList.kt
  84. +82 −0 ...acker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutListAdapter.kt
  85. +47 −0 ...ker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutListViewModel.kt
  86. +38 −0 .../FeatureModules/app/src/main/java/com/android/samples/donuttracker/donut/DonutViewModelFactory.kt
  87. +64 −0 ...cker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/setup/SelectionFragment.kt
  88. +52 −0 ...ker/FeatureModules/app/src/main/java/com/android/samples/donuttracker/setup/SelectionViewModel.kt
  89. +46 −0 DonutTracker/FeatureModules/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
  90. +128 −0 DonutTracker/FeatureModules/app/src/main/res/drawable/coffee_cup.xml
  91. +141 −0 DonutTracker/FeatureModules/app/src/main/res/drawable/donut_with_sprinkles.xml
  92. +25 −0 DonutTracker/FeatureModules/app/src/main/res/drawable/ic_clear_24px.xml
  93. +185 −0 DonutTracker/FeatureModules/app/src/main/res/drawable/ic_launcher_background.xml
  94. +59 −0 DonutTracker/FeatureModules/app/src/main/res/layout-w960dp/activity_main.xml
  95. +48 −0 DonutTracker/FeatureModules/app/src/main/res/layout/activity_main.xml
  96. +144 −0 DonutTracker/FeatureModules/app/src/main/res/layout/donut_entry_dialog.xml
  97. +80 −0 DonutTracker/FeatureModules/app/src/main/res/layout/donut_item.xml
  98. +40 −0 DonutTracker/FeatureModules/app/src/main/res/layout/donut_list.xml
  99. +66 −0 DonutTracker/FeatureModules/app/src/main/res/layout/fragment_selection.xml
  100. +10 −0 DonutTracker/FeatureModules/app/src/main/res/menu/bottom_nav_menu.xml
  101. +26 −0 DonutTracker/FeatureModules/app/src/main/res/menu/menu_main.xml
  102. +31 −0 DonutTracker/FeatureModules/app/src/main/res/menu/nav_drawer_menu.xml
  103. +20 −0 DonutTracker/FeatureModules/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  104. +20 −0 DonutTracker/FeatureModules/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  105. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-hdpi/ic_launcher.png
  106. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  107. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-mdpi/ic_launcher.png
  108. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  109. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  110. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  111. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  112. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  113. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  114. BIN DonutTracker/FeatureModules/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  115. +53 −0 DonutTracker/FeatureModules/app/src/main/res/navigation/nav_graph.xml
  116. +22 −0 DonutTracker/FeatureModules/app/src/main/res/values/colors.xml
  117. +19 −0 DonutTracker/FeatureModules/app/src/main/res/values/dimens.xml
  118. +49 −0 DonutTracker/FeatureModules/app/src/main/res/values/strings.xml
  119. +37 −0 DonutTracker/FeatureModules/app/src/main/res/values/styles.xml
  120. +29 −0 DonutTracker/FeatureModules/app/src/main/res/xml-v25/shortcuts.xml
  121. +23 −0 DonutTracker/FeatureModules/app/src/main/res/xml/preferences.xml
  122. +31 −0 DonutTracker/FeatureModules/app/src/main/res/xml/shortcuts.xml
  123. +61 −0 DonutTracker/FeatureModules/build.gradle
  124. +1 −0 DonutTracker/FeatureModules/coffee/.gitignore
  125. +80 −0 DonutTracker/FeatureModules/coffee/build.gradle
  126. 0 DonutTracker/FeatureModules/coffee/consumer-rules.pro
  127. +21 −0 DonutTracker/FeatureModules/coffee/proguard-rules.pro
  128. +5 −0 DonutTracker/FeatureModules/coffee/src/main/AndroidManifest.xml
  129. +114 −0 ...Modules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryDialogFragment.kt
  130. +67 −0 ...atureModules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryViewModel.kt
  131. +76 −0 ...Tracker/FeatureModules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeList.kt
  132. +82 −0 .../FeatureModules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListAdapter.kt
  133. +38 −0 ...eatureModules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListViewModel.kt
  134. +34 −0 ...ureModules/coffee/src/main/java/com/android/samples/donuttracker/coffee/CoffeeViewModelFactory.kt
  135. +128 −0 DonutTracker/FeatureModules/coffee/src/main/res/drawable/coffee_cup.xml
  136. +144 −0 DonutTracker/FeatureModules/coffee/src/main/res/layout/coffee_entry_dialog.xml
  137. +79 −0 DonutTracker/FeatureModules/coffee/src/main/res/layout/coffee_item.xml
  138. +39 −0 DonutTracker/FeatureModules/coffee/src/main/res/layout/coffee_list.xml
  139. +39 −0 DonutTracker/FeatureModules/coffee/src/main/res/navigation/coffee_graph.xml
  140. +19 −0 DonutTracker/FeatureModules/coffee/src/main/res/values/dimens.xml
  141. +49 −0 DonutTracker/FeatureModules/coffee/src/main/res/values/strings.xml
  142. +1 −0 DonutTracker/FeatureModules/core/.gitignore
  143. +71 −0 DonutTracker/FeatureModules/core/build.gradle
  144. 0 DonutTracker/FeatureModules/core/consumer-rules.pro
  145. +21 −0 DonutTracker/FeatureModules/core/proguard-rules.pro
  146. +5 −0 DonutTracker/FeatureModules/core/src/main/AndroidManifest.xml
  147. +31 −0 DonutTracker/FeatureModules/core/src/main/java/com/android/samples/donuttracker/core/model/Coffee.kt
  148. +31 −0 DonutTracker/FeatureModules/core/src/main/java/com/android/samples/donuttracker/core/model/Donut.kt
  149. +42 −0 ...cker/FeatureModules/core/src/main/java/com/android/samples/donuttracker/core/storage/CoffeeDao.kt
  150. +47 −0 ...acker/FeatureModules/core/src/main/java/com/android/samples/donuttracker/core/storage/DonutDao.kt
  151. +54 −0 .../FeatureModules/core/src/main/java/com/android/samples/donuttracker/core/storage/SnackDatabase.kt
  152. +21 −0 DonutTracker/FeatureModules/gradle.properties
  153. BIN DonutTracker/FeatureModules/gradle/wrapper/gradle-wrapper.jar
  154. +22 −0 DonutTracker/FeatureModules/gradle/wrapper/gradle-wrapper.properties
  155. +172 −0 DonutTracker/FeatureModules/gradlew
  156. +84 −0 DonutTracker/FeatureModules/gradlew.bat
  157. BIN DonutTracker/FeatureModules/screenshot.png
  158. +4 −0 DonutTracker/FeatureModules/settings.gradle
  159. +226 −0 DonutTracker/FeatureModules/versions.gradle
  160. +27 −0 DonutTracker/NavigationUI/.gitignore
  161. +5 −42 DonutTracker/NavigationUI/app/src/main/java/com/android/samples/donuttracker/MainActivity.kt
  162. +0 −16 DonutTracker/NavigationUI/app/src/main/res/layout-w960dp/activity_main.xml
  163. +0 −7 DonutTracker/NavigationUI/app/src/main/res/layout/activity_main.xml
  164. +1 −1 DonutTracker/NavigationUI/app/src/main/res/menu/menu_main.xml
  165. +27 −0 DonutTracker/NestedGraphs_Include/.gitignore
  166. +27 −0 DonutTracker/NestedGraphs_Include/README.md
  167. +121 −0 DonutTracker/NestedGraphs_Include/app/build.gradle
  168. +52 −0 ...NestedGraphs_Include/app/src/androidTest/java/com/android/samples/donuttracker/OneTimeFlowTest.kt
  169. +41 −0 DonutTracker/NestedGraphs_Include/app/src/main/AndroidManifest.xml
  170. +113 −0 DonutTracker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/MainActivity.kt
  171. +67 −0 DonutTracker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/Notifier.kt
  172. +82 −0 ...tedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/UserPreferencesRepository.kt
  173. +118 −0 ...hs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryDialogFragment.kt
  174. +67 −0 ...dGraphs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeEntryViewModel.kt
  175. +76 −0 ...cker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeList.kt
  176. +83 −0 ...stedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListAdapter.kt
  177. +38 −0 ...edGraphs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeListViewModel.kt
  178. +34 −0 ...raphs_Include/app/src/main/java/com/android/samples/donuttracker/coffee/CoffeeViewModelFactory.kt
  179. +118 −0 ...aphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryDialogFragment.kt
  180. +69 −0 ...tedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutEntryViewModel.kt
  181. +88 −0 ...racker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutList.kt
  182. +82 −0 ...NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutListAdapter.kt
  183. +47 −0 ...stedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutListViewModel.kt
  184. +38 −0 ...dGraphs_Include/app/src/main/java/com/android/samples/donuttracker/donut/DonutViewModelFactory.kt
  185. +31 −0 DonutTracker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/model/Coffee.kt
  186. +31 −0 DonutTracker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/model/Donut.kt
  187. +64 −0 ...estedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/setup/SelectionFragment.kt
  188. +52 −0 ...stedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/setup/SelectionViewModel.kt
  189. +42 −0 ...cker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/storage/CoffeeDao.kt
  190. +47 −0 ...acker/NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/storage/DonutDao.kt
  191. +54 −0 .../NestedGraphs_Include/app/src/main/java/com/android/samples/donuttracker/storage/SnackDatabase.kt
  192. +46 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
  193. +128 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/drawable/coffee_cup.xml
  194. +141 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/drawable/donut_with_sprinkles.xml
  195. +25 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/drawable/ic_clear_24px.xml
  196. +185 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/drawable/ic_launcher_background.xml
  197. +59 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout-w960dp/activity_main.xml
  198. +48 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/activity_main.xml
  199. +144 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/coffee_entry_dialog.xml
  200. +79 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/coffee_item.xml
  201. +39 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/coffee_list.xml
  202. +144 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/donut_entry_dialog.xml
  203. +80 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/donut_item.xml
  204. +40 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/donut_list.xml
  205. +66 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/layout/fragment_selection.xml
  206. +10 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/menu/bottom_nav_menu.xml
  207. +26 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/menu/menu_main.xml
  208. +31 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/menu/nav_drawer_menu.xml
  209. +20 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  210. +20 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  211. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-hdpi/ic_launcher.png
  212. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  213. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-mdpi/ic_launcher.png
  214. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  215. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  216. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  217. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  218. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  219. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  220. BIN DonutTracker/NestedGraphs_Include/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  221. +39 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/navigation/coffee_graph.xml
  222. +53 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/navigation/nav_graph.xml
  223. +22 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/values/colors.xml
  224. +19 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/values/dimens.xml
  225. +49 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/values/strings.xml
  226. +37 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/values/styles.xml
  227. +29 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/xml-v25/shortcuts.xml
  228. +23 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/xml/preferences.xml
  229. +31 −0 DonutTracker/NestedGraphs_Include/app/src/main/res/xml/shortcuts.xml
  230. +61 −0 DonutTracker/NestedGraphs_Include/build.gradle
  231. +21 −0 DonutTracker/NestedGraphs_Include/gradle.properties
  232. BIN DonutTracker/NestedGraphs_Include/gradle/wrapper/gradle-wrapper.jar
  233. +22 −0 DonutTracker/NestedGraphs_Include/gradle/wrapper/gradle-wrapper.properties
  234. +172 −0 DonutTracker/NestedGraphs_Include/gradlew
  235. +84 −0 DonutTracker/NestedGraphs_Include/gradlew.bat
  236. BIN DonutTracker/NestedGraphs_Include/screenshot.png
  237. +2 −0 DonutTracker/NestedGraphs_Include/settings.gradle
  238. +226 −0 DonutTracker/NestedGraphs_Include/versions.gradle
27 changes: 27 additions & 0 deletions DonutTracker/ConditionalNavigation/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# built application files
*.apk
*.ap_
# Mac files
.DS_Store
# files for the dex VM
*.dex
# Java class files
*.class
# generated files
bin/
gen/
# Ignore gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
proguard-project.txt
# Eclipse files
.project
.classpath
.settings/
# Android Studio/IDEA
*.iml
.idea
27 changes: 27 additions & 0 deletions DonutTracker/ConditionalNavigation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
MAD Skills Navigation Sample (Donut Tracker)
==============================================

This sample shows the features of Navigation component highlighted by the second Navigation
series in the MAD Skills [videos](https://www.youtube.com/user/androiddevelopers)
and [articles](https://medium.com/androiddevelopers). Specifically, episodes
1, 2, 3, and 4 walk through code from this sample.

### Features

This sample showcases the following features of the Navigation component:

* NavigationUI (episode 1)
* Conditional Navigation (episode 2)
* Nested Graphs and Include (episode 3)
* Navigation in Feature Modules (episode 4)

### Screenshots
<img src="screenshot.png" height="400" alt="Screenshot"/>

### Other Resources

* For an overview of using Navigation component, check out
[Get started with the Navigation component](https://developer.android.com/guide/navigation/navigation-getting-started)
* Consider including the [Navigation KTX libraries](https://developer.android.com/topic/libraries/architecture/adding-components#navigation)
for more concise uses of the Navigation component. For example, calls to `Navigation.findNavController(view)` can
be expressed as `view.findNavController()`.
121 changes: 121 additions & 0 deletions DonutTracker/ConditionalNavigation/app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* 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
*
* http://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.
*/

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 29
buildToolsVersion "29.0.2"

buildFeatures {
viewBinding = true
}

defaultConfig {
applicationId "com.android.samples.navdonutcreator"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)


compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}

packagingOptions {
exclude 'META-INF/atomicfu.kotlin_module'
}
}

configurations {
ktlint
}

dependencies {
implementation "androidx.appcompat:appcompat:$appCompatVersion"
implementation "androidx.core:core-ktx:$ktxVersion"
implementation "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion"
implementation "androidx.datastore:datastore-preferences:$datastoreVersion"
implementation "androidx.fragment:fragment-ktx:$fragmentVersion"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.lifecycle:lifecycle-livedata-core-ktx:$archLifecycleVersion"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$archLifecycleVersion"
implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion"
implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion"
implementation "androidx.preference:preference-ktx:$preference_version"
implementation "androidx.room:room-runtime:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
implementation "androidx.room:room-ktx:$roomVersion"
implementation "com.google.android.material:material:$materialVersion"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"

ktlint "com.pinterest:ktlint:$ktlintVersion"

testImplementation "junit:junit:4.12"
androidTestImplementation "androidx.test.ext:junit:1.1.1"
androidTestImplementation "androidx.test:core:1.2.0"
androidTestImplementation "androidx.test:runner:1.2.0"
androidTestImplementation "androidx.test:rules:1.2.0"
androidTestImplementation "androidx.navigation:navigation-testing:$navigationVersion"

// Truth
androidTestImplementation "com.google.truth:truth:1.1.2"

// FragmentScenario
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.50"
implementation "androidx.fragment:fragment-testing:1.2.0"
}


// Disable the 'paren-spacing' rule which conflicts with non-paren annotations on functional types
task ktlint(type: JavaExec, group: "verification") {
description = "Check Kotlin code style."
main = "com.pinterest.ktlint.Main"
classpath = configurations.ktlint
args "src/**/*.kt", "--disabled_rules", "paren-spacing"
}
check.dependsOn ktlint

task ktlintFormat(type: JavaExec, group: "formatting") {
description = "Fix Kotlin code style deviations."
main = "com.pinterest.ktlint.Main"
classpath = configurations.ktlint
args "-F", "src/**/*.kt", "--disabled_rules", "paren-spacing"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2021 The Android Open Source Project
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
http://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.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.samples.donuttracker">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.android.samples.donuttracker.MainActivity">
<nav-graph android:value="@navigation/nav_graph" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* 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
*
* http://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.android.samples.donuttracker

import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.onNavDestinationSelected
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.android.samples.donuttracker.databinding.ActivityMainBinding
import com.android.samples.donuttracker.setup.SelectionViewModel
import com.android.samples.donuttracker.setup.SelectionViewModelFactory
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationView

/**
* Main activity class. Not much happens here, just some basic UI setup.
* The main logic occurs in the fragments which populate this activity.
*/
class MainActivity : AppCompatActivity() {

private lateinit var navController: NavController
private lateinit var appBarConfiguration: AppBarConfiguration

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val binding = ActivityMainBinding.inflate(LayoutInflater.from(this))
setContentView(binding.root)

val navHostFragment = supportFragmentManager.findFragmentById(
R.id.nav_host_fragment
) as NavHostFragment
navController = navHostFragment.navController

appBarConfiguration= AppBarConfiguration(navController.graph)

val toolbar = binding.toolbar
setSupportActionBar(toolbar)
setupActionBarWithNavController(navController, appBarConfiguration)
setupBottomNavMenu(navController)
setupNavigationMenu(navController)

Notifier.init(this)
}

private fun setupNavigationMenu(navController: NavController){
val sideNavView = findViewById<NavigationView>(R.id.nav_view)
sideNavView?.setupWithNavController(navController)
}
private fun setupBottomNavMenu(navController: NavController){
val bottomNav = findViewById<BottomNavigationView>(R.id.bottom_nav_view)
bottomNav?.setupWithNavController(navController)
}

override fun onSupportNavigateUp(): Boolean {
return findNavController(R.id.nav_host_fragment).navigateUp(appBarConfiguration)
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return item.onNavDestinationSelected(
findNavController(R.id.nav_host_fragment)
) || super.onOptionsItemSelected(item)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* 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
*
* http://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.android.samples.donuttracker

import android.app.Activity
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat

/**
* Utility class for posting notifications.
* This class creates the notification channel (as necessary) and posts to it when requested.
*/
object Notifier {

private const val channelId = "Default"

fun init(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notificationManager =
activity.getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) as NotificationManager
val existingChannel = notificationManager.getNotificationChannel(channelId)
if (existingChannel == null) {
// Create the NotificationChannel
val name = activity.getString(R.string.defaultChannel)
val importance = NotificationManager.IMPORTANCE_DEFAULT
val mChannel = NotificationChannel(channelId, name, importance)
mChannel.description = activity.getString(R.string.notificationDescription)
notificationManager.createNotificationChannel(mChannel)
}
}
}

fun postNotification(id: Long, context: Context, intent: PendingIntent) {
val builder = NotificationCompat.Builder(context, channelId)
builder.setContentTitle(context.getString(R.string.deepLinkNotificationTitle))
.setSmallIcon(R.drawable.donut_with_sprinkles)
val text = context.getString(R.string.addDonutInfo)
val notification = builder.setContentText(text)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(intent)
.setAutoCancel(true)
.build()
val notificationManager = NotificationManagerCompat.from(context)
// Remove prior notifications; only allow one at a time to edit the latest item
notificationManager.cancelAll()
notificationManager.notify(id.toInt(), notification)
}
}
Loading