Skip to content

Commit

Permalink
Extract more spannable string build extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
kylecorry31 committed Jun 7, 2023
1 parent ea96eaf commit 6fc75c3
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package com.kylecorry.trail_sense.astronomy.ui.items

import android.content.Context
import android.text.Layout
import android.text.style.AlignmentSpan
import androidx.core.text.bold
import androidx.core.text.buildSpannedString
import androidx.core.text.color
import androidx.core.text.inSpans
import androidx.core.text.scale
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.JustifyContent
Expand All @@ -21,6 +18,7 @@ import com.kylecorry.trail_sense.astronomy.domain.AstronomyService
import com.kylecorry.trail_sense.shared.FormatService
import com.kylecorry.trail_sense.shared.UserPreferences
import com.kylecorry.trail_sense.shared.appendImage
import com.kylecorry.trail_sense.shared.center
import java.time.LocalDate
import java.time.ZonedDateTime

Expand Down Expand Up @@ -201,7 +199,7 @@ abstract class BaseAstroListItemProducer(protected val context: Context) :
): ListItemData {
return ListItemData(
buildSpannedString {
inSpans(AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER)) {
center {
bold { scale(textScale) { append(value) } }
if (label != null) {
append("\n")
Expand All @@ -221,15 +219,14 @@ abstract class BaseAstroListItemProducer(protected val context: Context) :
id: Long,
title: CharSequence,
subtitle: CharSequence,
body: CharSequence?,
icon: ListIcon,
data: List<ListItemData> = listOf(),
onClick: () -> Unit
): ListItem {
return ListItem(
id,
title(title, subtitle),
body?.let { body(it) },
null,
icon = icon,
trailingIcon = ResourceListIcon(R.drawable.ic_keyboard_arrow_right),
data = data,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ class LunarEclipseListItemProducer(context: Context) : BaseAstroListItemProducer
context.getString(R.string.lunar_eclipse),
EclipseFormatter.type(context, eclipse),
// timeRange(eclipse.start, eclipse.end, date),
null,
ResourceListIcon(
if (eclipse.isTotal) {
R.drawable.ic_moon_total_eclipse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class MeteorShowerListItemProducer(context: Context) : BaseAstroListItemProducer
3,
context.getString(R.string.meteor_shower),
context.getString(R.string.meteors_per_hour, shower.shower.rate),
null,
ResourceListIcon(R.drawable.ic_meteor, secondaryColor),
data = listOf(timeData(shower.peak, date))
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ class MoonListItemProducer(context: Context) : BaseAstroListItemProducer(context
2,
context.getString(R.string.moon),
percent(formatter.formatMoonPhase(phase.phase), phase.illumination),
null,
ResourceListIcon(MoonPhaseImageMapper().getPhaseImage(phase.phase)),
data = riseSetData(times.rise, times.set)
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class SolarEclipseListItemProducer(context: Context) : BaseAstroListItemProducer
5,
context.getString(R.string.solar_eclipse),
EclipseFormatter.type(context, eclipse),
null,
ResourceListIcon(
if (eclipse.isTotal) {
R.drawable.ic_total_solar_eclipse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ class SunListItemProducer(context: Context) : BaseAstroListItemProducer(context)
R.string.daylight_duration,
formatter.formatDuration(daylight, false)
),
null,
ResourceListIcon(R.drawable.circle, AppColor.Yellow.color),
data = riseSetData(times.rise, times.set)
) {
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/com/kylecorry/trail_sense/shared/Extensions.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.kylecorry.trail_sense.shared

import android.content.Context
import android.text.Layout
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.AlignmentSpan
import android.text.style.ImageSpan
import androidx.annotation.ColorInt
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.text.inSpans
import androidx.fragment.app.Fragment
import com.kylecorry.andromeda.canvas.ICanvasDrawer
import com.kylecorry.andromeda.core.system.GeoUri
Expand Down Expand Up @@ -106,6 +109,15 @@ fun ICanvasDrawer.getBounds(rotation: Float = 0f): Rectangle {
return rectangle
}

inline fun SpannableStringBuilder.center(builderAction: SpannableStringBuilder.() -> Unit): SpannableStringBuilder =
inSpans(AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), builderAction)

inline fun SpannableStringBuilder.left(builderAction: SpannableStringBuilder.() -> Unit): SpannableStringBuilder =
inSpans(AlignmentSpan.Standard(Layout.Alignment.ALIGN_NORMAL), builderAction)

inline fun SpannableStringBuilder.right(builderAction: SpannableStringBuilder.() -> Unit): SpannableStringBuilder =
inSpans(AlignmentSpan.Standard(Layout.Alignment.ALIGN_OPPOSITE), builderAction)

inline fun SpannableStringBuilder.appendImage(
context: Context,
drawableRes: Int,
Expand Down

0 comments on commit 6fc75c3

Please sign in to comment.