diff --git a/app/app/src/main/AndroidManifest.xml b/app/app/src/main/AndroidManifest.xml index 0a64271..830e77d 100644 --- a/app/app/src/main/AndroidManifest.xml +++ b/app/app/src/main/AndroidManifest.xml @@ -38,6 +38,10 @@ <activity android:name=".RegisterActivity" android:exported="false" /> + + <activity + android:name=".CreateDishActivity" /> + </application> </manifest> \ No newline at end of file diff --git a/app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt b/app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt new file mode 100644 index 0000000..21e10ac --- /dev/null +++ b/app/app/src/main/java/tech/mercantec/easyeat/CreateDishActivity.kt @@ -0,0 +1,25 @@ +package tech.mercantec.easyeat + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar + +class CreateDishActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_create_dish_form) + + // Setup the Toolbar as ActionBar + val toolbar: Toolbar = findViewById(R.id.toolbar) + setSupportActionBar(toolbar) + + // Enable the Up button + supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + // Handle the Up button click + override fun onSupportNavigateUp(): Boolean { + onBackPressedDispatcher.onBackPressed() + return true + } +} 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..928257d 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/MainActivity.kt @@ -1,5 +1,6 @@ package tech.mercantec.easyeat +import android.content.Intent import android.os.Bundle import android.widget.ListView import android.widget.Toast @@ -9,6 +10,7 @@ import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController +import com.google.android.material.floatingactionbutton.FloatingActionButton import tech.mercantec.easyeat.databinding.ActivityMainBinding import tech.mercantec.easyeat.ui.home.DishAdapter import tech.mercantec.easyeat.models.Dish @@ -55,5 +57,11 @@ class MainActivity : AppCompatActivity() { val selectedItem = parent.getItemAtPosition(position) as Dish Toast.makeText(this, "you selected $selectedItem.name that costs ${selectedItem.expense} kr.", Toast.LENGTH_LONG).show() } + + findViewById<FloatingActionButton>(R.id.add_dish).setOnClickListener { + val intent = Intent(this, CreateDishActivity::class.java) + startActivity(intent) + } + } } diff --git a/app/app/src/main/res/layout/activity_create_dish_form.xml b/app/app/src/main/res/layout/activity_create_dish_form.xml new file mode 100644 index 0000000..b64643f --- /dev/null +++ b/app/app/src/main/res/layout/activity_create_dish_form.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="16dp"> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:title="Create Dish" + /> + + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/create_dish_heading" + android:textAlignment="center" + android:textSize="24sp" /> + + <include + layout="@layout/activity_create_dish_ingredient_row" /> + + <Button + android:id="@+id/addIngredientButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Add Ingredient" + android:layout_gravity="center_horizontal" + android:layout_marginTop="16dp"/> +</LinearLayout> diff --git a/app/app/src/main/res/layout/activity_create_dish_ingredient_row.xml b/app/app/src/main/res/layout/activity_create_dish_ingredient_row.xml new file mode 100644 index 0000000..7876c99 --- /dev/null +++ b/app/app/src/main/res/layout/activity_create_dish_ingredient_row.xml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dp"> + + <!-- Ingredient Field --> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="2dp" + android:text="@string/ingredient_label" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="58dp" + android:hint="Ingredient name" /> + + <!-- Row: Amount + Measurement --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginTop="8dp"> + + <!-- Amount field (fixed width) --> + <LinearLayout + android:layout_width="174dp" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/amount_label" /> + + <EditText + android:layout_width="173dp" + android:layout_height="48dp" + android:hint="0" /> + </LinearLayout> + + <!-- Measurement field (fill rest) --> + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:layout_marginStart="8dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/measurement_label" /> + + <Spinner + android:id="@+id/spinner" + android:layout_width="match_parent" + android:layout_height="48dp" /> + </LinearLayout> + + <!-- Remove Button (fixed width) --> + <Button + android:id="@+id/removeButton" + android:layout_width="48dp" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:text="-" + android:textSize="20dp" + android:backgroundTint="@color/red"/> + </LinearLayout> + + + +</LinearLayout> + + diff --git a/app/app/src/main/res/layout/activity_main.xml b/app/app/src/main/res/layout/activity_main.xml index eb29570..dc46ef8 100644 --- a/app/app/src/main/res/layout/activity_main.xml +++ b/app/app/src/main/res/layout/activity_main.xml @@ -1,34 +1,49 @@ <?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:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="?attr/actionBarSize"> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/add_dish" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:contentDescription="@string/add_label" + app:srcCompat="@android:drawable/ic_input_add" + app:backgroundTint="@color/cyan" + app:tint="@android:color/white" + app:layout_constraintBottom_toTopOf="@id/nav_view" + app:layout_constraintEnd_toEndOf="parent" /> + + + <!-- Navigation Fragment --> <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_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - > + app:layout_constraintVertical_bias="1.0"> </ListView> - <!-- Navigation Fragment --> + <fragment android:id="@+id/nav_host_fragment_activity_main" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="0dp" android:layout_height="0dp" app:defaultNavHost="true" - app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/nav_view" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> <!-- Bottom Navigation --> @@ -38,8 +53,8 @@ android:layout_height="wrap_content" android:background="?android:attr/windowBackground" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:menu="@menu/bottom_nav_menu" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/app/src/main/res/values/colors.xml b/app/app/src/main/res/values/colors.xml index ddf9b59..9c94335 100644 --- a/app/app/src/main/res/values/colors.xml +++ b/app/app/src/main/res/values/colors.xml @@ -6,4 +6,5 @@ <color name="dark_gray">#FF757575</color> <color name="black">#FF242424</color> <color name="white">#FFF9F9F9</color> + <color name="red">#D62D2D </color> </resources> diff --git a/app/app/src/main/res/values/strings.xml b/app/app/src/main/res/values/strings.xml index 64b245e..80792cb 100644 --- a/app/app/src/main/res/values/strings.xml +++ b/app/app/src/main/res/values/strings.xml @@ -17,4 +17,10 @@ <string name="confirm_password_label">Confirm password</string> <string name="password_hint">••••••••</string> <string name="back_label">Back</string> + <string name="create_dish_heading">Create Dish</string> + <string name="ingredient_label">Ingredient</string> + <string name="measurement_label">Measurement</string> + <string name="amount_label">Amount</string> + <string name="add_label">Add</string> + </resources>