diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c4d9d0c2..1e0ba27f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,18 +25,6 @@
android:name=".activities.HomeActivity"
android:windowSoftInputMode="adjustNothing"
android:exported="false" />
-
-
-
-
diff --git a/app/src/main/java/com/example/petstoremobile/activities/BaseActivity.java b/app/src/main/java/com/example/petstoremobile/activities/BaseActivity.java
deleted file mode 100644
index d0cd6d38..00000000
--- a/app/src/main/java/com/example/petstoremobile/activities/BaseActivity.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.example.petstoremobile.activities;
-
-import android.content.Intent;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import com.example.petstoremobile.R;
-import com.example.petstoremobile.activities.listactivities.AdoptionActivity;
-import com.example.petstoremobile.activities.listactivities.AppointmentActivity;
-import com.example.petstoremobile.activities.listactivities.InventoryActivity;
-import com.example.petstoremobile.activities.listactivities.ProductActivity;
-
-public class BaseActivity extends AppCompatActivity {
- //Inflate the shared menu
- @Override
- public boolean onCreateOptionsMenu(Menu menu){
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
-
- //Handle menu clicks
- @Override
- public boolean onOptionsItemSelected(MenuItem item){
- if (item.getItemId() == R.id.menu_pets) {
-// if (!(this instanceof PetActivity)) {
-// startActivity(new Intent(this, PetActivity.class));
-// }
- } else if (item.getItemId() == R.id.menu_adoption) {
- if (!(this instanceof AdoptionActivity)) {
- startActivity(new Intent(this, AdoptionActivity.class));
- }
- } else if (item.getItemId() == R.id.menu_appointments) {
- if (!(this instanceof AppointmentActivity)) {
- startActivity(new Intent(this, AppointmentActivity.class));
- }
- } else if (item.getItemId() == R.id.menu_inventory) {
- if (!(this instanceof InventoryActivity)) {
- startActivity(new Intent(this, InventoryActivity.class));
- }
- } else if (item.getItemId() == R.id.menu_products) {
- if (!(this instanceof ProductActivity)) {
- startActivity(new Intent(this, ProductActivity.class));
- }
- }
- return super.onOptionsItemSelected(item);
- }
-
-}
diff --git a/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java b/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java
index a131750c..43040cae 100644
--- a/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java
+++ b/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java
@@ -1,10 +1,10 @@
package com.example.petstoremobile.activities;
-import android.content.Intent;
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -18,6 +18,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
public class HomeActivity extends AppCompatActivity {
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -37,7 +38,7 @@ public class HomeActivity extends AppCompatActivity {
loadFragment(new ListFragment());
bottomNav.setSelectedItemId(R.id.nav_list);
- //when an item in the bar is selected, load the corresponding fragment
+ //when an item in the bar is selected, load the corresponding fragment //TODO REPLACE THIS WITH DRAWER MENU
bottomNav.setOnItemSelectedListener(item -> {
if (item.getItemId() == R.id.nav_list) {
diff --git a/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java b/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java
index e3f23b16..c57caec1 100644
--- a/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java
+++ b/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java
@@ -9,6 +9,7 @@ import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -28,6 +29,7 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
+
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
diff --git a/app/src/main/java/com/example/petstoremobile/activities/listactivities/AdoptionActivity.java b/app/src/main/java/com/example/petstoremobile/activities/listactivities/AdoptionActivity.java
deleted file mode 100644
index 93db1aec..00000000
--- a/app/src/main/java/com/example/petstoremobile/activities/listactivities/AdoptionActivity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.petstoremobile.activities.listactivities;
-
-import android.os.Bundle;
-
-import androidx.activity.EdgeToEdge;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-
-import com.example.petstoremobile.R;
-import com.example.petstoremobile.activities.BaseActivity;
-
-public class AdoptionActivity extends BaseActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EdgeToEdge.enable(this);
- setContentView(R.layout.activity_adoption);
- ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
- Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
- v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
- return insets;
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/petstoremobile/activities/listactivities/AppointmentActivity.java b/app/src/main/java/com/example/petstoremobile/activities/listactivities/AppointmentActivity.java
deleted file mode 100644
index eefada95..00000000
--- a/app/src/main/java/com/example/petstoremobile/activities/listactivities/AppointmentActivity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.petstoremobile.activities.listactivities;
-
-import android.os.Bundle;
-
-import androidx.activity.EdgeToEdge;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-
-import com.example.petstoremobile.R;
-import com.example.petstoremobile.activities.BaseActivity;
-
-public class AppointmentActivity extends BaseActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EdgeToEdge.enable(this);
- setContentView(R.layout.activity_appointments);
- ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
- Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
- v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
- return insets;
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/petstoremobile/activities/listactivities/InventoryActivity.java b/app/src/main/java/com/example/petstoremobile/activities/listactivities/InventoryActivity.java
deleted file mode 100644
index 08556ad2..00000000
--- a/app/src/main/java/com/example/petstoremobile/activities/listactivities/InventoryActivity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.petstoremobile.activities.listactivities;
-
-import android.os.Bundle;
-
-import androidx.activity.EdgeToEdge;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-
-import com.example.petstoremobile.R;
-import com.example.petstoremobile.activities.BaseActivity;
-
-public class InventoryActivity extends BaseActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EdgeToEdge.enable(this);
- setContentView(R.layout.activity_inventory);
- ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
- Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
- v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
- return insets;
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/petstoremobile/activities/listactivities/ProductActivity.java b/app/src/main/java/com/example/petstoremobile/activities/listactivities/ProductActivity.java
deleted file mode 100644
index 19241c0b..00000000
--- a/app/src/main/java/com/example/petstoremobile/activities/listactivities/ProductActivity.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.petstoremobile.activities.listactivities;
-
-import android.os.Bundle;
-
-import androidx.activity.EdgeToEdge;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-
-import com.example.petstoremobile.R;
-import com.example.petstoremobile.activities.BaseActivity;
-
-public class ProductActivity extends BaseActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- EdgeToEdge.enable(this);
- setContentView(R.layout.activity_products);
- ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
- Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
- v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
- return insets;
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/petstoremobile/fragments/ListFragment.java b/app/src/main/java/com/example/petstoremobile/fragments/ListFragment.java
index b7dd1582..5e212f90 100644
--- a/app/src/main/java/com/example/petstoremobile/fragments/ListFragment.java
+++ b/app/src/main/java/com/example/petstoremobile/fragments/ListFragment.java
@@ -2,19 +2,15 @@ package com.example.petstoremobile.fragments;
import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.core.view.MenuProvider;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import androidx.lifecycle.Lifecycle;
-
+import android.widget.LinearLayout;
import com.example.petstoremobile.R;
@@ -25,46 +21,82 @@ import com.example.petstoremobile.fragments.listfragments.SupplierFragment;
//The Fragment for the displaying the list of entities to be viewed
public class ListFragment extends Fragment {
+ private DrawerLayout drawerLayout;
+ private LinearLayout drawerPets, drawerServices, drawerSuppliers;
+ private View touchBlocker;
+
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
+ //get controls from the layout
+ drawerLayout = view.findViewById(R.id.drawerLayout);
+ drawerPets = view.findViewById(R.id.drawerPets);
+ drawerServices = view.findViewById(R.id.drawerServices);
+ drawerSuppliers = view.findViewById(R.id.drawerSuppliers);
+
+ //needed to disable touches on the innerContainer while the drawer is open
+ touchBlocker = view.findViewById(R.id.touchBlocker);
+
//Display pets fragment by default
if (savedInstanceState == null) {
loadFragment(new PetFragment());
}
- //create a menu for the user to select what entity to view
- requireActivity().addMenuProvider(new MenuProvider() {
+ //add Listeners to the drawer so user won't be able to interact with the innerContainer (the list fragments)
+ //while the drawer is open
+ drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
- //inflate the menu
+ //When the drawer is opened, disable touches on the background
@Override
- public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
- menuInflater.inflate(R.menu.menu_main, menu);
+ public void onDrawerOpened(View drawerView) {
+ touchBlocker.setVisibility(View.VISIBLE);
+ touchBlocker.setClickable(true);
}
- //handle menu clicks
+ //When the drawer is closed, enable touches again
@Override
- public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
- //check what menu item is selected and load the corresponding fragment
- if (menuItem.getItemId() == R.id.menu_pets) {
- loadFragment(new PetFragment());
- return true;
- } else if (menuItem.getItemId() == R.id.menu_services) {
- loadFragment(new ServiceFragment());
- return true;
- } else if (menuItem.getItemId() == R.id.menu_suppliers) {
- loadFragment(new SupplierFragment());
- return true;
- }
- return false;
+ public void onDrawerClosed(View drawerView) {
+ touchBlocker.setVisibility(View.GONE);
+ touchBlocker.setClickable(false);
}
- }, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
+
+ //unused methods
+ @Override
+ public void onDrawerSlide(View drawerView, float slideOffset) {}
+ @Override
+ public void onDrawerStateChanged(int newState) {}
+ });
+
+ // Click listeners for each drawer
+ //Pets
+ drawerPets.setOnClickListener(v -> {
+ loadFragment(new PetFragment());
+ drawerLayout.closeDrawers();
+ });
+
+ //Services
+ drawerServices.setOnClickListener(v -> {
+ loadFragment(new ServiceFragment());
+ drawerLayout.closeDrawers();
+ });
+
+ //Suppliers
+ drawerSuppliers.setOnClickListener(v -> {
+ loadFragment(new SupplierFragment());
+ drawerLayout.closeDrawers();
+ });
return view;
}
+ //helper function to open the drawer
+ public void openDrawer() {
+ drawerLayout.openDrawer(GravityCompat.START);
+ }
+
// helper function to load the fragment into the display
public void loadFragment(Fragment fragment) {
getChildFragmentManager()
diff --git a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java
index 1120f78f..d436538e 100644
--- a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java
+++ b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageButton;
import com.example.petstoremobile.R;
import com.example.petstoremobile.adapters.PetAdapter;
@@ -24,6 +25,7 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen
private List petList = new ArrayList<>();
private PetAdapter adapter;
+ private ImageButton hamburger;
//load pet view
@Override
@@ -31,6 +33,8 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_pet, container, false);
+ hamburger = view.findViewById(R.id.btnHamburger);
+
loadPetData(); //TODO: Replace this with actual data when backend is working
setupRecyclerView(view);
@@ -38,6 +42,15 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen
FloatingActionButton fabAddPet = view.findViewById(R.id.fabAddPet);
fabAddPet.setOnClickListener(v -> openPetDetails(-1));
+ //Make the hamburger button open the drawer from listFragment
+ hamburger.setOnClickListener(v -> {
+ ListFragment listFragment = (ListFragment) getParentFragment();
+ //if list fragment is found then use its helper function to open the drawer
+ if (listFragment != null) {
+ listFragment.openDrawer();
+ }
+ });
+
return view;
}
diff --git a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/ServiceFragment.java b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/ServiceFragment.java
index e68b049d..17426a95 100644
--- a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/ServiceFragment.java
+++ b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/ServiceFragment.java
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageButton;
import com.example.petstoremobile.R;
import com.example.petstoremobile.adapters.ServiceAdapter;
@@ -24,6 +25,7 @@ public class ServiceFragment extends Fragment implements ServiceAdapter.OnServic
private List serviceList = new ArrayList<>();
private ServiceAdapter adapter;
+ private ImageButton hamburger;
//load service view
@Override
@@ -31,6 +33,8 @@ public class ServiceFragment extends Fragment implements ServiceAdapter.OnServic
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_service, container, false);
+ hamburger = view.findViewById(R.id.btnHamburger);
+
loadServiceData(); //TODO: Replace this with actual data when backend is working
setupRecyclerView(view);
@@ -38,6 +42,15 @@ public class ServiceFragment extends Fragment implements ServiceAdapter.OnServic
FloatingActionButton fabAddService = view.findViewById(R.id.fabAddService);
fabAddService.setOnClickListener(v -> openServiceDetails(-1));
+ //Make the hamburger button open the drawer from listFragment
+ hamburger.setOnClickListener(v -> {
+ ListFragment listFragment = (ListFragment) getParentFragment();
+ //if list fragment is found then use its helper function to open the drawer
+ if (listFragment != null) {
+ listFragment.openDrawer();
+ }
+ });
+
return view;
}
diff --git a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SupplierFragment.java b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SupplierFragment.java
index d962408f..0e12dcd4 100644
--- a/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SupplierFragment.java
+++ b/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SupplierFragment.java
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageButton;
import com.example.petstoremobile.R;
import com.example.petstoremobile.adapters.SupplierAdapter;
@@ -24,6 +25,7 @@ public class SupplierFragment extends Fragment implements SupplierAdapter.OnSupp
private List supplierList = new ArrayList<>();
private SupplierAdapter adapter;
+ private ImageButton hamburger;
//load supplier view
@Override
@@ -31,6 +33,8 @@ public class SupplierFragment extends Fragment implements SupplierAdapter.OnSupp
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_supplier, container, false);
+ hamburger = view.findViewById(R.id.btnHamburger);
+
loadSupplierData(); //TODO: Replace this with actual data when backend is working
setupRecyclerView(view);
@@ -38,6 +42,15 @@ public class SupplierFragment extends Fragment implements SupplierAdapter.OnSupp
FloatingActionButton fabAddSupplier = view.findViewById(R.id.fabAddSupplier);
fabAddSupplier.setOnClickListener(v -> openSupplierDetails(-1));
+ //Make the hamburger button open the drawer from listFragment
+ hamburger.setOnClickListener(v -> {
+ ListFragment listFragment = (ListFragment) getParentFragment();
+ //if list fragment is found then use its helper function to open the drawer
+ if (listFragment != null) {
+ listFragment.openDrawer();
+ }
+ });
+
return view;
}
diff --git a/app/src/main/res/color/bottom_nav_colors.xml b/app/src/main/res/color/bottom_nav_colors.xml
new file mode 100644
index 00000000..c170f0da
--- /dev/null
+++ b/app/src/main/res/color/bottom_nav_colors.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/baseline_menu_36.xml b/app/src/main/res/drawable/baseline_menu_36.xml
new file mode 100644
index 00000000..f25be2a9
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_menu_36.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_adoption.xml b/app/src/main/res/layout/activity_adoption.xml
deleted file mode 100644
index 59413945..00000000
--- a/app/src/main/res/layout/activity_adoption.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_appointments.xml b/app/src/main/res/layout/activity_appointments.xml
deleted file mode 100644
index c58bd08d..00000000
--- a/app/src/main/res/layout/activity_appointments.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index c45269b2..c7b9f3ea 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -4,7 +4,8 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:background="@color/background_grey">
+ android:background="@color/primary_dark"
+ app:itemIconTint="@color/bottom_nav_colors"
+ app:itemTextColor="@color/bottom_nav_colors"
+ app:menu="@menu/bottom_nav_menu"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inventory.xml b/app/src/main/res/layout/activity_inventory.xml
deleted file mode 100644
index 0d4d537a..00000000
--- a/app/src/main/res/layout/activity_inventory.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 1022551e..afe1e884 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,73 +1,111 @@
+ android:background="@color/primary_dark">
-
+
-
+
-
+
-
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_weight="0.2"
+ android:background="@color/white"
+ android:padding="32dp">
-
+
-
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_products.xml b/app/src/main/res/layout/activity_products.xml
deleted file mode 100644
index e791bd10..00000000
--- a/app/src/main/res/layout/activity_products.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml
index a12a1492..d3d23f4c 100644
--- a/app/src/main/res/layout/fragment_chat.xml
+++ b/app/src/main/res/layout/fragment_chat.xml
@@ -3,16 +3,32 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:background="#F5F5F5"
- android:fitsSystemWindows="true">
+ android:background="@color/background_grey">
+
+
+
+
+
+
+ android:padding="8dp">
+ android:background="@color/white">
+ android:text="Send"
+ android:backgroundTint="@color/accent_coral"
+ android:textColor="@color/white"/>
diff --git a/app/src/main/res/layout/fragment_list.xml b/app/src/main/res/layout/fragment_list.xml
index dcc96372..843b0b77 100644
--- a/app/src/main/res/layout/fragment_list.xml
+++ b/app/src/main/res/layout/fragment_list.xml
@@ -1,7 +1,138 @@
-
\ No newline at end of file
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pet.xml b/app/src/main/res/layout/fragment_pet.xml
index a901aded..9245eb02 100644
--- a/app/src/main/res/layout/fragment_pet.xml
+++ b/app/src/main/res/layout/fragment_pet.xml
@@ -2,15 +2,43 @@
+ android:background="@color/background_grey">
+
+
+
+
+
+
+
+
+ app:srcCompat="@android:drawable/ic_input_add"
+ app:tint="@color/white"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pet_detail.xml b/app/src/main/res/layout/fragment_pet_detail.xml
index 8dbd4f9e..d8d0f9b6 100644
--- a/app/src/main/res/layout/fragment_pet_detail.xml
+++ b/app/src/main/res/layout/fragment_pet_detail.xml
@@ -1,191 +1,195 @@
+ android:background="@color/background_grey">
+ android:textColor="@color/white"
+ android:textSize="20sp"
+ android:textStyle="bold" />
+ android:backgroundTint="@color/accent_coral"
+ android:text="Delete"
+ android:textColor="@color/white" />
+
-
-
-
+ android:layout_height="0dp"
+ android:layout_weight="1">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="horizontal"
+ android:background="@color/white"
+ android:padding="16dp">
+ android:layout_marginEnd="8dp"
+ android:text="Back"
+ android:backgroundTint="@color/primary_medium"
+ android:textColor="@color/white"/>
+ android:backgroundTint="@color/accent_coral"
+ android:text="Save"
+ android:textColor="@color/white" />
diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml
index 0342a165..ad7279ac 100644
--- a/app/src/main/res/layout/fragment_profile.xml
+++ b/app/src/main/res/layout/fragment_profile.xml
@@ -2,50 +2,62 @@
+ android:background="@color/background_grey">
-
-
-
-
-
-
+ android:orientation="vertical">
+ android:background="@color/primary_dark"
+ android:gravity="center_horizontal"
+ android:paddingTop="32dp"
+ android:paddingBottom="32dp">
+
+
+
+
+
+
+
+
+
+
@@ -82,6 +94,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Edit"
+ android:textColor="@color/accent_coral"
style="@style/Widget.Material3.Button.TextButton"/>
@@ -116,9 +129,9 @@
android:id="@+id/tvProfilePhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="111-222-3333"
- android:textSize="16sp"
- android:textColor="#000000"/>
+ android:text="(123) 123-1234"
+ android:textColor="@color/text_dark"
+ android:textSize="16sp" />
@@ -127,6 +140,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Edit"
+ android:textColor="@color/accent_coral"
style="@style/Widget.Material3.Button.TextButton"/>
@@ -162,7 +176,7 @@
android:layout_height="wrap_content"
android:text="Manager"
android:textSize="16sp"
- android:textColor="#2196F3"/>
+ android:textColor="@color/accent_coral"/>
@@ -174,9 +188,12 @@
android:id="@+id/btnLogout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="24dp"
android:text="Log Out"
- android:backgroundTint="#F44336"
- android:textColor="#FFFFFF"/>
+ android:backgroundTint="@color/accent_coral"
+ android:textColor="@color/white"/>
diff --git a/app/src/main/res/layout/fragment_service.xml b/app/src/main/res/layout/fragment_service.xml
index 724bb08f..b3ec4a56 100644
--- a/app/src/main/res/layout/fragment_service.xml
+++ b/app/src/main/res/layout/fragment_service.xml
@@ -2,15 +2,43 @@
+ android:background="@color/background_grey">
+
+
+
+
+
+
+
+
+ app:srcCompat="@android:drawable/ic_input_add"
+ app:tint="@color/white"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_service_detail.xml b/app/src/main/res/layout/fragment_service_detail.xml
index 5e5f6ea0..72831871 100644
--- a/app/src/main/res/layout/fragment_service_detail.xml
+++ b/app/src/main/res/layout/fragment_service_detail.xml
@@ -1,155 +1,174 @@
+ android:background="@color/background_grey">
+ android:textColor="@color/white"
+ android:textSize="20sp"
+ android:textStyle="bold" />
+ android:backgroundTint="@color/accent_coral"
+ android:text="Delete"
+ android:textColor="@color/white" />
-
-
-
+ android:layout_height="0dp"
+ android:layout_weight="1">
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="horizontal"
+ android:background="@color/white"
+ android:padding="16dp">
+ android:layout_marginEnd="8dp"
+ android:text="Back"
+ android:backgroundTint="@color/primary_medium"
+ android:textColor="@color/white"/>
+ android:layout_marginStart="8dp"
+ android:text="Save"
+ android:backgroundTint="@color/accent_coral"
+ android:textColor="@color/white"/>
diff --git a/app/src/main/res/layout/fragment_supplier.xml b/app/src/main/res/layout/fragment_supplier.xml
index 9e2bcab2..9e71a617 100644
--- a/app/src/main/res/layout/fragment_supplier.xml
+++ b/app/src/main/res/layout/fragment_supplier.xml
@@ -2,15 +2,43 @@
+ android:background="@color/background_grey">
+
+
+
+
+
+
+
+
+ app:srcCompat="@android:drawable/ic_input_add"
+ app:tint="@color/white"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_supplier_detail.xml b/app/src/main/res/layout/fragment_supplier_detail.xml
index 673635ed..82635a07 100644
--- a/app/src/main/res/layout/fragment_supplier_detail.xml
+++ b/app/src/main/res/layout/fragment_supplier_detail.xml
@@ -1,149 +1,180 @@
+ android:background="@color/background_grey">
+ android:textColor="@color/white"
+ android:textSize="20sp"
+ android:textStyle="bold"/>
+ android:backgroundTint="@color/accent_coral"
+ android:text="Delete"
+ android:textColor="@color/white" />
-
-
-
+ android:layout_height="0dp"
+ android:layout_weight="1">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="horizontal"
+ android:background="@color/white"
+ android:padding="16dp">
+ android:layout_marginEnd="8dp"
+ android:text="Back"
+ android:backgroundTint="@color/primary_medium"
+ android:textColor="@color/white"/>
+ android:layout_marginStart="8dp"
+ android:text="Save"
+ android:backgroundTint="@color/accent_coral"
+ android:textColor="@color/white"/>
diff --git a/app/src/main/res/layout/item_pet.xml b/app/src/main/res/layout/item_pet.xml
index 9d05fdcc..d93bf881 100644
--- a/app/src/main/res/layout/item_pet.xml
+++ b/app/src/main/res/layout/item_pet.xml
@@ -3,21 +3,27 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="16dp"
- android:background="@android:color/white">
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp"
+ android:background="@color/white">
+ android:orientation="horizontal"
+ android:gravity="center_vertical">
@@ -25,14 +31,14 @@
android:id="@+id/tvPetStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="#4CAF50"
android:paddingStart="8dp"
- android:paddingTop="4dp"
+ android:paddingTop="3dp"
android:paddingEnd="8dp"
- android:paddingBottom="4dp"
- android:text="Pet Status"
- android:textColor="#FFFFFF"
- android:textSize="12sp" />
+ android:paddingBottom="3dp"
+ android:text="Status"
+ android:textAllCaps="true"
+ android:textColor="@color/white"
+ android:textSize="11sp" />
@@ -41,40 +47,43 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
- android:text="pet species and breed"
- android:textColor="#666666"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="Breed"
+ android:textColor="#888888"
android:textSize="14sp" />
-
-
+ android:gravity="center_vertical"
+ android:layout_marginTop="8dp">
+
+
+ android:text="1"
+ android:textColor="#888888"
+ android:textSize="13sp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_service.xml b/app/src/main/res/layout/item_service.xml
index e821c317..775203e5 100644
--- a/app/src/main/res/layout/item_service.xml
+++ b/app/src/main/res/layout/item_service.xml
@@ -3,15 +3,20 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="16dp"
- android:background="@android:color/white">
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp"
+ android:background="@color/white">
@@ -20,14 +25,17 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
- android:text="Service Desc"
- android:textColor="#666666"
- android:textSize="14sp" />
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="Description"
+ android:textColor="#888888"
+ android:textSize="13sp" />
+ android:text="Duration"
+ android:textColor="#888888"
+ android:textSize="13sp" />
@@ -53,7 +61,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_supplier.xml b/app/src/main/res/layout/item_supplier.xml
index 87cb8cce..d2a07491 100644
--- a/app/src/main/res/layout/item_supplier.xml
+++ b/app/src/main/res/layout/item_supplier.xml
@@ -3,15 +3,20 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="16dp"
- android:background="@android:color/white">
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp"
+ android:background="@color/white">
@@ -20,14 +25,15 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
- android:text="SupContact"
- android:textColor="#666666"
- android:textSize="14sp" />
+ android:text="First Last"
+ android:textColor="#888888"
+ android:textSize="13sp" />
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="example@email.com"
+ android:textColor="#888888"
+ android:textSize="13sp" />
+ android:text="(123) 123-1234"
+ android:textColor="@color/accent_coral"
+ android:textSize="13sp" />
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index e76d6ab6..ea6ce791 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,7 +1,9 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index c8524cd9..24665e48 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,5 +1,14 @@
- #FF000000
- #FFFFFFFF
+ #2C3E50
+ #E74C3C
+ #34495E
+ #F5F5F5
+ #FFFFFF
+ #BDC3C7
+ #2C3E50
+ #3D5166
+ #2ECC71
+ #E74C3C
+ #3498DB
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 522b0d1a..3fbbf60e 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,8 +1,10 @@
-