mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-10 14:26:34 +00:00
81a4d70932
Fixing QML Connections warnings due to deprecated onFoo handlers. Now we're using function onFoo(params). Fixing QML compilation error due to js filename format. Fixing cyclic dependencies between qml components.
120 lines
4.2 KiB
QML
120 lines
4.2 KiB
QML
import QtQuick 2.1
|
|
import QtGraphicalEffects 1.13
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
import utils 1.0
|
|
|
|
import "../controls"
|
|
|
|
Rectangle {
|
|
|
|
id: downloadBar
|
|
|
|
property bool isVisible: false
|
|
property var downloadsModel
|
|
property var downloadsMenu
|
|
|
|
signal openDownloadClicked(bool downloadComplete, int index)
|
|
signal addNewDownloadTab()
|
|
|
|
visible: isVisible && !!listView.count
|
|
color: Style.current.background
|
|
width: parent.width
|
|
height: 56
|
|
border.width: 1
|
|
border.color: Style.current.border
|
|
|
|
// This container is to contain the downloaded elements between the parent buttons and hide the overflow
|
|
Item {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: Style.current.smallPadding
|
|
anchors.right: showAllBtn.left
|
|
anchors.rightMargin: Style.current.smallPadding
|
|
height: listView.height
|
|
clip: true
|
|
|
|
StatusListView {
|
|
id: listView
|
|
orientation: ListView.Horizontal
|
|
model: downloadsModel
|
|
height: currentItem ? currentItem.height : 0
|
|
// This makes it show the newest on the right
|
|
layoutDirection: Qt.RightToLeft
|
|
spacing: Style.current.smallPadding
|
|
anchors.left: parent.left
|
|
width: {
|
|
// Children rect shows a warning but this works ¯\_(ツ)_/¯
|
|
let w = 0
|
|
for (let i = 0; i < count; i++) {
|
|
w += this.itemAtIndex(i).width + this.spacing
|
|
}
|
|
return w
|
|
}
|
|
interactive: false
|
|
delegate: DownloadElement {
|
|
id: downloadElement
|
|
isPaused: downloadsModel.downloads[index] && downloadsModel.downloads[index].isPaused
|
|
primaryText: downloadFileName
|
|
downloadText: {
|
|
if (isCanceled) {
|
|
return qsTr("Cancelled")
|
|
}
|
|
if (isPaused) {
|
|
return qsTr("Paused")
|
|
}
|
|
return `${downloadsModel.downloads[index] ? (downloadsModel.downloads[index].receivedBytes / 1000000).toFixed(2) : 0}/${downloadsModel.downloads[index] ? (downloadsModel.downloads[index].totalBytes / 1000000).toFixed(2) : 0} MB` //"14.4/109 MB, 26 sec left"
|
|
}
|
|
downloadComplete: {
|
|
// listView.count ensures a value is returned even when index is undefined
|
|
return listView.count > 0 && !!downloadsModel.downloads && !!downloadsModel.downloads[index] &&
|
|
downloadsModel.downloads[index].receivedBytes >= downloadsModel.downloads[index].totalBytes
|
|
}
|
|
onItemClicked: {
|
|
openDownloadClicked(downloadComplete, index)
|
|
}
|
|
onOptionsButtonClicked: {
|
|
downloadsMenu.index = index
|
|
downloadsMenu.downloadComplete = Qt.binding(function() {return downloadElement.downloadComplete})
|
|
downloadsMenu.parent = downloadElement
|
|
downloadsMenu.x = xVal + 20
|
|
downloadsMenu.y = -downloadsMenu.height
|
|
downloadsMenu.open()
|
|
}
|
|
Connections {
|
|
target: downloadsMenu
|
|
function onCancelClicked() {
|
|
isCanceled = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
StatusButton {
|
|
id: showAllBtn
|
|
size: StatusBaseButton.Size.Small
|
|
text: qsTr("Show All")
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: closeBtn.left
|
|
anchors.rightMargin: Style.current.padding
|
|
onClicked: {
|
|
addNewDownloadTab()
|
|
}
|
|
}
|
|
|
|
StatusFlatRoundButton {
|
|
id: closeBtn
|
|
width: 32
|
|
height: 32
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: Style.current.smallPadding
|
|
icon.name: "close"
|
|
type: StatusFlatRoundButton.Type.Quaternary
|
|
onClicked: downloadBar.isVisible = false
|
|
}
|
|
}
|