Confirm uploading from path in clipboard
This commit is contained in:
parent
2d623118b5
commit
60832b2fcd
2
TODO.md
2
TODO.md
|
@ -1,5 +1,6 @@
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
|
- power control focus
|
||||||
- idlemanager: what if setPresence call fails due to network?
|
- idlemanager: what if setPresence call fails due to network?
|
||||||
- block power level change when offline
|
- block power level change when offline
|
||||||
- fix power level control button layout when apply button is loading
|
- fix power level control button layout when apply button is loading
|
||||||
|
@ -158,7 +159,6 @@
|
||||||
|
|
||||||
- Add upload keybindings (close failed upload, pause, resume)
|
- Add upload keybindings (close failed upload, pause, resume)
|
||||||
- Handle errors when setting an avatar
|
- Handle errors when setting an avatar
|
||||||
- Show confirmation box when picking file to upload or uploading from clipboard
|
|
||||||
- Show proper progress ring for mxc thumbnails loading
|
- Show proper progress ring for mxc thumbnails loading
|
||||||
|
|
||||||
- Sentinel function to report local file paths for already downloaded media,
|
- Sentinel function to report local file paths for already downloaded media,
|
||||||
|
|
|
@ -21,8 +21,14 @@ HButton {
|
||||||
|
|
||||||
HShortcut {
|
HShortcut {
|
||||||
sequences: window.settings.keys.sendFileFromPathInClipboard
|
sequences: window.settings.keys.sendFileFromPathInClipboard
|
||||||
onActivated: utils.sendFile(
|
onActivated: utils.makePopup(
|
||||||
chat.userId, chat.roomId, Clipboard.text.trim(),
|
"Popups/ConfirmUploadPopup.qml",
|
||||||
|
{
|
||||||
|
userId: chat.userId,
|
||||||
|
roomId: chat.roomId,
|
||||||
|
roomName: chat.roomInfo.display_name,
|
||||||
|
filePath: Clipboard.text.trim(),
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
62
src/gui/Popups/ConfirmUploadPopup.qml
Normal file
62
src/gui/Popups/ConfirmUploadPopup.qml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
import QtQuick.Layouts 1.12
|
||||||
|
import "../Base"
|
||||||
|
import "../Base/Buttons"
|
||||||
|
|
||||||
|
HColumnPopup {
|
||||||
|
id: popup
|
||||||
|
|
||||||
|
property string userId
|
||||||
|
property string roomId
|
||||||
|
property string roomName
|
||||||
|
property string filePath
|
||||||
|
|
||||||
|
readonly property string fileName: filePath.split("/").slice(-1)[0]
|
||||||
|
|
||||||
|
|
||||||
|
page.footer: AutoDirectionLayout {
|
||||||
|
ApplyButton {
|
||||||
|
id: uploadButton
|
||||||
|
text: qsTr("Send")
|
||||||
|
icon.name: "confirm-uploading-file"
|
||||||
|
onClicked: {
|
||||||
|
utils.sendFile(popup.userId, popup.roomId, filePath)
|
||||||
|
popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CancelButton {
|
||||||
|
id: cancelButton
|
||||||
|
onClicked: popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onOpened: uploadButton.forceActiveFocus()
|
||||||
|
|
||||||
|
SummaryLabel {
|
||||||
|
text:
|
||||||
|
qsTr("Send %1 to %2?")
|
||||||
|
.arg(utils.htmlColorize(fileName, theme.colors.accentText))
|
||||||
|
.arg(utils.htmlColorize(roomName, theme.colors.accentText))
|
||||||
|
|
||||||
|
textFormat: Text.StyledText
|
||||||
|
}
|
||||||
|
|
||||||
|
HImage {
|
||||||
|
source: popup.filePath
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
visible: status !== Image.Error
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.preferredHeight:
|
||||||
|
status === Image.Ready ?
|
||||||
|
width / (implicitWidth / implicitHeight) :
|
||||||
|
0
|
||||||
|
|
||||||
|
Behavior on Layout.preferredHeight { HNumberAnimation {} }
|
||||||
|
}
|
||||||
|
}
|
|
@ -191,6 +191,11 @@ QtObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function htmlColorize(text, color) {
|
||||||
|
return `<font color="${color}">${text}</font>`
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function processedEventText(ev) {
|
function processedEventText(ev) {
|
||||||
const type = ev.event_type
|
const type = ev.event_type
|
||||||
const unknownMsg = type === "RoomMessageUnknown"
|
const unknownMsg = type === "RoomMessageUnknown"
|
||||||
|
|
3
src/icons/thin/confirm-uploading-file.svg
Normal file
3
src/icons/thin/confirm-uploading-file.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m24 0-6 22-8.129-7.239 7.802-8.234-10.458 7.227-7.215-1.754zm-15 16.668v7.332l3.258-4.431z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 198 B |
Loading…
Reference in New Issue
Block a user