mirror of
https://github.com/taigrr/crocgui
synced 2025-01-18 04:03:16 -08:00
receive multiple files
This commit is contained in:
parent
16be271fc1
commit
7aa7e5269f
32
main.go
32
main.go
@ -3,6 +3,8 @@ package main
|
|||||||
import (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
@ -151,20 +153,21 @@ func recvTabItem() *container.TabItem {
|
|||||||
prog.Show()
|
prog.Show()
|
||||||
donechan := make(chan bool)
|
donechan := make(chan bool)
|
||||||
var filename string
|
var filename string
|
||||||
|
receivednames := make(map[string]int)
|
||||||
go func() {
|
go func() {
|
||||||
ticker := time.NewTicker(time.Millisecond * 100)
|
ticker := time.NewTicker(time.Millisecond * 100)
|
||||||
for {
|
for {
|
||||||
gotInfo := false
|
|
||||||
select {
|
select {
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
if !gotInfo && receiver.Step2FileInfoTransfered {
|
if receiver.Step2FileInfoTransfered {
|
||||||
gotInfo = true
|
cnum := receiver.FilesToTransferCurrentNum
|
||||||
fi := receiver.FilesToTransfer[0]
|
fi := receiver.FilesToTransfer[cnum]
|
||||||
filename = filepath.Base(fi.Name)
|
filename = filepath.Base(fi.Name)
|
||||||
topline.SetText(fmt.Sprintf("Receiving file: %s", filename))
|
receivednames[filename] = cnum
|
||||||
|
topline.SetText(fmt.Sprintf("Receiving file: %s (%d/%d)", filename, cnum+1, len(receiver.FilesToTransfer)))
|
||||||
prog.Max = float64(fi.Size)
|
prog.Max = float64(fi.Size)
|
||||||
|
prog.SetValue(float64(receiver.TotalSent))
|
||||||
}
|
}
|
||||||
prog.SetValue(float64(receiver.TotalSent))
|
|
||||||
case <-donechan:
|
case <-donechan:
|
||||||
ticker.Stop()
|
ticker.Stop()
|
||||||
return
|
return
|
||||||
@ -175,6 +178,7 @@ func recvTabItem() *container.TabItem {
|
|||||||
if cderr != nil {
|
if cderr != nil {
|
||||||
log.Println("Unable to change to download dir")
|
log.Println("Unable to change to download dir")
|
||||||
}
|
}
|
||||||
|
status.SetText("")
|
||||||
rerr := receiver.Receive()
|
rerr := receiver.Receive()
|
||||||
donechan <- true
|
donechan <- true
|
||||||
prog.Hide()
|
prog.Hide()
|
||||||
@ -183,7 +187,21 @@ func recvTabItem() *container.TabItem {
|
|||||||
if rerr != nil {
|
if rerr != nil {
|
||||||
status.Text = "Receive failed: " + rerr.Error()
|
status.Text = "Receive failed: " + rerr.Error()
|
||||||
} else {
|
} else {
|
||||||
status.Text = fmt.Sprintf("Received file %s", filename)
|
filesReceived := make([]string, len(receivednames))
|
||||||
|
var i int
|
||||||
|
for f := range receivednames {
|
||||||
|
filesReceived[i] = f
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
sort.Slice(filesReceived, func(i, j int) bool {
|
||||||
|
return receivednames[filesReceived[i]] < receivednames[filesReceived[j]]
|
||||||
|
})
|
||||||
|
|
||||||
|
plural := ""
|
||||||
|
if len(filesReceived) > 1 {
|
||||||
|
plural = "s"
|
||||||
|
}
|
||||||
|
status.Text = fmt.Sprintf("Received file%s %s", plural, strings.Join(filesReceived, ","))
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
prog,
|
prog,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user