Skip to content
Snippets Groups Projects
DapScrollView.qml 2.41 KiB
import QtQuick 2.4

DapScrollViewForm
{
    property var contentPos: 0.0
    viewData.onContentYChanged:
    {
        if (viewData.atYBeginning)
        {
            scrollButton.state = "goUp"
        }
        else if (viewData.atYEnd)
        {
            scrollButton.state = "goDown"
        }
        else if (contentPos < viewData.contentItem.y)
        {
            scrollButton.state = "goUp"
        }
        else
        {
            scrollButton.state = "goDown"
        }
    }

    onEntered:
    {
        scrollButton.visible = true;
    }

    onExited:
    {
        scrollButton.visible = false;
    }

    scrollButton.onEntered:
    {
        if (scrollButton.state === "goUp")
        {
            scrollButton.imageSource = "qrc:/res/icons/ic_scroll-down_hover.png"
        }
        else if (scrollButton.state === "goDown")
        {
            scrollButton.imageSource = "qrc:/res/icons/ic_scroll-up_hover.png"
        }
    }

    scrollButton.onExited:
    {
        if (scrollButton.state === "goUp")
        {
            scrollButton.imageSource = "qrc:/res/icons/ic_scroll-down.png"
        }
        else if (scrollButton.state === "goDown")
        {
            scrollButton.imageSource = "qrc:/res/icons/ic_scroll-up.png"
        }
    }

    scrollButton.onClicked:
    {
        if(scrollButton.state === "goUp")
        {
            viewData.positionViewAtEnd();
            scrollButton.state = "goDown";
        }
        else if(scrollButton.state === "goDown")
        {
            viewData.positionViewAtBeginning();
            scrollButton.state = "goUp";
        }
    }

    scrollButton.states:
    [
        State
        {
            name: "goDown"
            PropertyChanges
            {
                target: scrollButton
                onStateChanged:
                {
                    scrollButton.anchors.top = undefined
                    scrollButton.anchors.bottom = parent.bottom
                    scrollButton.exited()
                }
            }
        },

        State
        {
            name: "goUp"
            PropertyChanges
            {
                target: scrollButton
                onStateChanged:
                {
                    scrollButton.anchors.bottom = undefined
                    scrollButton.anchors.top = parent.top
                    scrollButton.exited()
                }
            }
        }

    ]

    scrollButton.state: "goUp"
}