mirror of https://github.com/anoshenko/rui.git
Bug fixing
This commit is contained in:
parent
b2b9befa14
commit
09031b9fa0
199
viewStyleSet.go
199
viewStyleSet.go
|
@ -81,6 +81,108 @@ func (style *viewStyle) setBackground(value any) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (style *viewStyle) setTransition(tag string, value any) bool {
|
||||
setObject := func(obj DataObject) bool {
|
||||
if obj != nil {
|
||||
tag := strings.ToLower(tag)
|
||||
switch tag {
|
||||
case "", "_":
|
||||
ErrorLog("Invalid transition property name")
|
||||
|
||||
default:
|
||||
style.transitions[tag] = parseAnimation(obj)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
switch value := value.(type) {
|
||||
case Params:
|
||||
result := true
|
||||
for tag, val := range value {
|
||||
tag = strings.ToLower(strings.Trim(tag, " \t"))
|
||||
if tag == "" {
|
||||
ErrorLog("Invalid transition property name")
|
||||
result = false
|
||||
} else if val == nil {
|
||||
delete(style.transitions, tag)
|
||||
} else if animation, ok := val.(Animation); ok {
|
||||
style.transitions[tag] = animation
|
||||
} else {
|
||||
notCompatibleType(Transition, val)
|
||||
result = false
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
case DataObject:
|
||||
return setObject(value)
|
||||
|
||||
case DataNode:
|
||||
switch value.Type() {
|
||||
case ObjectNode:
|
||||
return setObject(value.Object())
|
||||
|
||||
case ArrayNode:
|
||||
result := true
|
||||
for i := 0; i < value.ArraySize(); i++ {
|
||||
if obj := value.ArrayElement(i).Object(); obj != nil {
|
||||
result = setObject(obj) && result
|
||||
} else {
|
||||
notCompatibleType(tag, value.ArrayElement(i))
|
||||
result = false
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
notCompatibleType(tag, value)
|
||||
return false
|
||||
}
|
||||
|
||||
func (style *viewStyle) setAnimation(tag string, value any) bool {
|
||||
switch value := value.(type) {
|
||||
case Animation:
|
||||
style.properties[tag] = []Animation{value}
|
||||
return true
|
||||
|
||||
case []Animation:
|
||||
style.properties[tag] = value
|
||||
return true
|
||||
|
||||
case DataObject:
|
||||
if animation := parseAnimation(value); animation.hasAnimatedProperty() {
|
||||
style.properties[tag] = []Animation{animation}
|
||||
return true
|
||||
}
|
||||
|
||||
case DataNode:
|
||||
animations := []Animation{}
|
||||
result := true
|
||||
for i := 0; i < value.ArraySize(); i++ {
|
||||
if obj := value.ArrayElement(i).Object(); obj != nil {
|
||||
if anim := parseAnimation(obj); anim.hasAnimatedProperty() {
|
||||
animations = append(animations, anim)
|
||||
} else {
|
||||
result = false
|
||||
}
|
||||
} else {
|
||||
notCompatibleType(tag, value.ArrayElement(i))
|
||||
result = false
|
||||
}
|
||||
}
|
||||
if result && len(animations) > 0 {
|
||||
style.properties[tag] = animations
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
notCompatibleType(tag, value)
|
||||
return false
|
||||
}
|
||||
|
||||
func (style *viewStyle) Remove(tag string) {
|
||||
style.remove(strings.ToLower(tag))
|
||||
}
|
||||
|
@ -293,7 +395,7 @@ func (style *viewStyle) set(tag string, value any) bool {
|
|||
if n, ok := value.(int); ok && n >= 100 && n%100 == 0 {
|
||||
n /= 100
|
||||
if n > 0 && n <= 9 {
|
||||
style.properties[TextWeight] = StartToEndOrientation
|
||||
style.properties[TextWeight] = n
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -333,101 +435,10 @@ func (style *viewStyle) set(tag string, value any) bool {
|
|||
return style.setFilter(tag, value)
|
||||
|
||||
case Transition:
|
||||
setObject := func(obj DataObject) bool {
|
||||
if obj != nil {
|
||||
tag := strings.ToLower(tag)
|
||||
switch tag {
|
||||
case "", "_":
|
||||
ErrorLog("Invalid transition property name")
|
||||
|
||||
default:
|
||||
style.transitions[tag] = parseAnimation(obj)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
switch value := value.(type) {
|
||||
case Params:
|
||||
result := true
|
||||
for tag, val := range value {
|
||||
tag = strings.ToLower(strings.Trim(tag, " \t"))
|
||||
if tag == "" {
|
||||
ErrorLog("Invalid transition property name")
|
||||
result = false
|
||||
} else if val == nil {
|
||||
delete(style.transitions, tag)
|
||||
} else if animation, ok := val.(Animation); ok {
|
||||
style.transitions[tag] = animation
|
||||
} else {
|
||||
notCompatibleType(Transition, val)
|
||||
result = false
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
case DataObject:
|
||||
return setObject(value)
|
||||
|
||||
case DataNode:
|
||||
switch value.Type() {
|
||||
case ObjectNode:
|
||||
return setObject(value.Object())
|
||||
|
||||
case ArrayNode:
|
||||
result := true
|
||||
for i := 0; i < value.ArraySize(); i++ {
|
||||
if obj := value.ArrayElement(i).Object(); obj != nil {
|
||||
result = setObject(obj) && result
|
||||
} else {
|
||||
notCompatibleType(tag, value.ArrayElement(i))
|
||||
result = false
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
notCompatibleType(tag, value)
|
||||
return false
|
||||
return style.setTransition(tag, value)
|
||||
|
||||
case AnimationTag:
|
||||
switch value := value.(type) {
|
||||
case Animation:
|
||||
style.properties[tag] = []Animation{value}
|
||||
return true
|
||||
|
||||
case []Animation:
|
||||
style.properties[tag] = value
|
||||
return true
|
||||
|
||||
case DataObject:
|
||||
if animation := parseAnimation(value); animation.hasAnimatedProperty() {
|
||||
style.properties[tag] = []Animation{animation}
|
||||
return true
|
||||
}
|
||||
|
||||
case DataNode:
|
||||
animations := []Animation{}
|
||||
result := true
|
||||
for i := 0; i < value.ArraySize(); i++ {
|
||||
if obj := value.ArrayElement(i).Object(); obj != nil {
|
||||
if anim := parseAnimation(obj); anim.hasAnimatedProperty() {
|
||||
animations = append(animations, anim)
|
||||
} else {
|
||||
result = false
|
||||
}
|
||||
} else {
|
||||
notCompatibleType(tag, value.ArrayElement(i))
|
||||
result = false
|
||||
}
|
||||
}
|
||||
if result && len(animations) > 0 {
|
||||
style.properties[tag] = animations
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
return style.setAnimation(tag, value)
|
||||
}
|
||||
|
||||
return style.propertyList.set(tag, value)
|
||||
|
|
Loading…
Reference in New Issue