kvm/internal/native/display.go

50 lines
1.3 KiB
Go

package native
import "slices"
func (n *Native) UpdateLabelIfChanged(objName string, newText string) {
l := n.lD.Trace().Str("obj", objName).Str("text", newText)
changed, err := n.LabelSetText(objName, newText)
if err != nil {
n.lD.Warn().Str("obj", objName).Str("text", newText).Err(err).Msg("failed to update label")
return
}
if changed {
l.Msg("label changed")
} else {
l.Msg("label not changed")
}
}
func (n *Native) UpdateLabelAndChangeVisibility(objName string, newText string) {
containerName := objName + "_container"
if newText == "" {
_, _ = n.ObjHide(objName)
_, _ = n.ObjHide(containerName)
} else {
_, _ = n.ObjShow(objName)
_, _ = n.ObjShow(containerName)
}
n.UpdateLabelIfChanged(objName, newText)
}
func (n *Native) SwitchToScreenIf(screenName string, shouldSwitch []string) {
currentScreen := n.GetCurrentScreen()
if currentScreen == screenName {
return
}
if !slices.Contains(shouldSwitch, currentScreen) {
displayLogger.Trace().Str("from", currentScreen).Str("to", screenName).Msg("skipping screen switch")
return
}
displayLogger.Info().Str("from", currentScreen).Str("to", screenName).Msg("switching screen")
n.SwitchToScreen(screenName)
}
func (n *Native) SwitchToScreenIfDifferent(screenName string) {
n.SwitchToScreenIf(screenName, []string{})
}