Warning, /multimedia/kasts/src/qml/GenericHeader.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * SPDX-FileCopyrightText: 2021 Bart De Vries <bart@mogwai.be>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls as Controls
0009 import QtQuick.Layouts
0010 import QtQuick.Effects
0011 
0012 import org.kde.kirigami as Kirigami
0013 
0014 import org.kde.kasts
0015 
0016 Item {
0017     id: root
0018     required property string image
0019     required property string title
0020 
0021     property string subtitle: ""
0022     property var headerHeight: Kirigami.Units.gridUnit * 5
0023 
0024     property bool titleClickable: false
0025     property bool subtitleClickable: false
0026     signal titleClicked()
0027     signal subtitleClicked()
0028 
0029     implicitHeight: headerHeight
0030     implicitWidth: parent.width
0031 
0032     MultiEffect {
0033         id: backgroundImage
0034         source: backgroundImageRaw
0035         anchors.fill: parent
0036 
0037         brightness: -0.15
0038         saturation: 0.6
0039         contrast: -0.4
0040         blurMax: 64
0041         blur: 1.0
0042         blurEnabled: true
0043         autoPaddingEnabled: false
0044 
0045         ImageWithFallback {
0046             id: backgroundImageRaw
0047             anchors.fill: parent
0048             visible: false
0049             imageSource: image
0050             imageResize: false // no "stuttering" on resizing the window
0051         }
0052     }
0053 
0054     RowLayout {
0055         property int size: root.headerHeight -  2 * margin
0056         property int margin: Kirigami.Units.gridUnit * 1
0057         height: size
0058         anchors.bottom: parent.bottom
0059         anchors.left: parent.left
0060         anchors.right: parent.right
0061         anchors.leftMargin: margin
0062         anchors.rightMargin: margin
0063         anchors.bottomMargin: margin
0064 
0065         ImageWithFallback {
0066             id: frontImage
0067             imageSource: image
0068             Layout.maximumHeight: parent.size
0069             Layout.maximumWidth: parent.size
0070             Layout.minimumHeight: parent.size
0071             Layout.minimumWidth: parent.size
0072             absoluteRadius: Kirigami.Units.smallSpacing
0073             MouseArea {
0074                 anchors.fill: parent
0075                 cursorShape: Qt.PointingHandCursor
0076                 onClicked: {
0077                     fullScreenImageLoader.setSource("qrc:/qt/qml/org/kde/kasts/qml/FullScreenImage.qml", {
0078                         "image": root.image,
0079                         "description": root.title,
0080                         "loader": fullScreenImageLoader
0081                     });
0082                     fullScreenImageLoader.active = true;
0083                     fullScreenImageLoader.item.open();
0084                 }
0085             }
0086         }
0087 
0088         ColumnLayout {
0089             Layout.fillWidth: true
0090             Layout.fillHeight: true
0091             Layout.leftMargin: parent.margin/2
0092             Controls.Label {
0093                 Layout.fillWidth: true
0094                 Layout.fillHeight: true
0095                 text: title
0096                 fontSizeMode: Text.Fit
0097                 font.pointSize: Math.round(Kirigami.Theme.defaultFont.pointSize * 1.4)
0098                 minimumPointSize: Math.round(Kirigami.Theme.defaultFont.pointSize * 1.2)
0099                 horizontalAlignment: Text.AlignLeft
0100                 verticalAlignment: Text.AlignBottom
0101                 color: "#eff0f1" // breeze light text color
0102                 opacity: 1
0103                 elide: Text.ElideRight
0104                 wrapMode: Text.WordWrap
0105                 MouseArea {
0106                     anchors.fill: parent
0107                     cursorShape: root.titleClickable ? Qt.PointingHandCursor : undefined
0108                     onClicked: {
0109                         if (root.titleClickable) {
0110                             root.titleClicked();
0111                         }
0112                     }
0113                 }
0114             }
0115 
0116             Controls.Label {
0117                 Layout.fillWidth: true
0118                 visible: subtitle !== ""
0119                 text: subtitle
0120                 fontSizeMode: Text.Fit
0121                 font.pointSize: Kirigami.Theme.defaultFont.pointSize
0122                 minimumPointSize: Kirigami.Theme.defaultFont.pointSize
0123                 font.bold: true
0124                 horizontalAlignment: Text.AlignLeft
0125                 color: "#eff0f1" // breeze light text color
0126                 elide: Text.ElideRight
0127                 opacity: 1
0128                 MouseArea {
0129                     anchors.fill: parent
0130                     cursorShape: root.subtitleClickable ? Qt.PointingHandCursor : undefined
0131                     onClicked: {
0132                         if (root.subtitleClickable) {
0133                             root.subtitleClicked();
0134                         }
0135                     }
0136                 }
0137             }
0138         }
0139     }
0140 }
0141 
0142