diff --git a/libdap-qt-ui-qml.qrc b/libdap-qt-ui-qml.qrc index 244e6b05d0f40c974f42efadada094a31d9806eb..4bf602f6c699d907b56276ad378cae6c203daa41 100644 --- a/libdap-qt-ui-qml.qrc +++ b/libdap-qt-ui-qml.qrc @@ -20,5 +20,7 @@ <file>Device.qml</file> <file>widgets/DapRadioButton.qml</file> <file>widgets/DapRadioButtonForm.ui.qml</file> + <file>widgets/DapScrollView.qml</file> + <file>widgets/DapScrollViewForm.ui.qml</file> </qresource> </RCC> diff --git a/widgets/DapScrollView.qml b/widgets/DapScrollView.qml new file mode 100644 index 0000000000000000000000000000000000000000..fd9159a78fbecb1c372a8f86701116f37eb68bd1 --- /dev/null +++ b/widgets/DapScrollView.qml @@ -0,0 +1,109 @@ +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" +} diff --git a/widgets/DapScrollViewForm.ui.qml b/widgets/DapScrollViewForm.ui.qml new file mode 100644 index 0000000000000000000000000000000000000000..62d4e1d3ee6ce3a2669adda7418e959a53dc8161 --- /dev/null +++ b/widgets/DapScrollViewForm.ui.qml @@ -0,0 +1,37 @@ +import QtQuick 2.4 + +MouseArea +{ + id: dapScrollMouseArea + ////@ ListView to attach the ScrollButton + property ListView viewData: ListView {} + property alias scrollMouseArea: dapScrollMouseArea + property alias scrollButton: dapScrollButton + + anchors.fill: parent + hoverEnabled: true + + MouseArea + { + id: dapScrollButton + property string imageSource: "qrc:/res/icons/ic_scroll-down.png" + width: 36 * pt + height: width + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.bottomMargin: 10 * pt + anchors.topMargin: 10 * pt + anchors.rightMargin: 10 * pt + hoverEnabled: true + visible: false + + Image + { + anchors.fill: parent + fillMode: Image.PreserveAspectFit + source: dapScrollButton.imageSource + sourceSize.height: parent.height + sourceSize.width: parent.width + } + } +}