From 8fe021f59f18e04c54ddfad3f35ddb8b207b3419 Mon Sep 17 00:00:00 2001 From: siddhigupta075 Date: Sun, 12 Apr 2026 17:13:00 +0530 Subject: [PATCH 1/2] Redesigned the Admin page with proper functionality --- .../Fragments/AdminFragment.kt | 89 ++++++--- .../res/drawable/baseline_attach_email_24.xml | 4 +- .../main/res/drawable/baseline_person_24.xml | 2 +- .../main/res/drawable/bg_card_glass_inner.xml | 8 + .../main/res/drawable/bg_gradient_full.xml | 7 + app/src/main/res/drawable/bg_icon_soft.xml | 6 + app/src/main/res/layout/fragment_admin.xml | 179 ++++++++++++------ 7 files changed, 205 insertions(+), 90 deletions(-) create mode 100644 app/src/main/res/drawable/bg_card_glass_inner.xml create mode 100644 app/src/main/res/drawable/bg_gradient_full.xml create mode 100644 app/src/main/res/drawable/bg_icon_soft.xml diff --git a/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt b/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt index 0f700db..9fb31ab 100644 --- a/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt +++ b/app/src/main/java/com/theayushyadav11/MessEase/ui/NavigationDrawers/Fragments/AdminFragment.kt @@ -13,60 +13,95 @@ import com.theayushyadav11.MessEase.utils.Constants.Companion.DESIGNATION import com.theayushyadav11.MessEase.utils.Mess class AdminFragment : Fragment() { - private lateinit var binding: FragmentAdminBinding - private lateinit var mess: Mess + private var _binding: FragmentAdminBinding? = null + private val binding get() = _binding!! + + private lateinit var mess: Mess private val viewModel: AdminViewModel by viewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FragmentAdminBinding.inflate(layoutInflater, container, false) + _binding = FragmentAdminBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) initialise() listeners() } + private fun initialise() { + mess = Mess(requireContext()) + setAdapter() + } + private fun listeners() { binding.btnAdd.setOnClickListener { - add() + validateAndAdd() } } - private fun initialise() { - mess = Mess(requireContext()) - setAdapter() - } + private fun validateAndAdd() { + val email = binding.etEmail.text.toString().trim() + val designation = binding.spinnerAutoComplete.text.toString().trim() + when { + email.isEmpty() -> { + binding.tilEmail.error = "Email required" + } - fun add() { - if (binding.etEmail.text.toString().isNotEmpty()) { - mess.addPb("Adding to Mess Committee") - viewModel.addToMessCommittee( - binding.etEmail.text.toString(), - binding.spinnerAutoComplete.text.toString() - ) - { - mess.pbDismiss() - mess.toast(it) + !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() -> { + binding.tilEmail.error = "Invalid email" } - } else { - mess.toast("Please enter email") + + designation.isEmpty() -> { + binding.tilspin.error = "Select designation" + } + + else -> { + binding.tilEmail.error = null + binding.tilspin.error = null + add(email, designation) + } + } + } + + private fun add(email: String, designation: String) { + // Disable button to avoid spam clicking + binding.btnAdd.isEnabled = false + binding.btnAdd.text = "Adding..." + + mess.addPb("Adding to Mess Committee") + + viewModel.addToMessCommittee(email, designation) { + mess.pbDismiss() + + binding.btnAdd.isEnabled = true + binding.btnAdd.text = "Add to Committee" + + mess.toast(it) + + // Clear fields after success + binding.etEmail.text?.clear() + binding.spinnerAutoComplete.text?.clear() } } private fun setAdapter() { mess.getLists("${DESIGNATION}s") { - val spinner = binding.spinnerAutoComplete - val spinnerItems = it - val adapter = - ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, spinnerItems) - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) - spinner.setAdapter(adapter) + val adapter = ArrayAdapter( + requireContext(), + android.R.layout.simple_dropdown_item_1line, + it + ) + binding.spinnerAutoComplete.setAdapter(adapter) } } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/baseline_attach_email_24.xml b/app/src/main/res/drawable/baseline_attach_email_24.xml index e48a32d..12a8ef8 100644 --- a/app/src/main/res/drawable/baseline_attach_email_24.xml +++ b/app/src/main/res/drawable/baseline_attach_email_24.xml @@ -1,7 +1,8 @@ @@ -11,6 +12,7 @@ diff --git a/app/src/main/res/drawable/baseline_person_24.xml b/app/src/main/res/drawable/baseline_person_24.xml index c909b0e..a5441e2 100644 --- a/app/src/main/res/drawable/baseline_person_24.xml +++ b/app/src/main/res/drawable/baseline_person_24.xml @@ -1,7 +1,7 @@ diff --git a/app/src/main/res/drawable/bg_card_glass_inner.xml b/app/src/main/res/drawable/bg_card_glass_inner.xml new file mode 100644 index 0000000..03146d7 --- /dev/null +++ b/app/src/main/res/drawable/bg_card_glass_inner.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_gradient_full.xml b/app/src/main/res/drawable/bg_gradient_full.xml new file mode 100644 index 0000000..b917f09 --- /dev/null +++ b/app/src/main/res/drawable/bg_gradient_full.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_icon_soft.xml b/app/src/main/res/drawable/bg_icon_soft.xml new file mode 100644 index 0000000..18805a3 --- /dev/null +++ b/app/src/main/res/drawable/bg_icon_soft.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_admin.xml b/app/src/main/res/layout/fragment_admin.xml index 874c95f..c028c64 100644 --- a/app/src/main/res/layout/fragment_admin.xml +++ b/app/src/main/res/layout/fragment_admin.xml @@ -1,7 +1,7 @@ - @@ -9,19 +9,17 @@ + android:scrollbars="none" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"> + android:paddingBottom="40dp"> - + + app:layout_constraintTop_toTopOf="parent"/> + + app:layout_constraintStart_toEndOf="@id/ivHeaderIcon" + app:layout_constraintTop_toTopOf="@id/ivHeaderIcon" + app:layout_constraintEnd_toEndOf="parent"/> + + + - + + app:layout_constraintEnd_toEndOf="parent"/> - + + app:layout_constraintEnd_toEndOf="parent"> + android:background="@drawable/bg_card_glass_inner" + android:padding="22dp"> + + app:layout_constraintTop_toTopOf="parent"/> + + app:layout_constraintEnd_toEndOf="parent"> + android:layout_height="56dp" + + android:drawableStart="@drawable/baseline_attach_email_24" + android:drawablePadding="12dp" + + android:paddingStart="12dp" + android:paddingEnd="12dp" + + android:textColor="@color/black" + android:textColorHint="#80AAAAAA" + android:inputType="textEmailAddress"/> + + + app:boxStrokeWidth="1.5dp" + app:layout_constraintEnd_toEndOf="parent"> + android:layout_height="56dp" + + android:drawableStart="@drawable/baseline_person_24" + android:drawablePadding="12dp" + + android:paddingStart="12dp" + android:paddingEnd="12dp" + + android:textColor="@color/black" + android:textColorHint="#80AAAAAA" + android:inputType="none"/> + + + + app:layout_constraintEnd_toEndOf="parent"/> From 99d8447583fc83243bd892c71d5aa4e1a40218bf Mon Sep 17 00:00:00 2001 From: siddhigupta075 Date: Sun, 12 Apr 2026 17:30:22 +0530 Subject: [PATCH 2/2] fixed the margin-top --- app/src/main/res/layout/fragment_admin.xml | 63 +++++++++++----------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/app/src/main/res/layout/fragment_admin.xml b/app/src/main/res/layout/fragment_admin.xml index c028c64..9fde082 100644 --- a/app/src/main/res/layout/fragment_admin.xml +++ b/app/src/main/res/layout/fragment_admin.xml @@ -80,7 +80,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginHorizontal="25dp" - android:layout_marginTop="30dp" + android:layout_marginTop="50dp" android:backgroundTint="#CCFFFFFF" app:strokeColor="#40FFFFFF" @@ -94,6 +94,7 @@ @@ -108,33 +109,33 @@ android:textSize="18sp" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"/> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/tvFormTitle"> + android:textColorHint="#80AAAAAA" /> @@ -164,21 +165,21 @@ android:hint="Designation" - app:boxStrokeColor="@color/food" - app:boxStrokeWidthFocused="3dp" + app:boxCornerRadiusBottomEnd="18dp" + app:boxCornerRadiusBottomStart="18dp" - app:boxCornerRadiusTopStart="18dp" app:boxCornerRadiusTopEnd="18dp" - app:boxCornerRadiusBottomStart="18dp" - app:boxCornerRadiusBottomEnd="18dp" + app:boxCornerRadiusTopStart="18dp" + app:boxStrokeColor="@color/food" + app:boxStrokeWidth="1.5dp" - app:endIconMode="dropdown_menu" + app:boxStrokeWidthFocused="3dp" - app:layout_constraintTop_toBottomOf="@id/tilEmail" + app:endIconMode="dropdown_menu" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:boxStrokeWidth="1.5dp" - app:layout_constraintEnd_toEndOf="parent"> + app:layout_constraintTop_toBottomOf="@id/tilEmail"> + android:textColorHint="#80AAAAAA" /> @@ -204,11 +205,11 @@ + app:layout_constraintTop_toBottomOf="@id/cardView" />