mirror of
https://github.com/FossifyOrg/Clock.git
synced 2026-06-11 07:50:13 -04:00
Switch to config.firstDayOfWeek from commons
This commit is contained in:
@@ -56,6 +56,8 @@ import org.fossify.commons.helpers.LICENSE_RTL
|
||||
import org.fossify.commons.helpers.LICENSE_STETHO
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.commons.models.FAQItem
|
||||
import java.time.temporal.WeekFields
|
||||
import java.util.Locale
|
||||
|
||||
class MainActivity : SimpleActivity() {
|
||||
private var storedTextColor = 0
|
||||
@@ -407,11 +409,9 @@ class MainActivity : SimpleActivity() {
|
||||
|
||||
@Deprecated("Remove this method in future releases")
|
||||
private fun migrateFirstDayOfWeek() {
|
||||
// check existing config.isSundayFirst to migrate setting value
|
||||
if (config.isSundayFirst) {
|
||||
config.firstDayOfWeek = 6
|
||||
// revert old setting to not run this code anymore
|
||||
config.isSundayFirst = false
|
||||
if (config.migrateFirstDayOfWeek) {
|
||||
config.migrateFirstDayOfWeek = false
|
||||
config.firstDayOfWeek = WeekFields.of(Locale.getDefault()).firstDayOfWeek.value
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ import org.fossify.commons.helpers.TAB_LAST_USED
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.commons.helpers.isTiramisuPlus
|
||||
import org.fossify.commons.models.RadioItem
|
||||
import java.time.DayOfWeek
|
||||
import java.util.Locale
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
@@ -199,24 +200,31 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupStartWeekOn() {
|
||||
val items = arrayListOf(
|
||||
RadioItem(6, getString(org.fossify.commons.R.string.sunday)),
|
||||
RadioItem(0, getString(org.fossify.commons.R.string.monday)),
|
||||
RadioItem(1, getString(org.fossify.commons.R.string.tuesday)),
|
||||
RadioItem(2, getString(org.fossify.commons.R.string.wednesday)),
|
||||
RadioItem(3, getString(org.fossify.commons.R.string.thursday)),
|
||||
RadioItem(4, getString(org.fossify.commons.R.string.friday)),
|
||||
RadioItem(5, getString(org.fossify.commons.R.string.saturday)),
|
||||
binding.settingsStartWeekOn.text = resources.getStringArray(
|
||||
org.fossify.commons.R.array.week_days
|
||||
)[config.firstDayOfWeek - 1]
|
||||
|
||||
val weekDays = arrayListOf(
|
||||
RadioItem(DayOfWeek.SUNDAY.value, getString(org.fossify.commons.R.string.sunday)),
|
||||
RadioItem(DayOfWeek.MONDAY.value, getString(org.fossify.commons.R.string.monday)),
|
||||
RadioItem(DayOfWeek.TUESDAY.value, getString(org.fossify.commons.R.string.tuesday)),
|
||||
RadioItem(DayOfWeek.WEDNESDAY.value, getString(org.fossify.commons.R.string.wednesday)),
|
||||
RadioItem(DayOfWeek.THURSDAY.value, getString(org.fossify.commons.R.string.thursday)),
|
||||
RadioItem(DayOfWeek.FRIDAY.value, getString(org.fossify.commons.R.string.friday)),
|
||||
RadioItem(DayOfWeek.SATURDAY.value, getString(org.fossify.commons.R.string.saturday)),
|
||||
)
|
||||
|
||||
binding.settingsStartWeekOn.text =
|
||||
resources.getStringArray(org.fossify.commons.R.array.week_days)[config.firstDayOfWeek]
|
||||
binding.settingsStartWeekOnHolder.setOnClickListener {
|
||||
RadioGroupDialog(this@SettingsActivity, items, config.firstDayOfWeek) { day ->
|
||||
RadioGroupDialog(
|
||||
activity = this,
|
||||
items = weekDays,
|
||||
checkedItemId = config.firstDayOfWeek
|
||||
) { day ->
|
||||
val firstDayOfWeek = day as Int
|
||||
config.firstDayOfWeek = firstDayOfWeek
|
||||
binding.settingsStartWeekOn.text =
|
||||
resources.getStringArray(org.fossify.commons.R.array.week_days)[config.firstDayOfWeek]
|
||||
binding.settingsStartWeekOn.text = resources.getStringArray(
|
||||
org.fossify.commons.R.array.week_days
|
||||
)[config.firstDayOfWeek - 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.fossify.clock.extensions.config
|
||||
import org.fossify.clock.extensions.dbHelper
|
||||
import org.fossify.clock.extensions.getFormattedTime
|
||||
import org.fossify.clock.extensions.handleFullScreenNotificationsPermission
|
||||
import org.fossify.clock.extensions.orderDaysList
|
||||
import org.fossify.clock.extensions.rotateWeekdays
|
||||
import org.fossify.clock.helpers.PICK_AUDIO_FILE_INTENT_ID
|
||||
import org.fossify.clock.helpers.TODAY_BIT
|
||||
import org.fossify.clock.helpers.TOMORROW_BIT
|
||||
@@ -124,7 +124,7 @@ class EditAlarmDialog(
|
||||
val dayLetters =
|
||||
activity.resources.getStringArray(org.fossify.commons.R.array.week_day_letters)
|
||||
.toList() as ArrayList<String>
|
||||
val dayIndexes = activity.orderDaysList(arrayListOf(0, 1, 2, 3, 4, 5, 6))
|
||||
val dayIndexes = activity.rotateWeekdays(arrayListOf(0, 1, 2, 3, 4, 5, 6))
|
||||
|
||||
dayIndexes.forEach {
|
||||
val bitmask = 1 shl it
|
||||
|
||||
@@ -28,7 +28,6 @@ import org.fossify.clock.helpers.ALARM_ID
|
||||
import org.fossify.clock.helpers.AlarmController
|
||||
import org.fossify.clock.helpers.Config
|
||||
import org.fossify.clock.helpers.DBHelper
|
||||
import org.fossify.clock.helpers.UPCOMING_ALARM_INTENT_ID
|
||||
import org.fossify.clock.helpers.EDITED_TIME_ZONE_SEPARATOR
|
||||
import org.fossify.clock.helpers.FORMAT_12H
|
||||
import org.fossify.clock.helpers.FORMAT_24H
|
||||
@@ -45,6 +44,7 @@ import org.fossify.clock.helpers.TIMER_ID
|
||||
import org.fossify.clock.helpers.TODAY_BIT
|
||||
import org.fossify.clock.helpers.TOMORROW_BIT
|
||||
import org.fossify.clock.helpers.TimerHelper
|
||||
import org.fossify.clock.helpers.UPCOMING_ALARM_INTENT_ID
|
||||
import org.fossify.clock.helpers.formatTime
|
||||
import org.fossify.clock.helpers.getAllTimeZones
|
||||
import org.fossify.clock.helpers.getDefaultTimeZoneTitle
|
||||
@@ -69,6 +69,7 @@ import org.fossify.commons.extensions.getProperPrimaryColor
|
||||
import org.fossify.commons.extensions.getSelectedDaysString
|
||||
import org.fossify.commons.extensions.grantReadUriPermission
|
||||
import org.fossify.commons.extensions.notificationManager
|
||||
import org.fossify.commons.extensions.rotateLeft
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.toInt
|
||||
import org.fossify.commons.extensions.toast
|
||||
@@ -566,24 +567,17 @@ fun Context.getAlarmSelectedDaysString(bitMask: Int): String {
|
||||
TODAY_BIT -> getString(org.fossify.commons.R.string.today)
|
||||
TOMORROW_BIT -> getString(org.fossify.commons.R.string.tomorrow)
|
||||
EVERY_DAY_BIT -> getString(org.fossify.commons.R.string.every_day)
|
||||
else -> getSelectedDaysString(bitMask)
|
||||
else -> getSelectedDaysString(bitMask) // TODO: This does not respect config.firstDayOfWeek
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.orderDaysList(days: List<Int>): List<Int> {
|
||||
if (config.firstDayOfWeek > 0) {
|
||||
val range = (config.firstDayOfWeek..6).toList() + (0..<config.firstDayOfWeek).toList()
|
||||
return days.slice(range)
|
||||
} else {
|
||||
return days
|
||||
}
|
||||
}
|
||||
fun Context.rotateWeekdays(days: List<Int>) = days.rotateLeft(config.firstDayOfWeek - 1)
|
||||
|
||||
fun Context.firstDayOrder(bitMask: Int): Int {
|
||||
if (bitMask == TODAY_BIT) return -2
|
||||
if (bitMask == TOMORROW_BIT) return -1
|
||||
|
||||
val dayBits = orderDaysList(
|
||||
val dayBits = rotateWeekdays(
|
||||
arrayListOf(
|
||||
MONDAY_BIT,
|
||||
TUESDAY_BIT,
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.fossify.clock.helpers
|
||||
|
||||
import android.content.Context
|
||||
import android.media.RingtoneManager
|
||||
import androidx.core.content.edit
|
||||
import org.fossify.clock.extensions.gson.gson
|
||||
import org.fossify.clock.models.Alarm
|
||||
import org.fossify.clock.models.ObfuscatedAlarm
|
||||
@@ -11,8 +12,6 @@ import org.fossify.commons.extensions.getDefaultAlarmSound
|
||||
import org.fossify.commons.extensions.getDefaultAlarmTitle
|
||||
import org.fossify.commons.helpers.BaseConfig
|
||||
import org.fossify.commons.helpers.SORT_DESCENDING
|
||||
import java.util.Calendar
|
||||
import java.util.Locale
|
||||
|
||||
class Config(context: Context) : BaseConfig(context) {
|
||||
companion object {
|
||||
@@ -21,11 +20,13 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
|
||||
var selectedTimeZones: Set<String>
|
||||
get() = prefs.getStringSet(SELECTED_TIME_ZONES, HashSet())!!
|
||||
set(selectedTimeZones) = prefs.edit().putStringSet(SELECTED_TIME_ZONES, selectedTimeZones).apply()
|
||||
set(selectedTimeZones) = prefs.edit().putStringSet(SELECTED_TIME_ZONES, selectedTimeZones)
|
||||
.apply()
|
||||
|
||||
var editedTimeZoneTitles: Set<String>
|
||||
get() = prefs.getStringSet(EDITED_TIME_ZONE_TITLES, HashSet())!!
|
||||
set(editedTimeZoneTitles) = prefs.edit().putStringSet(EDITED_TIME_ZONE_TITLES, editedTimeZoneTitles).apply()
|
||||
set(editedTimeZoneTitles) = prefs.edit()
|
||||
.putStringSet(EDITED_TIME_ZONE_TITLES, editedTimeZoneTitles).apply()
|
||||
|
||||
var timerSeconds: Int
|
||||
get() = prefs.getInt(TIMER_SECONDS, 300)
|
||||
@@ -36,16 +37,23 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
set(timerVibrate) = prefs.edit().putBoolean(TIMER_VIBRATE, timerVibrate).apply()
|
||||
|
||||
var timerSoundUri: String
|
||||
get() = prefs.getString(TIMER_SOUND_URI, context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM).uri)!!
|
||||
get() = prefs.getString(
|
||||
TIMER_SOUND_URI,
|
||||
context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM).uri
|
||||
)!!
|
||||
set(timerSoundUri) = prefs.edit().putString(TIMER_SOUND_URI, timerSoundUri).apply()
|
||||
|
||||
var timerSoundTitle: String
|
||||
get() = prefs.getString(TIMER_SOUND_TITLE, context.getDefaultAlarmTitle(RingtoneManager.TYPE_ALARM))!!
|
||||
get() = prefs.getString(
|
||||
TIMER_SOUND_TITLE,
|
||||
context.getDefaultAlarmTitle(RingtoneManager.TYPE_ALARM)
|
||||
)!!
|
||||
set(timerSoundTitle) = prefs.edit().putString(TIMER_SOUND_TITLE, timerSoundTitle).apply()
|
||||
|
||||
var timerMaxReminderSecs: Int
|
||||
get() = prefs.getInt(TIMER_MAX_REMINDER_SECS, DEFAULT_MAX_TIMER_REMINDER_SECS)
|
||||
set(timerMaxReminderSecs) = prefs.edit().putInt(TIMER_MAX_REMINDER_SECS, timerMaxReminderSecs).apply()
|
||||
set(timerMaxReminderSecs) = prefs.edit()
|
||||
.putInt(TIMER_MAX_REMINDER_SECS, timerMaxReminderSecs).apply()
|
||||
|
||||
var timerLabel: String?
|
||||
get() = prefs.getString(TIMER_LABEL, null)
|
||||
@@ -61,7 +69,8 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
|
||||
var alarmsCustomSorting: String
|
||||
get() = prefs.getString(ALARMS_CUSTOM_SORTING, "")!!
|
||||
set(alarmsCustomSorting) = prefs.edit().putString(ALARMS_CUSTOM_SORTING, alarmsCustomSorting).apply()
|
||||
set(alarmsCustomSorting) = prefs.edit()
|
||||
.putString(ALARMS_CUSTOM_SORTING, alarmsCustomSorting).apply()
|
||||
|
||||
var timerSort: Int
|
||||
get() = prefs.getInt(TIMERS_SORT_BY, SORT_BY_CREATION_ORDER)
|
||||
@@ -69,15 +78,18 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
|
||||
var timersCustomSorting: String
|
||||
get() = prefs.getString(TIMERS_CUSTOM_SORTING, "")!!
|
||||
set(timersCustomSorting) = prefs.edit().putString(TIMERS_CUSTOM_SORTING, timersCustomSorting).apply()
|
||||
set(timersCustomSorting) = prefs.edit()
|
||||
.putString(TIMERS_CUSTOM_SORTING, timersCustomSorting).apply()
|
||||
|
||||
var alarmMaxReminderSecs: Int
|
||||
get() = prefs.getInt(ALARM_MAX_REMINDER_SECS, DEFAULT_MAX_ALARM_REMINDER_SECS)
|
||||
set(alarmMaxReminderSecs) = prefs.edit().putInt(ALARM_MAX_REMINDER_SECS, alarmMaxReminderSecs).apply()
|
||||
set(alarmMaxReminderSecs) = prefs.edit()
|
||||
.putInt(ALARM_MAX_REMINDER_SECS, alarmMaxReminderSecs).apply()
|
||||
|
||||
var increaseVolumeGradually: Boolean
|
||||
get() = prefs.getBoolean(INCREASE_VOLUME_GRADUALLY, true)
|
||||
set(increaseVolumeGradually) = prefs.edit().putBoolean(INCREASE_VOLUME_GRADUALLY, increaseVolumeGradually).apply()
|
||||
set(increaseVolumeGradually) = prefs.edit()
|
||||
.putBoolean(INCREASE_VOLUME_GRADUALLY, increaseVolumeGradually).apply()
|
||||
|
||||
var alarmLastConfig: Alarm?
|
||||
get() = prefs.getString(ALARM_LAST_CONFIG, null)?.let { lastAlarm ->
|
||||
@@ -113,20 +125,23 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
|
||||
var stopwatchLapsSort: Int
|
||||
get() = prefs.getInt(STOPWATCH_LAPS_SORT_BY, SORT_BY_LAP or SORT_DESCENDING)
|
||||
set(stopwatchLapsSort) = prefs.edit().putInt(STOPWATCH_LAPS_SORT_BY, stopwatchLapsSort).apply()
|
||||
set(stopwatchLapsSort) = prefs.edit().putInt(STOPWATCH_LAPS_SORT_BY, stopwatchLapsSort)
|
||||
.apply()
|
||||
|
||||
var wasInitialWidgetSetUp: Boolean
|
||||
get() = prefs.getBoolean(WAS_INITIAL_WIDGET_SET_UP, false)
|
||||
set(wasInitialWidgetSetUp) = prefs.edit().putBoolean(WAS_INITIAL_WIDGET_SET_UP, wasInitialWidgetSetUp).apply()
|
||||
set(wasInitialWidgetSetUp) = prefs.edit()
|
||||
.putBoolean(WAS_INITIAL_WIDGET_SET_UP, wasInitialWidgetSetUp).apply()
|
||||
|
||||
var lastDataExportPath: String
|
||||
get() = prefs.getString(LAST_DATA_EXPORT_PATH, "")!!
|
||||
set(lastDataExportPath) = prefs.edit().putString(LAST_DATA_EXPORT_PATH, lastDataExportPath).apply()
|
||||
set(lastDataExportPath) = prefs.edit().putString(LAST_DATA_EXPORT_PATH, lastDataExportPath)
|
||||
.apply()
|
||||
|
||||
var firstDayOfWeek: Int
|
||||
get() {
|
||||
val defaultFirstDayOfWeek = Calendar.getInstance(Locale.getDefault()).firstDayOfWeek
|
||||
return prefs.getInt(FIRST_DAY_OF_WEEK, getDayNumber(defaultFirstDayOfWeek))
|
||||
@Deprecated("Remove this method in future releases")
|
||||
var migrateFirstDayOfWeek: Boolean
|
||||
get() = prefs.getBoolean(MIGRATE_FIRST_DAY_OF_WEEK, true)
|
||||
set(migrateFirstDayOfWeek) = prefs.edit {
|
||||
putBoolean(MIGRATE_FIRST_DAY_OF_WEEK, migrateFirstDayOfWeek)
|
||||
}
|
||||
set(firstDayOfWeek) = prefs.edit().putInt(FIRST_DAY_OF_WEEK, firstDayOfWeek).apply()
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ const val STOPWATCH_LAPS_SORT_BY = "stopwatch_laps_sort_by"
|
||||
const val WAS_INITIAL_WIDGET_SET_UP = "was_initial_widget_set_up"
|
||||
const val DATA_EXPORT_EXTENSION = ".json"
|
||||
const val LAST_DATA_EXPORT_PATH = "last_alarms_export_path"
|
||||
const val FIRST_DAY_OF_WEEK = "first_day_of_week"
|
||||
const val MIGRATE_FIRST_DAY_OF_WEEK = "migrate_first_day_of_week"
|
||||
|
||||
const val TABS_COUNT = 4
|
||||
const val EDITED_TIME_ZONE_SEPARATOR = ":"
|
||||
@@ -100,7 +100,7 @@ const val FORMAT_24H = "HH:mm"
|
||||
const val FORMAT_12H_WITH_SECONDS = "h:mm:ss a"
|
||||
const val FORMAT_24H_WITH_SECONDS = "HH:mm:ss"
|
||||
|
||||
val DAY_BIT_MAP = mapOf(
|
||||
private val DAY_BIT_MAP = mapOf(
|
||||
Calendar.SUNDAY to SUNDAY_BIT,
|
||||
Calendar.MONDAY to MONDAY_BIT,
|
||||
Calendar.TUESDAY to TUESDAY_BIT,
|
||||
|
||||
@@ -22,7 +22,7 @@ numberpicker = "2.4.13"
|
||||
#Room
|
||||
room = "2.6.1"
|
||||
#Fossify
|
||||
commons = "5c9248f16e"
|
||||
commons = "b3897c7e30"
|
||||
#Stetho
|
||||
stetho = "1.6.0"
|
||||
#Gradle
|
||||
|
||||
Reference in New Issue
Block a user