From 30b5a27d6009a50656682698a8f140d79a6f75de Mon Sep 17 00:00:00 2001
From: 62160052 <62160052@go.buu.ac.th>
Date: Wed, 21 Sep 2022 21:39:59 +0700
Subject: [PATCH] Navigation action: popUpToInclusive attribute

---
 .../main/java/com/example/cupcake/FlavorFragment.kt  |  5 +++++
 .../main/java/com/example/cupcake/PickupFragment.kt  |  5 +++++
 .../main/java/com/example/cupcake/SummaryFragment.kt |  6 ++++++
 app/src/main/res/layout/fragment_flavor.xml          |  1 +
 app/src/main/res/layout/fragment_pickup.xml          |  1 +
 app/src/main/res/layout/fragment_summary.xml         |  1 +
 app/src/main/res/navigation/nav_graph.xml            | 12 +++++++++---
 7 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/example/cupcake/FlavorFragment.kt b/app/src/main/java/com/example/cupcake/FlavorFragment.kt
index 9281484..35f2bf2 100644
--- a/app/src/main/java/com/example/cupcake/FlavorFragment.kt
+++ b/app/src/main/java/com/example/cupcake/FlavorFragment.kt
@@ -54,6 +54,11 @@ class FlavorFragment : Fragment() {
         }
     }
 
+    fun cancelOrder() {
+        sharedViewModel.resetOrder()
+        findNavController().navigate(R.id.action_flavorFragment_to_startFragment)
+    }
+
     /**
      * Navigate to the next screen to choose pickup date.
      */
diff --git a/app/src/main/java/com/example/cupcake/PickupFragment.kt b/app/src/main/java/com/example/cupcake/PickupFragment.kt
index 0a7f09f..47831c4 100644
--- a/app/src/main/java/com/example/cupcake/PickupFragment.kt
+++ b/app/src/main/java/com/example/cupcake/PickupFragment.kt
@@ -54,6 +54,11 @@ class PickupFragment : Fragment() {
         }
     }
 
+    fun cancelOrder() {
+        sharedViewModel.resetOrder()
+        findNavController().navigate(R.id.action_pickupFragment_to_startFragment)
+    }
+
     /**
      * Navigate to the next screen to see the order summary.
      */
diff --git a/app/src/main/java/com/example/cupcake/SummaryFragment.kt b/app/src/main/java/com/example/cupcake/SummaryFragment.kt
index dcdf4a7..a68fb73 100644
--- a/app/src/main/java/com/example/cupcake/SummaryFragment.kt
+++ b/app/src/main/java/com/example/cupcake/SummaryFragment.kt
@@ -23,6 +23,7 @@ import android.view.ViewGroup
 import android.widget.Toast
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
+import androidx.navigation.fragment.findNavController
 import com.example.cupcake.databinding.FragmentSummaryBinding
 
 /**
@@ -55,6 +56,11 @@ class SummaryFragment : Fragment() {
         }
     }
 
+    fun cancelOrder() {
+        sharedViewModel.resetOrder()
+        findNavController().navigate(R.id.action_summaryFragment_to_startFragment)
+    }
+
     /**
      * Submit the order by sharing out the order details to another app via an implicit intent.
      */
diff --git a/app/src/main/res/layout/fragment_flavor.xml b/app/src/main/res/layout/fragment_flavor.xml
index e3816eb..c1f6220 100644
--- a/app/src/main/res/layout/fragment_flavor.xml
+++ b/app/src/main/res/layout/fragment_flavor.xml
@@ -114,6 +114,7 @@
                 android:id="@+id/cancel_button"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
+                android:onClick="@{() -> flavorFragment.cancelOrder()}"
                 android:text="@string/cancel"
                 android:layout_marginEnd="@dimen/side_margin"
                 style="?attr/materialButtonOutlinedStyle"
diff --git a/app/src/main/res/layout/fragment_pickup.xml b/app/src/main/res/layout/fragment_pickup.xml
index fbba9ba..15bac55 100644
--- a/app/src/main/res/layout/fragment_pickup.xml
+++ b/app/src/main/res/layout/fragment_pickup.xml
@@ -109,6 +109,7 @@
             <Button
                 android:id="@+id/cancel_button"
                 style="?attr/materialButtonOutlinedStyle"
+                android:onClick="@{() -> pickupFragment.cancelOrder()}"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginEnd="@dimen/side_margin"
diff --git a/app/src/main/res/layout/fragment_summary.xml b/app/src/main/res/layout/fragment_summary.xml
index b7ad9e4..7dac7af 100644
--- a/app/src/main/res/layout/fragment_summary.xml
+++ b/app/src/main/res/layout/fragment_summary.xml
@@ -144,6 +144,7 @@
             <Button
                 android:id="@+id/cancel_button"
                 style="?attr/materialButtonOutlinedStyle"
+                android:onClick="@{() -> summaryFragment.cancelOrder()}"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/margin_between_elements"
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 99c61b1..4a6b71b 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -37,7 +37,9 @@
             app:destination="@id/pickupFragment" />
         <action
             android:id="@+id/action_flavorFragment_to_startFragment"
-            app:destination="@id/startFragment" />
+            app:destination="@id/startFragment"
+            app:popUpTo="@id/startFragment"
+            app:popUpToInclusive="true" />
     </fragment>
     <fragment
         android:id="@+id/pickupFragment"
@@ -49,7 +51,9 @@
             app:destination="@id/summaryFragment" />
         <action
             android:id="@+id/action_pickupFragment_to_startFragment"
-            app:destination="@id/startFragment" />
+            app:destination="@id/startFragment"
+            app:popUpTo="@id/startFragment"
+            app:popUpToInclusive="true" />
     </fragment>
     <fragment
         android:id="@+id/summaryFragment"
@@ -58,6 +62,8 @@
         tools:layout="@layout/fragment_summary" >
         <action
             android:id="@+id/action_summaryFragment_to_startFragment"
-            app:destination="@id/startFragment" />
+            app:destination="@id/startFragment"
+            app:popUpTo="@id/startFragment"
+            app:popUpToInclusive="true" />
     </fragment>
 </navigation>
\ No newline at end of file
-- 
GitLab