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/helpers/WidgetHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WidgetHelper.kt index 1c12409..4524984 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/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/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 43b3f02..b528a64 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 @@ -876,14 +876,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/StandardWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt index 1c9e013..676d13e 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 @@ -919,14 +919,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 - -