diff --git a/app/build.gradle b/app/build.gradle index d85b4f13e..1cf6b6814 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { minSdk = 23 targetSdk = 35 versionCode = 2026 - versionName = '2.23' + versionName = '2.28' ndk { abiFilters = ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'] } diff --git a/app/src/main/java/com/best/deskclock/provider/ClockDatabaseHelper.java b/app/src/main/java/com/best/deskclock/provider/ClockDatabaseHelper.java index e4c5e0729..9c0e2a153 100644 --- a/app/src/main/java/com/best/deskclock/provider/ClockDatabaseHelper.java +++ b/app/src/main/java/com/best/deskclock/provider/ClockDatabaseHelper.java @@ -27,7 +27,7 @@ class ClockDatabaseHelper extends SQLiteOpenHelper { static final String ALARMS_TABLE_NAME = "alarm_templates"; static final String INSTANCES_TABLE_NAME = "alarm_instances"; - private static final int DATABASE_VERSION = 22; + private static final int DATABASE_VERSION = 23; private static final int MINIMUM_SUPPORTED_VERSION = 15; private final Context mContext; @@ -56,7 +56,8 @@ private static void createAlarmsTable(SQLiteDatabase db, String alarmsTableName) ClockContract.AlarmsColumns.AUTO_SILENCE_DURATION + " INTEGER NOT NULL DEFAULT 10, " + ClockContract.AlarmsColumns.SNOOZE_DURATION + " INTEGER NOT NULL DEFAULT 10, " + ClockContract.AlarmsColumns.CRESCENDO_DURATION + " INTEGER NOT NULL DEFAULT 0, " + - ClockContract.AlarmsColumns.ALARM_VOLUME + " INTEGER NOT NULL DEFAULT 11);"); + ClockContract.AlarmsColumns.ALARM_VOLUME + " INTEGER NOT NULL DEFAULT 11, " + + ClockContract.AlarmsColumns.MISSED_ALARM_REPEAT_LIMIT + " INTEGER NOT NULL DEFAULT 0);"); LogUtils.i("Alarms Table created"); } @@ -80,6 +81,8 @@ private static void createInstanceTable(SQLiteDatabase db, String instanceTableN ClockContract.InstancesColumns.SNOOZE_DURATION + " INTEGER NOT NULL, " + ClockContract.InstancesColumns.CRESCENDO_DURATION + " INTEGER NOT NULL, " + ClockContract.InstancesColumns.ALARM_VOLUME + " INTEGER NOT NULL, " + + ClockContract.InstancesColumns.MISSED_ALARM_REPEAT_LIMIT + " INTEGER NOT NULL DEFAULT 0, " + + ClockContract.InstancesColumns.MISSED_ALARM_REPEAT_COUNT + " INTEGER NOT NULL DEFAULT 0, " + ClockContract.InstancesColumns.ALARM_ID + " INTEGER REFERENCES " + ALARMS_TABLE_NAME + "(" + ClockContract.AlarmsColumns._ID + ") " + "ON UPDATE CASCADE ON DELETE CASCADE);"); @@ -199,6 +202,7 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) { LogUtils.i("dismissAlarmWhenRingtoneEnds, alarmSnoozeActions and increasingVolume" + " columns removed for version 21 upgrade."); + } // Add vibrationPattern and holidayOption columns if (oldVersion < 22) { @@ -209,7 +213,18 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) { LogUtils.i("Added vibrationPattern and holidayOption columns for version 22 upgrade."); } + // Add missed_alarm_repeat_limit and missed_alarm_repeat_count columns + if (oldVersion < 23) { + db.execSQL("ALTER TABLE " + ALARMS_TABLE_NAME + " ADD COLUMN " + + ClockContract.AlarmsColumns.MISSED_ALARM_REPEAT_LIMIT + " INTEGER NOT NULL DEFAULT 0;"); + db.execSQL("ALTER TABLE " + INSTANCES_TABLE_NAME + " ADD COLUMN " + + ClockContract.InstancesColumns.MISSED_ALARM_REPEAT_LIMIT + " INTEGER NOT NULL DEFAULT 0;"); + db.execSQL("ALTER TABLE " + INSTANCES_TABLE_NAME + " ADD COLUMN " + + ClockContract.InstancesColumns.MISSED_ALARM_REPEAT_COUNT + " INTEGER NOT NULL DEFAULT 0;"); + + LogUtils.i("Added missed_alarm_repeat_limit and missed_alarm_repeat_count columns for version 23 upgrade."); } + } long fixAlarmInsert(ContentValues values) { diff --git a/app/src/main/java/com/best/deskclock/provider/ClockProvider.java b/app/src/main/java/com/best/deskclock/provider/ClockProvider.java index d2a981e4f..810983a67 100644 --- a/app/src/main/java/com/best/deskclock/provider/ClockProvider.java +++ b/app/src/main/java/com/best/deskclock/provider/ClockProvider.java @@ -93,6 +93,8 @@ public class ClockProvider extends ContentProvider { ALARMS_TABLE_NAME + "." + AlarmsColumns.AUTO_SILENCE_DURATION); sAlarmsWithInstancesProjection.put(ALARMS_TABLE_NAME + "." + AlarmsColumns.SNOOZE_DURATION, ALARMS_TABLE_NAME + "." + AlarmsColumns.SNOOZE_DURATION); + sAlarmsWithInstancesProjection.put(ALARMS_TABLE_NAME + "." + AlarmsColumns.MISSED_ALARM_REPEAT_LIMIT, + ALARMS_TABLE_NAME + "." + AlarmsColumns.MISSED_ALARM_REPEAT_LIMIT); sAlarmsWithInstancesProjection.put(ALARMS_TABLE_NAME + "." + AlarmsColumns.CRESCENDO_DURATION, ALARMS_TABLE_NAME + "." + AlarmsColumns.CRESCENDO_DURATION); sAlarmsWithInstancesProjection.put(ALARMS_TABLE_NAME + "." + AlarmsColumns.ALARM_VOLUME, @@ -126,11 +128,14 @@ public class ClockProvider extends ContentProvider { INSTANCES_TABLE_NAME + "." + InstancesColumns.AUTO_SILENCE_DURATION); sAlarmsWithInstancesProjection.put(INSTANCES_TABLE_NAME + "." + InstancesColumns.SNOOZE_DURATION, INSTANCES_TABLE_NAME + "." + InstancesColumns.SNOOZE_DURATION); + sAlarmsWithInstancesProjection.put(INSTANCES_TABLE_NAME + "." + InstancesColumns.MISSED_ALARM_REPEAT_LIMIT, + INSTANCES_TABLE_NAME + "." + InstancesColumns.MISSED_ALARM_REPEAT_LIMIT); + sAlarmsWithInstancesProjection.put(INSTANCES_TABLE_NAME + "." + InstancesColumns.MISSED_ALARM_REPEAT_COUNT, + INSTANCES_TABLE_NAME + "." + InstancesColumns.MISSED_ALARM_REPEAT_COUNT); sAlarmsWithInstancesProjection.put(INSTANCES_TABLE_NAME + "." + InstancesColumns.CRESCENDO_DURATION, INSTANCES_TABLE_NAME + "." + InstancesColumns.CRESCENDO_DURATION); sAlarmsWithInstancesProjection.put(INSTANCES_TABLE_NAME + "." + InstancesColumns.ALARM_VOLUME, - INSTANCES_TABLE_NAME + "." + InstancesColumns.ALARM_VOLUME); - } + INSTANCES_TABLE_NAME + "." + InstancesColumns.ALARM_VOLUME); } static { sURIMatcher.addURI(ClockContract.AUTHORITY, "alarms", ALARMS);