github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/client/GUI/messages/stream.go (about) 1 package messages 2 3 import ( 4 "fmt" 5 6 "github.com/benoitkugler/goACVE/client/GUI/basic" 7 "github.com/benoitkugler/goACVE/client/controllers" 8 "github.com/therecipe/qt/widgets" 9 ) 10 11 type Monitor struct { 12 *widgets.QDialog 13 14 progressBar *widgets.QProgressBar 15 preview *widgets.QLabel 16 } 17 18 func NewMonitor(nbTasks int) Monitor { 19 m := Monitor{QDialog: basic.Dialog("Envoi des messages")} 20 21 m.progressBar = widgets.NewQProgressBar(nil) 22 m.progressBar.SetFormat("-") 23 m.progressBar.SetMinimum(0) 24 m.progressBar.SetValue(0) 25 26 m.ConnectReject(func() {}) // non fermable 27 28 m.progressBar.SetFormat("Mail %v / %m") 29 m.progressBar.SetMaximum(nbTasks) 30 m.preview = basic.Label("") 31 m.preview.SetText("Lancement des envois...") 32 33 m.Layout().AddWidget(m.preview) 34 m.Layout().AddWidget(m.progressBar) 35 m.SetModal(true) 36 m.Show() 37 38 return m 39 } 40 41 func (m *Monitor) OnSuccess(index int) { 42 m.progressBar.SetValue(index + 1) 43 m.preview.SetText(fmt.Sprintf("Message %d bien envoyé", index+1)) 44 } 45 func (m *Monitor) OnError(index int, err string) { 46 m.progressBar.SetValue(index + 1) 47 m.preview.SetText(err) 48 } 49 50 func (m *Monitor) ShowBilan(facErrors []controllers.DossierError, err error) { 51 m.preview.SetText("Envois terminés.") 52 m.DisconnectReject() // fermable a nouveau 53 54 if err != nil { 55 m.Reject() 56 basic.ShowError(err) 57 return 58 } 59 60 m.Accept() 61 62 msg := "L'envoi des messages a bien été effectué." 63 if len(facErrors) > 0 { 64 msg = "L'envoi pour les dossiers suivants a échoué : <br/> <table>" 65 for _, fac := range facErrors { 66 msg += fmt.Sprintf("<tr><td>%s</td><td>%s</td></tr>", fac.Fac, fac.Err) 67 } 68 msg += "</table>" 69 } 70 info := basic.Dialog("Bilan des envois") 71 info.Layout().AddWidget(basic.Label(msg)) 72 info.Exec() 73 }