Hi all,
I wrote a custom element that looks like a text element with a slide
effect on the text change.
The problem is in the transition. The element works in this way:
there are 2 text elements, one placed on the left and the other on the
right of the element. The latter has the same left and right anchor in
order to hide the element.
When the text changes the transition expands the text on the right
changing its left anchor and shrinks the left one.
Everything seems to work fine if I disable the transition, with the text
on the right not visibile. Using the old version of Qml from Qt Creator Qml 1.3.8 everything works fine even with transition enable (replacing "properties" with "matchProperties" and the easing syntax), so I cannot figure out what is wrong with this code.
Any help is appreciated.

Thanks,
Gianni

import Qt 4.7

Rectangle {
        id: slidetext
        property string text: ""
        property int duration: 2000
        property string easing: "Linear"
        property string horizontalAlignment: "AlignLeft"
        property string verticalAlignment: "AlignTop"

        Text {
                id: text1
                anchors.left: parent.left
                anchors.right: parent.right
                anchors.top: parent.top
                anchors.bottom: parent.bottom
                text: ""
                text: {
                        if (parent.state == "" || parent.state == "State1")
                                text
                        else
                                parent.text
                }
                horizontalAlignment: parent.horizontalAlignment
                verticalAlignment: parent.verticalAlignment
        }

        Text {
                id: text2
                anchors.left: parent.right
                anchors.right: parent.right
                anchors.top: parent.top
                anchors.bottom: parent.bottom
                text: ""
                text: {
                        if (parent.state == "State2" || parent.state == 
"State3")
                                text
                        else
                                parent.text
                }
                horizontalAlignment: parent.horizontalAlignment
                verticalAlignment: parent.verticalAlignment
        }

        Item {
                id: privateProps
                property bool isSliding: false
        }

        text: Behavior {
                enabled: !privateProps.isSliding
                PropertyAction { target: slidetext; property: "state"; value: {
                        if (state == "")
                                "State1"
                        else
                                "State3"
                        }
                }
        }

        states: [
                State {
                        AnchorChanges { target: text1; right: slidetext.left; }
                        AnchorChanges { target: text2; left: slidetext.left; }
                        PropertyChanges { target: privateProps; isSliding: true 
}
                        name: "State1"
                },
                State {
                        AnchorChanges { target: text1; left: slidetext.right; 
right: slidetext.right; }
                        AnchorChanges { target: text2; left: slidetext.left; 
right: slidetext.right; }
                        PropertyChanges { target: privateProps; isSliding: 
false }
                        name: "State2"
                },
                State {
                        AnchorChanges { target: text1; left: slidetext.left; }
                        AnchorChanges { target: text2; right: slidetext.left; }
                        PropertyChanges { target: privateProps; isSliding: true 
}
                        name: "State3"
                }
        ]
        transitions: [
                Transition {
                        from: ""; to: "State1"
                        SequentialAnimation {
                                NumberAnimation { properties: "x,width";
                                        easing.type: slidetext.easing; 
duration: slidetext.duration; }
                                PropertyAction { target: slidetext; property: 
"state"; value: "State2"; }
                        }
                },
                Transition {
                        from: "State2"; to: "State3"
                        SequentialAnimation {
                                NumberAnimation { properties: "x,width";
                                        easing.type: slidetext.easing; 
duration: slidetext.duration; }
                                PropertyAction { target: slidetext; property: 
"state"; value: ""; }
                        }
                }
        ]
}

_______________________________________________
Qt-qml mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-qml

Reply via email to