diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
index 772e6e8..9af5596 100644
--- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
+++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
@@ -4,18 +4,16 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.NumberPicker
+import android.widget.ArrayAdapter
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.example.shiftalarm.databinding.FragmentSettingsLabBinding
import kotlinx.coroutines.launch
-import kotlinx.coroutines.delay
class FragmentSettingsLab : Fragment() {
private var _binding: FragmentSettingsLabBinding? = null
private val binding get() = _binding!!
- private var isInitialLoad = true
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -28,56 +26,51 @@ class FragmentSettingsLab : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- setupNumberPicker()
+ setupSpinner()
loadAnnualLeave()
+ setupSaveButton()
}
- private fun setupNumberPicker() {
- binding.npTotalDays.apply {
- minValue = 1
- maxValue = 25
- wrapSelectorWheel = false
-
- // 값 변경 시 자동 저장
- setOnValueChangedListener { _, _, newVal ->
- if (!isInitialLoad) {
- saveAnnualLeave(newVal)
- }
- }
- }
+ private fun setupSpinner() {
+ // 1~25일 선택 가능한 어댑터 설정
+ val daysList = (1..25).map { "${it}일" }.toList()
+ val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, daysList)
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
+ binding.spinnerTotalDays.adapter = adapter
}
private fun loadAnnualLeave() {
lifecycleScope.launch {
- isInitialLoad = true
val repo = ShiftRepository(requireContext())
val annualLeave = repo.getAnnualLeave()
annualLeave?.let {
- binding.npTotalDays.value = it.totalDays.toInt()
+ // 저장된 값이 있으면 해당 위치 선택 (0-indexed)
+ binding.spinnerTotalDays.setSelection(it.totalDays.toInt() - 1)
binding.tvRemainingDays.text = formatRemainingDays(it.remainingDays)
} ?: run {
- // Default: 15 days
- binding.npTotalDays.value = 15
+ // Default: 15 days (index 14)
+ binding.spinnerTotalDays.setSelection(14)
binding.tvRemainingDays.text = "15"
}
-
- // 초기 로드 완료 후 플래그 변경
- delay(100)
- isInitialLoad = false
}
}
- private fun saveAnnualLeave(totalDays: Int) {
- lifecycleScope.launch {
- val repo = ShiftRepository(requireContext())
+ private fun setupSaveButton() {
+ binding.btnSaveAnnualLeave.setOnClickListener {
+ val selectedPosition = binding.spinnerTotalDays.selectedItemPosition
+ val totalDays = selectedPosition + 1 // 0-indexed to actual days
- repo.recalculateAndSaveAnnualLeave(totalDays.toFloat())
-
- val updated = repo.getAnnualLeave()
- updated?.let {
- binding.tvRemainingDays.text = formatRemainingDays(it.remainingDays)
- showCustomToast(requireContext(), "총 연차 ${totalDays}일로 설정되었습니다 (남은 연차: ${formatRemainingDays(it.remainingDays)}일)")
+ lifecycleScope.launch {
+ val repo = ShiftRepository(requireContext())
+
+ repo.recalculateAndSaveAnnualLeave(totalDays.toFloat())
+
+ val updated = repo.getAnnualLeave()
+ updated?.let {
+ binding.tvRemainingDays.text = formatRemainingDays(it.remainingDays)
+ showCustomToast(requireContext(), "총 연차 ${totalDays}일로 저장되었습니다 (남은 연차: ${formatRemainingDays(it.remainingDays)}일)")
+ }
}
}
}
diff --git a/app/src/main/res/layout/fragment_settings_lab.xml b/app/src/main/res/layout/fragment_settings_lab.xml
index d9e1bb3..edd2c2a 100644
--- a/app/src/main/res/layout/fragment_settings_lab.xml
+++ b/app/src/main/res/layout/fragment_settings_lab.xml
@@ -47,7 +47,10 @@
android:orientation="horizontal"
android:gravity="center_vertical">
-
android:id="@+id/npTotalDays"
android:layout_width="60dp"
android:layout_height="100dp"/>
@@ -123,4 +126,25 @@
android:layout_marginBottom="8dp"
android:gravity="center"/>
+
+
+
+
+
+