download_process bug

This commit is contained in:
cuu 2019-06-21 20:20:37 +08:00
parent ef691a92e7
commit 8b18259b4c

View File

@ -24,6 +24,7 @@ type DownloadProcessPage struct {
DST_DIR string DST_DIR string
Value int Value int
PngSize map[string][2]int PngSize map[string][2]int
Doing bool
FileNameLabel LabelInterface FileNameLabel LabelInterface
SizeLabel LabelInterface SizeLabel LabelInterface
@ -117,33 +118,34 @@ Loop:
for { for {
select { select {
case <-self.TheTicker.C: case <-self.TheTicker.C:
fmt.Printf(" transferred %v / %v bytes (%.2f%%)\n", fmt.Printf(" transferred %v / %v bytes (%.2f%%)\n",
self.resp.BytesComplete(), self.resp.BytesComplete(),
self.resp.Size, self.resp.Size,
100*self.resp.Progress()) 100*self.resp.Progress())
self.Value = int(100.0*self.resp.Progress())
total := float64(self.resp.Size)/1000.0/1000.0 self.Value = int(100.0*self.resp.Progress())
downloaded := float64(self.resp.BytesComplete())/1000.0/1000.0 total := float64(self.resp.Size)/1000.0/1000.0
downloaded := float64(self.resp.BytesComplete())/1000.0/1000.0
lb_str := fmt.Sprintf("%.2f/%.2fMb",downloaded,total) lb_str := fmt.Sprintf("%.2f/%.2fMb",downloaded,total)
self.SizeLabel.SetText(lb_str) self.SizeLabel.SetText(lb_str)
self.FileNameLabel.SetText(filepath.Base(self.resp.Filename)) self.FileNameLabel.SetText(filepath.Base(self.resp.Filename))
self.Screen.Draw()
self.Screen.SwapAndShow()
self.Screen.Draw()
self.Screen.SwapAndShow()
case <-self.resp.Done: case <-self.resp.Done:
// download is complete // download is complete
fmt.Println("download is complete ",self.Value) fmt.Println("download is complete ",self.Value)
self.Value = 0 self.Value = 0
self.TheTicker.Stop() self.TheTicker.Stop()
self.Doing=false
break Loop break Loop
} }
} }
self.Doing=false
if err := self.resp.Err(); err != nil { if err := self.resp.Err(); err != nil {
self.DownloadErr() self.DownloadErr()
fmt.Fprintf(os.Stderr, "Download failed: %v\n", err) fmt.Fprintf(os.Stderr, "Download failed: %v\n", err)
@ -224,8 +226,10 @@ func (self *DownloadProcessPage) StartDownload(_url,dst_dir string) {
self.TheTicker = gotime.NewTicker(100 * gotime.Millisecond) self.TheTicker = gotime.NewTicker(100 * gotime.Millisecond)
go self.UpdateProcessInterval() if self.Doing = false {
go self.UpdateProcessInterval()
self.Doing = true
}
} }
func (self *DownloadProcessPage) StopDownload() { func (self *DownloadProcessPage) StopDownload() {