Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -114,17 +114,56 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
val time_diff_minutes_str = time_diff_minutes.toString().padStart(2, '0')
val time_diff_string = "$time_diff_hours:${time_diff_minutes_str}"

val start_time = TIME_FORMAT.format(local_start_time)
val end_time = TIME_FORMAT.format(local_end_time)
val opt_time_range = if (time_diff < 30) start_time else "$start_time - $end_time ($time_diff_string)"
val local_start_date_str = DATE_FORMAT.format(local_start_time)
val local_end_date_str = DATE_FORMAT.format(local_end_time)
val local_start_time_str = TIME_FORMAT.format(local_start_time)
val local_end_time_str = TIME_FORMAT.format(local_end_time)

val opt_time_diff_or_empty = (
if (time_diff < 30)
""
else
"($time_diff_string)"
)
val opt_time_range = (
if (time_diff < 30)
local_start_time_str
else
"$local_start_time_str - $local_end_time_str ($opt_time_diff_or_empty)"
)

val endTimeAgoMinutes = (System.currentTimeMillis() / 1000 - end_utc.toEpochSecond()) / 60
val conditional_time_ago: String = run {
val timeAgoPattern = Phrase.from(fragment.resources, R.string.history_time_ago)

if (endTimeAgoMinutes < 1) {
fragment.resources.getString(R.string.history_time_just_now)
} else if (endTimeAgoMinutes < 120) {
val minuteStr = fragment.resources.getQuantityString(
R.plurals.unit_minutes,
endTimeAgoMinutes.toInt()
)
val t = timeAgoPattern.put("value", "${endTimeAgoMinutes} ${minuteStr}").format().toString()
"${t} ${opt_time_diff_or_empty}".trim()
} else if (endTimeAgoMinutes < (24 * 60)) {
val hours = endTimeAgoMinutes / 60
val hoursStr =
fragment.resources.getQuantityString(R.plurals.unit_hours, hours.toInt())
val t = timeAgoPattern.put("value", "${hours} ${hoursStr}").format().toString()
"${t} ${opt_time_diff_or_empty}".trim()
} else {
"${local_start_date_str} ${opt_time_range}"
}
}

return phrase
.putOptional("type", entry!!.appType)
.putOptional("start_date", DATE_FORMAT.format(local_start_time))
.putOptional("start_time", TIME_FORMAT.format(local_start_time))
.putOptional("end_date", DATE_FORMAT.format(local_end_time))
.putOptional("end_time", TIME_FORMAT.format(local_end_time))
.putOptional("start_date", local_start_date_str)
.putOptional("start_time", local_start_time_str)
.putOptional("end_date", local_end_date_str)
.putOptional("end_time", local_end_time_str)
.putOptional("opt_time_range", opt_time_range)
.putOptional("conditional_time_ago", conditional_time_ago)
.putOptional("time_diff", time_diff_string)
.putOptional("notes", entry!!.notes.trim { it <= ' ' })
}
Expand All @@ -133,7 +172,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
hideAllSubviews()
binding.viewGroup.getChildAt(0).visibility = View.VISIBLE
val message = defaultPhraseFields(
Phrase.from("{type}\n{start_date} {opt_time_range}")
Phrase.from("{type}\n{conditional_time_ago}")
).format().toString()
binding.defaultContent.text = message
}
Expand All @@ -142,7 +181,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
hideAllSubviews()
binding.tummyTimeView.visibility = View.VISIBLE
val message = defaultPhraseFields(
Phrase.from("{start_date} {opt_time_range}\n{notes}")
Phrase.from("{conditional_time_ago}\n{notes}")
).format().toString().trim { it <= ' ' }
binding.tummytimeMilestoneText.text = message
}
Expand Down Expand Up @@ -171,7 +210,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
amountString = interpreteAmountValue(fragment, change.amount)
}
val message = defaultPhraseFields(
Phrase.from("{start_date} {start_time}\n{amount}{notes}")
Phrase.from("{conditional_time_ago}\n{amount}{notes}")
).put("amount", amountString).format().toString().trim { it <= ' ' }
binding.diaperText.text = message.trim { it <= ' ' }
}
Expand All @@ -180,7 +219,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
hideAllSubviews()
binding.sleepView.visibility = View.VISIBLE
val message = defaultPhraseFields(
Phrase.from("{start_date} {opt_time_range}\n{notes}")
Phrase.from("{conditional_time_ago}\n{notes}")
).format().toString().trim { it <= ' ' }
binding.sleepText.text = message.trim { it <= ' ' }
}
Expand All @@ -189,7 +228,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
hideAllSubviews()
binding.noteTimeView.visibility = View.VISIBLE
val message = defaultPhraseFields(
Phrase.from("{start_date} {start_time}\n{notes}")
Phrase.from("{conditional_time_ago}\n{notes}")
).format().toString().trim { it <= ' ' }
binding.noteTimeEntryText.text = message.trim { it <= ' ' }
}
Expand All @@ -199,7 +238,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
val pumping = entry!! as PumpingEntry
binding.pumpingTimeView.visibility = View.VISIBLE
val message = defaultPhraseFields(
Phrase.from("{start_date} {opt_time_range}\n{amount}{notes}")
Phrase.from("{conditional_time_ago}\n{amount}{notes}")
).put(
"amount", interpreteAmountValue(fragment, pumping.amount)
).format().toString().trim { it <= ' ' }
Expand Down Expand Up @@ -242,7 +281,7 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time
}

val message = defaultPhraseFields(
Phrase.from("{start_date} {opt_time_range}\n{amount}{notes}")
Phrase.from("{conditional_time_ago}\n{amount}{notes}")
).put(
"amount", interpreteAmountValue(fragment, feeding.amount)
).format().toString().trim { it <= ' ' }
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@
<string name="about_external_media_resources_title">Third party media</string>
<string name="about_external_libraries_title">Third party libraries</string>

<!-- Generic units -->
<plurals name="unit_minutes">
<item quantity="one">minute</item>
<item quantity="other">minutes</item>
</plurals>
<plurals name="unit_hours">
<item quantity="one">hour</item>
<item quantity="other">hours</item>
</plurals>

<!-- Translations for all events and activities using their activity name as keys without capitalization -->
<string name="activity_singular_sleep">sleep</string>
<string name="activity_singular_tummy_times">tummy time</string>
Expand Down Expand Up @@ -138,6 +148,8 @@
<string name="conflicting_activity_failed_to_correct_conflicts">Failed to correct conflicting time entries</string>

<!-- Activities history strings -->
<string name="history_time_just_now">just now</string>
<string name="history_time_ago">{value} ago</string>
<string name="history_delete_title">Delete entry</string>
<string name="history_delete_question">
Are you sure you want to delete the {type} entry from {start_date} {start_time} - {end_time}?
Expand Down
Loading