diff --git a/app/src/main/assets/fonts/google_sans_black.ttf b/app/src/main/assets/fonts/google_sans_black.ttf deleted file mode 100644 index 97f9086..0000000 Binary files a/app/src/main/assets/fonts/google_sans_black.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_black_italic.ttf b/app/src/main/assets/fonts/google_sans_black_italic.ttf deleted file mode 100644 index 84f648f..0000000 Binary files a/app/src/main/assets/fonts/google_sans_black_italic.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_bold.ttf b/app/src/main/assets/fonts/google_sans_bold.ttf deleted file mode 100644 index 22bcc7d..0000000 Binary files a/app/src/main/assets/fonts/google_sans_bold.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_bold_italic.ttf b/app/src/main/assets/fonts/google_sans_bold_italic.ttf deleted file mode 100644 index d748af0..0000000 Binary files a/app/src/main/assets/fonts/google_sans_bold_italic.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_italic.ttf b/app/src/main/assets/fonts/google_sans_italic.ttf deleted file mode 100644 index 635950e..0000000 Binary files a/app/src/main/assets/fonts/google_sans_italic.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_light.ttf b/app/src/main/assets/fonts/google_sans_light.ttf deleted file mode 100644 index f743a05..0000000 Binary files a/app/src/main/assets/fonts/google_sans_light.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_light_italic.ttf b/app/src/main/assets/fonts/google_sans_light_italic.ttf deleted file mode 100644 index bbc32db..0000000 Binary files a/app/src/main/assets/fonts/google_sans_light_italic.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_medium.ttf b/app/src/main/assets/fonts/google_sans_medium.ttf deleted file mode 100644 index d7b4c2a..0000000 Binary files a/app/src/main/assets/fonts/google_sans_medium.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_medium_italic.ttf b/app/src/main/assets/fonts/google_sans_medium_italic.ttf deleted file mode 100644 index 39d134f..0000000 Binary files a/app/src/main/assets/fonts/google_sans_medium_italic.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_regular.ttf b/app/src/main/assets/fonts/google_sans_regular.ttf deleted file mode 100644 index f8cfd1e..0000000 Binary files a/app/src/main/assets/fonts/google_sans_regular.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_thin.ttf b/app/src/main/assets/fonts/google_sans_thin.ttf deleted file mode 100644 index 10325f3..0000000 Binary files a/app/src/main/assets/fonts/google_sans_thin.ttf and /dev/null differ diff --git a/app/src/main/assets/fonts/google_sans_thin_italic.ttf b/app/src/main/assets/fonts/google_sans_thin_italic.ttf deleted file mode 100644 index 63cbfbc..0000000 Binary files a/app/src/main/assets/fonts/google_sans_thin_italic.ttf and /dev/null differ diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt index 26570f3..e11eb1d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt @@ -143,7 +143,6 @@ class BottomSheetColorPicker( withContext(Dispatchers.Main) { binding.loader.isVisible = false binding.listContainer.addView(listBinding.root) - this@BottomSheetColorPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED binding.listContainer.isVisible = true val idx = colors.toList().indexOf(getSelected?.invoke()) @@ -152,6 +151,10 @@ class BottomSheetColorPicker( }) setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt index 7d69f30..a986afe 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetMenu.kt @@ -108,6 +108,10 @@ open class BottomSheetMenu(context: Context, private val header: String? = nu } } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt index 8c1a358..b3cf7d4 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetPicker.kt @@ -86,7 +86,6 @@ class BottomSheetPicker( withContext(Dispatchers.Main) { binding.loader.isVisible = false binding.listContainer.addView(listBinding.root) - this@BottomSheetPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED binding.listContainer.isVisible = true val idx = items.toList().indexOfFirst { it.value == getSelected?.invoke() } @@ -95,6 +94,10 @@ class BottomSheetPicker( }) setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt index 86b4e70..cf5863c 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetWeatherProviderSettings.kt @@ -61,5 +61,9 @@ class BottomSheetWeatherProviderSettings(context: Context, callback: () -> Unit) } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt index 60e7f2c..924655a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/CustomNotesDialog.kt @@ -26,5 +26,9 @@ class CustomNotesDialog(context: Context, callback: (() -> Unit)?) : BottomSheet binding.notes.requestFocus() setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt index 52bf8a7..c8d35a4 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/GlanceSettingsDialog.kt @@ -230,10 +230,16 @@ class GlanceSettingsDialog(val context: Activity, val provider: Constants.Glance } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } private fun checkNextAlarm() { + if (!Preferences.showNextAlarm) + AlarmHelper.clearTimeout(context) with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) { val alarm = nextAlarmClock if (alarm != null && alarm.showIntent != null) { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt index 476cc0c..a76a826 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/IconPackSelector.kt @@ -50,6 +50,10 @@ class IconPackSelector(context: Context, private val header: String? = null) : B binding.menu.addView(itemBinding.root) } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt index 262e8e8..eeb60af 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/MaterialBottomSheetDialog.kt @@ -57,6 +57,10 @@ class MaterialBottomSheetDialog( } setContentView(binding.root) + behavior.run { + skipCollapsed = true + state = com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED + } super.show() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt index 2ade627..1fab87e 100755 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt @@ -95,7 +95,7 @@ object Preferences : KotprefModel() { // Global var textMainSize by floatPref(key = "PREF_TEXT_MAIN_SIZE", default = 26f) var textSecondSize by floatPref(key = "PREF_TEXT_SECOND_SIZE", default = 18f) - var clockTextSize by floatPref(key = "PREF_TEXT_CLOCK_SIZE", default = 90f) + var clockTextSize by floatPref(key = "PREF_TEXT_CLOCK_SIZE", default = 26f) var clockBottomMargin by intPref(default = Constants.ClockBottomMargin.MEDIUM.rawValue) var secondRowTopMargin by intPref(default = Constants.SecondRowTopMargin.NONE.rawValue) var showClock by booleanPref(key = "PREF_SHOW_CLOCK", default = false) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/AlarmHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/AlarmHelper.kt index 9a1394f..595dc39 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/AlarmHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/AlarmHelper.kt @@ -44,7 +44,6 @@ object AlarmHelper { val intent = Intent(context, UpdatesReceiver::class.java).apply { action = Actions.ACTION_ALARM_UPDATE } - cancel(PendingIntent.getBroadcast(context, ALARM_UPDATE_ID, intent, 0)) setExact( AlarmManager.RTC, trigger, @@ -58,5 +57,14 @@ object AlarmHelper { } } + fun clearTimeout(context: Context) { + with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) { + val intent = Intent(context, UpdatesReceiver::class.java).apply { + action = Actions.ACTION_ALARM_UPDATE + } + cancel(PendingIntent.getBroadcast(context, ALARM_UPDATE_ID, intent, 0)) + } + } + private const val ALARM_UPDATE_ID = 24953 } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ImageHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ImageHelper.kt index d852137..ccbbc07 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ImageHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ImageHelper.kt @@ -73,6 +73,9 @@ object ImageHelper { allocationIn.destroy() allocationOut.destroy() + colorMatrixScript.destroy() + blurScript.destroy() + //rs.destroy() return bitmap } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt index f576bc4..a0f2b61 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt @@ -1,5 +1,6 @@ package com.tommasoberlose.anotherwidget.helpers +import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.content.ComponentName import android.content.ContentUris @@ -27,6 +28,13 @@ object IntentHelper { const val DO_NOTHING_OPTION = "DO_NOTHING" const val REFRESH_WIDGET_OPTION = "REFRESH_WIDGET" + fun getPendingIntent(context: Context, requestCode: Int, intent: Intent, flags: Int): PendingIntent { + return if (intent.flags and Intent.FLAG_ACTIVITY_NEW_TASK == Intent.FLAG_ACTIVITY_NEW_TASK) + PendingIntent.getActivity(context, requestCode, intent, flags) + else + PendingIntent.getBroadcast(context, requestCode, intent, 0) + } + fun getWidgetUpdateIntent(context: Context): Intent { val widgetManager = AppWidgetManager.getInstance(context) val widgetComponent = ComponentName(context, MainWidget::class.java) @@ -40,21 +48,19 @@ object IntentHelper { private fun getWidgetRefreshIntent(context: Context): Intent { return Intent(context, UpdatesReceiver::class.java).apply { action = Actions.ACTION_REFRESH - flags = Intent.FLAG_ACTIVITY_NEW_TASK } } fun getGoogleMapsIntentFromAddress(context: Context, address: String): Intent { - val gmmIntentUri: Uri = Uri.parse("geo:0,0?q=$address") + val gmmIntentUri: Uri = Uri.parse("geo:0,0?q=${Uri.encode(address)}") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) - mapIntent.`package` = "com.google.android.apps.maps" + //mapIntent.`package` = "com.google.android.apps.maps" return if (mapIntent.resolveActivity(context.packageManager) != null) { - mapIntent + mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } else { - val map = "http://maps.google.co.in/maps?q=$address" - val i = Intent(Intent.ACTION_VIEW, Uri.parse(map)); - i + val map = "https://www.google.com/maps/search/?api=1&query=${Uri.encode(address)}" + Intent(Intent.ACTION_VIEW, Uri.parse(map)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } } @@ -62,7 +68,6 @@ object IntentHelper { return when (Preferences.weatherAppPackage) { DEFAULT_OPTION -> { Intent(Intent.ACTION_VIEW).apply { - addCategory(Intent.CATEGORY_DEFAULT) flags = Intent.FLAG_ACTIVITY_NEW_TASK data = Uri.parse("dynact://velour/weather/ProxyActivity") component = ComponentName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.velour.DynamicActivityTrampoline") @@ -89,15 +94,16 @@ object IntentHelper { } } - fun getCalendarIntent(context: Context): Intent { + fun getCalendarIntent(context: Context, time: Long? = null): Intent { val calendarUri = CalendarContract.CONTENT_URI .buildUpon() .appendPath("time") - .appendPath(Calendar.getInstance().timeInMillis.toString()) + .appendPath((time ?: Calendar.getInstance().timeInMillis).toString()) .build() return when (Preferences.calendarAppPackage) { DEFAULT_OPTION -> { Intent(Intent.ACTION_VIEW).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK data = calendarUri } } @@ -111,6 +117,8 @@ object IntentHelper { val pm: PackageManager = context.packageManager try { pm.getLaunchIntentForPackage(Preferences.calendarAppPackage)!!.apply { + addCategory(Intent.CATEGORY_LAUNCHER) + flags = Intent.FLAG_ACTIVITY_NEW_TASK action = Intent.ACTION_VIEW data = calendarUri } @@ -177,7 +185,7 @@ object IntentHelper { } } false -> { - getCalendarIntent(context) + getCalendarIntent(context, e.startDate) } } } @@ -209,7 +217,7 @@ object IntentHelper { } fun getBatteryIntent(): Intent { - return Intent(Intent.ACTION_POWER_USAGE_SUMMARY) + return Intent(Intent.ACTION_POWER_USAGE_SUMMARY).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } fun getMusicIntent(context: Context): Intent { @@ -222,6 +230,7 @@ object IntentHelper { try { pm.getLaunchIntentForPackage(Preferences.mediaPlayerPackage)!!.apply { addCategory(Intent.CATEGORY_LAUNCHER) + flags = Intent.FLAG_ACTIVITY_NEW_TASK } } catch (e: Exception) { Intent() @@ -235,6 +244,7 @@ object IntentHelper { return try { pm.getLaunchIntentForPackage("com.google.android.apps.fitness")!!.apply { addCategory(Intent.CATEGORY_LAUNCHER) + flags = Intent.FLAG_ACTIVITY_NEW_TASK } } catch (e: Exception) { Intent() @@ -246,6 +256,7 @@ object IntentHelper { return try { pm.getLaunchIntentForPackage(Preferences.lastNotificationPackage)!!.apply { addCategory(Intent.CATEGORY_LAUNCHER) + flags = Intent.FLAG_ACTIVITY_NEW_TASK } } catch (e: Exception) { Intent() diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt index 1c12409..20fd92d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt @@ -63,21 +63,23 @@ object WidgetHelper { R.array.com_google_android_gms_fonts_certs ) + val handlerThread = HandlerThread("generateView") val callback = object : FontsContractCompat.FontRequestCallback() { override fun onTypefaceRetrieved(typeface: Typeface) { + handlerThread.quit() function.invoke(typeface) } override fun onTypefaceRequestFailed(reason: Int) { + handlerThread.quit() function.invoke(null) } } - val handlerThread = HandlerThread("generateView") handlerThread.start() - if (Looper.myLooper() == null) { - Looper.prepare() - } + //if (Looper.myLooper() == null) { + // Looper.prepare() + //} Handler(handlerThread.looper).run { FontsContractCompat.requestFont(context, request, callback, this) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/WidgetClickListenerReceiver.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/WidgetClickListenerReceiver.kt index 9e022d8..2f1273c 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/WidgetClickListenerReceiver.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/WidgetClickListenerReceiver.kt @@ -16,14 +16,15 @@ class WidgetClickListenerReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.action == Actions.ACTION_OPEN_WEATHER_INTENT) { try { - if (Preferences.weatherAppPackage == IntentHelper.REFRESH_WIDGET_OPTION) { - context.sendBroadcast(IntentHelper.getWeatherIntent(context)) - } else { - context.startActivity(IntentHelper.getWeatherIntent(context)) + IntentHelper.getWeatherIntent(context).run { + if (flags and Intent.FLAG_ACTIVITY_NEW_TASK == Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(this) + else + context.sendBroadcast(this) } } catch (e: Exception) { e.printStackTrace() - val uri = Uri.parse("http://www.google.com/search?q=weather") + val uri = Uri.parse("https://www.google.com/search?q=weather") val i = Intent(Intent.ACTION_VIEW, uri) i.flags = Intent.FLAG_ACTIVITY_NEW_TASK try { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt index 96d9f6c..06dab85 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/tabs/CustomFontActivity.kt @@ -38,12 +38,15 @@ class CustomFontActivity : AppCompatActivity() { private lateinit var adapter: SlimAdapter private lateinit var viewModel: CustomFontViewModel private lateinit var binding: ActivityCustomFontBinding + private lateinit var handlerThread: HandlerThread override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) viewModel = ViewModelProvider(this).get(CustomFontViewModel::class.java) binding = ActivityCustomFontBinding.inflate(layoutInflater) + handlerThread = HandlerThread("listCustomFonts") + handlerThread.start() binding.listView.setHasFixedSize(true) val mLayoutManager = LinearLayoutManager(this) @@ -64,14 +67,17 @@ class CustomFontActivity : AppCompatActivity() { injector .text(R.id.text, item) .with(R.id.text) { - val googleSans: Typeface = when (Preferences.customFontVariant) { - "100" -> Typeface.createFromAsset(this.assets, "fonts/google_sans_thin.ttf") - "200" -> Typeface.createFromAsset(this.assets, "fonts/google_sans_light.ttf") - "500" -> Typeface.createFromAsset(this.assets, "fonts/google_sans_medium.ttf") - "700" -> Typeface.createFromAsset(this.assets, "fonts/google_sans_bold.ttf") - "800" -> Typeface.createFromAsset(this.assets, "fonts/google_sans_black.ttf") - else -> Typeface.createFromAsset(this.assets, "fonts/google_sans_regular.ttf") - } + val googleSans: Typeface? = androidx.core.content.res.ResourcesCompat.getFont( + this, + when (Preferences.customFontVariant) { + "100" -> R.font.google_sans_thin + "200" -> R.font.google_sans_light + "500" -> R.font.google_sans_medium + "700" -> R.font.google_sans_bold + "800" -> R.font.google_sans_black + else -> R.font.google_sans_regular + } + ) it.typeface = googleSans } @@ -97,32 +103,49 @@ class CustomFontActivity : AppCompatActivity() { ) - val callback = object : FontsContractCompat.FontRequestCallback() { - override fun onTypefaceRetrieved(typeface: Typeface) { - it.typeface = typeface - it.isVisible = true + class Callback : FontsContractCompat.FontRequestCallback() { + var handler: Handler? = Handler(handlerThread.looper) - it.measure( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT - ) + fun cancel() { + if (handler != null) { + handler!!.removeCallbacksAndMessages(null) + handler = null + } + } + + protected fun finalize() { + cancel() + } + + override fun onTypefaceRetrieved(typeface: Typeface) { + if (it.tag == this) { + it.tag = null + it.typeface = typeface + it.setTextColor(getColor(R.color.colorPrimaryText)) + } } override fun onTypefaceRequestFailed(reason: Int) { - it.isVisible = false - it.layoutParams = it.layoutParams.apply { - height = 0 + if (it.tag == this) { + it.tag = null + //it.text = item.fontFamily + " ($reason)" + it.setTextColor(getColor(R.color.errorColorText)) } } } - val handlerThread = HandlerThread(item.fontFamily) - handlerThread.start() - val mHandler = Handler(handlerThread.looper) + (it.tag as Callback?)?.cancel() + val callback = Callback() + it.tag = callback + it.typeface = null + it.setTextColor(getColor(R.color.colorSecondaryText)) + + val mHandler = callback.handler!! FontsContractCompat.requestFont(this, request, callback, mHandler) } injector.clicked(R.id.text) { + if ((it as TextView).typeface == null) return@clicked val dialog = BottomSheetMenu(this, header = item.fontFamily) if (item.fontVariants.isEmpty()) { dialog.addItem(SettingsStringHelper.getVariantLabel(this, "regular"), -1) @@ -147,6 +170,12 @@ class CustomFontActivity : AppCompatActivity() { setContentView(binding.root) } + override fun onDestroy() { + handlerThread.quit() + filterJob?.cancel() + super.onDestroy() + } + private var filterJob: Job? = null private fun subscribeUi(binding: ActivityCustomFontBinding, viewModel: CustomFontViewModel) { @@ -204,6 +233,13 @@ class CustomFontActivity : AppCompatActivity() { adapter.updateData(filteredList) binding.loader.visibility = View.INVISIBLE } + } else { + delay(200) + withContext(Dispatchers.Main) { + adapter.updateData(listOf(getString(R.string.custom_font_subtitle_1)).filter { + it.contains(search ?: "", ignoreCase = true) + }) + } } } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt index dab9185..57720c4 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/ClockFragment.kt @@ -17,7 +17,7 @@ import com.chibatching.kotpref.bulk import com.google.android.material.transition.MaterialSharedAxis import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.components.BottomSheetColorPicker -import com.tommasoberlose.anotherwidget.components.BottomSheetMenu +import com.tommasoberlose.anotherwidget.components.BottomSheetPicker import com.tommasoberlose.anotherwidget.databinding.FragmentTabClockBinding import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences @@ -144,16 +144,15 @@ class ClockFragment : Fragment() { private fun setupListener() { binding.actionClockTextSize.setOnClickListener { - val dialog = BottomSheetMenu( + BottomSheetPicker( requireContext(), - header = getString(R.string.settings_clock_text_size_title) - ).setSelectedValue(Preferences.clockTextSize) - (46 downTo 12).filter { it % 2 == 0 }.forEach { - dialog.addItem("${it}sp", it.toFloat()) - } - dialog.addOnSelectItemListener { value -> - Preferences.clockTextSize = value - }.show() + items = (46 downTo 12).map { BottomSheetPicker.MenuItem("${it}sp", it.toFloat()) }, + getSelected = { Preferences.clockTextSize }, + header = getString(R.string.settings_clock_text_size_title), + onItemSelected = {value -> + if (value != null) Preferences.clockTextSize = value + } + ).show() } binding.actionAltTimezoneClock.setOnClickListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt index d16aff1..c30caa0 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/GesturesFragment.kt @@ -102,15 +102,7 @@ class GesturesFragment : Fragment() { it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing) it == IntentHelper.REFRESH_WIDGET_OPTION -> getString(R.string.gestures_refresh_widget) it != IntentHelper.DEFAULT_OPTION -> it - else -> { - if (IntentHelper.getCalendarIntent(requireContext()).isDefaultSet(requireContext())) { - getString( - R.string.default_calendar_app - ) - } else { - getString(R.string.gestures_do_nothing) - } - } + else -> getString(R.string.default_calendar_app) } } } @@ -127,15 +119,7 @@ class GesturesFragment : Fragment() { it == IntentHelper.DO_NOTHING_OPTION -> getString(R.string.gestures_do_nothing) it == IntentHelper.REFRESH_WIDGET_OPTION -> getString(R.string.gestures_refresh_widget) it != IntentHelper.DEFAULT_OPTION -> it - else -> { - if (IntentHelper.getClockIntent(requireContext()).isDefaultSet(requireContext())) { - getString( - R.string.default_clock_app - ) - } else { - getString(R.string.gestures_do_nothing) - } - } + else -> getString(R.string.default_clock_app) } } } @@ -173,9 +157,12 @@ class GesturesFragment : Fragment() { } binding.actionCalendarApp.setOnClickListener { - startActivityForResult(Intent(requireContext(), ChooseApplicationActivity::class.java).apply { - putExtra(Constants.RESULT_APP_PACKAGE, Preferences.calendarAppPackage) - }, RequestCode.CALENDAR_APP_REQUEST_CODE.code) + startActivityForResult( + Intent(requireContext(), ChooseApplicationActivity::class.java).apply { + putExtra(Constants.RESULT_APP_PACKAGE, Preferences.calendarAppPackage) + }, + RequestCode.CALENDAR_APP_REQUEST_CODE.code + ) } binding.actionClockApp.setOnClickListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt index fc8ed70..3c73378 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/TypographyFragment.kt @@ -276,7 +276,7 @@ class TypographyFragment : Fragment() { Intent(requireContext(), CustomFontActivity::class.java), RequestCode.CUSTOM_FONT_CHOOSER_REQUEST_CODE.code ) - } else if (value != Constants.CUSTOM_FONT_DOWNLOADED) { + } else if (value != Preferences.customFont) { Preferences.bulk { customFont = value customFontFile = "" diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt index c4a812c..3c3816b 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt @@ -56,7 +56,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { ) val margin = Preferences.widgetMargin.convertDpToPixel(context).toInt() views.setViewPadding(R.id.widget_shape_background, margin, margin, margin, margin) - val refreshIntent = PendingIntent.getActivity( + val refreshIntent = IntentHelper.getPendingIntent( context, appWidgetId, IntentHelper.getWidgetUpdateIntent(context), @@ -102,7 +102,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { // Weather if (Preferences.showWeather && Preferences.weatherIcon != "") { views.setViewVisibility(R.id.weather_rect, View.VISIBLE) - views.setViewVisibility(R.id.weather_sub_line, View.GONE) + views.setViewVisibility(R.id.weather_sub_line_rect, View.GONE) val i = Intent(context, WidgetClickListenerReceiver::class.java) i.action = Actions.ACTION_OPEN_WEATHER_INTENT @@ -122,7 +122,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { ) } else { views.setViewVisibility(R.id.weather_rect, View.GONE) - views.setViewVisibility(R.id.weather_sub_line, View.GONE) + views.setViewVisibility(R.id.weather_sub_line_rect, View.GONE) } @@ -132,7 +132,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { BitmapHelper.getBitmapFromView(bindingView.date, draw = false, width = bindingView.date.width, height = bindingView.date.height) ) - val calPIntent = PendingIntent.getActivity( + val calPIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getCalendarIntent(context), @@ -141,8 +141,6 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { views.setOnClickPendingIntent(R.id.date_rect, calPIntent) views.setViewVisibility(R.id.first_line_rect, View.VISIBLE) - val nextAlarm = AlarmHelper.getNextAlarm(context) - // Spacing views.setViewVisibility( R.id.sub_line_top_margin_small_sans, @@ -185,7 +183,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { } // Event intent - val eventIntent = PendingIntent.getActivity( + val eventIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getEventIntent(context, nextEvent), @@ -222,7 +220,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { // Event information if (nextEvent.address != "" && Preferences.secondRowInformation == 1) { - val mapIntent = PendingIntent.getActivity( + val mapIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getGoogleMapsIntentFromAddress(context, nextEvent.address), @@ -230,14 +228,10 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { ) views.setOnClickPendingIntent(R.id.sub_line_rect, mapIntent) } else { - val pIntentDetail = PendingIntent.getActivity( + val pIntentDetail = IntentHelper.getPendingIntent( context, widgetID, - IntentHelper.getEventIntent( - context, - nextEvent, - forceEventDetails = true - ), + IntentHelper.getCalendarIntent(context, nextEvent.startDate), PendingIntent.FLAG_UPDATE_CURRENT ) views.setOnClickPendingIntent(R.id.sub_line_rect, pIntentDetail) @@ -245,7 +239,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { views.setViewVisibility(R.id.calendar_layout_rect, View.VISIBLE) views.setViewVisibility(R.id.sub_line_rect, View.VISIBLE) - views.setViewVisibility(R.id.weather_sub_line_rect, View.VISIBLE) + views.setViewVisibility(R.id.weather_sub_line_rect, if (Preferences.showWeather && Preferences.weatherIcon != "") View.VISIBLE else View.GONE) views.setViewVisibility(R.id.first_line_rect, View.GONE) views.setViewVisibility(R.id.sub_line_top_margin_small_sans, View.GONE) @@ -258,7 +252,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { when (provider) { Constants.GlanceProviderId.PLAYING_SONG -> { if (MediaPlayerHelper.isSomeonePlaying(context)) { - val musicIntent = PendingIntent.getActivity( + val musicIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getMusicIntent(context), @@ -270,23 +264,26 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { } } Constants.GlanceProviderId.NEXT_CLOCK_ALARM -> { - if (Preferences.showNextAlarm && nextAlarm != "") { - val alarmIntent = PendingIntent.getActivity( - context, - widgetID, - IntentHelper.getClockIntent(context), - PendingIntent.FLAG_UPDATE_CURRENT - ) - views.setOnClickPendingIntent(R.id.sub_line_rect, alarmIntent) - showSomething = true - break@loop + if (Preferences.showNextAlarm) { + val nextAlarm = AlarmHelper.getNextAlarm(context) + if (nextAlarm != "") { + val alarmIntent = IntentHelper.getPendingIntent( + context, + widgetID, + IntentHelper.getClockIntent(context), + PendingIntent.FLAG_UPDATE_CURRENT + ) + views.setOnClickPendingIntent(R.id.sub_line_rect, alarmIntent) + showSomething = true + break@loop + } } } Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { if (Preferences.showBatteryCharging) { BatteryHelper.updateBatteryInfo(context) if (Preferences.isCharging || Preferences.isBatteryLevelLow) { - val batteryIntent = PendingIntent.getActivity( + val batteryIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getBatteryIntent(), @@ -305,7 +302,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { } Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> { if (Preferences.showDailySteps && Preferences.googleFitSteps > 0) { - val fitIntent = PendingIntent.getActivity( + val fitIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getFitIntent(context), @@ -326,7 +323,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { remotePackageContext, Preferences.lastNotificationIcon) } - val notificationIntent = PendingIntent.getActivity( + val notificationIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getNotificationIntent(context), @@ -350,7 +347,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { Constants.GlanceProviderId.EVENTS -> { if (Preferences.showEventsAsGlanceProvider&& Preferences.showEvents && context.checkGrantedPermission( Manifest.permission.READ_CALENDAR) && nextEvent != null) { - val pIntentDetail = PendingIntent.getActivity( + val pIntentDetail = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getEventIntent( @@ -485,8 +482,6 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { bindingView.date.text = DateHelper.getDateText(context, now) - val nextAlarm = AlarmHelper.getNextAlarm(context) - if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { // Multiple counter bindingView.actionNext.isVisible = @@ -587,18 +582,16 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { } } else { - val flags: Int = - DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH val start = Calendar.getInstance().apply { timeInMillis = nextEvent.startDate } bindingView.subLineText.text = if (now.get(Calendar.DAY_OF_YEAR) == start.get( Calendar.DAY_OF_YEAR)) { - DateUtils.formatDateTime(context, nextEvent.startDate, flags) + DateHelper.getDateText(context, start) } else if (now.get(Calendar.DAY_OF_YEAR) > start.get(Calendar.DAY_OF_YEAR) || now.get( Calendar.YEAR) > start.get(Calendar.YEAR)) { - DateUtils.formatDateTime(context, now.timeInMillis, flags) + DateHelper.getDateText(context, now) } else { - DateUtils.formatDateTime(context, nextEvent.startDate, flags) + DateHelper.getDateText(context, start) } } } @@ -606,7 +599,7 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { bindingView.dateLayout.isVisible = false bindingView.calendarLayout.isVisible = true bindingView.subLine.isVisible = true - bindingView.weatherSubLine.isVisible = true + bindingView.weatherSubLine.isVisible = Preferences.showWeather && Preferences.weatherIcon != "" bindingView.subLineTopMarginSmall.visibility = View.GONE bindingView.subLineTopMarginMedium.visibility = View.GONE @@ -632,16 +625,19 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { } } Constants.GlanceProviderId.NEXT_CLOCK_ALARM -> { - if (Preferences.showNextAlarm && nextAlarm != "") { - bindingView.subLineIcon.setImageDrawable( - ContextCompat.getDrawable( - context, - R.drawable.round_alarm_24 + if (Preferences.showNextAlarm) { + val nextAlarm = AlarmHelper.getNextAlarm(context) + if (nextAlarm != "") { + bindingView.subLineIcon.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.round_alarm_24 + ) ) - ) - bindingView.subLineText.text = AlarmHelper.getNextAlarm(context) - showSomething = true - break@loop + bindingView.subLineText.text = nextAlarm + showSomething = true + break@loop + } } } Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { @@ -933,14 +929,17 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { // Custom Font if (Preferences.customFont == Constants.CUSTOM_FONT_GOOGLE_SANS) { - val googleSans: Typeface = when (Preferences.customFontVariant) { - "100" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_thin.ttf") - "200" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_light.ttf") - "500" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_medium.ttf") - "700" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_bold.ttf") - "800" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_black.ttf") - else -> Typeface.createFromAsset(context.assets, "fonts/google_sans_regular.ttf") - } + val googleSans: Typeface? = androidx.core.content.res.ResourcesCompat.getFont( + context, + when (Preferences.customFontVariant) { + "100" -> R.font.google_sans_thin + "200" -> R.font.google_sans_light + "500" -> R.font.google_sans_medium + "700" -> R.font.google_sans_bold + "800" -> R.font.google_sans_black + else -> R.font.google_sans_regular + } + ) listOf( bindingView.date, diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/ClockWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/ClockWidget.kt index 44c750a..ca081a5 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/ClockWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/ClockWidget.kt @@ -39,7 +39,7 @@ class ClockWidget(val context: Context) { TypedValue.COMPLEX_UNIT_SP, Preferences.clockTextSize.toPixel(context) / 5 * 2 ) - val clockPIntent = PendingIntent.getActivity( + val clockPIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getClockIntent(context), diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt index f458960..f2f2252 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt @@ -59,7 +59,7 @@ class StandardWidget(val context: Context) { ) val margin = Preferences.widgetMargin.convertDpToPixel(context).toInt() views.setViewPadding(R.id.widget_shape_background, margin, margin, margin, margin) - val refreshIntent = PendingIntent.getActivity( + val refreshIntent = IntentHelper.getPendingIntent( context, appWidgetId, IntentHelper.getWidgetUpdateIntent(context), @@ -105,7 +105,7 @@ class StandardWidget(val context: Context) { // Weather if (Preferences.showWeather && Preferences.weatherIcon != "") { views.setViewVisibility(R.id.weather_rect, View.VISIBLE) - views.setViewVisibility(R.id.weather_sub_line, View.GONE) + views.setViewVisibility(R.id.weather_sub_line_rect, View.GONE) val i = Intent(context, WidgetClickListenerReceiver::class.java) i.action = Actions.ACTION_OPEN_WEATHER_INTENT @@ -125,7 +125,7 @@ class StandardWidget(val context: Context) { ) } else { views.setViewVisibility(R.id.weather_rect, View.GONE) - views.setViewVisibility(R.id.weather_sub_line, View.GONE) + views.setViewVisibility(R.id.weather_sub_line_rect, View.GONE) } @@ -135,7 +135,7 @@ class StandardWidget(val context: Context) { BitmapHelper.getBitmapFromView(bindingView.date, draw = false, width = bindingView.date.width, height = bindingView.date.height) ) - val calPIntent = PendingIntent.getActivity( + val calPIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getCalendarIntent(context), @@ -150,8 +150,6 @@ class StandardWidget(val context: Context) { BitmapHelper.getBitmapFromView(bindingView.subLine, draw = false, width = bindingView.subLine.width, height = bindingView.subLine.height) ) - val nextAlarm = AlarmHelper.getNextAlarm(context) - // Spacing views.setViewVisibility( R.id.sub_line_top_margin_small_sans, @@ -215,7 +213,7 @@ class StandardWidget(val context: Context) { } // Event intent - val eventIntent = PendingIntent.getActivity( + val eventIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getEventIntent(context, nextEvent), @@ -248,7 +246,7 @@ class StandardWidget(val context: Context) { // Event information if (nextEvent.address != "" && Preferences.secondRowInformation == 1) { - val mapIntent = PendingIntent.getActivity( + val mapIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getGoogleMapsIntentFromAddress(context, nextEvent.address), @@ -256,14 +254,10 @@ class StandardWidget(val context: Context) { ) views.setOnClickPendingIntent(R.id.sub_line_rect, mapIntent) } else { - val pIntentDetail = PendingIntent.getActivity( + val pIntentDetail = IntentHelper.getPendingIntent( context, widgetID, - IntentHelper.getEventIntent( - context, - nextEvent, - forceEventDetails = true - ), + IntentHelper.getCalendarIntent(context, nextEvent.startDate), PendingIntent.FLAG_UPDATE_CURRENT ) views.setOnClickPendingIntent(R.id.sub_line_rect, pIntentDetail) @@ -275,7 +269,7 @@ class StandardWidget(val context: Context) { ) views.setViewVisibility(R.id.calendar_layout_rect, View.VISIBLE) views.setViewVisibility(R.id.sub_line_rect, View.VISIBLE) - views.setViewVisibility(R.id.weather_sub_line_rect, View.VISIBLE) + views.setViewVisibility(R.id.weather_sub_line_rect, if (Preferences.showWeather && Preferences.weatherIcon != "") View.VISIBLE else View.GONE) views.setViewVisibility(R.id.first_line_rect, View.GONE) @@ -286,7 +280,7 @@ class StandardWidget(val context: Context) { when (provider) { Constants.GlanceProviderId.PLAYING_SONG -> { if (MediaPlayerHelper.isSomeonePlaying(context)) { - val musicIntent = PendingIntent.getActivity( + val musicIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getMusicIntent(context), @@ -298,23 +292,26 @@ class StandardWidget(val context: Context) { } } Constants.GlanceProviderId.NEXT_CLOCK_ALARM -> { - if (Preferences.showNextAlarm && nextAlarm != "") { - val alarmIntent = PendingIntent.getActivity( - context, - widgetID, - IntentHelper.getClockIntent(context), - PendingIntent.FLAG_UPDATE_CURRENT - ) - views.setOnClickPendingIntent(R.id.sub_line_rect, alarmIntent) - showSomething = true - break@loop + if (Preferences.showNextAlarm) { + val nextAlarm = AlarmHelper.getNextAlarm(context) + if (nextAlarm != "") { + val alarmIntent = IntentHelper.getPendingIntent( + context, + widgetID, + IntentHelper.getClockIntent(context), + PendingIntent.FLAG_UPDATE_CURRENT + ) + views.setOnClickPendingIntent(R.id.sub_line_rect, alarmIntent) + showSomething = true + break@loop + } } } Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { if (Preferences.showBatteryCharging) { BatteryHelper.updateBatteryInfo(context) if (Preferences.isCharging || Preferences.isBatteryLevelLow) { - val batteryIntent = PendingIntent.getActivity( + val batteryIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getBatteryIntent(), @@ -333,7 +330,7 @@ class StandardWidget(val context: Context) { } Constants.GlanceProviderId.GOOGLE_FIT_STEPS -> { if (Preferences.showDailySteps && Preferences.googleFitSteps > 0) { - val fitIntent = PendingIntent.getActivity( + val fitIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getFitIntent(context), @@ -354,7 +351,7 @@ class StandardWidget(val context: Context) { remotePackageContext, Preferences.lastNotificationIcon) } - val notificationIntent = PendingIntent.getActivity( + val notificationIntent = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getNotificationIntent(context), @@ -378,7 +375,7 @@ class StandardWidget(val context: Context) { Constants.GlanceProviderId.EVENTS -> { if (Preferences.showEventsAsGlanceProvider&& Preferences.showEvents && context.checkGrantedPermission( Manifest.permission.READ_CALENDAR) && nextEvent != null) { - val pIntentDetail = PendingIntent.getActivity( + val pIntentDetail = IntentHelper.getPendingIntent( context, widgetID, IntentHelper.getEventIntent( @@ -512,8 +509,6 @@ class StandardWidget(val context: Context) { bindingView.date.text = DateHelper.getDateText(context, now) - val nextAlarm = AlarmHelper.getNextAlarm(context) - if (Preferences.showEvents && context.checkGrantedPermission(Manifest.permission.READ_CALENDAR) && nextEvent != null && !Preferences.showEventsAsGlanceProvider) { // Multiple counter bindingView.actionNext.isVisible = @@ -616,18 +611,16 @@ class StandardWidget(val context: Context) { } } else { - val flags: Int = - DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or DateUtils.FORMAT_ABBREV_MONTH val start = Calendar.getInstance().apply { timeInMillis = nextEvent.startDate } bindingView.subLineText.text = if (now.get(Calendar.DAY_OF_YEAR) == start.get( Calendar.DAY_OF_YEAR)) { - DateUtils.formatDateTime(context, nextEvent.startDate, flags) + DateHelper.getDateText(context, start) } else if (now.get(Calendar.DAY_OF_YEAR) > start.get(Calendar.DAY_OF_YEAR) || now.get( Calendar.YEAR) > start.get(Calendar.YEAR)) { - DateUtils.formatDateTime(context, now.timeInMillis, flags) + DateHelper.getDateText(context, now) } else { - DateUtils.formatDateTime(context, nextEvent.startDate, flags) + DateHelper.getDateText(context, start) } } } @@ -635,7 +628,7 @@ class StandardWidget(val context: Context) { bindingView.dateLayout.isVisible = false bindingView.calendarLayout.isVisible = true bindingView.subLine.isVisible = true - bindingView.weatherSubLine.isVisible = true + bindingView.weatherSubLine.isVisible = Preferences.showWeather && Preferences.weatherIcon != "" bindingView.subLineTopMarginSmall.visibility = if (Preferences.secondRowTopMargin == Constants.SecondRowTopMargin.SMALL.rawValue) View.VISIBLE else View.GONE @@ -664,16 +657,19 @@ class StandardWidget(val context: Context) { } } Constants.GlanceProviderId.NEXT_CLOCK_ALARM -> { - if (Preferences.showNextAlarm && nextAlarm != "") { - bindingView.subLineIcon.setImageDrawable( - ContextCompat.getDrawable( - context, - R.drawable.round_alarm_24 + if (Preferences.showNextAlarm) { + val nextAlarm = AlarmHelper.getNextAlarm(context) + if (nextAlarm != "") { + bindingView.subLineIcon.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.round_alarm_24 + ) ) - ) - bindingView.subLineText.text = AlarmHelper.getNextAlarm(context) - showSomething = true - break@loop + bindingView.subLineText.text = nextAlarm + showSomething = true + break@loop + } } } Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> { @@ -976,14 +972,17 @@ class StandardWidget(val context: Context) { // Custom Font if (Preferences.customFont == Constants.CUSTOM_FONT_GOOGLE_SANS) { - val googleSans: Typeface = when (Preferences.customFontVariant) { - "100" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_thin.ttf") - "200" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_light.ttf") - "500" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_medium.ttf") - "700" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_bold.ttf") - "800" -> Typeface.createFromAsset(context.assets, "fonts/google_sans_black.ttf") - else -> Typeface.createFromAsset(context.assets, "fonts/google_sans_regular.ttf") - } + val googleSans: Typeface? = androidx.core.content.res.ResourcesCompat.getFont( + context, + when (Preferences.customFontVariant) { + "100" -> R.font.google_sans_thin + "200" -> R.font.google_sans_light + "500" -> R.font.google_sans_medium + "700" -> R.font.google_sans_bold + "800" -> R.font.google_sans_black + else -> R.font.google_sans_regular + } + ) listOf( bindingView.date, diff --git a/app/src/main/res/font/google_sans.xml b/app/src/main/res/font/google_sans.xml index 8b55d79..4d4c970 100644 --- a/app/src/main/res/font/google_sans.xml +++ b/app/src/main/res/font/google_sans.xml @@ -9,6 +9,14 @@ app:fontStyle="italic" app:fontWeight="400" app:font="@font/google_sans_italic" /> + + - - \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 7ad292a..15f7f7d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -139,10 +139,10 @@ center_horizontal - -