show full OpenSubsonic date where available

This commit is contained in:
Drew Weymouth
2024-12-23 17:23:26 -08:00
parent 37f678e5f3
commit ff3b1addf8
8 changed files with 108 additions and 20 deletions
+69
View File
@@ -25,6 +25,75 @@ import (
"golang.org/x/net/html"
)
type DateFormat int
const (
DateFormatDMY DateFormat = iota
DateFormatMDY
DateFormatYMD
)
func dateFormatForLocale(locale string) DateFormat {
var region string
if i := strings.Index(locale, "-"); i > 0 {
region = locale[i+1:]
}
switch strings.ToUpper(region) {
case "US":
return DateFormatMDY
case "CN", "JP", "KR", "HU", "MN", "LT":
return DateFormatYMD
default:
return DateFormatDMY
}
}
func shortMonthName(month int) string {
var months = [12]string{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"}
if month >= 1 && month <= 12 {
return lang.L(months[month-1])
}
return ""
}
func FormatItemDate(date mediaprovider.ItemDate) string {
var sb strings.Builder
df := dateFormatForLocale(fyne.CurrentDevice().Locale().String())
switch df {
case DateFormatDMY:
if d := date.Day; d != nil {
sb.WriteString(fmt.Sprintf("%d ", *d))
}
if m := date.Month; m != nil {
sb.WriteString(shortMonthName(*m) + " ")
}
if y := date.Year; y != nil {
sb.WriteString(fmt.Sprintf("%d", *y))
}
case DateFormatMDY:
if m := date.Month; m != nil {
sb.WriteString(shortMonthName(*m) + " ")
}
if d := date.Day; d != nil {
sb.WriteString(fmt.Sprintf("%d, ", *d))
}
if y := date.Year; y != nil {
sb.WriteString(fmt.Sprintf("%d", *y))
}
case DateFormatYMD:
if y := date.Year; y != nil {
sb.WriteString(fmt.Sprintf("%d ", *y))
}
if m := date.Month; m != nil {
sb.WriteString(shortMonthName(*m) + " ")
}
if d := date.Day; d != nil {
sb.WriteString(fmt.Sprintf("%d", *d))
}
}
return sb.String()
}
var BoldRichTextStyle = widget.RichTextStyle{TextStyle: fyne.TextStyle{Bold: true}, Inline: true}
func MakeOpaque(c color.Color) color.Color {