Warning, /graphics/koko/src/qml/AlbumDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: (C) 2017 Atul Sharma <atulsharma406@gmail.com>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15 as Controls
0009 import org.kde.kquickcontrolsaddons 2.0 as KQA
0010 import org.kde.kirigami 2.12 as Kirigami
0011 import org.kde.koko 0.1 as Koko
0012
0013 Controls.ItemDelegate {
0014 id: root
0015
0016 required property int index
0017 required property bool selected
0018 required property var thumbnail
0019 required property int itemType
0020 required property string content
0021 required property int fileCount
0022 required property string imageurl
0023
0024 leftPadding: Kirigami.Units.gridUnit
0025 rightPadding: Kirigami.Units.gridUnit
0026 topPadding: Kirigami.Units.gridUnit
0027 bottomPadding: Kirigami.Units.gridUnit
0028
0029 leftInset: Kirigami.Units.smallSpacing
0030 rightInset: Kirigami.Units.smallSpacing
0031 topInset: Kirigami.Units.smallSpacing
0032 bottomInset: Kirigami.Units.smallSpacing
0033
0034 readonly property color stateIndicatorColor: if (root.activeFocus || root.hovered || root.selected) {
0035 return Kirigami.Theme.highlightColor;
0036 } else {
0037 return "transparent";
0038 }
0039
0040 readonly property real stateIndicatorOpacity: if (root.activeFocus || root.hovered) {
0041 return root.selected ? 1 : 0.3;
0042 } else if (root.selected) {
0043 return 0.7
0044 } else {
0045 return 0;
0046 }
0047
0048 width: gridView.cellWidth
0049 height: gridView.cellHeight
0050
0051 function refresh() {
0052 // HACK: force refresh image after it was edited.
0053 const old = image.image;
0054 image.image = undefined;
0055 image.image = old;
0056 }
0057
0058 contentItem: Item {
0059 KQA.QImageItem {
0060 id: image
0061 anchors.centerIn: parent
0062 width: kokoConfig.iconSize
0063 height: width
0064 smooth: true
0065 image: root.thumbnail
0066 fillMode: KQA.QImageItem.PreserveAspectFit
0067 }
0068
0069 Rectangle {
0070 anchors {
0071 top: image.top
0072 left: image.left
0073 right: image.right
0074 }
0075 visible: textLabel.visible
0076 width: image.width
0077 height: textLabel.contentHeight + (Kirigami.Units.smallSpacing * 2)
0078 Kirigami.Theme.colorSet: Kirigami.Theme.View
0079 color: Kirigami.Theme.backgroundColor
0080 opacity: 0.8
0081 }
0082
0083 Controls.Label {
0084 id: textLabel
0085 anchors {
0086 left: image.left
0087 right: image.right
0088 top: image.top
0089 bottom: countRect.visible ? countRect.top : image.bottom
0090 }
0091 visible: root.itemType == Koko.Types.Folder || root.itemType == Koko.Types.Album
0092 verticalAlignment: Text.AlignTop
0093 padding: Kirigami.Units.smallSpacing
0094 elide: Text.ElideRight
0095 maximumLineCount: 4
0096 wrapMode: Text.WordWrap
0097 color: Kirigami.Theme.textColor
0098 text: root.content
0099 }
0100
0101 Rectangle {
0102 id: countRect
0103 anchors {
0104 bottom: image.bottom
0105 left: image.left
0106 right: image.right
0107 }
0108 visible: root.fileCount && root.itemType == Koko.Types.Folder || root.itemType == Koko.Types.Album
0109 height: countLabel.contentHeight + (Kirigami.Units.smallSpacing * 2)
0110 Kirigami.Theme.colorSet: Kirigami.Theme.View
0111 color: Kirigami.Theme.backgroundColor
0112 opacity: 0.8
0113
0114 Controls.Label {
0115 id: countLabel
0116 padding: Kirigami.Units.smallSpacing
0117 elide: Text.ElideRight
0118 maximumLineCount: 4
0119 wrapMode: Text.WordWrap
0120 color: Kirigami.Theme.textColor
0121 text: i18np("1 Image", "%1 Images", root.fileCount)
0122 }
0123 }
0124 }
0125
0126
0127 background: Rectangle {
0128 radius: Kirigami.Settings.isMobile ? Kirigami.Units.smallSpacing : 3
0129 color: stateIndicatorColor
0130 opacity: stateIndicatorOpacity
0131 }
0132
0133 Keys.onPressed: switch (event.key) {
0134 case Qt.Key_Enter:
0135 case Qt.Key_Return:
0136 root.clicked();
0137 }
0138 }