From 00ecfc84854bbb8a8585b3e7037762bf8bc46c30 Mon Sep 17 00:00:00 2001
From: Reimar <mail@reim.ar>
Date: Mon, 28 Apr 2025 10:44:55 +0200
Subject: [PATCH] Move dish list into fragment, rename home fragment, add icon

---
 .../tech/mercantec/easyeat/MainActivity.kt    | 28 +--------
 .../ui/{home => dishes}/DishAdapter.kt        |  2 +-
 .../easyeat/ui/dishes/DishesFragment.kt       | 57 +++++++++++++++++++
 .../mercantec/easyeat/ui/home/HomeFragment.kt | 42 --------------
 .../easyeat/ui/home/HomeViewModel.kt          | 13 -----
 .../main/res/drawable/ic_home_black_24dp.xml  |  9 ---
 .../res/drawable/ic_restaurant_black_24px.xml | 10 ++++
 app/app/src/main/res/layout/activity_main.xml | 18 +-----
 .../src/main/res/layout/fragment_dishes.xml   | 12 ++++
 app/app/src/main/res/layout/fragment_home.xml | 22 -------
 app/app/src/main/res/menu/bottom_nav_menu.xml |  4 +-
 .../main/res/navigation/mobile_navigation.xml |  8 +--
 12 files changed, 90 insertions(+), 135 deletions(-)
 rename app/app/src/main/java/tech/mercantec/easyeat/ui/{home => dishes}/DishAdapter.kt (96%)
 create mode 100644 app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt
 delete mode 100644 app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeFragment.kt
 delete mode 100644 app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeViewModel.kt
 delete mode 100644 app/app/src/main/res/drawable/ic_home_black_24dp.xml
 create mode 100644 app/app/src/main/res/drawable/ic_restaurant_black_24px.xml
 create mode 100644 app/app/src/main/res/layout/fragment_dishes.xml
 delete mode 100644 app/app/src/main/res/layout/fragment_home.xml

diff --git a/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt
index eaf691a..f3835dd 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt
@@ -1,8 +1,6 @@
 package tech.mercantec.easyeat
 
 import android.os.Bundle
-import android.widget.ListView
-import android.widget.Toast
 import com.google.android.material.bottomnavigation.BottomNavigationView
 import androidx.appcompat.app.AppCompatActivity
 import androidx.navigation.findNavController
@@ -10,8 +8,6 @@ import androidx.navigation.ui.AppBarConfiguration
 import androidx.navigation.ui.setupActionBarWithNavController
 import androidx.navigation.ui.setupWithNavController
 import tech.mercantec.easyeat.databinding.ActivityMainBinding
-import tech.mercantec.easyeat.ui.home.DishAdapter
-import tech.mercantec.easyeat.models.Dish
 
 class MainActivity : AppCompatActivity() {
 
@@ -28,32 +24,10 @@ class MainActivity : AppCompatActivity() {
         val navController = findNavController(R.id.nav_host_fragment_activity_main)
         val appBarConfiguration = AppBarConfiguration(
             setOf(
-                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
+                R.id.navigation_dishes, R.id.navigation_dashboard, R.id.navigation_notifications
             )
         )
         setupActionBarWithNavController(navController, appBarConfiguration)
         navView.setupWithNavController(navController)
-
-        val listView: ListView = findViewById(R.id.dishesList)
-        val listItems = arrayOf(
-            Dish("Spaghetti Bolognese", "Beef", 70.5),
-            Dish("Margherita Pizza", "Cheese", 60.0),
-            Dish("Chicken Curry", "Chicken", 80.2),
-            Dish("Vegetable Stir Fry", "Mixed Vegetables", 50.5),
-            Dish("Sushi", "Fish", 100.0),
-            Dish("Beef Tacos", "Beef", 60.8),
-            Dish("Lentil Soup", "Lentils", 40.5),
-            Dish("Pasta Alfredo", "Cream", 60.9),
-            Dish("Caesar Salad", "Chicken", 50.8),
-            Dish("Falafel Wrap", "Chickpeas", 50.2)
-        )
-
-        val listAdapter = DishAdapter(this, listItems)
-        listView.adapter = listAdapter
-
-        listView.setOnItemClickListener { parent, view, position, id ->
-            val selectedItem = parent.getItemAtPosition(position) as Dish
-            Toast.makeText(this, "you selected $selectedItem.name that costs ${selectedItem.expense} kr.", Toast.LENGTH_LONG).show()
-        }
     }
 }
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/DishAdapter.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
similarity index 96%
rename from app/app/src/main/java/tech/mercantec/easyeat/ui/home/DishAdapter.kt
rename to app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
index 99e9c56..cde2497 100644
--- a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/DishAdapter.kt
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishAdapter.kt
@@ -1,4 +1,4 @@
-package tech.mercantec.easyeat.ui.home
+package tech.mercantec.easyeat.ui.dishes
 
 import android.content.Context
 import android.view.LayoutInflater
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt
new file mode 100644
index 0000000..c54aeda
--- /dev/null
+++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/dishes/DishesFragment.kt
@@ -0,0 +1,57 @@
+package tech.mercantec.easyeat.ui.dishes
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.fragment.app.Fragment
+import tech.mercantec.easyeat.databinding.FragmentDishesBinding
+import tech.mercantec.easyeat.models.Dish
+
+class DishesFragment : Fragment() {
+
+    private var _binding: FragmentDishesBinding? = null
+
+    // This property is only valid between onCreateView and
+    // onDestroyView.
+    private val binding get() = _binding!!
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View {
+        _binding = FragmentDishesBinding.inflate(inflater, container, false)
+        val root: View = binding.root
+
+        context?.let { context ->
+            binding.dishesList.setOnItemClickListener { parent, view, position, id ->
+                val selectedItem = parent.getItemAtPosition(position) as Dish
+                Toast.makeText(context, "you selected $selectedItem.name that costs ${selectedItem.expense} kr.", Toast.LENGTH_LONG).show()
+            }
+
+            val listItems = arrayOf(
+                Dish("Spaghetti Bolognese", "Beef", 70.5),
+                Dish("Margherita Pizza", "Cheese", 60.0),
+                Dish("Chicken Curry", "Chicken", 80.2),
+                Dish("Vegetable Stir Fry", "Mixed Vegetables", 50.5),
+                Dish("Sushi", "Fish", 100.0),
+                Dish("Beef Tacos", "Beef", 60.8),
+                Dish("Lentil Soup", "Lentils", 40.5),
+                Dish("Pasta Alfredo", "Cream", 60.9),
+                Dish("Caesar Salad", "Chicken", 50.8),
+                Dish("Falafel Wrap", "Chickpeas", 50.2)
+            )
+
+            binding.dishesList.adapter = DishAdapter(context, listItems)
+        }
+
+        return root
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+}
\ No newline at end of file
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeFragment.kt
deleted file mode 100644
index 0cfcf3a..0000000
--- a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeFragment.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package tech.mercantec.easyeat.ui.home
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.TextView
-import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModelProvider
-import tech.mercantec.easyeat.databinding.FragmentHomeBinding
-
-class HomeFragment : Fragment() {
-
-    private var _binding: FragmentHomeBinding? = null
-
-    // This property is only valid between onCreateView and
-    // onDestroyView.
-    private val binding get() = _binding!!
-
-    override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View {
-        val homeViewModel =
-            ViewModelProvider(this).get(HomeViewModel::class.java)
-
-        _binding = FragmentHomeBinding.inflate(inflater, container, false)
-        val root: View = binding.root
-
-        val textView: TextView = binding.textHome
-        homeViewModel.text.observe(viewLifecycleOwner) {
-            textView.text = it
-        }
-        return root
-    }
-
-    override fun onDestroyView() {
-        super.onDestroyView()
-        _binding = null
-    }
-}
\ No newline at end of file
diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeViewModel.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeViewModel.kt
deleted file mode 100644
index 82f3c4f..0000000
--- a/app/app/src/main/java/tech/mercantec/easyeat/ui/home/HomeViewModel.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package tech.mercantec.easyeat.ui.home
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-
-class HomeViewModel : ViewModel() {
-
-    private val _text = MutableLiveData<String>().apply {
-        value = "This is home Fragment"
-    }
-    val text: LiveData<String> = _text
-}
\ No newline at end of file
diff --git a/app/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/app/src/main/res/drawable/ic_home_black_24dp.xml
deleted file mode 100644
index f8bb0b5..0000000
--- a/app/app/src/main/res/drawable/ic_home_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" />
-</vector>
diff --git a/app/app/src/main/res/drawable/ic_restaurant_black_24px.xml b/app/app/src/main/res/drawable/ic_restaurant_black_24px.xml
new file mode 100644
index 0000000..393b7c9
--- /dev/null
+++ b/app/app/src/main/res/drawable/ic_restaurant_black_24px.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M280,880L280,514Q229,500 194.5,458Q160,416 160,360L160,80L240,80L240,360L280,360L280,80L360,80L360,360L400,360L400,80L480,80L480,360Q480,416 445.5,458Q411,500 360,514L360,880L280,880ZM680,880L680,560L560,560L560,280Q560,197 618.5,138.5Q677,80 760,80L760,880L680,880Z"/>
+</vector>
diff --git a/app/app/src/main/res/layout/activity_main.xml b/app/app/src/main/res/layout/activity_main.xml
index eb29570..8d677f4 100644
--- a/app/app/src/main/res/layout/activity_main.xml
+++ b/app/app/src/main/res/layout/activity_main.xml
@@ -1,23 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/container"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="?attr/actionBarSize">
+    android:layout_height="match_parent">
 
-    <ListView
-        android:id="@+id/dishesList"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_marginTop="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        >
-
-    </ListView>
     <!-- Navigation Fragment -->
     <fragment
         android:id="@+id/nav_host_fragment_activity_main"
diff --git a/app/app/src/main/res/layout/fragment_dishes.xml b/app/app/src/main/res/layout/fragment_dishes.xml
new file mode 100644
index 0000000..7d6b6b4
--- /dev/null
+++ b/app/app/src/main/res/layout/fragment_dishes.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <ListView
+        android:id="@+id/dishes_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="8dp"
+    />
+</FrameLayout>
diff --git a/app/app/src/main/res/layout/fragment_home.xml b/app/app/src/main/res/layout/fragment_home.xml
deleted file mode 100644
index f3d9b08..0000000
--- a/app/app/src/main/res/layout/fragment_home.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".ui.home.HomeFragment">
-
-    <TextView
-        android:id="@+id/text_home"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="8dp"
-        android:layout_marginTop="8dp"
-        android:layout_marginEnd="8dp"
-        android:textAlignment="center"
-        android:textSize="20sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/app/src/main/res/menu/bottom_nav_menu.xml b/app/app/src/main/res/menu/bottom_nav_menu.xml
index 8525ec3..fddba85 100644
--- a/app/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/app/app/src/main/res/menu/bottom_nav_menu.xml
@@ -2,8 +2,8 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item
-        android:id="@+id/navigation_home"
-        android:icon="@drawable/ic_home_black_24dp"
+        android:id="@+id/navigation_dishes"
+        android:icon="@drawable/ic_restaurant_black_24px"
         android:title="@string/title_your_dishes" />
 
     <item
diff --git a/app/app/src/main/res/navigation/mobile_navigation.xml b/app/app/src/main/res/navigation/mobile_navigation.xml
index ee9ee56..360f28c 100644
--- a/app/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/app/src/main/res/navigation/mobile_navigation.xml
@@ -3,13 +3,13 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/mobile_navigation"
-    app:startDestination="@+id/navigation_home">
+    app:startDestination="@+id/navigation_dishes">
 
     <fragment
-        android:id="@+id/navigation_home"
-        android:name="tech.mercantec.easyeat.ui.home.HomeFragment"
+        android:id="@+id/navigation_dishes"
+        android:name="tech.mercantec.easyeat.ui.dishes.DishesFragment"
         android:label="@string/title_your_dishes"
-        tools:layout="@layout/fragment_home" />
+        tools:layout="@layout/fragment_dishes" />
 
     <fragment
         android:id="@+id/navigation_dashboard"