From 26c437261ff20b580138fe58e76a6fe407bf2785 Mon Sep 17 00:00:00 2001 From: Alex <78383757+Lextical@users.noreply.github.com> Date: Sun, 29 Mar 2026 21:47:49 -0600 Subject: [PATCH] added pet images to petfragment and changed other views to look consistant --- .../activities/HomeActivity.java | 7 + .../activities/MainActivity.java | 7 + .../adapters/BlackTextArrayAdapter.java | 44 ++++++ .../adapters/InventoryAdapter.java | 6 +- .../petstoremobile/adapters/PetAdapter.java | 19 +++ .../listfragments/InventoryFragment.java | 3 +- .../fragments/listfragments/PetFragment.java | 10 +- .../fragments/listfragments/SaleFragment.java | 20 ++- .../AdoptionDetailFragment.java | 7 +- .../AppointmentDetailFragment.java | 15 +- .../InventoryDetailFragment.java | 3 +- .../detailfragments/PetDetailFragment.java | 15 +- .../ProductDetailFragment.java | 3 +- .../ProductSupplierDetailFragment.java | 5 +- .../detailfragments/RefundDetailFragment.java | 5 +- .../app/src/main/res/layout/activity_home.xml | 5 +- .../main/res/layout/fragment_inventory.xml | 49 +++--- .../app/src/main/res/layout/fragment_pet.xml | 3 +- .../res/layout/fragment_purchase_order.xml | 3 +- .../app/src/main/res/layout/fragment_sale.xml | 33 +++- .../app/src/main/res/layout/item_adoption.xml | 141 ++++++++++-------- .../src/main/res/layout/item_inventory.xml | 75 +++++----- android/app/src/main/res/layout/item_pet.xml | 135 ++++++++++------- .../app/src/main/res/layout/item_product.xml | 115 +++++++------- .../main/res/layout/item_product_supplier.xml | 73 +++++---- .../main/res/layout/item_purchase_order.xml | 124 ++++++++------- android/app/src/main/res/values/colors.xml | 1 + android/app/src/main/res/values/strings.xml | 1 + android/app/src/main/res/values/themes.xml | 7 +- 29 files changed, 569 insertions(+), 365 deletions(-) create mode 100644 android/app/src/main/java/com/example/petstoremobile/adapters/BlackTextArrayAdapter.java diff --git a/android/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java b/android/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java index 2f6c9722..aea1f427 100644 --- a/android/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java +++ b/android/app/src/main/java/com/example/petstoremobile/activities/HomeActivity.java @@ -38,9 +38,16 @@ public class HomeActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + EdgeToEdge.enable(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); + 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; + }); + //get the bottom navbar from the layout bottomNav = findViewById(R.id.bottom_navigation); diff --git a/android/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java b/android/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java index 8ce61921..94a51ac3 100644 --- a/android/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java +++ b/android/app/src/main/java/com/example/petstoremobile/activities/MainActivity.java @@ -36,6 +36,7 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + EdgeToEdge.enable(this); super.onCreate(savedInstanceState); // Check if user is already logged in @@ -54,6 +55,12 @@ public class MainActivity extends AppCompatActivity { 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); + return insets; + }); + //get all controls from layout tvLoginStatus = findViewById(R.id.tvLoginStatus); etUser = findViewById(R.id.etUser); diff --git a/android/app/src/main/java/com/example/petstoremobile/adapters/BlackTextArrayAdapter.java b/android/app/src/main/java/com/example/petstoremobile/adapters/BlackTextArrayAdapter.java new file mode 100644 index 00000000..22af59de --- /dev/null +++ b/android/app/src/main/java/com/example/petstoremobile/adapters/BlackTextArrayAdapter.java @@ -0,0 +1,44 @@ +package com.example.petstoremobile.adapters; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import com.example.petstoremobile.R; +import java.util.List; + +// A class that overrides the arrayAdapter so the text color changes based on theme +public class BlackTextArrayAdapter extends ArrayAdapter { + public BlackTextArrayAdapter(@NonNull Context context, int resource, @NonNull T[] objects) { + super(context, resource, objects); + } + + public BlackTextArrayAdapter(@NonNull Context context, int resource, @NonNull List objects) { + super(context, resource, objects); + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + View view = super.getView(position, convertView, parent); + view.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.white)); + if (view instanceof TextView) { + ((TextView) view).setTextColor(ContextCompat.getColor(getContext(), R.color.spinner_text)); + } + return view; + } + + @Override + public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + View view = super.getDropDownView(position, convertView, parent); + view.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.white)); + if (view instanceof TextView) { + ((TextView) view).setTextColor(ContextCompat.getColor(getContext(), R.color.spinner_text)); + } + return view; + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/example/petstoremobile/adapters/InventoryAdapter.java b/android/app/src/main/java/com/example/petstoremobile/adapters/InventoryAdapter.java index 63290ae7..1e455cc6 100644 --- a/android/app/src/main/java/com/example/petstoremobile/adapters/InventoryAdapter.java +++ b/android/app/src/main/java/com/example/petstoremobile/adapters/InventoryAdapter.java @@ -63,10 +63,12 @@ public class InventoryAdapter extends RecyclerView.Adapter { // Get the controls of each row in recycler view public static class PetViewHolder extends RecyclerView.ViewHolder { TextView tvPetName, tvPetSpeciesBreed, tvPetAge, tvPetPrice, tvPetStatus; + ImageView ivPetProfile; public PetViewHolder(@NonNull View v) { super(v); @@ -38,6 +45,7 @@ public class PetAdapter extends RecyclerView.Adapter { tvPetAge = v.findViewById(R.id.tvPetAge); tvPetPrice = v.findViewById(R.id.tvPetPrice); tvPetStatus = v.findViewById(R.id.tvPetStatus); + ivPetProfile = v.findViewById(R.id.ivPetProfile); } } @@ -74,6 +82,17 @@ public class PetAdapter extends RecyclerView.Adapter { holder.tvPetStatus.setBackgroundColor(Color.parseColor("#F44336")); } + // Load pet image using Glide with circle crop + String imageUrl = RetrofitClient.BASE_URL + String.format(PetApi.PET_IMAGE_PATH, pet.getPetId()); + Glide.with(holder.itemView.getContext()) + .load(imageUrl) + .circleCrop() + .diskCacheStrategy(DiskCacheStrategy.NONE) + .skipMemoryCache(true) + .placeholder(R.drawable.placeholder) + .error(R.drawable.placeholder) + .into(holder.ivPetProfile); + //when a row is clicked, open the detail view holder.itemView.setOnClickListener(v -> petClickListener.onPetClick(position)); } diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/InventoryFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/InventoryFragment.java index 6eb27fb4..37e533ee 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/InventoryFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/InventoryFragment.java @@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.adapters.InventoryAdapter; import com.example.petstoremobile.api.CategoryApi; import com.example.petstoremobile.api.InventoryApi; @@ -140,7 +141,7 @@ public class InventoryFragment extends Fragment implements InventoryAdapter.OnIn categoryNames.add(c.getCategoryName()); } - ArrayAdapter spinnerAdapter = new ArrayAdapter<>( + BlackTextArrayAdapter spinnerAdapter = new BlackTextArrayAdapter<>( requireContext(), android.R.layout.simple_spinner_item, categoryNames); diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java index 91257673..4c8effcf 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/PetFragment.java @@ -21,6 +21,7 @@ import android.widget.Spinner; import android.widget.Toast; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.adapters.PetAdapter; import com.example.petstoremobile.api.PetApi; import com.example.petstoremobile.api.RetrofitClient; @@ -63,7 +64,6 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen setupSearch(view); setupStatusFilter(view); setupSwipeRefresh(view); - loadPetData(); //Add button to opens the add dialog @@ -82,6 +82,12 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen return view; } + @Override + public void onResume() { + super.onResume(); + loadPetData(); + } + private void setupSearch(View view) { etSearch = view.findViewById(R.id.etSearchPet); etSearch.addTextChangedListener(new TextWatcher() { @@ -97,7 +103,7 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen private void setupStatusFilter(View view) { spinnerStatus = view.findViewById(R.id.spinnerStatus); String[] statuses = {"All Statuses", "Available", "Adopted"}; - ArrayAdapter adapter = new ArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, statuses); + BlackTextArrayAdapter adapter = new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, statuses); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerStatus.setAdapter(adapter); diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SaleFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SaleFragment.java index 544cd378..c813aa5a 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SaleFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/SaleFragment.java @@ -11,6 +11,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; +import android.widget.ImageButton; + import com.example.petstoremobile.R; import com.example.petstoremobile.adapters.SaleAdapter; import com.example.petstoremobile.fragments.ListFragment; @@ -26,25 +28,37 @@ public class SaleFragment extends Fragment implements SaleAdapter.OnSaleClickLis private SaleAdapter adapter; private SwipeRefreshLayout swipeRefreshLayout; private EditText etSearch; + private ImageButton btnHamburger; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_sale, container, false); + btnHamburger = view.findViewById(R.id.btnHamburger); + setupRecyclerView(view); loadSaleData(); setupSearch(view); setupSwipeRefresh(view); + // Make the hamburger button open the drawer from listFragment + if (btnHamburger != null) { + btnHamburger.setOnClickListener(v -> { + ListFragment listFragment = (ListFragment) getParentFragment(); + if (listFragment != null) { + listFragment.openDrawer(); + } + }); + } + return view; } private void setupSearch(View view) { etSearch = view.findViewById(R.id.etSearchSale); etSearch.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { + @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override @@ -127,4 +141,4 @@ public class SaleFragment extends Fragment implements SaleAdapter.OnSaleClickLis recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setAdapter(adapter); } -} +} \ No newline at end of file diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AdoptionDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AdoptionDetailFragment.java index c32edaf0..47733da2 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AdoptionDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AdoptionDetailFragment.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.*; import com.example.petstoremobile.dtos.*; import com.example.petstoremobile.fragments.ListFragment; @@ -61,7 +62,7 @@ public class AdoptionDetailFragment extends Fragment { } private void setupSpinners() { - spinnerStatus.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerStatus.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, STATUSES)); } @@ -102,7 +103,7 @@ public class AdoptionDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Pet --"); for (PetDTO p : petList) names.add(p.getPetName()); - spinnerPet.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerPet.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedPetId != -1) { for (int i = 0; i < petList.size(); i++) { @@ -134,7 +135,7 @@ public class AdoptionDetailFragment extends Fragment { names.add("-- Select Customer --"); for (CustomerDTO c : customerList) names.add(c.getFirstName() + " " + c.getLastName()); - spinnerCustomer.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerCustomer.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedCustomerId != -1) { for (int i = 0; i < customerList.size(); i++) { diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AppointmentDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AppointmentDetailFragment.java index 573e26e4..eaabc061 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AppointmentDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/AppointmentDetailFragment.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.*; import com.example.petstoremobile.dtos.*; import com.example.petstoremobile.fragments.ListFragment; @@ -72,15 +73,15 @@ public class AppointmentDetailFragment extends Fragment { } private void setupSpinners() { - spinnerStatus.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerStatus.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, STATUSES)); String[] hours = new String[HOURS.length]; for (int i = 0; i < HOURS.length; i++) hours[i] = String.format("%02d:00", HOURS[i]); - spinnerHour.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerHour.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, hours)); - spinnerMinute.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerMinute.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, new String[]{"00","15","30","45"})); } @@ -124,7 +125,7 @@ public class AppointmentDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Pet --"); for (PetDTO p : petList) names.add(p.getPetName()); - spinnerPet.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerPet.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedPetId != -1) { for (int i = 0; i < petList.size(); i++) { @@ -154,7 +155,7 @@ public class AppointmentDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Service --"); for (ServiceDTO s : serviceList) names.add(s.getServiceName()); - spinnerService.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerService.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedServiceId != -1) { for (int i = 0; i < serviceList.size(); i++) { @@ -185,7 +186,7 @@ public class AppointmentDetailFragment extends Fragment { names.add("-- Select Customer --"); for (CustomerDTO c : customerList) names.add(c.getFirstName() + " " + c.getLastName()); - spinnerCustomer.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerCustomer.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedCustomerId != -1) { for (int i = 0; i < customerList.size(); i++) { @@ -215,7 +216,7 @@ public class AppointmentDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Store --"); for (StoreDTO s : storeList) names.add(s.getStoreName()); - spinnerStore.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerStore.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedStoreId != -1) { for (int i = 0; i < storeList.size(); i++) { diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/InventoryDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/InventoryDetailFragment.java index 9846bb36..f98351e3 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/InventoryDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/InventoryDetailFragment.java @@ -18,6 +18,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.InventoryApi; import com.example.petstoremobile.api.ProductApi; import com.example.petstoremobile.api.RetrofitClient; @@ -94,7 +95,7 @@ public class InventoryDetailFragment extends Fragment { btnBack = view.findViewById(R.id.btnInventoryBack); // Setup dropdown adapter - dropdownAdapter = new ArrayAdapter<>(requireContext(), + dropdownAdapter = new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_dropdown_item_1line, new ArrayList<>()); etProductSearch.setAdapter(dropdownAdapter); etProductSearch.setThreshold(1); // start showing after 1 character diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/PetDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/PetDetailFragment.java index 70c19833..c37558a7 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/PetDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/PetDetailFragment.java @@ -20,6 +20,7 @@ import android.widget.TextView; import android.widget.Toast; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.PetApi; import com.example.petstoremobile.api.RetrofitClient; import com.example.petstoremobile.dtos.PetDTO; @@ -234,19 +235,9 @@ public class PetDetailFragment extends Fragment { //helper function to set up the spinner menu for pet status private void setupSpinner() { - ArrayAdapter adapter = new ArrayAdapter(requireContext(), + BlackTextArrayAdapter adapter = new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, - new String[]{"Available", "Adopted"}) { - - //Override the getView method for the spinner to make the text color darker for more readability - @NonNull - @Override - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { - View view = super.getView(position, convertView, parent); - ((TextView) view).setTextColor(ContextCompat.getColor(requireContext(), R.color.text_dark)); - return view; - } - }; + new String[]{"Available", "Adopted"}); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerPetStatus.setAdapter(adapter); } diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductDetailFragment.java index 29e3473b..8427ab65 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductDetailFragment.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.*; import com.example.petstoremobile.dtos.*; import com.example.petstoremobile.fragments.ListFragment; @@ -74,7 +75,7 @@ public class ProductDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Category --"); for (CategoryDTO c : categoryList) names.add(c.getCategoryName()); - spinnerCategory.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerCategory.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedCategoryId != -1) { for (int i = 0; i < categoryList.size(); i++) { diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductSupplierDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductSupplierDetailFragment.java index 729ae49d..2bd47432 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductSupplierDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/ProductSupplierDetailFragment.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.api.*; import com.example.petstoremobile.dtos.*; import com.example.petstoremobile.fragments.ListFragment; @@ -80,7 +81,7 @@ public class ProductSupplierDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Product --"); for (ProductDTO p : productList) names.add(p.getProdName()); - spinnerProduct.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerProduct.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedProductId != -1) { for (int i = 0; i < productList.size(); i++) { @@ -111,7 +112,7 @@ public class ProductSupplierDetailFragment extends Fragment { List names = new ArrayList<>(); names.add("-- Select Supplier --"); for (SupplierDTO s : supplierList) names.add(s.getSupCompany()); - spinnerSupplier.setAdapter(new ArrayAdapter<>(requireContext(), + spinnerSupplier.setAdapter(new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, names)); if (preselectedSupplierId != -1) { for (int i = 0; i < supplierList.size(); i++) { diff --git a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/RefundDetailFragment.java b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/RefundDetailFragment.java index 55c0561e..41b8f3b2 100644 --- a/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/RefundDetailFragment.java +++ b/android/app/src/main/java/com/example/petstoremobile/fragments/listfragments/detailfragments/RefundDetailFragment.java @@ -12,6 +12,7 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import com.example.petstoremobile.R; +import com.example.petstoremobile.adapters.BlackTextArrayAdapter; import com.example.petstoremobile.fragments.ListFragment; import com.example.petstoremobile.fragments.listfragments.SaleFragment; import com.example.petstoremobile.utils.ActivityLogger; @@ -126,10 +127,10 @@ public class RefundDetailFragment extends Fragment { } private void setupSpinner() { - ArrayAdapter adapter = new ArrayAdapter<>(requireContext(), + BlackTextArrayAdapter adapter = new BlackTextArrayAdapter<>(requireContext(), android.R.layout.simple_spinner_item, new String[] { "Cash", "Card", "Debit" }); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerRefundPayment.setAdapter(adapter); } -} +} \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_home.xml b/android/app/src/main/res/layout/activity_home.xml index c7b9f3ea..9c61c329 100644 --- a/android/app/src/main/res/layout/activity_home.xml +++ b/android/app/src/main/res/layout/activity_home.xml @@ -5,13 +5,14 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:background="@color/background_grey"> + android:background="@color/primary_dark"> + android:layout_weight="1" + android:background="@color/background_grey"/> - - + android:orientation="horizontal" + android:padding="8dp" + android:gravity="center_vertical"> - - + + + + + android:orientation="vertical"> + android:orientation="vertical"> @@ -10,6 +11,33 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + + + + + + + android:padding="12dp" + android:textColor="@color/text_dark"/> - + \ No newline at end of file diff --git a/android/app/src/main/res/layout/item_adoption.xml b/android/app/src/main/res/layout/item_adoption.xml index 40b03b51..d0ac47f4 100644 --- a/android/app/src/main/res/layout/item_adoption.xml +++ b/android/app/src/main/res/layout/item_adoption.xml @@ -1,78 +1,89 @@ - + android:orientation="vertical" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:background="@color/white"> + android:orientation="horizontal" + android:gravity="center_vertical"> - + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="1" + android:text="Customer Name" + android:textColor="@color/text_dark" + android:textSize="18sp" + android:textStyle="bold" /> - - - - - - - - - - - - - - - + - \ No newline at end of file + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/item_inventory.xml b/android/app/src/main/res/layout/item_inventory.xml index fed7d903..881aaaea 100644 --- a/android/app/src/main/res/layout/item_inventory.xml +++ b/android/app/src/main/res/layout/item_inventory.xml @@ -6,16 +6,16 @@ android:background="@color/white" android:paddingStart="16dp" android:paddingEnd="16dp" - android:paddingTop="12dp" - android:paddingBottom="12dp"> + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:gravity="center_vertical"> @@ -25,33 +25,50 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - + android:gravity="center_vertical"> + android:ellipsize="end" + android:maxLines="1" + android:text="Product Name" + android:textColor="@color/text_dark" + android:textSize="18sp" + android:textStyle="bold" /> + + + + + + + + + android:textSize="13sp" /> - - - + android:layout_marginTop="12dp"/> diff --git a/android/app/src/main/res/layout/item_pet.xml b/android/app/src/main/res/layout/item_pet.xml index d93bf881..d55f64bf 100644 --- a/android/app/src/main/res/layout/item_pet.xml +++ b/android/app/src/main/res/layout/item_pet.xml @@ -1,5 +1,6 @@ - + + + android:orientation="vertical"> - + - + - + - + - + - + + + + + + + + diff --git a/android/app/src/main/res/layout/item_product.xml b/android/app/src/main/res/layout/item_product.xml index 8e96a4d8..fad14129 100644 --- a/android/app/src/main/res/layout/item_product.xml +++ b/android/app/src/main/res/layout/item_product.xml @@ -1,69 +1,70 @@ - + android:orientation="vertical" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:background="@color/white"> + + + + + + + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginTop="8dp"> - - - - - - - - - - - - - - - + android:layout_weight="1" + android:text="$0.00" + android:textColor="@color/accent_coral" + android:textSize="16sp" + android:textStyle="bold" /> - \ No newline at end of file + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/item_product_supplier.xml b/android/app/src/main/res/layout/item_product_supplier.xml index e050966d..00fa3909 100644 --- a/android/app/src/main/res/layout/item_product_supplier.xml +++ b/android/app/src/main/res/layout/item_product_supplier.xml @@ -1,44 +1,59 @@ - + android:orientation="vertical" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:background="@color/white"> + + + + - - - - + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginTop="8dp"> + android:textSize="16sp" + android:textStyle="bold" /> - \ No newline at end of file + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/item_purchase_order.xml b/android/app/src/main/res/layout/item_purchase_order.xml index b3f87cdf..7e9f868f 100644 --- a/android/app/src/main/res/layout/item_purchase_order.xml +++ b/android/app/src/main/res/layout/item_purchase_order.xml @@ -1,70 +1,80 @@ - + android:orientation="vertical" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:background="@color/white"> + android:orientation="horizontal" + android:gravity="center_vertical"> - + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="1" + android:text="PO #000" + android:textColor="@color/text_dark" + android:textSize="18sp" + android:textStyle="bold" /> - - - - - - - - - - - - - + - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 24665e48..0ffc56a3 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -11,4 +11,5 @@ #2ECC71 #E74C3C #3498DB + #000000 \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index ee132b12..478f8011 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,4 +2,5 @@ Leons Pet Store Hello blank fragment + Pet Profile Image \ No newline at end of file diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index f92c35db..8ca68229 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -8,10 +8,13 @@ @style/Widget.App.EditText @style/Widget.App.Spinner @color/primary_dark - @color/primary_dark false - false + + +