diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..94ce025 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt b/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt index 2223899..7210314 100644 --- a/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt +++ b/app/src/main/java/com/example/smartalarm/ui/alarm/AlarmRingActivity.kt @@ -159,18 +159,50 @@ class AlarmRingActivity : AppCompatActivity() { private fun snoozeAlarm() { snoozeCount++ - // Schedule snooze (typically 5 minutes) - val snoozeIntent = android.content.Intent(this, AlarmService::class.java).apply { - putExtras(intent) + // Save statistics with snooze count + val stats = Statistics( + id = statisticsId, + alarmId = alarmId, + triggeredAt = triggeredTime, + stoppedAt = null, // Not stopped yet, just snoozed + snoozedCount = snoozeCount, + stopMethod = "snooze" + ) + + lifecycleScope.launch { + try { + if (statisticsId > 0) { + statisticsViewModel.updateStatistics(stats) + } else { + statisticsId = statisticsViewModel.saveStatistics(stats) as? Long ?: 0L + } + } catch (e: Exception) { + e.printStackTrace() + } } + // Stop current alarm service stopService(android.content.Intent(this, AlarmService::class.java)) - // Reschedule for 5 minutes later - lifecycleScope.launch { - delay(5 * 60 * 1000) // 5 minutes - startForegroundService(snoozeIntent) - } + // Schedule snooze alarm for 5 minutes later + val handler = android.os.Handler(android.os.Looper.getMainLooper()) + handler.postDelayed({ + val snoozeIntent = android.content.Intent(applicationContext, AlarmService::class.java).apply { + putExtra("ALARM_ID", alarmId) + putExtra("ALARM_LABEL", intent.getStringExtra("ALARM_LABEL") ?: "Alarm") + putExtra("SHAKE_TO_STOP", shakeToStop) + putExtra("SHAKE_INTENSITY", shakeIntensity) + putExtra("GRADUAL_MODE", intent.getBooleanExtra("GRADUAL_MODE", false)) + putExtra("VIBRATE", intent.getBooleanExtra("VIBRATE", true)) + putExtra("RINGTONE_URI", intent.getStringExtra("RINGTONE_URI")) + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(snoozeIntent) + } else { + startService(snoozeIntent) + } + }, 5 * 60 * 1000) // 5 minutes finish() } diff --git a/app/src/main/res/drawable/bg_badge_gradual.xml b/app/src/main/res/drawable/bg_badge_gradual.xml new file mode 100644 index 0000000..492a0ba --- /dev/null +++ b/app/src/main/res/drawable/bg_badge_gradual.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_badge_shake.xml b/app/src/main/res/drawable/bg_badge_shake.xml new file mode 100644 index 0000000..2adfd37 --- /dev/null +++ b/app/src/main/res/drawable/bg_badge_shake.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_shake_settings.xml b/app/src/main/res/drawable/bg_shake_settings.xml new file mode 100644 index 0000000..f4d1384 --- /dev/null +++ b/app/src/main/res/drawable/bg_shake_settings.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ca3826a 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_alarm_ring.xml b/app/src/main/res/layout/activity_alarm_ring.xml index e6ac047..d93c94b 100644 --- a/app/src/main/res/layout/activity_alarm_ring.xml +++ b/app/src/main/res/layout/activity_alarm_ring.xml @@ -62,9 +62,12 @@ android:id="@+id/btnDismiss" android:layout_width="0dp" android:layout_height="64dp" - android:text="Dismiss" + android:text="DISMISS" android:textSize="18sp" + android:textColor="@android:color/white" app:cornerRadius="32dp" + app:strokeColor="@android:color/white" + app:strokeWidth="2dp" app:layout_constraintBottom_toTopOf="@id/btnSnooze" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -74,12 +77,16 @@ android:id="@+id/btnSnooze" android:layout_width="0dp" android:layout_height="64dp" - android:text="Snooze" + android:text="SNOOZE" android:textSize="18sp" + android:textColor="@android:color/white" + app:strokeColor="@android:color/white" + app:strokeWidth="2dp" app:cornerRadius="32dp" style="@style/Widget.MaterialComponents.Button.OutlinedButton" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> - \ No newline at end of file + + diff --git a/app/src/main/res/layout/fragment_alarm_edit.xml b/app/src/main/res/layout/fragment_alarm_edit.xml index 084a84e..9ded1ab 100644 --- a/app/src/main/res/layout/fragment_alarm_edit.xml +++ b/app/src/main/res/layout/fragment_alarm_edit.xml @@ -109,9 +109,11 @@ android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp" - android:background="@drawable/bg_badge" + android:background="@drawable/bg_shake_settings" android:visibility="gone" android:layout_marginTop="8dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" app:layout_constraintTop_toBottomOf="@id/switchShakeToStop"> + android:textSize="14sp" + android:textColor="@android:color/white" + android:textStyle="bold"/> + android:layout_marginTop="8dp" + android:progressTint="?attr/colorPrimary" + android:thumbTint="?attr/colorPrimary"/> diff --git a/app/src/main/res/layout/item_alarm.xml b/app/src/main/res/layout/item_alarm.xml index 3928f2a..6a1c5d7 100644 --- a/app/src/main/res/layout/item_alarm.xml +++ b/app/src/main/res/layout/item_alarm.xml @@ -18,7 +18,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="08:00" - android:textSize="48sp" + android:textSize="42sp" android:textStyle="bold" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"/> @@ -27,7 +27,8 @@ android:id="@+id/switchEnabled" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintTop_toTopOf="@id/tvTime" + app:layout_constraintBottom_toBottomOf="@id/tvTime" app:layout_constraintEnd_toEndOf="parent"/> @@ -46,56 +49,68 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:text="Mon, Tue, Wed, Thu, Fri" - android:textSize="14sp" + android:textSize="12sp" android:textColor="?android:attr/textColorSecondary" - android:layout_marginTop="4dp" + android:layout_marginTop="2dp" + android:singleLine="true" + android:ellipsize="end" app:layout_constraintTop_toBottomOf="@id/tvLabel" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/btnDelete"/> - + app:layout_constraintEnd_toStartOf="@id/btnDelete"> - + - + + + + + - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 56% rename from app/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755..c4a603d 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78..2447477 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..a76c7c7 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d..7cb63a7 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d6..ce5eb6b 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..dc4e059 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611d..d136666 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a307..c6dfa46 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..234b0da Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a695..e5302f0 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 28d4b77..dc299ab 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..bb07c51 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f50..8b67e97 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index aa7d642..b70be66 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..1afdba6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae3..46b91e9 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3e1382b..0dfa58c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,4 +9,12 @@ #FFFFFFFF #FF2196F3 #FF1976D2 + + + #FFE0B2 + #B2DFDB + + + #424242 + #2196F3 \ No newline at end of file