diff --git a/libdap-qt-ui-qml.qrc b/libdap-qt-ui-qml.qrc index 5a536778bcc749dd404b2dd70ba2cd0fb2167de7..3cb2929606497965356e2b7843886fc4e8aaa581 100644 --- a/libdap-qt-ui-qml.qrc +++ b/libdap-qt-ui-qml.qrc @@ -28,5 +28,7 @@ <file>widgets/DapMessageBox.qml</file> <file>widgets/DapMessageBoxForm.ui.qml</file> <file>DapFont.qml</file> + <file>widgets/DapBusyIndicator.qml</file> + <file>widgets/DapBusyIndicatorForm.ui.qml</file> </qresource> </RCC> diff --git a/widgets/DapBusyIndicator.qml b/widgets/DapBusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..ce2c27b8cb5828e0ce26c303d457dd78c958e4c9 --- /dev/null +++ b/widgets/DapBusyIndicator.qml @@ -0,0 +1,130 @@ +import QtQuick 2.2 +import QtQuick.Controls 2.0 + +DapBusyIndicatorForm +{ + + contentItem: + Item + { + id: busyItem + width: busyIndicatorWidth + height: busyIndicatorHeight + + //To set number of indicator point + Repeater + { + id: busyRepeater + model: busyPointNum + + Rectangle + { + x: busyItem.width / 2 - width / 2 + y: busyItem.height / 2 - height / 2 + width: busyPointWidth + height: busyPointHeight + radius: busyPointRounding + opacity: 1 + //Add possibility of color animation + Behavior on color + { + ColorAnimation + { + from: busyIndicatorDarkColor + duration: busyIndicatorDelay * busyPointNum + } + } + //Add possibility of scale animation + Behavior on scale + { + ScaleAnimator + { + from: busyPointMaxScale + duration: busyIndicatorDelay * busyPointNum + } + } + //Set next indicator point as transformation of previous + transform: + Rotation + { + origin.x: busyItem.width / 2 - width + origin.y: busyItem.height / 2 - height + angle: index * (360 / busyPointNum) + } + //Timer of every point transformation + Timer + { + id: reset + interval: busyIndicatorDelay * (index) + onTriggered: + { + console.log("reset triggered, index: ", index) + parent.opacity = 1 + parent.color = busyIndicatorDarkColor + parent.scale = busyPointMaxScale + reset2.start() + } + onRunningChanged: + { + if(running) console.log("reset start, index: ", index) + else console.log("reset stop, index: ", index) + } + } + //Timer of point transformation at one position + Timer + { + id: reset2 + interval: busyIndicatorDelay + onTriggered: + { + console.log("reset2 triggered, index: ", index) + parent.opacity = 1 + parent.color = busyIndicatorLightColor + parent.scale = busyPointMinScale + } + onRunningChanged: + { + if(running) console.log("reset2 start, index: ", index) + else console.log("reset2 stop, index: ", index) + } + } + //Timer of all busy indicator transformation + Timer + { + id: globalTimer + interval: busyIndicatorDelay * busyPointNum + onTriggered: + { + console.log("globalTimer triggered, index: ", index) + reset.start() + } + triggeredOnStart: true + repeat: true + } + Component.onCompleted: + { + globalTimer.start() + } + onVisibleChanged: + { + if(!visible) + { + globalTimer.stop(); + reset.stop(); + reset2.stop(); + + } + } + } + } + } + onRunningChanged: + { + if(running) + { + console.log("running all") + } + else console.log("stop all") + } + +} diff --git a/widgets/DapBusyIndicatorForm.ui.qml b/widgets/DapBusyIndicatorForm.ui.qml new file mode 100644 index 0000000000000000000000000000000000000000..6eec7a400a414f39f5d299886f1bfe2cc23a67b5 --- /dev/null +++ b/widgets/DapBusyIndicatorForm.ui.qml @@ -0,0 +1,37 @@ +import QtQuick 2.2 +import QtQuick.Controls 2.0 + +BusyIndicator +{ + ///@detalis dapBusy Identificator of dap busy indicator + property alias dapBusy: control + ///@detalis busyPointNum Number of rectangle points at busy indicator + property int busyPointNum + ///@detalis busyPointRounding Rounding of rectangle points at busy indicator + property int busyPointRounding + ///@detalis busyPointWidth Width of rectangle points at busy indicator + property int busyPointWidth + ///@detalis busyPointHeight Height of rectangle points at busy indicator + property int busyPointHeight + ///@detalis busyPointMinScale Minimum scale of point + property real busyPointMinScale + ///@detalis busyPointMaxScale Maximum scale of point + property real busyPointMaxScale + ///@detalis busyIndicatorWidth Width of rectangle busy indicator + property int busyIndicatorWidth + ///@detalis busyIndicatorHeight Height of rectangle busy indicator + property int busyIndicatorHeight + ///@detalis busyIndicatorDelay Delay between busy indicator states + property int busyIndicatorDelay + ///@detalis busyIndicatorDarkColor Color of lightest point of busy indicator + property string busyIndicatorDarkColor + ///@detalis busyIndicatorLightColor Color of darkest point of busy indicator + property string busyIndicatorLightColor + + + + id: control + visible: running + +} +