107 lines
2.6 KiB
QML
107 lines
2.6 KiB
QML
import QtQuick 2.5
|
|
import QtQuick.Controls 2.3
|
|
import Style 1.0
|
|
|
|
Item {
|
|
id: root
|
|
readonly property bool labelVisible: label.visible
|
|
readonly property bool iconVisible: icon.visible
|
|
|
|
// label value
|
|
property string text: ""
|
|
|
|
// icon value
|
|
property string imageSource: ""
|
|
|
|
// Tooltip value
|
|
property string tooltipText: text
|
|
|
|
// text color
|
|
property color textColor: Style.ncTextColor
|
|
property color textColorHovered: Style.lightHover
|
|
|
|
// text background color
|
|
property color textBgColor: "transparent"
|
|
property color textBgColorHovered: Style.lightHover
|
|
|
|
// icon background color
|
|
property color iconBgColor: "transparent"
|
|
property color iconBgColorHovered: Style.lightHover
|
|
|
|
// text border color
|
|
property color textBorderColor: "transparent"
|
|
|
|
property alias hovered: mouseArea.containsMouse
|
|
|
|
signal clicked()
|
|
|
|
Accessible.role: Accessible.Button
|
|
Accessible.name: text !== "" ? text : (tooltipText !== "" ? tooltipText : qsTr("Activity action button"))
|
|
Accessible.onPressAction: clicked()
|
|
|
|
// background with border around the Text
|
|
Rectangle {
|
|
visible: parent.labelVisible
|
|
|
|
anchors.fill: parent
|
|
|
|
// padding
|
|
anchors.topMargin: 10
|
|
anchors.bottomMargin: 10
|
|
|
|
border.color: parent.textBorderColor
|
|
border.width: 1
|
|
|
|
color: parent.hovered ? parent.textBgColorHovered : parent.textBgColor
|
|
|
|
radius: 25
|
|
}
|
|
|
|
// background with border around the Image
|
|
Rectangle {
|
|
visible: parent.iconVisible
|
|
|
|
anchors.fill: parent
|
|
|
|
color: parent.hovered ? parent.iconBgColorHovered : parent.iconBgColor
|
|
}
|
|
|
|
// label
|
|
Text {
|
|
id: label
|
|
visible: parent.text !== ""
|
|
text: parent.text
|
|
font: parent.font
|
|
color: parent.hovered ? parent.textColorHovered : parent.textColor
|
|
anchors.fill: parent
|
|
anchors.leftMargin: 10
|
|
anchors.rightMargin: 10
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
// icon
|
|
Image {
|
|
id: icon
|
|
visible: parent.imageSource !== ""
|
|
anchors.centerIn: parent
|
|
source: parent.imageSource
|
|
sourceSize.width: visible ? 32 : 0
|
|
sourceSize.height: visible ? 32 : 0
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
onClicked: parent.clicked()
|
|
hoverEnabled: true
|
|
}
|
|
|
|
ToolTip {
|
|
text: parent.tooltipText
|
|
delay: 1000
|
|
visible: text != "" && parent.hovered
|
|
}
|
|
}
|