mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-04-18 20:27:28 +02:00
properly format the next alarm time
This commit is contained in:
parent
cb1156fe01
commit
b4a1d6fce8
@ -183,10 +183,7 @@ fun Context.getFormattedTime(passedSeconds: Int, showSeconds: Boolean, makeAmPmS
|
|||||||
val seconds = passedSeconds % 60
|
val seconds = passedSeconds % 60
|
||||||
|
|
||||||
return if (!use24HourFormat) {
|
return if (!use24HourFormat) {
|
||||||
val appendable = getString(if (hours >= 12) R.string.p_m else R.string.a_m)
|
val formattedTime = formatTo12HourFormat(showSeconds, hours, minutes, seconds)
|
||||||
val newHours = if (hours == 0 || hours == 12) 12 else hours % 12
|
|
||||||
val formattedTime = "${formatTime(showSeconds, use24HourFormat, newHours, minutes, seconds)} $appendable"
|
|
||||||
|
|
||||||
val spannableTime = SpannableString(formattedTime)
|
val spannableTime = SpannableString(formattedTime)
|
||||||
val amPmMultiplier = if (makeAmPmSmaller) 0.4f else 1f
|
val amPmMultiplier = if (makeAmPmSmaller) 0.4f else 1f
|
||||||
spannableTime.setSpan(RelativeSizeSpan(amPmMultiplier), spannableTime.length - 5, spannableTime.length, 0)
|
spannableTime.setSpan(RelativeSizeSpan(amPmMultiplier), spannableTime.length - 5, spannableTime.length, 0)
|
||||||
@ -196,3 +193,9 @@ fun Context.getFormattedTime(passedSeconds: Int, showSeconds: Boolean, makeAmPmS
|
|||||||
SpannableString(formattedTime)
|
SpannableString(formattedTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.formatTo12HourFormat(showSeconds: Boolean, hours: Int, minutes: Int, seconds: Int): String {
|
||||||
|
val appendable = getString(if (hours >= 12) R.string.p_m else R.string.a_m)
|
||||||
|
val newHours = if (hours == 0 || hours == 12) 12 else hours % 12
|
||||||
|
return "${formatTime(showSeconds, false, newHours, minutes, seconds)} $appendable"
|
||||||
|
}
|
||||||
|
@ -10,10 +10,7 @@ import android.provider.Settings
|
|||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import com.simplemobiletools.clock.R
|
import com.simplemobiletools.clock.R
|
||||||
import com.simplemobiletools.clock.activities.SplashActivity
|
import com.simplemobiletools.clock.activities.SplashActivity
|
||||||
import com.simplemobiletools.clock.extensions.config
|
import com.simplemobiletools.clock.extensions.*
|
||||||
import com.simplemobiletools.clock.extensions.getFormattedDate
|
|
||||||
import com.simplemobiletools.clock.extensions.getFormattedTime
|
|
||||||
import com.simplemobiletools.clock.extensions.scheduleNextWidgetUpdate
|
|
||||||
import com.simplemobiletools.commons.extensions.getColoredBitmap
|
import com.simplemobiletools.commons.extensions.getColoredBitmap
|
||||||
import com.simplemobiletools.commons.extensions.setBackgroundColor
|
import com.simplemobiletools.commons.extensions.setBackgroundColor
|
||||||
import com.simplemobiletools.commons.extensions.setText
|
import com.simplemobiletools.commons.extensions.setText
|
||||||
@ -61,7 +58,7 @@ class MyWidgetDateTimeProvider : AppWidgetProvider() {
|
|||||||
setText(R.id.widget_date, context.getFormattedDate(calendar))
|
setText(R.id.widget_date, context.getFormattedDate(calendar))
|
||||||
setVisibleIf(R.id.widget_time_am_pm, !use24HourFormat)
|
setVisibleIf(R.id.widget_time_am_pm, !use24HourFormat)
|
||||||
|
|
||||||
val nextAlarm = Settings.System.getString(context.contentResolver, Settings.System.NEXT_ALARM_FORMATTED)
|
val nextAlarm = getFormattedNextAlarm(context)
|
||||||
setVisibleIf(R.id.widget_next_alarm, nextAlarm.isNotEmpty())
|
setVisibleIf(R.id.widget_next_alarm, nextAlarm.isNotEmpty())
|
||||||
setText(R.id.widget_next_alarm, nextAlarm)
|
setText(R.id.widget_next_alarm, nextAlarm)
|
||||||
}
|
}
|
||||||
@ -91,4 +88,38 @@ class MyWidgetDateTimeProvider : AppWidgetProvider() {
|
|||||||
views.setOnClickPendingIntent(R.id.widget_date_time_holder, pendingIntent)
|
views.setOnClickPendingIntent(R.id.widget_date_time_holder, pendingIntent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getFormattedNextAlarm(context: Context): String {
|
||||||
|
val nextAlarm = Settings.System.getString(context.contentResolver, Settings.System.NEXT_ALARM_FORMATTED)
|
||||||
|
if (nextAlarm.isEmpty()) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
val isIn24HoursFormat = !nextAlarm.endsWith(".")
|
||||||
|
return when {
|
||||||
|
context.config.use24HourFormat && !isIn24HoursFormat -> {
|
||||||
|
val dayTime = nextAlarm.split(" ")
|
||||||
|
val times = dayTime[1].split(":")
|
||||||
|
val hours = times[0].toInt()
|
||||||
|
val minutes = times[1].toInt()
|
||||||
|
val seconds = 0
|
||||||
|
val isAM = dayTime[2].startsWith("a", true)
|
||||||
|
val newHours = when {
|
||||||
|
hours == 12 && isAM -> 0
|
||||||
|
hours == 12 && !isAM -> 12
|
||||||
|
!isAM -> hours + 12
|
||||||
|
else -> hours
|
||||||
|
}
|
||||||
|
formatTime(false, true, newHours, minutes, seconds)
|
||||||
|
}
|
||||||
|
!context.config.use24HourFormat && isIn24HoursFormat -> {
|
||||||
|
val times = nextAlarm.split(" ")[1].split(":")
|
||||||
|
val hours = times[0].toInt()
|
||||||
|
val minutes = times[1].toInt()
|
||||||
|
val seconds = 0
|
||||||
|
context.formatTo12HourFormat(false, hours, minutes, seconds)
|
||||||
|
}
|
||||||
|
else -> nextAlarm
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user