diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
index 9af5596..67942b8 100644
--- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
+++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt
@@ -4,16 +4,19 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
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,7 +31,6 @@ class FragmentSettingsLab : Fragment() {
setupSpinner()
loadAnnualLeave()
- setupSaveButton()
}
private fun setupSpinner() {
@@ -37,10 +39,25 @@ class FragmentSettingsLab : Fragment() {
val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, daysList)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.spinnerTotalDays.adapter = adapter
+
+ // 선택 시 자동 저장
+ binding.spinnerTotalDays.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ if (!isInitialLoad) {
+ val totalDays = position + 1 // 0-indexed to actual days
+ saveAnnualLeave(totalDays)
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
+ // Do nothing
+ }
+ }
}
private fun loadAnnualLeave() {
lifecycleScope.launch {
+ isInitialLoad = true
val repo = ShiftRepository(requireContext())
val annualLeave = repo.getAnnualLeave()
@@ -53,24 +70,23 @@ class FragmentSettingsLab : Fragment() {
binding.spinnerTotalDays.setSelection(14)
binding.tvRemainingDays.text = "15"
}
+
+ // 초기 로드 완료 후 플래그 변경 (약간의 딜레이로 초기 선택 이벤트 방지)
+ delay(300)
+ isInitialLoad = false
}
}
- private fun setupSaveButton() {
- binding.btnSaveAnnualLeave.setOnClickListener {
- val selectedPosition = binding.spinnerTotalDays.selectedItemPosition
- val totalDays = selectedPosition + 1 // 0-indexed to actual days
+ private fun saveAnnualLeave(totalDays: Int) {
+ lifecycleScope.launch {
+ val repo = ShiftRepository(requireContext())
- 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)}일)")
- }
+ 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 edd2c2a..b9a054f 100644
--- a/app/src/main/res/layout/fragment_settings_lab.xml
+++ b/app/src/main/res/layout/fragment_settings_lab.xml
@@ -15,13 +15,13 @@
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
- android:layout_marginBottom="16dp"/>
+ android:layout_marginBottom="24dp"/>
@@ -30,7 +30,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:padding="12dp"
+ android:padding="16dp"
android:gravity="center_vertical">
- android:id="@+id/npTotalDays"
- android:layout_width="60dp"
- android:layout_height="100dp"/>
@@ -79,7 +76,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:padding="12dp"
+ android:padding="16dp"
android:gravity="center_vertical">
-
-
-
-
-
-
diff --git a/version.json b/version.json
index 60f2160..5eee115 100644
--- a/version.json
+++ b/version.json
@@ -1,7 +1,7 @@
{
- "versionCode": 1145,
- "versionName": "1.4.5",
- "apkUrl": "https://git.webpluss.net/attachments/aeb7b079-f81b-4c77-b8ee-b8fde90a530e",
- "changelog": "v1.4.5: 연차 최초적용 수정, 휴가관리 Spinner 변경, 동그라미 크기 확대",
+ "versionCode": 1146,
+ "versionName": "1.4.6",
+ "apkUrl": "https://git.webpluss.net/attachments/94d91eff-db0f-44af-b043-b03918cba243",
+ "changelog": "v1.4.6: 휴가관리 중복 텍스트 제거, 자동 저장 기능 추가",
"forceUpdate": false
}