Allow picking multiple files to upload

This commit is contained in:
miruka 2019-11-06 17:13:15 -04:00
parent 6953239bc3
commit 4a6f634f7a
3 changed files with 38 additions and 21 deletions

View File

@ -1,11 +1,9 @@
- Media - Media
- Downloading
- Bottom/top bar
- Verify things work with chat.privacytools.io (subdomain weirdness) - Verify things work with chat.privacytools.io (subdomain weirdness)
- Show real progression for mxc thumbnail loadings, uploads and downloads
- Confirmation box after picking file to upload
- Handle upload errors, file too big, etc
- Allow multiple file selection - Allow multiple file selection
- Confirmation box after picking file to upload
- Handle upload errors: non existent path, path is a dir, file too big, etc
- Show real progression for mxc thumbnail loadings, uploads and downloads
- Support m.file thumbnails - Support m.file thumbnails
- Generate video thumbnails - Generate video thumbnails
@ -16,6 +14,7 @@
- Video: missing buttons and small size problems - Video: missing buttons and small size problems
- Audio: online playback is buggy, must download+play file - Audio: online playback is buggy, must download+play file
- EventLink - EventLink
- Downloading (right click on media > save as...)
- RoomMessageNotice - RoomMessageNotice

View File

@ -6,7 +6,8 @@ Item {
anchors.fill: fill ? parent : undefined anchors.fill: fill ? parent : undefined
signal filePicked() signal filePicked(string file)
signal filesPicked(var files)
signal cancelled() signal cancelled()
@ -15,6 +16,8 @@ Item {
property alias dialog: fileDialog property alias dialog: fileDialog
property string selectedFile: "" property string selectedFile: ""
property string file: "" property string file: ""
property var selectedFiles: []
property var files: []
property string selectSubject: property string selectSubject:
dialog.fileMode === FileDialog.SaveFile ? qsTr("file") : qsTr("open") dialog.fileMode === FileDialog.SaveFile ? qsTr("file") : qsTr("open")
@ -59,17 +62,28 @@ Item {
modality: Qt.NonModal modality: Qt.NonModal
onVisibleChanged: if (visible) { onVisibleChanged: if (visible) {
opener.selectedFile = Qt.binding(() => Qt.resolvedUrl(currentFile)) opener.selectedFile = Qt.binding(() => Qt.resolvedUrl(currentFile))
opener.file = Qt.binding(() => Qt.resolvedUrl(file)) opener.file = Qt.binding(() => Qt.resolvedUrl(file))
opener.files = Qt.binding(() => Qt.resolvedUrl(files))
opener.selectedFiles =
Qt.binding(() => Qt.resolvedUrl(currentFiles))
} }
onAccepted: { onAccepted: {
opener.selectedFile = currentFile opener.selectedFile = currentFile
opener.file = file opener.selectedFiles = currentFiles
opener.file = file
opener.files = files
opener.filePicked(file) opener.filePicked(file)
opener.filesPicked(files)
} }
onRejected: { onRejected: {
selectedFile = "" selectedFile = ""
file = "" file = ""
selectedFiles = ""
files = ""
cancelled() cancelled()
} }
} }

View File

@ -1,20 +1,24 @@
import QtQuick 2.12 import QtQuick 2.12
import Qt.labs.platform 1.1
import "../utils.js" as Utils import "../utils.js" as Utils
HFileDialogOpener { HFileDialogOpener {
fill: false fill: false
dialog.title: qsTr("Select a file to send") dialog.title: qsTr("Select a file to send")
dialog.fileMode: FileDialog.OpenFiles
onFilePicked: { onFilesPicked: {
let path = Qt.resolvedUrl(file).replace(/^file:/, "") for (let file of files) {
let path = Qt.resolvedUrl(file).replace(/^file:/, "")
Utils.sendFile(userId, roomId, path, () => { Utils.sendFile(userId, roomId, path, () => {
if (destroyWhenDone) destroy() if (destroyWhenDone) destroy()
}, },
(type, args, error, traceback) => { (type, args, error, traceback) => {
console.error("python:\n" + traceback) console.error("python:\n" + traceback)
if (destroyWhenDone) destroy() if (destroyWhenDone) destroy()
}) })
}
} }
onCancelled: if (destroyWhenDone) destroy() onCancelled: if (destroyWhenDone) destroy()