diff --git a/app.apk b/app.apk index baf9be1..c15032f 100644 Binary files a/app.apk and b/app.apk differ diff --git a/app/src/main/java/com/example/shiftalarm/AppDatabase.kt b/app/src/main/java/com/example/shiftalarm/AppDatabase.kt index c629728..d459712 100644 --- a/app/src/main/java/com/example/shiftalarm/AppDatabase.kt +++ b/app/src/main/java/com/example/shiftalarm/AppDatabase.kt @@ -1,7 +1,11 @@ package com.example.shiftalarm import android.content.Context -import androidx.room.* +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase @Database(entities = [ShiftOverride::class, DailyMemo::class, CustomAlarm::class, AnnualLeave::class], version = 4, exportSchema = false) abstract class AppDatabase : RoomDatabase() { @@ -11,6 +15,23 @@ abstract class AppDatabase : RoomDatabase() { @Volatile private var INSTANCE: AppDatabase? = null + // Migration from version 3 to 4: Add AnnualLeave table + private val MIGRATION_3_4 = object : Migration(3, 4) { + override fun migrate(database: SupportSQLiteDatabase) { + // Create AnnualLeave table + database.execSQL( + """ + CREATE TABLE IF NOT EXISTS annual_leave ( + id INTEGER PRIMARY KEY NOT NULL, + totalDays REAL NOT NULL, + remainingDays REAL NOT NULL, + updatedAt INTEGER NOT NULL + ) + """.trimIndent() + ) + } + } + fun getDatabase(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( @@ -18,7 +39,7 @@ abstract class AppDatabase : RoomDatabase() { AppDatabase::class.java, "shift_database" ) - .fallbackToDestructiveMigration() // Simple for now + .addMigrations(MIGRATION_3_4) .build() INSTANCE = instance instance diff --git a/app/src/main/java/com/example/shiftalarm/FragmentSettingsAdditional.kt b/app/src/main/java/com/example/shiftalarm/FragmentSettingsAdditional.kt index c59fc88..957b341 100644 --- a/app/src/main/java/com/example/shiftalarm/FragmentSettingsAdditional.kt +++ b/app/src/main/java/com/example/shiftalarm/FragmentSettingsAdditional.kt @@ -93,6 +93,7 @@ class FragmentSettingsAdditional : Fragment() { // Tide Switch binding.switchTide.isChecked = prefs.getBoolean("show_tide", false) + loadAppVersion() } private fun setupListeners() { @@ -211,6 +212,18 @@ class FragmentSettingsAdditional : Fragment() { } } + + + private fun loadAppVersion() { + try { + val packageInfo = requireContext().packageManager.getPackageInfo(requireContext().packageName, 0) + val versionName = packageInfo.versionName + binding.tvAppVersion.text = "버전 $versionName" + } catch (e: Exception) { + binding.tvAppVersion.text = "버전 1.4.0" + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/example/shiftalarm/MainActivity.kt b/app/src/main/java/com/example/shiftalarm/MainActivity.kt index 4455ea0..d8f4240 100644 --- a/app/src/main/java/com/example/shiftalarm/MainActivity.kt +++ b/app/src/main/java/com/example/shiftalarm/MainActivity.kt @@ -595,6 +595,7 @@ class MainActivity : AppCompatActivity() { android.widget.Toast.makeText(this, "원래 근무로 복구되었습니다.", android.widget.Toast.LENGTH_SHORT).show() syncAllAlarms(this) updateCalendar() + repo.updateRemainingAnnualLeave() } "직접 입력" -> { showCustomInputDialog(date, repo, team, factory) @@ -620,6 +621,7 @@ class MainActivity : AppCompatActivity() { updateCalendar() syncAllAlarms(this) android.widget.Toast.makeText(this, "${selected}(으)로 기록되었습니다. 알람이 해제됩니다.", android.widget.Toast.LENGTH_SHORT).show() + repo.updateRemainingAnnualLeave() } } } diff --git a/app/src/main/res/layout/dialog_alarm_edit_spinner.xml b/app/src/main/res/layout/dialog_alarm_edit_spinner.xml index b7869ff..8883f04 100644 --- a/app/src/main/res/layout/dialog_alarm_edit_spinner.xml +++ b/app/src/main/res/layout/dialog_alarm_edit_spinner.xml @@ -29,7 +29,7 @@ android:text="알람 추가" android:textSize="18sp" android:textStyle="bold" - android:textColor="@color/black" + android:textColor="@color/text_primary" android:layout_centerInParent="true"/> diff --git a/app/src/main/res/layout/fragment_settings_additional.xml b/app/src/main/res/layout/fragment_settings_additional.xml index 5871893..e8d5dc7 100644 --- a/app/src/main/res/layout/fragment_settings_additional.xml +++ b/app/src/main/res/layout/fragment_settings_additional.xml @@ -361,5 +361,17 @@ + + + diff --git a/app/src/main/res/layout/item_day.xml b/app/src/main/res/layout/item_day.xml index 647cb63..e6dd4ea 100644 --- a/app/src/main/res/layout/item_day.xml +++ b/app/src/main/res/layout/item_day.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/dayRoot" android:layout_width="match_parent" - android:layout_height="108dp" + android:layout_height="85dp" android:background="@drawable/bg_grid_cell_v4">