Alex Jbanca fa4755ce9e feat(WalletFirst): Integrate the BuyReceiveBanner in the app
+ store the card state in user settings
+ amend the BannerCard close button state. It needs to change color on hover and to become visible only when the card is hovered.
2024-11-27 16:50:58 +02:00

104 lines
2.7 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtGraphicalEffects 1.15
import StatusQ.Components 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import utils 1.0
Control {
id: root
property alias image: image.source
property alias title: title.text
property alias subTitle: subTitle.text
property bool closeEnabled: true
signal clicked()
signal close()
implicitHeight: 70
implicitWidth: 400
padding: Theme.halfPadding
leftPadding: 20
TapHandler {
acceptedButtons: Qt.LeftButton
enabled: !closeHandler.pressed
onTapped: {
root.clicked()
}
}
HoverHandler {
cursorShape: Qt.PointingHandCursor
}
background: Rectangle {
id: background
color: Theme.palette.background
radius: 12
border.width: 1
border.color: Theme.palette.baseColor2
layer.enabled: true
layer.effect: DropShadow {
horizontalOffset: 0
verticalOffset: 7
radius: 8
spread: root.hovered ? 0.3 : 0
color: Theme.palette.baseColor2
}
}
contentItem: RowLayout {
id: layout
spacing: Theme.padding
StatusImage {
id: image
Layout.preferredWidth: 36
Layout.preferredHeight: 36
}
ColumnLayout {
Layout.fillWidth: true
Layout.fillHeight: true
StatusBaseText {
id: title
Layout.fillWidth: true
color: Theme.palette.directColor1
font.pixelSize: Theme.additionalTextSize
font.weight: Font.Medium
elide: Text.ElideRight
}
StatusBaseText {
id: subTitle
Layout.fillWidth: true
color: Theme.palette.baseColor1
font.pixelSize: Theme.additionalTextSize
elide: Text.ElideRight
}
}
StatusIcon {
id: closeButton
objectName: "bannerCard_closeButton"
Layout.topMargin: 4
Layout.rightMargin: 4
Layout.alignment: Qt.AlignTop
Layout.preferredWidth: 16
Layout.preferredHeight: 16
icon: "close"
color: closeHoverHandler.hovered ? Theme.palette.directColor1 : Theme.palette.baseColor1
visible: root.closeEnabled && root.hovered
TapHandler {
id: closeHandler
acceptedButtons: Qt.LeftButton
onTapped: {
root.close()
}
}
HoverHandler {
id: closeHoverHandler
}
}
}
}