From f8937489419e9544fd1cc24e58d172d91c51d90b Mon Sep 17 00:00:00 2001 From: azuo Date: Wed, 1 Mar 2023 16:19:18 +0800 Subject: [PATCH] Prevent the time until the event from being split onto separate lines --- .../anotherwidget/ui/widgets/AlignedWidget.kt | 13 ++++++++++++- .../anotherwidget/ui/widgets/StandardWidget.kt | 13 ++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) 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 c5dbdc1..f19ccdb 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 @@ -509,7 +509,18 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { if (!Preferences.showNextEventOnMultipleLines) { bindingView.nextEventDifferenceTime.isVisible = true } else { - bindingView.nextEvent.text = context.getString(R.string.events_glance_provider_format).format(nextEvent.title, diffTime) + val text = context.getString(R.string.events_glance_provider_format).format(nextEvent.title, diffTime) + if (text.endsWith(diffTime)) { + bindingView.nextEvent.addOnLayoutChangeListener { v, _, _, _, _, _, _, _, _ -> + (v as TextView).layout?.run { + val diff = diffTime.trimStart(); + val diffStart = text.length - diff.length + if (getLineStart(lineCount - 1) > diffStart) + v.text = (text.substring(0, diffStart).trimEnd() + '\n' + diff) + } + } + } + bindingView.nextEvent.text = text bindingView.nextEventDifferenceTime.isVisible = false } } else { 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 b066fe6..3130d9f 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 @@ -541,7 +541,18 @@ class StandardWidget(val context: Context) { if (!Preferences.showNextEventOnMultipleLines) { bindingView.nextEventDifferenceTime.isVisible = true } else { - bindingView.nextEvent.text = context.getString(R.string.events_glance_provider_format).format(nextEvent.title, diffTime) + val text = context.getString(R.string.events_glance_provider_format).format(nextEvent.title, diffTime) + if (text.endsWith(diffTime)) { + bindingView.nextEvent.addOnLayoutChangeListener { v, _, _, _, _, _, _, _, _ -> + (v as TextView).layout?.run { + val diff = diffTime.trimStart(); + val diffStart = text.length - diff.length + if (getLineStart(lineCount - 1) > diffStart) + v.text = (text.substring(0, diffStart).trimEnd() + '\n' + diff) + } + } + } + bindingView.nextEvent.text = text bindingView.nextEventDifferenceTime.isVisible = false } } else {