86 lines
1.8 KiB
QML
86 lines
1.8 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls
|
|
|
|
DropArea {
|
|
property string rectColor: "white"
|
|
property url filePath: ""
|
|
|
|
Layout.alignment: Qt.AlignCenter
|
|
|
|
width: 128
|
|
height: 128
|
|
|
|
Rectangle {
|
|
id: rectangle
|
|
anchors.fill: parent
|
|
color: rectColor
|
|
|
|
Image {
|
|
id: image
|
|
|
|
anchors.centerIn: parent
|
|
|
|
source: filePath
|
|
|
|
width: 96
|
|
height: 96
|
|
|
|
MouseArea {
|
|
id: imageMouseArea
|
|
|
|
anchors.fill: parent
|
|
|
|
Drag.dragType: Drag.Automatic
|
|
Drag.supportedActions: Qt.CopyAction
|
|
Drag.mimeData: {
|
|
"text/uri-list": filePath
|
|
}
|
|
|
|
DragHandler {
|
|
id: dragHandler
|
|
onActiveChanged:
|
|
if (active) {
|
|
parent.grabToImage(function(result) {
|
|
parent.Drag.imageSource = result.url
|
|
parent.Drag.active = true
|
|
})
|
|
} else {
|
|
parent.Drag.active = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Label {
|
|
id: huh
|
|
|
|
text: "無"
|
|
}
|
|
|
|
onEntered: {
|
|
rectangle.color = "cyan";
|
|
drag.accept (Qt.LinkAction);
|
|
}
|
|
onDropped: {
|
|
// TODO: handle dragging all channels at once
|
|
var firstUrl = new URL(drop.urls[0]);
|
|
if (firstUrl.protocol === "file:")
|
|
{
|
|
console.log(drop.urls);
|
|
|
|
filePath = drop.urls[0];
|
|
|
|
}
|
|
rectangle.color = rectColor;
|
|
}
|
|
onExited: {
|
|
rectangle.color = rectColor;
|
|
}
|
|
|
|
onFilePathChanged: {
|
|
huh.text = filePath;
|
|
}
|
|
}
|