1
0
mirror of https://github.com/taigrr/crocgui synced 2025-01-18 04:03:16 -08:00

receive multiple files

This commit is contained in:
Chris Howey 2021-02-14 13:38:32 -06:00
parent 16be271fc1
commit 7aa7e5269f

32
main.go
View File

@ -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,