simplify alarm time updating at widget

This commit is contained in:
tibbi 2022-04-21 14:17:35 +02:00
parent ec508c46db
commit 2fc937d25d
3 changed files with 10 additions and 41 deletions

View File

@ -12,6 +12,7 @@ import com.simplemobiletools.clock.adapters.ViewPagerAdapter
import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.extensions.getNextAlarm
import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms
import com.simplemobiletools.clock.extensions.updateWidgets
import com.simplemobiletools.clock.helpers.*
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
@ -32,6 +33,7 @@ class MainActivity : SimpleActivity() {
appLaunched(BuildConfig.APPLICATION_ID)
storeStateVariables()
initFragments()
updateWidgets()
if (getNextAlarm().isEmpty()) {
ensureBackgroundThread {

View File

@ -177,9 +177,9 @@ fun Context.hideNotification(id: Int) {
fun Context.hideTimerNotification(timerId: Int) = hideNotification(timerId)
fun Context.updateWidgets() {
val widgetsCnt =
AppWidgetManager.getInstance(applicationContext)?.getAppWidgetIds(ComponentName(applicationContext, MyWidgetDateTimeProvider::class.java)) ?: return
if (widgetsCnt.isNotEmpty()) {
val component = ComponentName(applicationContext, MyWidgetDateTimeProvider::class.java)
val widgetIds = AppWidgetManager.getInstance(applicationContext)?.getAppWidgetIds(component) ?: return
if (widgetIds.isNotEmpty()) {
val ids = intArrayOf(R.xml.widget_date_time_info)
Intent(applicationContext, MyWidgetDateTimeProvider::class.java).apply {
action = AppWidgetManager.ACTION_APPWIDGET_UPDATE

View File

@ -8,15 +8,16 @@ import android.content.Context
import android.content.Intent
import android.graphics.*
import android.os.Bundle
import android.text.format.DateFormat
import android.widget.RemoteViews
import com.simplemobiletools.clock.R
import com.simplemobiletools.clock.activities.SplashActivity
import com.simplemobiletools.clock.extensions.config
import com.simplemobiletools.clock.extensions.formatTo12HourFormat
import com.simplemobiletools.clock.extensions.getFormattedDate
import com.simplemobiletools.clock.extensions.getNextAlarm
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.extensions.applyColorFilter
import com.simplemobiletools.commons.extensions.getLaunchIntent
import com.simplemobiletools.commons.extensions.setText
import com.simplemobiletools.commons.extensions.setVisibleIf
import java.util.*
class MyWidgetDateTimeProvider : AppWidgetProvider() {
@ -38,7 +39,7 @@ class MyWidgetDateTimeProvider : AppWidgetProvider() {
}
private fun updateTexts(context: Context, views: RemoteViews) {
val nextAlarm = getFormattedNextAlarm(context)
val nextAlarm = context.getNextAlarm()
views.apply {
setText(R.id.widget_date, context.getFormattedDate(Calendar.getInstance()))
setText(R.id.widget_next_alarm, nextAlarm)
@ -71,40 +72,6 @@ class MyWidgetDateTimeProvider : AppWidgetProvider() {
}
}
private fun getFormattedNextAlarm(context: Context): String {
val nextAlarm = context.getNextAlarm()
if (nextAlarm.isEmpty()) {
return ""
}
val isIn24HoursFormat = !nextAlarm.endsWith(".")
return when {
DateFormat.is24HourFormat(context) && !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)
}
!DateFormat.is24HourFormat(context) && 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
}
}
override fun onAppWidgetOptionsChanged(context: Context, appWidgetManager: AppWidgetManager, appWidgetId: Int, newOptions: Bundle?) {
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
performUpdate(context)