diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/reply/ui/CreatorChannelCommunityReplyAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/reply/ui/CreatorChannelCommunityReplyAdapter.kt index b4dd5b04..ac8ddad5 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/reply/ui/CreatorChannelCommunityReplyAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/reply/ui/CreatorChannelCommunityReplyAdapter.kt @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.v2.creator.channel.community.detail.reply.ui import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.appcompat.widget.PopupMenu import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import coil.transform.CircleCropTransformation @@ -11,6 +10,7 @@ import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.databinding.ItemCreatorChannelCommunityReplyBinding import kr.co.vividnext.sodalive.extensions.loadUrl import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.CreatorChannelCommunityReplyUiModel +import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.ui.CreatorChannelCommunityMorePopup class CreatorChannelCommunityReplyAdapter( private val onModifyClick: (CreatorChannelCommunityReplyUiModel) -> Unit, @@ -66,17 +66,13 @@ class CreatorChannelCommunityReplyAdapter( onDeleteClick: (CreatorChannelCommunityReplyUiModel) -> Unit ) { if (!item.canShowMore) return - val popup = PopupMenu(anchor.context, anchor) - val menuRes = if (item.isMine) R.menu.content_comment_option_menu else R.menu.content_comment_option_menu2 - popup.menuInflater.inflate(menuRes, popup.menu) - popup.setOnMenuItemClickListener { menuItem -> - when (menuItem.itemId) { - R.id.menu_review_modify -> onModifyClick(item) - R.id.menu_review_delete -> onDeleteClick(item) - } - true - } - popup.show() + CreatorChannelCommunityMorePopup( + anchor = anchor, + showEdit = item.isMine, + showDelete = true, + onEditClick = { onModifyClick(item) }, + onDeleteClick = { onDeleteClick(item) } + ).show(anchor) } private val CreatorChannelCommunityReplyUiModel.canShowMore: Boolean diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityCommentAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityCommentAdapter.kt index a5afed69..60b61a40 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityCommentAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityCommentAdapter.kt @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.v2.creator.channel.community.detail.ui import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.appcompat.widget.PopupMenu import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import coil.transform.CircleCropTransformation @@ -97,17 +96,13 @@ class CreatorChannelCommunityCommentAdapter( onDeleteClick: (CreatorChannelCommunityCommentUiModel) -> Unit ) { if (!item.canShowMore) return - val popup = PopupMenu(anchor.context, anchor) - val menuRes = if (item.isMine) R.menu.content_comment_option_menu else R.menu.content_comment_option_menu2 - popup.menuInflater.inflate(menuRes, popup.menu) - popup.setOnMenuItemClickListener { menuItem -> - when (menuItem.itemId) { - R.id.menu_review_modify -> onModifyClick(item) - R.id.menu_review_delete -> onDeleteClick(item) - } - true - } - popup.show() + CreatorChannelCommunityMorePopup( + anchor = anchor, + showEdit = item.isMine, + showDelete = true, + onEditClick = { onModifyClick(item) }, + onDeleteClick = { onDeleteClick(item) } + ).show(anchor) } private val CreatorChannelCommunityCommentUiModel.canShowMore: Boolean diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityMorePopup.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityMorePopup.kt new file mode 100644 index 00000000..fd7e488a --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/ui/CreatorChannelCommunityMorePopup.kt @@ -0,0 +1,50 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.community.detail.ui + +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.PopupWindow +import androidx.core.graphics.drawable.toDrawable +import androidx.core.view.isVisible +import kr.co.vividnext.sodalive.databinding.ViewCreatorChannelCommunityMorePopupBinding + +class CreatorChannelCommunityMorePopup( + anchor: View, + showEdit: Boolean, + showDelete: Boolean, + onEditClick: () -> Unit, + onDeleteClick: () -> Unit +) { + + private val binding = ViewCreatorChannelCommunityMorePopupBinding.inflate(LayoutInflater.from(anchor.context)) + private val popupWindow: PopupWindow = PopupWindow(anchor.context).apply { + contentView = binding.root + width = ViewGroup.LayoutParams.WRAP_CONTENT + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + setBackgroundDrawable(Color.TRANSPARENT.toDrawable()) + } + + init { + binding.tvCreatorChannelCommunityMoreEdit.isVisible = showEdit + binding.tvCreatorChannelCommunityMoreDelete.isVisible = showDelete + binding.tvCreatorChannelCommunityMoreEdit.setOnClickListener { + dismiss() + onEditClick() + } + binding.tvCreatorChannelCommunityMoreDelete.setOnClickListener { + dismiss() + onDeleteClick() + } + } + + fun show(anchor: View) { + popupWindow.showAsDropDown(anchor) + } + + fun dismiss() { + popupWindow.dismiss() + } +} diff --git a/app/src/main/res/layout/view_creator_channel_community_more_popup.xml b/app/src/main/res/layout/view_creator_channel_community_more_popup.xml new file mode 100644 index 00000000..1829782d --- /dev/null +++ b/app/src/main/res/layout/view_creator_channel_community_more_popup.xml @@ -0,0 +1,36 @@ + + + + + + +