feat: 남은 연차 표시 및 달력 UI 개선 (넓은 화면, 큰 근무 표시)

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-03-12 21:26:14 +09:00
parent 639b22948b
commit 8e7f212352
3 changed files with 29 additions and 17 deletions

View File

@@ -99,7 +99,7 @@ class CalendarAdapter(
holder.shiftChar.background = null holder.shiftChar.background = null
holder.shiftChar.text = "" holder.shiftChar.text = ""
holder.holidayNameSmall.visibility = View.GONE holder.holidayNameSmall.visibility = View.GONE
holder.shiftChar.textSize = 13f holder.shiftChar.textSize = 15f
// "반월", "반년" (Half-Monthly, Half-Yearly) Special Logic // "반월", "반년" (Half-Monthly, Half-Yearly) Special Logic
// These are overrides or specific shifts that user sets. // These are overrides or specific shifts that user sets.
@@ -111,7 +111,7 @@ class CalendarAdapter(
// Holiday Mode (Priority): Show full holiday name, no circle // Holiday Mode (Priority): Show full holiday name, no circle
holder.shiftChar.text = fullHolidayName holder.shiftChar.text = fullHolidayName
holder.shiftChar.setTextColor(Color.parseColor("#FF5252")) holder.shiftChar.setTextColor(Color.parseColor("#FF5252"))
holder.shiftChar.textSize = 10f holder.shiftChar.textSize = 11f
holder.shiftChar.background = null holder.shiftChar.background = null
} else if (item.shift != null && item.shift != "비번") { } else if (item.shift != null && item.shift != "비번") {
// Shift Mode // Shift Mode
@@ -120,7 +120,7 @@ class CalendarAdapter(
if (item.shift == "반월" || item.shift == "반년") { if (item.shift == "반월" || item.shift == "반년") {
holder.shiftChar.text = if (item.shift == "반월") "" else "" holder.shiftChar.text = if (item.shift == "반월") "" else ""
holder.shiftChar.setTextColor(ContextCompat.getColor(context, R.color.black)) // Black for contrast on Half Red/Transparent holder.shiftChar.setTextColor(ContextCompat.getColor(context, R.color.black)) // Black for contrast on Half Red/Transparent
holder.shiftChar.textSize = 13f holder.shiftChar.textSize = 15f
holder.shiftChar.background = ContextCompat.getDrawable(context, R.drawable.bg_shift_half_red) holder.shiftChar.background = ContextCompat.getDrawable(context, R.drawable.bg_shift_half_red)
} else { } else {
// Standard Logic // Standard Logic
@@ -137,7 +137,7 @@ class CalendarAdapter(
else -> item.shift.take(1) else -> item.shift.take(1)
} }
holder.shiftChar.text = shiftAbbreviation holder.shiftChar.text = shiftAbbreviation
holder.shiftChar.textSize = 15f holder.shiftChar.textSize = 17f
holder.shiftChar.setTypeface(null, android.graphics.Typeface.BOLD) holder.shiftChar.setTypeface(null, android.graphics.Typeface.BOLD)
val shiftColorRes = when (item.shift) { val shiftColorRes = when (item.shift) {
@@ -205,7 +205,7 @@ class CalendarAdapter(
// holder.holidayNameSmall.text = HolidayManager.getLunarDateString(item.date) // holder.holidayNameSmall.text = HolidayManager.getLunarDateString(item.date)
holder.shiftChar.text = HolidayManager.getLunarDateString(item.date) holder.shiftChar.text = HolidayManager.getLunarDateString(item.date)
holder.shiftChar.textSize = 10f holder.shiftChar.textSize = 11f
holder.shiftChar.setTextColor(ContextCompat.getColor(context, R.color.text_tertiary)) holder.shiftChar.setTextColor(ContextCompat.getColor(context, R.color.text_tertiary))
holder.shiftChar.background = null holder.shiftChar.background = null
} }

View File

@@ -58,12 +58,12 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<!-- Maximized Calendar Card --> <!-- Maximized Calendar Card - Reduced margins for wider calendar -->
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/calendarCard" android:id="@+id/calendarCard"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginHorizontal="12dp" android:layout_marginHorizontal="4dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
app:cardCornerRadius="28dp" app:cardCornerRadius="28dp"
app:cardElevation="0dp" app:cardElevation="0dp"
@@ -160,7 +160,20 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/btnTideLocation"/> app:layout_constraintEnd_toStartOf="@id/tvAnnualLeave"/>
<TextView
android:id="@+id/tvAnnualLeave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="연차: 0.0"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/primary"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toStartOf="@id/btnTideLocation"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnTideLocation" android:id="@+id/btnTideLocation"
@@ -227,7 +240,7 @@
android:id="@+id/otherTeamsCard" android:id="@+id/otherTeamsCard"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp" android:layout_marginHorizontal="4dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
app:cardCornerRadius="20dp" app:cardCornerRadius="20dp"
app:cardElevation="0dp" app:cardElevation="0dp"
@@ -261,5 +274,4 @@
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dayRoot" android:id="@+id/dayRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="92dp" android:layout_height="108dp"
android:background="@drawable/bg_grid_cell_v4"> android:background="@drawable/bg_grid_cell_v4">
<!-- Day Number (top-left) --> <!-- Day Number (top-left) -->
@@ -16,7 +16,7 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="12" android:text="12"
android:textColor="@color/text_primary" android:textColor="@color/text_primary"
android:textSize="14sp" android:textSize="15sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@@ -35,21 +35,21 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<!-- Shift Abbreviation Circular Indicator (Center) --> <!-- Shift Abbreviation Circular Indicator (Center) - Larger size -->
<TextView <TextView
android:id="@+id/shiftChar" android:id="@+id/shiftChar"
android:layout_width="40dp" android:layout_width="48dp"
android:layout_height="40dp" android:layout_height="48dp"
android:gravity="center" android:gravity="center"
android:text="주" android:text="주"
android:textSize="15sp" android:textSize="17sp"
android:textStyle="bold" android:textStyle="bold"
android:textColor="@color/text_primary" android:textColor="@color/text_primary"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.45"/> app:layout_constraintVertical_bias="0.42"/>
<!-- Memo Content Text (Below Shift) - Replacing icon logic for visibility --> <!-- Memo Content Text (Below Shift) - Replacing icon logic for visibility -->
<TextView <TextView