85 lines
2.0 KiB
QML
85 lines
2.0 KiB
QML
import QtQuick 2.13
|
|
import QtGraphicalEffects 1.0
|
|
|
|
import utils 1.0
|
|
|
|
Rectangle {
|
|
id: root
|
|
property alias source: roundedIconImage.source
|
|
default property alias content: content.children
|
|
property alias icon: roundedIconImage
|
|
property bool rotates: false
|
|
signal clicked
|
|
width: 36
|
|
height: 36
|
|
property alias iconWidth: roundedIconImage.width
|
|
property alias iconHeight: roundedIconImage.height
|
|
property alias rotation: roundedIconImage.rotation
|
|
property color iconColor: Style.current.transparent
|
|
|
|
color: Style.current.blue
|
|
radius: width / 2
|
|
|
|
Item {
|
|
id: iconContainer
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
width: roundedIconImage.width
|
|
height: roundedIconImage.height
|
|
|
|
SVGImage {
|
|
id: roundedIconImage
|
|
width: 12
|
|
height: 12
|
|
fillMode: Image.PreserveAspectFit
|
|
source: Style.svg("new_chat")
|
|
}
|
|
ColorOverlay {
|
|
anchors.fill: roundedIconImage
|
|
source: roundedIconImage
|
|
color: root.iconColor
|
|
rotation: roundedIconImage.rotation
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: rotates
|
|
sourceComponent: rotatorComponent
|
|
}
|
|
|
|
Component {
|
|
id: rotatorComponent
|
|
RotationAnimator {
|
|
target: iconContainer
|
|
from: 0;
|
|
to: 360;
|
|
duration: 1200
|
|
running: true
|
|
loops: Animation.Infinite
|
|
}
|
|
|
|
}
|
|
|
|
Item {
|
|
id: content
|
|
anchors.left: iconContainer.right
|
|
anchors.leftMargin: 6 + (root.width - iconContainer.width)
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
root.clicked()
|
|
}
|
|
}
|
|
}
|
|
|
|
/*##^##
|
|
Designer {
|
|
D{i:0;formeditorZoom:1.75}
|
|
}
|
|
##^##*/
|