From 7a1dda623549615b3189cea199c3a3e14ab262bf Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 7 Sep 2017 19:21:37 +0200 Subject: [PATCH] plasmoid: Show downloads --- .../package/contents/ui/DownloadsPage.qml | 115 ++++++++++++++++-- 1 file changed, 103 insertions(+), 12 deletions(-) diff --git a/plasmoid/package/contents/ui/DownloadsPage.qml b/plasmoid/package/contents/ui/DownloadsPage.qml index e51ea4b..de48e3d 100644 --- a/plasmoid/package/contents/ui/DownloadsPage.qml +++ b/plasmoid/package/contents/ui/DownloadsPage.qml @@ -1,5 +1,6 @@ import QtQuick 2.3 import QtQuick.Layouts 1.1 +import QtQml.Models 2.2 import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.core 2.0 as PlasmaCore @@ -13,24 +14,114 @@ Item { PlasmaExtras.ScrollArea { anchors.fill: parent - PlasmaComponents.Label { - text: "TODO: download delegate/model" - } - TopLevelView { id: downloadView model: plasmoid.nativeInterface.downloadModel delegate: TopLevelItem { - RowLayout { - PlasmaCore.IconItem { - id: listIcon - source: fileIcon + id: item + + ColumnLayout { + width: parent.width + spacing: 0 + + RowLayout { + id: itemSummary + + RowLayout { + spacing: 5 + PlasmaComponents.Label { + anchors.verticalCenter: parent.verticalCenter + elide: Text.ElideRight + text: name + } + } + PlasmaComponents.ProgressBar { + Layout.fillWidth: true + Layout.fillHeight: true + minimumValue: 0 + maximumValue: 100 + value: percentage + } + RowLayout { + id: toolButtonsLayout + spacing: 0 + + PlasmaComponents.Label { + height: implicitHeight + text: progressLabel + anchors.verticalCenter: parent.verticalCenter + } + Item { + width: 3 + } + PlasmaComponents.ToolButton { + iconSource: "folder" + tooltip: qsTr("Open in file browser") + onClicked: { + Qt.openUrlExternally(path) + plasmoid.expanded = false + } + } + } } - PlasmaComponents.Label { - height: implicitHeight - elide: Text.ElideRight - text: name + + DetailView { + id: detailsView + width: parent.width + visible: item.expanded + + model: DelegateModel { + model: plasmoid.nativeInterface.downloadModel + rootIndex: detailsView.model.modelIndex(index) + delegate: RowLayout { + width: parent.width + + PlasmaCore.IconItem { + Layout.preferredWidth: 32 + Layout.preferredHeight: 32 + anchors.verticalCenter: parent.verticalCenter + source: fileIcon + } + ColumnLayout { + spacing: 0 + Layout.fillWidth: true + RowLayout { + spacing: 3 + Layout.fillWidth: true + PlasmaComponents.Label { + Layout.fillWidth: true + text: name + font.pointSize: 8 + //height: contentHeight + elide: Text.ElideRight + } + PlasmaComponents.Label { + text: progressLabel + font.pointSize: 8 + //height: contentHeight + elide: Text.ElideRight + } + } + PlasmaComponents.ProgressBar { + Layout.fillWidth: true + Layout.preferredHeight: 8 + Layout.topMargin: 0 + minimumValue: 0 + maximumValue: 100 + value: percentage + } + } + PlasmaComponents.ToolButton { + iconSource: "folder" + tooltip: qsTr("Open in file browser") + onClicked: { + Qt.openUrlExternally(path) + plasmoid.expanded = false + } + } + } + } } } }