Skip to content

Commit

Permalink
[feat/#18] 월별 필터 바텀시트 다이어로그 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
Jokwanhee committed Jul 14, 2024
1 parent 49cffd1 commit cce935e
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.depromeet.core.base.BaseActivity
import com.depromeet.presentation.R
import com.depromeet.presentation.databinding.ActivityStadiumDetailBinding
import com.depromeet.presentation.viewfinder.compose.StadiumDetailScreen
import com.depromeet.presentation.viewfinder.dialog.StadiumFilterMonthsDialog
import com.depromeet.presentation.viewfinder.dialog.StadiumSelectSeatDialog
import com.depromeet.presentation.viewfinder.sample.ReviewContent
import com.depromeet.presentation.viewfinder.viewmodel.StadiumDetailViewModel
Expand Down Expand Up @@ -50,6 +51,10 @@ class StadiumDetailActivity : BaseActivity<ActivityStadiumDetailBinding>({
StadiumSelectSeatDialog.newInstance()
.show(supportFragmentManager, StadiumSelectSeatDialog.TAG)
},
onClickFilterMonthly = {
StadiumFilterMonthsDialog.newInstance()
.show(supportFragmentManager, StadiumFilterMonthsDialog.TAG)
},
}
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.depromeet.presentation.viewfinder.dialog

import android.os.Bundle
import android.view.View
import androidx.fragment.app.activityViewModels
import com.depromeet.core.base.BindingBottomSheetDialog
import com.depromeet.presentation.R
import com.depromeet.presentation.databinding.FragmentStadiumFilterMonthsDialogBinding
import com.depromeet.presentation.viewfinder.viewmodel.StadiumDetailViewModel

class StadiumFilterMonthsDialog :
BindingBottomSheetDialog<FragmentStadiumFilterMonthsDialogBinding>(
R.layout.fragment_stadium_filter_months_dialog,
FragmentStadiumFilterMonthsDialogBinding::inflate
) {
companion object {
const val TAG = "StadiumFilterMonthsDialog"

fun newInstance(): StadiumFilterMonthsDialog {
val args = Bundle()

val fragment = StadiumFilterMonthsDialog()
fragment.arguments = args
return fragment
}
}

private val months = arrayOf<String>(
"1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
)

private val viewModel: StadiumDetailViewModel by activityViewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NORMAL, R.style.TransparentBottomSheetNumberPickerDialogFragment)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setLayoutSizeRatio(widthPercent = 1f, heightPercent = 0.44f)

binding.npMonths.minValue = 0
binding.npMonths.maxValue = months.size - 1
binding.npMonths.value = viewModel.month.value
binding.npMonths.displayedValues = months
binding.npMonths.wrapSelectorWheel = false

binding.npMonths.setOnValueChangedListener { picker, oldVal, newVal ->
viewModel.updateMonth(newVal)
}
}

private fun setLayoutSizeRatio(widthPercent: Float, heightPercent: Float) {
context?.resources?.displayMetrics?.let { metrics ->
binding.root.layoutParams.apply {
width = ((metrics.widthPixels * widthPercent).toInt())
height = ((metrics.heightPixels * heightPercent).toInt())
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,22 @@ import android.util.Log
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import javax.inject.Inject

@HiltViewModel
class StadiumDetailViewModel @Inject constructor() : ViewModel() {
private val _scrollState = MutableStateFlow(false)
val scrollState = _scrollState
val scrollState = _scrollState.asStateFlow()

private val _month = MutableStateFlow(0)
val month = _month.asStateFlow()

fun updateScrollState(state: Boolean) {
_scrollState.value = state
}

fun updateMonth(month: Int) {
_month.value = month
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rect_white_fill_32">

<NumberPicker
android:id="@+id/np_months"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit cce935e

Please sign in to comment.