From d6bfa774a635f9607d1f688c6b1237ad8856961c Mon Sep 17 00:00:00 2001 From: Sangwook123 Date: Sat, 13 Apr 2024 21:14:14 +0900 Subject: [PATCH] [feat] #4 design component --- .../dialog/AlertDialogFragment.kt | 78 +++++++++++++++++++ .../src/main/res/drawable/ic_add_24.xml | 5 ++ .../src/main/res/drawable/ic_close_24.xml | 5 ++ .../src/main/res/drawable/ic_home_24.xml | 5 ++ .../src/main/res/drawable/ic_person_24.xml | 5 ++ .../src/main/res/drawable/ic_search_24.xml | 5 ++ .../res/drawable/shape_gray_line_50_rect.xml | 11 +++ .../main/res/layout/fragment_alert_dialog.xml | 53 +++++++++++++ 8 files changed, 167 insertions(+) create mode 100644 core/designsystem/src/main/java/org/sopt/designsystem/dialog/AlertDialogFragment.kt create mode 100644 core/designsystem/src/main/res/drawable/ic_add_24.xml create mode 100644 core/designsystem/src/main/res/drawable/ic_close_24.xml create mode 100644 core/designsystem/src/main/res/drawable/ic_home_24.xml create mode 100644 core/designsystem/src/main/res/drawable/ic_person_24.xml create mode 100644 core/designsystem/src/main/res/drawable/ic_search_24.xml create mode 100644 core/designsystem/src/main/res/drawable/shape_gray_line_50_rect.xml create mode 100644 core/designsystem/src/main/res/layout/fragment_alert_dialog.xml diff --git a/core/designsystem/src/main/java/org/sopt/designsystem/dialog/AlertDialogFragment.kt b/core/designsystem/src/main/java/org/sopt/designsystem/dialog/AlertDialogFragment.kt new file mode 100644 index 0000000..d38a932 --- /dev/null +++ b/core/designsystem/src/main/java/org/sopt/designsystem/dialog/AlertDialogFragment.kt @@ -0,0 +1,78 @@ +package org.sopt.designsystem.dialog + +import android.os.Bundle +import android.view.View +import org.sopt.designsystem.databinding.FragmentAlertDialogBinding +import org.sopt.ui.base.BindingDialogFragment + +class AlertDialogFragment : BindingDialogFragment({ FragmentAlertDialogBinding.inflate(it)}) { + private var handleNegativeButton: (() -> Unit)? = null + private var handlePositiveButton: (() -> Unit)? = null + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + dialog?.setCanceledOnTouchOutside(false) + + val title = arguments?.getString(ARG_TITLE) + val negativeButtonLabel = arguments?.getString(ARG_NEGATIVE_BUTTON_LABEL) + val positiveButtonLabel = arguments?.getString(ARG_POSITIVE_BUTTON_LABEL) + + if (title != null && negativeButtonLabel != null && positiveButtonLabel != null) { + initDialogText(title, positiveButtonLabel, negativeButtonLabel) + } + + initNegativeButtonClickListener(handleNegativeButton) + initPositiveButtonClickListener(handlePositiveButton) + } + + private fun initDialogText( + title: String, + positiveButtonLabel: String, + negativeButtonLabel: String + ) { + binding.tvAlertFragmentTitle.text = title + binding.tvAlertFragmentPositive.text = positiveButtonLabel + binding.tvAlertFragmentNegative.text = negativeButtonLabel + } + + private fun initNegativeButtonClickListener(handleNegativeButton: (() -> Unit)?) { + binding.tvAlertFragmentNegative.setOnClickListener { + handleNegativeButton?.invoke() + dismiss() + } + } + + private fun initPositiveButtonClickListener(handlePositiveButton: (() -> Unit)?) { + binding.tvAlertFragmentPositive.setOnClickListener { + handlePositiveButton?.invoke() + dismiss() + } + } + + companion object { + private const val ARG_TITLE = "title" + private const val ARG_NEGATIVE_BUTTON_LABEL = "negativeButtonLabel" + private const val ARG_POSITIVE_BUTTON_LABEL = "positiveButtonLabel" + + fun newInstance( + title: String, + negativeButtonLabel: String, + positiveButtonLabel: String, + handleNegativeButton: () -> Unit, + handlePositiveButton: () -> Unit + ): AlertDialogFragment { + val args = Bundle() + args.putString(ARG_TITLE, title) + args.putString(ARG_NEGATIVE_BUTTON_LABEL, negativeButtonLabel) + args.putString(ARG_POSITIVE_BUTTON_LABEL, positiveButtonLabel) + + val fragment = AlertDialogFragment() + fragment.arguments = args + + fragment.handleNegativeButton = handleNegativeButton + fragment.handlePositiveButton = handlePositiveButton + + return fragment + } + } +} \ No newline at end of file diff --git a/core/designsystem/src/main/res/drawable/ic_add_24.xml b/core/designsystem/src/main/res/drawable/ic_add_24.xml new file mode 100644 index 0000000..2ae27b8 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_add_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_close_24.xml b/core/designsystem/src/main/res/drawable/ic_close_24.xml new file mode 100644 index 0000000..bcc56a1 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_close_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_home_24.xml b/core/designsystem/src/main/res/drawable/ic_home_24.xml new file mode 100644 index 0000000..5f2fcbc --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_home_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_person_24.xml b/core/designsystem/src/main/res/drawable/ic_person_24.xml new file mode 100644 index 0000000..ddc8322 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_person_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_search_24.xml b/core/designsystem/src/main/res/drawable/ic_search_24.xml new file mode 100644 index 0000000..f4e055b --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_search_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/core/designsystem/src/main/res/drawable/shape_gray_line_50_rect.xml b/core/designsystem/src/main/res/drawable/shape_gray_line_50_rect.xml new file mode 100644 index 0000000..a97fba6 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/shape_gray_line_50_rect.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/core/designsystem/src/main/res/layout/fragment_alert_dialog.xml b/core/designsystem/src/main/res/layout/fragment_alert_dialog.xml new file mode 100644 index 0000000..050c594 --- /dev/null +++ b/core/designsystem/src/main/res/layout/fragment_alert_dialog.xml @@ -0,0 +1,53 @@ + + + + +