diff --git a/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantRVAdapter.kt b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantRVAdapter.kt index d4001fe..6e801bf 100644 --- a/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantRVAdapter.kt +++ b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantRVAdapter.kt @@ -8,6 +8,7 @@ import android.widget.PopupWindow import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView +import umc.onairmate.R import umc.onairmate.data.model.entity.ParticipantData import umc.onairmate.data.model.entity.UserData import umc.onairmate.databinding.PopupParticipantOptionsBinding diff --git a/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantsFragment.kt b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantsFragment.kt index 20a473b..dd08da0 100644 --- a/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantsFragment.kt +++ b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ChatRoomParticipantsFragment.kt @@ -4,6 +4,7 @@ import android.os.Build import android.os.Bundle import android.util.Log import android.view.LayoutInflater +import umc.onairmate.R import android.view.View import android.view.ViewGroup import android.widget.LinearLayout @@ -73,11 +74,13 @@ class ChatRoomParticipantsFragment : Fragment() { adapter = ChatRoomParticipantRVAdapter( object : ParticipantItemClickListener { // 팝업 - 신고 클릭 override fun clickReport(data: ParticipantData) { - val text = data.nickname+"님을 신고하시겠습니까?" - val textList = listOf(text,"예","아니오") - showPopup(text =textList, left = { - Toast.makeText(requireContext(),"신고 접수 되었습니다", Toast.LENGTH_SHORT).show() - }, right = {} ) +// val text = data.nickname+"님을 신고하시겠습니까?" +// val textList = listOf(text,"예","아니오") +// showPopup(text =textList, left = { +// Toast.makeText(requireContext(),"신고 접수 되었습니다", Toast.LENGTH_SHORT).show() +// }, right = {} ) + + showReportPopup() } // 팝업 - 추천하기 클릭 @@ -164,11 +167,12 @@ class ChatRoomParticipantsFragment : Fragment() { // 클릭 리스너 연결 popupBinding.tvReport.setOnClickListener { - val text = data.nickname+"님을 신고하시겠습니까?" - val textList = listOf(text,"예","아니오") - showPopup(text =textList, left = { - Toast.makeText(requireContext(),"신고 접수 되었습니다", Toast.LENGTH_SHORT).show() - }, right = {} ) +// val text = data.nickname+"님을 신고하시겠습니까?" +// val textList = listOf(text,"예","아니오") +// showPopup(text =textList, left = { +// Toast.makeText(requireContext(),"신고 접수 되었습니다", Toast.LENGTH_SHORT).show() +// }, right = {} ) + showReportPopup() popupWindow.dismiss() } popupBinding.tvRecommend.setOnClickListener { @@ -190,4 +194,16 @@ class ChatRoomParticipantsFragment : Fragment() { popupWindow.showAsDropDown(anchorView, offsetX, offsetY) } + + //방장쪽에도 함수 있다함. + private fun showReportPopup(){ + val dialogView = LayoutInflater.from(requireContext()) + .inflate(R.layout.dialog_report, null) + + val dialog = android.app.AlertDialog.Builder(requireContext()) + .setView(dialogView) + .create() + + dialog.show() + } } diff --git a/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ReportDialogFragment.kt b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ReportDialogFragment.kt new file mode 100644 index 0000000..b086012 --- /dev/null +++ b/app/src/main/java/umc/onairmate/ui/chat_room/drawer/participants/ReportDialogFragment.kt @@ -0,0 +1,65 @@ +package umc.onairmate.ui.chat_room.drawer.participants + +import android.app.Dialog +import android.content.res.Resources +import android.os.Bundle +import androidx.fragment.app.DialogFragment +import umc.onairmate.data.model.entity.ParticipantData +import umc.onairmate.databinding.DialogReportBinding + +class ReportDialogFragment( + private val participant: ParticipantData, + private val onSubmit: (reasons: List, extraReason: String) -> Unit +) : DialogFragment() { + + private var _binding: DialogReportBinding? = null + private val binding get() = _binding!! + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + // layoutInflater 사용 + _binding = DialogReportBinding.inflate(layoutInflater) + + // 타이틀 세팅 + binding.tvTitle.text = "[${participant.nickname}]의 신고 사유" + + // 닫기 버튼 + binding.btnClose.setOnClickListener { + dismiss() + } + + // 제출 버튼 + binding.btnSubmit.setOnClickListener { + val reasons = mutableListOf() + if (binding.cbSpam.isChecked) reasons.add("스팸, 도배") + if (binding.cbSpoiler.isChecked) reasons.add("스포성 채팅") + if (binding.cbAbuse.isChecked) reasons.add("욕설") + if (binding.cbHate.isChecked) reasons.add("혐오 발언") + if (binding.cbNickname.isChecked) reasons.add("부적절한 닉네임 사용") + + val extraReason = binding.etDetail.text.toString() + + onSubmit(reasons, extraReason) + dismiss() + } + + // Dialog 직접 생성 + val dialog = Dialog(requireContext()) + dialog.setContentView(binding.root) + dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) + dialog.setCanceledOnTouchOutside(true) + + // 다이얼로그 크기 고정 (피그마에서 요구한 크기) + dialog.window?.setLayout(320.dpToPx(), 494.dpToPx()) // dp → px 변환 필요 + + return dialog + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} + +private fun Int.dpToPx(): Int { + return (this * Resources.getSystem().displayMetrics.density).toInt() +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_report.xml b/app/src/main/res/layout/dialog_report.xml new file mode 100644 index 0000000..d7762da --- /dev/null +++ b/app/src/main/res/layout/dialog_report.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +