- DB 마이그레이션으로 기존 알람 데이터 보존 - 연차 저장 문제 수정 (원래대로/연차 설정 시 updateRemainingAnnualLeave 호출) - 달력 5행 스크롤 없이 표시 (85dp 높이) - 알람 편집/월년 선택 다크모드 지원 - 설정 앱정보 버전 동기화 표시 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
378 lines
16 KiB
XML
378 lines
16 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<androidx.core.widget.NestedScrollView 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:fillViewport="true">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@color/surface"
|
|
android:padding="16dp">
|
|
|
|
<!-- Header Section -->
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:gravity="center_vertical"
|
|
android:layout_marginBottom="20dp">
|
|
|
|
<ImageView
|
|
android:layout_width="24dp"
|
|
android:layout_height="24dp"
|
|
android:src="@drawable/ic_plus_circle"
|
|
app:tint="@color/section_title"
|
|
android:layout_marginEnd="12dp"/>
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="부가 기능 및 테마"
|
|
android:textSize="17sp"
|
|
android:textStyle="bold"
|
|
android:textColor="@color/section_title"/>
|
|
</LinearLayout>
|
|
|
|
<!-- Tide Section (Moved Up) -->
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:gravity="center_vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:padding="20dp">
|
|
|
|
<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:textColor="@color/text_primary"
|
|
android:textSize="14sp"
|
|
android:textStyle="bold"
|
|
android:layout_marginBottom="4dp"/>
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="군산, 변산, 여수, 태안 물때 표시"
|
|
android:textSize="12sp"
|
|
android:textColor="@color/text_secondary"/>
|
|
</LinearLayout>
|
|
|
|
<androidx.appcompat.widget.SwitchCompat
|
|
android:id="@+id/switchTide"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"/>
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- Backup/Restore Section (Moved Up) -->
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:padding="20dp">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="데이터 백업 및 복구"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="13sp"
|
|
android:textStyle="bold"
|
|
android:layout_marginBottom="12dp"/>
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal">
|
|
|
|
<androidx.appcompat.widget.AppCompatButton
|
|
android:id="@+id/btnBackup"
|
|
android:layout_width="0dp"
|
|
android:layout_height="48dp"
|
|
android:layout_weight="1"
|
|
android:text="백업하기"
|
|
android:textColor="@color/text_primary"
|
|
android:textStyle="bold"
|
|
android:background="@drawable/bg_glass_button_light"
|
|
android:layout_marginEnd="4dp"/>
|
|
|
|
<androidx.appcompat.widget.AppCompatButton
|
|
android:id="@+id/btnRestore"
|
|
android:layout_width="0dp"
|
|
android:layout_height="48dp"
|
|
android:layout_weight="1"
|
|
android:text="복구하기"
|
|
android:textColor="@color/text_primary"
|
|
android:textStyle="bold"
|
|
android:background="@drawable/bg_glass_button_light"
|
|
android:layout_marginStart="4dp"/>
|
|
</LinearLayout>
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="근무 변경 내역, 메모, 환경 설정이 저장됩니다."
|
|
android:textSize="11sp"
|
|
android:textColor="@color/text_tertiary"
|
|
android:layout_marginTop="8dp"/>
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- Sharing Section (Moved Up) -->
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:paddingVertical="8dp">
|
|
|
|
<LinearLayout
|
|
android:id="@+id/btnShareApp"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:gravity="center_vertical"
|
|
android:paddingHorizontal="20dp"
|
|
android:paddingVertical="16dp"
|
|
android:background="?attr/selectableItemBackground"
|
|
android:clickable="true"
|
|
android:focusable="true">
|
|
|
|
<ImageView
|
|
android:layout_width="20dp"
|
|
android:layout_height="20dp"
|
|
android:src="@drawable/ic_plus_circle"
|
|
app:tint="@color/primary"
|
|
android:layout_marginEnd="16dp"/>
|
|
|
|
<TextView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:text="교대링 앱 친구에게 공유하기"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="16sp"/>
|
|
</LinearLayout>
|
|
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- Theme Section -->
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:padding="20dp">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="화면 테마 설정"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="13sp"
|
|
android:textStyle="bold"
|
|
android:layout_marginBottom="12dp"/>
|
|
|
|
<Spinner
|
|
android:id="@+id/themeSpinner"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="48dp"
|
|
android:background="@drawable/bg_glass_button_light"
|
|
android:paddingStart="12dp"
|
|
android:paddingEnd="12dp"/>
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- Info & Support Section -->
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="정보 및 지원"
|
|
android:textColor="@color/text_secondary"
|
|
android:textSize="13sp"
|
|
android:textStyle="bold"
|
|
android:layout_marginBottom="8dp"
|
|
android:layout_marginStart="12dp"/>
|
|
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:paddingVertical="8dp">
|
|
|
|
<!-- Manual -->
|
|
<LinearLayout
|
|
android:id="@+id/btnManual"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:gravity="center_vertical"
|
|
android:paddingHorizontal="20dp"
|
|
android:paddingVertical="16dp"
|
|
android:background="?attr/selectableItemBackground"
|
|
android:clickable="true"
|
|
android:focusable="true">
|
|
|
|
<ImageView
|
|
android:layout_width="20dp"
|
|
android:layout_height="20dp"
|
|
android:src="@drawable/ic_memo"
|
|
app:tint="@color/text_primary"
|
|
android:layout_marginEnd="16dp"/>
|
|
|
|
<TextView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:text="사용 설명서"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="16sp"/>
|
|
</LinearLayout>
|
|
|
|
<View
|
|
android:layout_width="match_parent"
|
|
android:layout_height="0.5dp"
|
|
android:background="@color/glass_panel_stroke"
|
|
android:layout_marginHorizontal="20dp"/>
|
|
|
|
<!-- Notice -->
|
|
<LinearLayout
|
|
android:id="@+id/btnNotice"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="horizontal"
|
|
android:gravity="center_vertical"
|
|
android:paddingHorizontal="20dp"
|
|
android:paddingVertical="16dp"
|
|
android:background="?attr/selectableItemBackground"
|
|
android:clickable="true"
|
|
android:focusable="true">
|
|
|
|
<ImageView
|
|
android:layout_width="20dp"
|
|
android:layout_height="20dp"
|
|
android:src="@drawable/ic_bell"
|
|
app:tint="@color/text_primary"
|
|
android:layout_marginEnd="16dp"/>
|
|
|
|
<TextView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:text="업데이트 정보"
|
|
android:textColor="@color/text_primary"
|
|
android:textSize="16sp"/>
|
|
</LinearLayout>
|
|
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- Reset Section (Very Bottom) -->
|
|
<androidx.cardview.widget.CardView
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:cardCornerRadius="24dp"
|
|
app:cardElevation="0dp"
|
|
app:cardBackgroundColor="@android:color/transparent"
|
|
android:layout_marginBottom="24dp">
|
|
|
|
<LinearLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/bg_glass_panel_v3"
|
|
android:padding="20dp">
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="데이터 초기화"
|
|
android:textColor="@color/shift_red"
|
|
android:textSize="13sp"
|
|
android:textStyle="bold"
|
|
android:layout_marginBottom="12dp"/>
|
|
|
|
<androidx.appcompat.widget.AppCompatButton
|
|
android:id="@+id/btnResetOverrides"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="48dp"
|
|
android:text="개별 근무/알람 설정 전체 삭제"
|
|
android:textColor="@color/shift_red"
|
|
android:background="@drawable/bg_glass_button_light"/>
|
|
|
|
<TextView
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="달력에서 개별적으로 바꾼 근무와 알람 시간이 모두 초기 설정으로 복구됩니다."
|
|
android:textSize="11sp"
|
|
android:textColor="@color/text_tertiary"
|
|
android:layout_marginTop="8dp"/>
|
|
</LinearLayout>
|
|
</androidx.cardview.widget.CardView>
|
|
|
|
<!-- App Version -->
|
|
<TextView
|
|
android:id="@+id/tvAppVersion"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:text="버전 1.4.0"
|
|
android:textColor="@color/text_tertiary"
|
|
android:textSize="12sp"
|
|
android:layout_gravity="center_horizontal"
|
|
android:layout_marginTop="8dp"
|
|
android:layout_marginBottom="16dp"/>
|
|
|
|
</LinearLayout>
|
|
</androidx.core.widget.NestedScrollView>
|