From 639b22948bedcf3e2bdc6a0c6b3b6f75536df9bf Mon Sep 17 00:00:00 2001 From: sanjeok77 Date: Thu, 12 Mar 2026 21:26:05 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=9C=B4=EA=B0=80=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84=20(=ED=9C=A0=20?= =?UTF-8?q?=EB=8B=A4=EC=9D=B4=EC=96=BC=20=EC=97=B0=EC=B0=A8=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- .../example/shiftalarm/FragmentSettingsLab.kt | 53 ++++++++ .../main/res/layout/fragment_settings_lab.xml | 126 +++++++++++++++--- app/src/main/res/values-en/strings.xml | 27 +++- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 189 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt index 9603850..d427e35 100644 --- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt +++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsLab.kt @@ -4,8 +4,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.example.shiftalarm.databinding.FragmentSettingsLabBinding +import kotlinx.coroutines.launch class FragmentSettingsLab : Fragment() { @@ -20,6 +23,56 @@ class FragmentSettingsLab : Fragment() { return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + setupNumberPicker() + loadAnnualLeave() + setupSaveButton() + } + + private fun setupNumberPicker() { + binding.npTotalDays.apply { + minValue = 1 + maxValue = 25 + wrapSelectorWheel = false + } + } + + private fun loadAnnualLeave() { + lifecycleScope.launch { + val repo = ShiftRepository(requireContext()) + + val annualLeave = repo.getAnnualLeave() + annualLeave?.let { + binding.npTotalDays.value = it.totalDays.toInt() + binding.tvRemainingDays.text = String.format("%.1f", it.remainingDays) + } ?: run { + // Default: 15 days + binding.npTotalDays.value = 15 + binding.tvRemainingDays.text = "15.0" + } + } + } + + private fun setupSaveButton() { + binding.btnSaveAnnualLeave.setOnClickListener { + val totalDays = binding.npTotalDays.value.toFloat() + + lifecycleScope.launch { + val repo = ShiftRepository(requireContext()) + + repo.recalculateAndSaveAnnualLeave(totalDays) + + val updated = repo.getAnnualLeave() + updated?.let { + binding.tvRemainingDays.text = String.format("%.1f", it.remainingDays) + Toast.makeText(requireContext(), "연차가 저장되었습니다. (남은 연차: ${String.format("%.1f", it.remainingDays)}일)", Toast.LENGTH_SHORT).show() + } + } + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/res/layout/fragment_settings_lab.xml b/app/src/main/res/layout/fragment_settings_lab.xml index 92ad376..2b53942 100644 --- a/app/src/main/res/layout/fragment_settings_lab.xml +++ b/app/src/main/res/layout/fragment_settings_lab.xml @@ -5,32 +5,124 @@ android:layout_height="match_parent" android:orientation="vertical" android:padding="24dp" - android:gravity="center"> - - + android:gravity="center_horizontal"> + + android:textColor="@color/text_primary" + android:layout_marginBottom="32dp"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginBottom="24dp" + android:gravity="center"/> + + + diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 9561a1d..15b9dc0 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1,3 +1,28 @@ + - shiftring + Shift Alarm + Team selection + Current shift: %1$s + Next shift: %1$s + Alarm Status + Company selection + Basic Settings + Alarm Settings + Extras + Leave Management + + Jeonju + Nonsan + + + A Team + B Team + C Team + D Team + + + System Settings + Light + Dark + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 36cf5df..ea52b0b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,7 +9,7 @@ 기본 설정 알람 설정 부가기능 - 실험실 + 휴가 관리 전주