MCPcopy Create free account
hub / github.com/efogdev/mpris-timer / RenderPresets

Function RenderPresets

internal/ui/prefs.go:441–573  ·  view source on GitHub ↗
(toAdd []string)

Source from the content-addressed store, hash-verified

439}
440
441func RenderPresets(toAdd []string) {
442 newPresets := toAdd
443 if len(toAdd) == 0 {
444 newPresets = core.UserPrefs.Presets
445 }
446
447 for _, preset := range newPresets {
448 row := adw.NewActionRow()
449 row.SetTitle(preset)
450
451 container := gtk.NewListBoxRow()
452 container.SetChild(row)
453
454 box := gtk.NewBox(gtk.OrientationHorizontal, 16)
455 box.SetVAlign(gtk.AlignCenter)
456 box.AddCSSClass("presets-list-item")
457
458 title := gtk.NewEditableLabel(preset)
459 title.AddCSSClass("presets-list-title")
460 title.SetVAlign(gtk.AlignStart)
461 title.SetAlignment(0)
462 title.SetHExpand(true)
463
464 container.ConnectActivate(func() {
465 title.GrabFocus()
466 title.SelectRegion(0, -1)
467 })
468
469 cleanTitle := func() {
470 title.GrabFocus()
471 title.SetText("00:01")
472 }
473
474 formatTitle := func() {
475 parts := strings.Split(title.Text(), ":")
476 if len(parts) < 1 && len(parts) > 3 {
477 cleanTitle()
478 return
479 }
480
481 var vals []int
482 for _, v := range parts {
483 val, err := strconv.Atoi(v)
484 if err != nil || val < 0 || val > 59 {
485 cleanTitle()
486 return
487 }
488
489 vals = append(vals, val)
490 }
491
492 var newText string
493 if len(vals) == 1 {
494 newText = fmt.Sprintf("00:%02d", vals[0])
495 } else if len(vals) == 2 {
496 newText = fmt.Sprintf("%02d:%02d", vals[0], vals[1])
497 } else if len(vals) == 3 {
498 newText = fmt.Sprintf("%02d:%02d:%02d", vals[0], vals[1], vals[2])

Callers 1

populatePresetsGroupFunction · 0.85

Calls 4

SetDefaultPresetFunction · 0.92
SetPresetsFunction · 0.92
GdkKeyvalsMethod · 0.80

Tested by

no test coverage detected