Files
ShiftRing/app/src/main/res/layout/dialog_alarm_edit_spinner.xml
sanjeok77 a4482f0b7b fix: DB 마이그레이션 추가 및 연차 저장/다크모드/달력 UI 개선
- DB 마이그레이션으로 기존 알람 데이터 보존
- 연차 저장 문제 수정 (원래대로/연차 설정 시 updateRemainingAnnualLeave 호출)
- 달력 5행 스크롤 없이 표시 (85dp 높이)
- 알람 편집/월년 선택 다크모드 지원
- 설정 앱정보 버전 동기화 표시

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 21:47:39 +09:00

230 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:background="@color/dialog_bg">
<!-- Header / Full Screen Style -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="취소"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:padding="8dp"
android:layout_alignParentStart="true"/>
<TextView
android:id="@+id/dialogTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알람 추가"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="저장"
android:textColor="@color/primary"
android:textStyle="bold"
android:textSize="16sp"
android:padding="8dp"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="24dp">
<!-- High-Impact Time Picker Area -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="240dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="24dp">
<!-- Native TimePicker but Styled via Code to match One UI as much as possible -->
<!-- If native is too limited, we'd use NumberPickers. For now, let's keep it but maximize size -->
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
android:theme="@style/OneUITimePickerTheme"/>
</LinearLayout>
<!-- Shift Selection (Custom only) -->
<androidx.cardview.widget.CardView
android:id="@+id/cardShiftSelector"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/surface"
android:layout_marginBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="근무 타입"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:layout_marginBottom="12dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView android:id="@+id/btnShiftJu" android:layout_width="44dp" android:layout_height="44dp" android:text="주" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftSeok" android:layout_width="44dp" android:layout_height="44dp" android:text="석" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftYa" android:layout_width="44dp" android:layout_height="44dp" android:text="야" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftYaMat" android:layout_width="44dp" android:layout_height="44dp" android:text="야맞" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4" android:textSize="12sp"/>
<TextView android:id="@+id/btnShiftEtc" android:layout_width="44dp" android:layout_height="44dp" android:text="기타" android:gravity="center" android:textStyle="bold" android:background="@drawable/bg_shift_stroke_v4" android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Sound Selection -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/surface"
android:layout_marginBottom="16dp">
<LinearLayout
android:id="@+id/btnSelectSound"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="20dp"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackground">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_alarm"
app:tint="@color/primary"
android:layout_marginEnd="16dp"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알람음"
android:textSize="16sp"
android:textColor="@color/text_primary"
android:textStyle="bold"/>
<TextView
android:id="@+id/tvSoundName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="기본 알람음"
android:textSize="13sp"
android:textColor="@color/text_secondary"
android:layout_marginTop="2dp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Snooze (Frequency/Repeat) Section -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/surface"
android:layout_marginBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="다시 울림 간격"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="24dp">
<TextView android:id="@+id/snooze5" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="5분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze10" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="10분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze15" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="15분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze30" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="30분" android:gravity="center" android:background="@drawable/bg_pill_rect_unselected"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="반복 횟수"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView android:id="@+id/repeat3" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="3회" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/repeat5" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="5회" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/repeatForever" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="계속" android:gravity="center" android:background="@drawable/bg_pill_rect_unselected"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Delete Button (Only for Custom) -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnDelete"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="알람 삭제"
android:textColor="@color/warning_red"
android:background="@drawable/bg_glass_panel_v3"
android:layout_marginBottom="40dp"
android:visibility="gone"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>