Start implementing bubbles
This commit is contained in:
@@ -17,6 +17,7 @@ import NeoChat.Setting 1.0
|
||||
import NeoChat.Component 1.0
|
||||
import NeoChat.Dialog 1.0
|
||||
import NeoChat.Menu.Timeline 1.0
|
||||
import org.kde.kcoreaddons 1.0 as KCA
|
||||
|
||||
Control {
|
||||
id: root
|
||||
@@ -29,27 +30,6 @@ Control {
|
||||
autoLoad: false
|
||||
}
|
||||
|
||||
Kirigami.Action {
|
||||
id: saveFileAction
|
||||
onTriggered: {
|
||||
let contextMenu = fileDelegateContextMenu.createObject(root, {'room': currentRoom, 'author': author});
|
||||
contextMenu.viewSource.connect(function() {
|
||||
messagerSourceSheet.createObject(ApplicationWindow.overlay, {"sourceText": toolTip}).open()
|
||||
})
|
||||
contextMenu.downloadAndOpen.connect(downloadAndOpen)
|
||||
contextMenu.saveFileAs.connect(saveFileAs)
|
||||
contextMenu.reply.connect(function() {
|
||||
roomPanelInput.replyModel = Object.assign({}, model)
|
||||
roomPanelInput.isReply = true
|
||||
roomPanelInput.focus()
|
||||
})
|
||||
contextMenu.redact.connect(function() {
|
||||
currentRoom.redactEvent(eventId)
|
||||
})
|
||||
contextMenu.popup()
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: ColumnLayout {
|
||||
RowLayout {
|
||||
ToolButton {
|
||||
@@ -69,6 +49,8 @@ Control {
|
||||
}
|
||||
RowLayout {
|
||||
visible: audio.hasAudio
|
||||
Layout.leftMargin: Kirigami.Units.largeSpacing
|
||||
Layout.rightMargin: Kirigami.Units.largeSpacing
|
||||
// Server doesn't support seeking, so use ProgressBar instead of Slider :(
|
||||
ProgressBar {
|
||||
from: 0
|
||||
@@ -77,72 +59,8 @@ Control {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: humanSize(audio.position) + "/" + humanSize(audio.duration)
|
||||
text: KCA.Format.formatDuration(audio.position) + "/" + KCA.Format.formatDuration(audio.duration)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
background: AutoMouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
id: messageMouseArea
|
||||
|
||||
onSecondaryClicked: saveFileAction.trigger()
|
||||
|
||||
Component {
|
||||
id: messagerSourceSheet
|
||||
|
||||
MessageSourceSheet {}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: openFolderDialog
|
||||
|
||||
OpenFolderDialog {}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: fileDelegateContextMenu
|
||||
|
||||
FileDelegateContextMenu {}
|
||||
}
|
||||
}
|
||||
|
||||
function saveFileAs() {
|
||||
var folderDialog = openFolderDialog.createObject(ApplicationWindow.overlay)
|
||||
|
||||
folderDialog.chosen.connect(function(path) {
|
||||
if (!path) return
|
||||
|
||||
currentRoom.downloadFile(eventId, path + "/" + currentRoom.fileNameToDownload(eventId))
|
||||
})
|
||||
|
||||
folderDialog.open()
|
||||
}
|
||||
|
||||
function downloadAndOpen() {
|
||||
if (downloaded) {
|
||||
openSavedFile()
|
||||
} else {
|
||||
openOnFinished = true
|
||||
currentRoom.downloadFile(eventId, Platform.StandardPaths.writableLocation(Platform.StandardPaths.CacheLocation) + "/" + eventId.replace(":", "_").replace("/", "_").replace("+", "_") + currentRoom.fileNameToDownload(eventId))
|
||||
}
|
||||
}
|
||||
|
||||
function openSavedFile() {
|
||||
if (Qt.openUrlExternally(progressInfo.localPath)) return;
|
||||
if (Qt.openUrlExternally(progressInfo.localDir)) return;
|
||||
}
|
||||
|
||||
function humanSize(duration) {
|
||||
if (!duration) {
|
||||
return i18n("Unknown duration")
|
||||
}
|
||||
|
||||
if (duration > 1000 * 60 * 60) {
|
||||
return new Date(duration).toLocaleTimeString(Qt.locale(), "hh:mm:ss")
|
||||
}
|
||||
|
||||
return new Date(duration).toLocaleTimeString(Qt.locale(), "mm:ss")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user