Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#121 [fix] 로티 끝나기 전까지는 로티 재생 안되게 막기 #123

Merged
merged 3 commits into from
Jan 19, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ import com.sopetit.softie.util.OriginalBottomSheet.Companion.BOTTOM_SHEET_TAG
import com.sopetit.softie.util.binding.BindingAdapter.setCoilImage
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.binding.BindingFragment
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColor
import com.sopetit.softie.util.snackBar
import dagger.hilt.android.AndroidEntryPoint
@@ -125,7 +126,7 @@ class DailyRoutineFragment :
}

private fun initSetDailyRoutineAchieve(btn: View, dailyRoutine: DailyRoutine, routineId: Int) {
btn.setOnClickListener {
btn.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = false,
imageDrawable = 0,
@@ -151,7 +152,7 @@ class DailyRoutineFragment :
viewModel.isDeleteView.observe(viewLifecycleOwner) { isDeleteView ->
val isEditView = !isDeleteView
if (isEditView) {
binding.tvDailyRoutineEdit.setOnClickListener {
binding.tvDailyRoutineEdit.setSingleOnClickListener {
viewModel.setDeleteView(true)
}
}
@@ -163,7 +164,7 @@ class DailyRoutineFragment :
private fun initSetBackOriginalView() {
viewModel.isDeleteView.observe(viewLifecycleOwner) { isDeleteView ->
if (isDeleteView) {
binding.tvDailyRoutineEdit.setOnClickListener {
binding.tvDailyRoutineEdit.setSingleOnClickListener {
viewModel.setDeleteView(false)
}
clickEditRadioBtn()
@@ -199,7 +200,7 @@ class DailyRoutineFragment :
}

private fun changeBtnSelectState(button: View, itemId: Int) {
button.setOnClickListener {
button.setSingleOnClickListener {
it.isSelected = !it.isSelected
viewModel.setEditRoutineIdArray(itemId)
setDeleteRoutineBtnContent()
@@ -221,7 +222,7 @@ class DailyRoutineFragment :
}

private fun initSetRoutineDelete() {
binding.btnDailyRoutineDelete.setOnClickListener {
binding.btnDailyRoutineDelete.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = true,
imageDrawable = R.drawable.ic_bear_face_crying,
@@ -263,7 +264,7 @@ class DailyRoutineFragment :
}

private fun addDailyRoutineMsg() {
binding.ivDailyRoutineEmpty.setOnClickListener {
binding.ivDailyRoutineEmpty.setSingleOnClickListener {
addDailyRoutineLauncher.launch(
Intent(
requireActivity(),
@@ -274,7 +275,7 @@ class DailyRoutineFragment :
}

private fun moveToAddRoutine() {
binding.ivDailyRoutineEmpty.setOnClickListener {
binding.ivDailyRoutineEmpty.setSingleOnClickListener {
val intent = Intent(requireContext(), DailyRoutineAddActivity::class.java)
startActivity(intent)
}
Original file line number Diff line number Diff line change
@@ -8,7 +8,6 @@ import android.view.View
import androidx.activity.viewModels
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.CompositePageTransformer
import androidx.viewpager2.widget.MarginPageTransformer
import androidx.viewpager2.widget.ViewPager2
import com.sopetit.softie.R
import com.sopetit.softie.databinding.ActivityDailyRoutineAddBinding
@@ -18,6 +17,7 @@ import com.sopetit.softie.ui.main.MainActivity
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint

@@ -39,11 +39,11 @@ class DailyRoutineAddActivity :
dailyRoutineAddViewModel.getThemeList()
dailyRoutineAddViewModel.setThemeId(6)
setupAdapter()
setViewPager()
setupList()
setIndicator()
setItemDiv()
setCurrentCard()
initViewPager()
initPagerDiv(0, 90)
addClickListener()
observeRoutineCardList()
@@ -90,6 +90,23 @@ class DailyRoutineAddActivity :
}
}

private fun initViewPager() {
viewPager.adapter = dailyRoutineAddCardPagerAdapter

val dp = resources.getDimensionPixelSize(R.dimen.view_margin)
val d = resources.displayMetrics.density
val margin = (dp * d).toInt()

with(binding.vpDailyRoutineAddCard) {
clipChildren = false
clipToPadding = false
offscreenPageLimit = VIEW_PAGE.toInt()
setPadding(margin, PADDING_CARD, margin, PADDING_CARD)
}
val compositePageTransformer = CompositePageTransformer()
binding.vpDailyRoutineAddCard.setPageTransformer(compositePageTransformer)
}

private fun initPagerDiv(previewWidth: Int, itemMargin: Int) {
val decoMargin = previewWidth + itemMargin
val pageTransX = decoMargin + previewWidth
@@ -104,23 +121,6 @@ class DailyRoutineAddActivity :
}
}

private fun setViewPager() {
with(binding.vpDailyRoutineAddCard) {
adapter = dailyRoutineAddCardPagerAdapter
offscreenPageLimit = VIEW_PAGE.toInt()

val dpValue = PADDING_PAGE
val margin = (dpValue * resources.displayMetrics.density).toInt()
setPadding(margin, PADDING_CARD, margin, PADDING_CARD)

setPageTransformer(
CompositePageTransformer().apply {
addTransformer(MarginPageTransformer(resources.getDimensionPixelOffset(R.dimen.viewpager_margin)))
}
)
}
}

private fun setIndicator() {
binding.diDailyRoutineAddIndicator.attachTo(binding.vpDailyRoutineAddCard)
}
@@ -138,26 +138,41 @@ class DailyRoutineAddActivity :
}
}

class HorizontalItemDecorator(private val divHeight: Int) : RecyclerView.ItemDecoration() {
@Override
class HorizontalItemDecorator(
private val marginStart: Int,
private val marginEnd: Int,
private val itemMargin: Int
) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
super.getItemOffsets(outRect, view, parent, state)
outRect.left = divHeight
outRect.right = divHeight

val position = parent.getChildAdapterPosition(view)
val itemCount = parent.adapter?.itemCount ?: 0

if (position == 0) {
outRect.left = marginStart
outRect.right = itemMargin
} else if (position == itemCount - 1) {
outRect.left = itemMargin
outRect.right = marginEnd
} else {
outRect.left = itemMargin
outRect.right = itemMargin
}
}
}

private fun setItemDiv() {
binding.rvDailyRoutineAddTheme.addItemDecoration(HorizontalItemDecorator(16))
binding.rvDailyRoutineAddTheme.addItemDecoration(HorizontalItemDecorator(65, 65, 16))
}

private fun backToDailyRoutine() {
binding.ivDailyRoutineAddBack.setOnClickListener {
binding.ivDailyRoutineAddBack.setSingleOnClickListener {
finish()
}
}
@@ -172,11 +187,12 @@ class DailyRoutineAddActivity :
})
}

private fun getCurrentSelectedRoutine(): Routine {
private fun getCurrentSelectedRoutine(): Routine? {
val currentItem = binding.vpDailyRoutineAddCard.currentItem
val itemId = dailyRoutineAddCardPagerAdapter.getItemId(currentItem)
val itemContent = dailyRoutineAddCardPagerAdapter.content
return Routine(itemId.toInt(), itemContent)
?: dailyRoutineAddViewModel.dailyRoutineCardThemeList.value?.routine?.get(0)?.content
return itemContent?.let { content -> Routine(itemId.toInt(), content) }
}

private fun getCurrentSelectedRoutineId(): Int {
@@ -186,13 +202,14 @@ class DailyRoutineAddActivity :
}

private fun initSetDailyRoutineAdd() {
binding.btnDailyRoutineAdd.setOnClickListener {
binding.btnDailyRoutineAdd.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = false,
imageDrawable = 0,
imageUri = dailyRoutineAddThemeAdapter.clickedThemeIcon,
imageUri = dailyRoutineAddThemeAdapter.clickedThemeIcon ?: "",
title = getString(R.string.daily_routine_add_question),
content = getCurrentSelectedRoutine().content,
content = getCurrentSelectedRoutine()?.content
?: getString(R.string.daily_routine_basic_bottom_sheet_content),
isContentVisible = true,
contentColor = R.color.gray400,
backBtnContent = getString(R.string.daily_routine_add_no),
@@ -216,7 +233,6 @@ class DailyRoutineAddActivity :

companion object {
const val VIEW_PAGE = 3
const val PADDING_PAGE = 40
const val PADDING_CARD = 0
}
}
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ class DailyRoutineAddCardPagerAdapter :
)
) {
lateinit var background: String
lateinit var content: String
var content: String? = null
fun updateBackground(backgroundImg: String) {
background = backgroundImg
}
@@ -33,6 +33,7 @@ class DailyRoutineAddCardPagerAdapter :
}

override fun onBindViewHolder(holder: DailyPagerViewHolder, position: Int) {
if (content == null) content = currentList[0].content
holder.onBind(currentList[position])
}

Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import com.sopetit.softie.databinding.ItemDailyRoutineAddThemeBinding
import com.sopetit.softie.domain.entity.Theme
import com.sopetit.softie.util.ItemDiffCallback
import com.sopetit.softie.util.binding.BindingAdapter.setCoilImage
import com.sopetit.softie.util.setSingleOnClickListener

class DailyRoutineAddThemeAdapter :
ListAdapter<Theme, DailyRoutineAddThemeAdapter.DailyThemeViewHolder>(
@@ -21,7 +22,7 @@ class DailyRoutineAddThemeAdapter :
private var onItemClickListener: OnItemClickListener? = null
private var selectedPosition = 0
var clickedThemeId: Int = 1
lateinit var clickedThemeIcon: String
var clickedThemeIcon: String? = null

interface OnItemClickListener {
fun onItemClick(item: Theme, position: Int)
@@ -47,7 +48,7 @@ class DailyRoutineAddThemeAdapter :
}

if (onItemClickListener != null) {
binding.root.setOnClickListener {
binding.root.setSingleOnClickListener {
onItemClickListener?.onItemClick(data, absoluteAdapterPosition)
if (selectedPosition != absoluteAdapterPosition) {
changeThemeBackground(binding, true)
@@ -112,6 +113,7 @@ class DailyRoutineAddThemeAdapter :
}

override fun onBindViewHolder(holder: DailyThemeViewHolder, position: Int) {
if (clickedThemeIcon == null) clickedThemeIcon = currentList[0].iconImageUrl
holder.onBind(currentList[position])
}
}
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@ import com.sopetit.softie.ui.happyroutine.progress.HappyProgressViewModel
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.binding.BindingFragment
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.snackBar
import dagger.hilt.android.AndroidEntryPoint

@@ -47,17 +48,17 @@ class HappyDeleteFragment :

private fun setCardEnter() {
with(binding) {
clHappyDeleteCardFront.setOnClickListener {
clHappyDeleteCardFront.setSingleOnClickListener {
setCardFlip(clHappyDeleteCardFront, clHappyDeleteCardBack)
}
clHappyDeleteCardBack.setOnClickListener {
clHappyDeleteCardBack.setSingleOnClickListener {
setCardFlip(clHappyDeleteCardBack, clHappyDeleteCardFront)
}
}
}

private fun setCancelEnter() {
binding.tvHappyDeleteDestroy.setOnClickListener {
binding.tvHappyDeleteDestroy.setSingleOnClickListener {
requireActivity().supportFragmentManager.popBackStack()
}
}
@@ -74,7 +75,7 @@ class HappyDeleteFragment :
}

private fun setClearEnter() {
binding.btnHappyDeleteClear.setOnClickListener {
binding.btnHappyDeleteClear.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = true,
imageDrawable = R.drawable.ic_bear_face_crying,
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ import com.sopetit.softie.ui.onboarding.OnboardingActivity.Companion.LOADING_DEL
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
@@ -87,13 +88,13 @@ class HappyDetailActivity :
}

private fun setBackEnter() {
binding.ivHappyAddDetailBack.setOnClickListener {
binding.ivHappyAddDetailBack.setSingleOnClickListener {
finish()
}
}

private fun setBottomSheetEnter(icon: String, subRoutineId: Int) {
binding.btnHappyDetailAdd.setOnClickListener {
binding.btnHappyDetailAdd.setSingleOnClickListener {
initHappyRoutineAddBottomSheet(icon, subRoutineId)
}
}
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ import coil.load
import com.sopetit.softie.databinding.ItemHappyAddDetailCardBinding
import com.sopetit.softie.domain.entity.HappyCard
import com.sopetit.softie.util.ItemDiffCallback
import com.sopetit.softie.util.setSingleOnClickListener

class HappyDetailCardPagerAdapter() :
ListAdapter<HappyCard.SubRoutines, HappyDetailCardPagerAdapter.HappyPagerViewHolder>(
@@ -35,10 +36,10 @@ class HappyDetailCardPagerAdapter() :
data.timeTaken
tvHappyRoutineAddCardDetailPlaceBack.text = data.place

clHappyRoutineAddCard.setOnClickListener {
clHappyRoutineAddCard.setSingleOnClickListener {
setCardFlip(clHappyRoutineAddCard, clHappyRoutineAddCardBack)
}
clHappyRoutineAddCardBack.setOnClickListener {
clHappyRoutineAddCardBack.setSingleOnClickListener {
setCardFlip(clHappyRoutineAddCardBack, clHappyRoutineAddCard)
}
}
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import com.sopetit.softie.ui.happyroutine.detail.HappyDetailActivity
import com.sopetit.softie.util.HorizontalChipItemDecoration
import com.sopetit.softie.util.VerticalItemDecoration
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint

@@ -44,7 +45,7 @@ class HappyAddListActivity :
}

private fun setBackEnter() {
binding.ivHappyAddBackArrow.setOnClickListener {
binding.ivHappyAddBackArrow.setSingleOnClickListener {
finish()
}
}
Loading