From 755623e56225131e19132112e2aa6048a7b8e73a Mon Sep 17 00:00:00 2001 From: Anatasof Wirapraja Date: Tue, 7 Mar 2023 18:47:10 +0700 Subject: add material heart.svg (filled and outlined) and CardItemGrid.ui.qml --- CardItemGrid.ui.qml | 123 ++++++++++++++++++++++++++++++++++++++++ Material/svg/filled/heart.svg | 1 + Material/svg/outlined/heart.svg | 1 + 3 files changed, 125 insertions(+) create mode 100644 CardItemGrid.ui.qml create mode 100644 Material/svg/filled/heart.svg create mode 100644 Material/svg/outlined/heart.svg diff --git a/CardItemGrid.ui.qml b/CardItemGrid.ui.qml new file mode 100644 index 0000000..b24b6c1 --- /dev/null +++ b/CardItemGrid.ui.qml @@ -0,0 +1,123 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import QtGraphicalEffects 1.15 + +Item { + id: item1 + DropShadow { + color: "#4d000000" + source: cardItem + verticalOffset: 4 + radius: 40 + samples: 81 + anchors.fill: cardItem + } + Rectangle { + id: cardItem + anchors.fill: parent + anchors.rightMargin: 16 + anchors.leftMargin: 16 + anchors.bottomMargin: 16 + anchors.topMargin: 16 + Layout.minimumWidth: 300 + Layout.minimumHeight: 475 + radius: 8 + ColumnLayout { + anchors.fill: parent + spacing: 0 + Rectangle { + id: cardItemImage + radius: 8 + Layout.fillHeight: true + Layout.preferredHeight: 255 + Layout.fillWidth: true + Layout.preferredWidth: 300 + Image { + id: cardItemImageSource + source: "https://eduport.webestica.com/assets/images/courses/4by3/08.jpg" + fillMode: Image.PreserveAspectCrop + width: parent.width + height: parent.height + visible: false + } + OpacityMask { + id: cardItemImageMask + anchors.fill: cardItemImage + source: cardItemImageSource + maskSource: cardItemImage + } + + Rectangle { + id: rectangle + width: cardItemImageMask.width + height: 5 + color: "#ffffff" + anchors.bottom: cardItemImageMask.bottom + anchors.bottomMargin: 0 + } + } + ColumnLayout { + id: cardItemBody + Layout.rightMargin: 20 + Layout.leftMargin: 20 + Layout.bottomMargin: 16 + Layout.topMargin: 16 + Layout.fillHeight: true + Layout.fillWidth: true + Item { + id: badgeAndFavorite + height: favorite.height + Layout.fillWidth: true + Label { + id: badge + color: "#0cbc87" + text: "All level" + anchors.left: parent.left + verticalAlignment: Text.AlignVCenter + Layout.fillWidth: false + rightPadding: 6 + leftPadding: 6 + bottomPadding: 4 + topPadding: 4 + font.pointSize: 12 + font.family: "Roboto" + background: Rectangle { + color: "#4d0cbc87" + radius: 8 + } + } + + Button { + id: favorite + width: 24 + height: 24 + text: qsTr("Button") + anchors.right: parent.right + anchors.rightMargin: 0 + padding: 0 + rightPadding: 0 + leftPadding: 0 + bottomPadding: 0 + topPadding: 0 + icon.source: "Material/svg/outlined/heart.svg" + display: AbstractButton.IconOnly + flat: true + } + } + } + } + } + states: [ + State { + name: "State1" + when: favorite.pressed + + PropertyChanges { + target: favorite + icon.color: "#d6293e" + icon.source: "Font-Awesome/svgs/solid/heart.svg" + } + } + ] +} diff --git a/Material/svg/filled/heart.svg b/Material/svg/filled/heart.svg new file mode 100644 index 0000000..b7d58f5 --- /dev/null +++ b/Material/svg/filled/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Material/svg/outlined/heart.svg b/Material/svg/outlined/heart.svg new file mode 100644 index 0000000..ccd13f3 --- /dev/null +++ b/Material/svg/outlined/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file -- cgit v1.2.3