diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt index 1e042fb5..51d00807 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt @@ -12,11 +12,11 @@ import kr.co.vividnext.sodalive.databinding.FragmentCreatorChannelLiveBinding import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse -import kr.co.vividnext.sodalive.v2.creator.channel.live.model.toLabelResId import kr.co.vividnext.sodalive.v2.creator.channel.live.model.toReplayUiModel import kr.co.vividnext.sodalive.v2.creator.channel.live.ui.CreatorChannelLiveReplayAdapter -import kr.co.vividnext.sodalive.v2.creator.channel.live.ui.CreatorChannelLiveSortPopup +import kr.co.vividnext.sodalive.v2.creator.channel.model.toLabelResId import kr.co.vividnext.sodalive.v2.creator.channel.ui.formatCreatorChannelLiveDateTime +import kr.co.vividnext.sodalive.v2.creator.channel.ui.CreatorChannelSortPopup import org.koin.androidx.viewmodel.ext.android.viewModel class CreatorChannelLiveFragment : BaseFragment( @@ -28,7 +28,7 @@ class CreatorChannelLiveFragment : BaseFragment viewModel.changeSort(sort) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveMappers.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveMappers.kt index 613fbeb1..a2e2ad46 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveMappers.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveMappers.kt @@ -1,8 +1,5 @@ package kr.co.vividnext.sodalive.v2.creator.channel.live.model -import androidx.annotation.StringRes -import kr.co.vividnext.sodalive.R -import kr.co.vividnext.sodalive.v2.common.data.ContentSort import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.widget.AudioContentTag @@ -18,22 +15,6 @@ fun CreatorChannelAudioContentResponse.toReplayUiModel(): CreatorChannelLiveRepl status = toReplayStatus() ) -@StringRes -fun ContentSort.toLabelResId(): Int = when (this) { - ContentSort.LATEST -> R.string.screen_audio_content_sort_newest - ContentSort.POPULAR -> R.string.screen_audio_content_sort_popularity - ContentSort.OWNED -> R.string.creator_channel_live_sort_owned - ContentSort.PRICE_HIGH -> R.string.screen_audio_content_sort_price_high - ContentSort.PRICE_LOW -> R.string.screen_audio_content_sort_price_low -} - -fun ContentSort.toSortOptionUiModel(selectedSort: ContentSort): CreatorChannelLiveSortOptionUiModel = - CreatorChannelLiveSortOptionUiModel( - sort = this, - labelResId = toLabelResId(), - isSelected = this == selectedSort - ) - private fun CreatorChannelAudioContentResponse.toAudioContentTags(): Set = buildSet { if (isOriginalSeries == true) add(AudioContentTag.Original) if (isFirstContent) add(AudioContentTag.First) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveUiModels.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveUiModels.kt index 532a1ad8..d61faf02 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveUiModels.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/model/CreatorChannelLiveUiModels.kt @@ -1,7 +1,5 @@ package kr.co.vividnext.sodalive.v2.creator.channel.live.model -import androidx.annotation.StringRes -import kr.co.vividnext.sodalive.v2.common.data.ContentSort import kr.co.vividnext.sodalive.v2.widget.AudioContentTag data class CreatorChannelLiveReplayUiModel( @@ -21,9 +19,3 @@ sealed interface CreatorChannelLiveReplayStatus { data object Rented : CreatorChannelLiveReplayStatus data class Price(val price: Int) : CreatorChannelLiveReplayStatus } - -data class CreatorChannelLiveSortOptionUiModel( - val sort: ContentSort, - @param:StringRes val labelResId: Int, - val isSelected: Boolean -) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/ui/CreatorChannelLiveSortPopup.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/ui/CreatorChannelLiveSortPopup.kt deleted file mode 100644 index 24dddd46..00000000 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/ui/CreatorChannelLiveSortPopup.kt +++ /dev/null @@ -1,105 +0,0 @@ -package kr.co.vividnext.sodalive.v2.creator.channel.live.ui - -import android.graphics.Color -import android.graphics.Rect -import android.graphics.Outline -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.LinearLayout -import android.widget.PopupWindow -import android.widget.TextView -import android.widget.FrameLayout -import android.view.ViewOutlineProvider -import androidx.core.graphics.drawable.toDrawable -import kr.co.vividnext.sodalive.R -import kr.co.vividnext.sodalive.v2.common.data.ContentSort -import kr.co.vividnext.sodalive.v2.creator.channel.live.model.toSortOptionUiModel - -class CreatorChannelLiveSortPopup( - private val anchor: View, - private val selectedSort: ContentSort, - private val onSortSelected: (ContentSort) -> Unit -) { - - private val popupWindow: PopupWindow = PopupWindow(anchor.context).apply { - contentView = createContentView() - width = ViewGroup.LayoutParams.WRAP_CONTENT - height = ViewGroup.LayoutParams.WRAP_CONTENT - isOutsideTouchable = true - isFocusable = true - setBackgroundDrawable(Color.TRANSPARENT.toDrawable()) - } - - fun show() { - val content = popupWindow.contentView - content.measure( - View.MeasureSpec.makeMeasureSpec(anchor.rootView.width, View.MeasureSpec.AT_MOST), - View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) - ) - popupWindow.showAsDropDown(anchor, calculateHorizontalOffset(content.measuredWidth), 0) - } - - fun dismiss() { - popupWindow.dismiss() - } - - private fun createContentView(): View { - val root = FrameLayout(anchor.context) - val view = LayoutInflater.from(anchor.context).inflate( - R.layout.view_creator_channel_live_sort_menu, - root, - false - ) - view.clipToOutline = true - view.outlineProvider = object : ViewOutlineProvider() { - override fun getOutline(view: View, outline: Outline) { - outline.setRoundRect(0, 0, view.width, view.height, view.resources.getDimension(R.dimen.radius_14)) - } - } - val container = view.findViewById(R.id.layout_creator_channel_live_sort_options) - val sample = view.findViewById(R.id.tv_creator_channel_live_sort_option_sample) - container.removeView(sample) - - ContentSort.entries.map { it.toSortOptionUiModel(selectedSort) }.forEach { option -> - val row = TextView(anchor.context).apply { - layoutParams = LinearLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) - typeface = sample.typeface - includeFontPadding = false - setPadding(sample.paddingStart, sample.paddingTop, sample.paddingEnd, sample.paddingBottom) - setText(option.labelResId) - setTextColor(sample.currentTextColor) - textSize = 16f - if (option.isSelected) { - setBackgroundResource(R.drawable.bg_creator_channel_live_sort_selected) - } - setOnClickListener { - if (option.sort != selectedSort) { - onSortSelected(option.sort) - } - dismiss() - } - } - container.addView(row) - } - - return view - } - - private fun calculateHorizontalOffset(popupWidth: Int): Int { - val visibleDisplayFrame = Rect() - anchor.rootView.getWindowVisibleDisplayFrame(visibleDisplayFrame) - - val anchorLocation = IntArray(2) - anchor.getLocationOnScreen(anchorLocation) - val popupRight = anchorLocation[0] + popupWidth - return if (popupRight > visibleDisplayFrame.right) { - visibleDisplayFrame.right - popupRight - } else { - 0 - } - } -} diff --git a/app/src/main/res/drawable/bg_creator_channel_live_sort_popup.xml b/app/src/main/res/drawable/bg_creator_channel_live_sort_popup.xml deleted file mode 100644 index 769e379c..00000000 --- a/app/src/main/res/drawable/bg_creator_channel_live_sort_popup.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable/bg_creator_channel_live_sort_selected.xml b/app/src/main/res/drawable/bg_creator_channel_live_sort_selected.xml deleted file mode 100644 index 9c8c4eca..00000000 --- a/app/src/main/res/drawable/bg_creator_channel_live_sort_selected.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/view_creator_channel_live_sort_menu.xml b/app/src/main/res/layout/view_creator_channel_live_sort_menu.xml deleted file mode 100644 index 59144aac..00000000 --- a/app/src/main/res/layout/view_creator_channel_live_sort_menu.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - -