filemanager/qml/Desktop/FolderItemDelegate.qml

117 lines
3.5 KiB
QML
Raw Normal View History

2021-03-16 00:02:20 -07:00
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import MeuiKit 1.0 as Meui
import org.kde.plasma.core 2.0 as PlasmaCore
Item {
id: main
property int index: model.index
property string name: model.blank ? "" : model.display
property bool blank: model.blank
property bool isDir: model.blank ? false : model.isDir
property bool selected: model.blank ? false : model.selected
property Item frame: contentItem
property Item iconArea: icon
property Item labelArea: label
property bool hovered: (main.GridView.view.hoveredItem === main)
property color hoveredColor: Qt.rgba(Meui.Theme.highlightColor.r,
Meui.Theme.highlightColor.g,
Meui.Theme.highlightColor.b, 0.1)
property color selectedColor: Qt.rgba(Meui.Theme.highlightColor.r,
Meui.Theme.highlightColor.g,
Meui.Theme.highlightColor.b, 0.9)
Accessible.name: name
Accessible.role: Accessible.Canvas
onSelectedChanged: {
if (selected && !blank) {
contentItem.grabToImage(function(result) {
dir.addItemDragImage(positioner.map(index), main.x + contentItem.x, main.y + contentItem.y, contentItem.width, contentItem.height, result.image);
});
}
}
Rectangle {
anchors.fill: parent
anchors.margins: Meui.Units.largeSpacing
radius: Meui.Theme.bigRadius
color: selected ? selectedColor : main.hovered ? hoveredColor : "transparent"
border.color: Qt.rgba(Meui.Theme.highlightColor.r,
Meui.Theme.highlightColor.g,
Meui.Theme.highlightColor.b, 0.3)
border.width: main.hovered || selected ? 1 : 0
}
Item {
id: contentItem
anchors.fill: parent
anchors.margins: Meui.Units.largeSpacing
PlasmaCore.IconItem {
id: icon
z: 2
anchors.top: parent.top
anchors.topMargin: Meui.Units.smallSpacing
anchors.horizontalCenter: parent.horizontalCenter
height: main.height * 0.55
width: height
animated: false
usesPlasmaTheme: false
smooth: true
source: model.blank ? "" : model.decoration
overlays: model.blank ? "" : model.overlays
}
Label {
id: label
z: 2
anchors.top: icon.bottom
anchors.topMargin: Meui.Units.smallSpacing
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
width: parent.width
textFormat: Text.PlainText
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignTop
wrapMode: Text.Wrap
elide: Text.ElideRight
color: "#FFFFFF"
opacity: model.isHidden ? 0.6 : 1
text: model.blank ? "" : model.display
font.italic: model.isLink
}
DropShadow {
anchors.fill: label
z: 1
horizontalOffset: 1
verticalOffset: 1
radius: Math.round(4 * Meui.Units.devicePixelRatio)
samples: radius * 2 + 1
spread: 0.35
color: "black"
opacity: model.isHidden ? 0.4 : 0.5
source: label
visible: !selected
}
}
}