提交 2f52158e 编写于 作者: P peterq

add: 已完成任务删除了; 打开下载文件夹

上级 405d94e0
......@@ -3,6 +3,7 @@ package functions
import (
"fmt"
"github.com/peterq/pan-light/pc/pan-download"
"os"
)
func init() {
......@@ -35,6 +36,9 @@ var downloadSyncRoutes = map[string]syncHandler{
return pan_download.Pause(p["downloadId"].(string))
},
"download.delete": func(p map[string]interface{}) interface{} {
if p["deleteFile"].(bool) {
os.Remove(p["path"].(string))
}
return pan_download.Delete(p["downloadId"].(string))
},
}
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1557448428906" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23620" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M825.519584 281.262872 528.681086 281.262872c-18.023207 0-32.857662-13.675464-34.694572-31.213909-0.034794-0.718361-0.098241-1.428535-0.154526-2.140757-0.02149-0.508583-0.038887-1.019213-0.038887-1.532913l0 0.118704-0.068564 0c-3.509061-35.255968-33.256767-62.780859-69.427007-62.780859L197.516422 183.713138c-38.531104 0-69.778015 31.233352-69.778015 69.775156l0 516.201695c0 38.534642 31.246912 69.774133 69.778015 69.774133l628.003162 0c38.531104 0 69.778015-31.238468 69.778015-69.774133L895.297599 351.038028C895.297599 312.496224 864.050688 281.262872 825.519584 281.262872zM860.409615 769.688967c0 19.267832-15.625503 34.887578-34.890031 34.887578L197.516422 804.576545c-19.270669 0-34.889008-15.619746-34.889008-34.887578L162.627414 385.925606l697.782201 0L860.409615 769.688967zM162.627414 351.038028l0-97.549733c0-19.264762 15.618339-34.887578 34.889008-34.887578l226.780085 0c18.044698 0 32.889385 13.703093 34.701735 31.267121 0.03377 0.680499 0.093125 1.352811 0.146339 2.02717 0.023537 0.528026 0.040934 1.058099 0.040934 1.592264l0.083915 0c3.564322 35.198663 33.282351 62.662155 69.41268 62.662155l296.838498 0c19.264528 0 34.890031 15.622816 34.890031 34.887578L162.627414 351.037005z" p-id="23621"></path></svg>
\ No newline at end of file
import QtQuick.Dialogs 1.1
import QtQuick 2.11
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import '../js/util.js' as Util
import "../js/global.js" as G
Item {
id: root
property string confirmLabel: '确定'
property string cancelLabel: '取消'
property string title: '对话框'
property var options
property Item header
property Item contentItem
property var result
property bool confirmBtnEnabled: true
property var onClickConfirm: function(){return false}
property int w
property int h
QtObject {
id: promise
property bool done: true
property var promise
property var resovle
property var reject
}
Component {
id: windowComp
Item {
parent: G.root
Window {
id: window
flags: Qt.Dialog | Qt.WindowModal | Qt.WindowCloseButtonHint
modality: Qt.ApplicationModal
title: root.title
minimumHeight: 100
minimumWidth: 100
width: root.w
height: root.h
Dialog {
id: dialog
width: window.width
height: window.height
focus: true
header: root.header
contentItem: root.contentItem
footer: Item {
width: parent.width
height: 50
Row {
spacing: 10
height: parent.height
anchors.centerIn: parent
Button {
width: 80
height: 30
text: root.cancelLabel
onClicked: {
promise.reject('cancle')
}
}
Button {
width: 80
height: 30
text: root.confirmLabel
visible: !!root.confirmLabel
enabled: root.confirmBtnEnabled
onClicked: {
if (root.onClickConfirm()) {
promise.resovle(root.result)
}
}
}
}
}
}
onClosing: {
promise.reject('closed')
}
Component.onCompleted: {
visible = true
requestActivate()
dialog.open()
}
}
}
}
Loader {
id: windowLoader
focus: true
}
function open(opt) {
if (!promise.done)
throw new Error('last dialog is not closed')
promise.done = false
promise.promise = new Util.Promise(function(res, rej) {
options = opt
promise.resovle = res
promise.reject = rej
windowLoader.sourceComponent = windowComp
}).finally(function() {
console.log(windowLoader.item)
windowLoader.sourceComponent = null
promise.done = true
})
return promise.promise
}
function forceClose() {
if (!promise.done)
promise.reject('force closed')
}
}
......@@ -8,6 +8,7 @@ console.log('--------------util js init------------')
var Promise = P.Promise
var setTimeout = G.setTimeout
var fileSep = Qt.platform === 'windows' ? '\\' : '/'
var dialog = (function(){
var comp = Qt.createComponent('../comps/dialog.qml')
......
......@@ -152,5 +152,7 @@
<file>comps/IconButton.qml</file>
<file>assets/images/icons/pause.svg</file>
<file>assets/images/icons/start.svg</file>
<file>assets/images/icons/folder.svg</file>
<file>comps/PromiseDialog.qml</file>
</qresource>
</RCC>
import QtQuick 2.0
import QtQuick.Controls 2.4
import "../pan"
import "../comps"
import "../js/app.js" as App
......@@ -32,7 +33,8 @@ Item {
}
function dataSaverOk() {
if (isFinish) return
if (isFinish)
return
if (!isNewAdd) {
console.log('恢复任务', downloadId)
var res = Util.callGoSync('download.resume', {
......@@ -136,6 +138,28 @@ Item {
}
}
PromiseDialog {
id: comfirmDeleteDialog
w: 500
h: 200
title: '确认删除'
onClickConfirm: function() {
result = checkBox.checked
return true
}
contentItem: Column {
Text {
text: '删除后不可恢复! 确认删除?'
}
CheckBox {
id: checkBox
visible: isFinish
checked: true
text: '同时删除本地文件'
}
}
}
Row {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
......@@ -171,14 +195,32 @@ Item {
updateState()
}
}
IconButton {
iconType: 'folder'
title: '打开所在文件夹'
onClicked: {
var dir = meta.savePath.split(Util.fileSep)
dir.pop()
dir = dir.join(Util.fileSep)
var ret = Qt.openUrlExternally('file://' + dir)
console.log(ret)
}
}
IconButton {
iconType: 'delete'
title: '删除'
onClicked: {
Util.callGoSync('download.delete', {
"downloadId": downloadId
})
App.appState.transferComp.deleteItem(idx, isFinish)
comfirmDeleteDialog.open().then(function (deleteFile) {
Util.callGoSync('download.delete', {
"downloadId": downloadId,
"path": meta.savePath,
"deleteFile": isFinish ? deleteFile : false
})
App.appState.transferComp.deleteItem(idx, isFinish)
})
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册