forked from Elara6331/itd
		
	Add resource loading to ITD FS tab
This commit is contained in:
		| @@ -8,8 +8,10 @@ import ( | ||||
| 	"fyne.io/fyne/v2/container" | ||||
| 	"fyne.io/fyne/v2/data/binding" | ||||
| 	"fyne.io/fyne/v2/dialog" | ||||
| 	"fyne.io/fyne/v2/storage" | ||||
| 	"fyne.io/fyne/v2/theme" | ||||
| 	"fyne.io/fyne/v2/widget" | ||||
| 	"go.arsenm.dev/infinitime" | ||||
| 	"go.arsenm.dev/itd/api" | ||||
| ) | ||||
|  | ||||
| @@ -53,6 +55,52 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s | ||||
| 				refresh(ctx, cwdData, lsData, client, w, c) | ||||
| 			}, | ||||
| 		), | ||||
| 		widget.NewToolbarAction( | ||||
| 			theme.FileApplicationIcon(), | ||||
| 			func() { | ||||
| 				dlg := dialog.NewFileOpen(func(uc fyne.URIReadCloser, err error) { | ||||
| 					if err != nil || uc == nil { | ||||
| 						return | ||||
| 					} | ||||
|  | ||||
| 					resPath := uc.URI().Path() | ||||
| 					uc.Close() | ||||
|  | ||||
| 					progressDlg := newProgress(w) | ||||
| 					progressDlg.Show() | ||||
|  | ||||
| 					progCh, err := client.LoadResources(ctx, resPath) | ||||
| 					if err != nil { | ||||
| 						guiErr(err, "Error loading resources", false, w) | ||||
| 						return | ||||
| 					} | ||||
|  | ||||
| 					for evt := range progCh { | ||||
| 						if evt.Err != nil { | ||||
| 							guiErr(evt.Err, "Error loading resources", false, w) | ||||
| 							return | ||||
| 						} | ||||
|  | ||||
| 						switch evt.Operation { | ||||
| 						case infinitime.ResourceOperationRemoveObsolete: | ||||
| 							progressDlg.SetText("Removing " + evt.Name) | ||||
| 						case infinitime.ResourceOperationUpload: | ||||
| 							progressDlg.SetText("Uploading " + evt.Name) | ||||
| 							progressDlg.SetTotal(float64(evt.Total)) | ||||
| 							progressDlg.SetValue(float64(evt.Sent)) | ||||
| 						} | ||||
| 					} | ||||
|  | ||||
| 					progressDlg.Hide() | ||||
| 					refresh(ctx, cwdData, lsData, client, w, c) | ||||
| 				}, w) | ||||
| 				dlg.SetConfirmText("Upload Resources") | ||||
| 				dlg.SetFilter(storage.NewExtensionFileFilter([]string{ | ||||
| 					".zip", | ||||
| 				})) | ||||
| 				dlg.Show() | ||||
| 			}, | ||||
| 		), | ||||
| 		widget.NewToolbarAction( | ||||
| 			theme.UploadIcon(), | ||||
| 			func() { | ||||
| @@ -113,7 +161,6 @@ func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan s | ||||
| 					uploadDlg.Show() | ||||
| 				}, w) | ||||
| 				dlg.Show() | ||||
|  | ||||
| 			}, | ||||
| 		), | ||||
| 		widget.NewToolbarAction( | ||||
|   | ||||
| @@ -11,17 +11,21 @@ import ( | ||||
| ) | ||||
|  | ||||
| type progress struct { | ||||
| 	lbl *widget.Label | ||||
| 	pb  *widget.ProgressBar | ||||
| 	lbl     *widget.Label | ||||
| 	progLbl *widget.Label | ||||
| 	pb      *widget.ProgressBar | ||||
| 	*widget.PopUp | ||||
| } | ||||
|  | ||||
| func newProgress(w fyne.Window) progress { | ||||
| 	out := progress{} | ||||
|  | ||||
| 	out.lbl = widget.NewLabel("") | ||||
| 	out.lbl.Hide() | ||||
|  | ||||
| 	// Create label to show how many bytes transfered and center it | ||||
| 	out.lbl = widget.NewLabel("0 / 0 B") | ||||
| 	out.lbl.Alignment = fyne.TextAlignCenter | ||||
| 	out.progLbl = widget.NewLabel("0 / 0 B") | ||||
| 	out.progLbl.Alignment = fyne.TextAlignCenter | ||||
|  | ||||
| 	// Create new progress bar | ||||
| 	out.pb = widget.NewProgressBar() | ||||
| @@ -31,20 +35,30 @@ func newProgress(w fyne.Window) progress { | ||||
| 	sizeRect.SetMinSize(fyne.NewSize(300, 50)) | ||||
|  | ||||
| 	// Create vbox for label and progress bar | ||||
| 	l := container.NewVBox(out.lbl, out.pb) | ||||
| 	l := container.NewVBox(out.lbl, out.progLbl, out.pb) | ||||
| 	// Create popup | ||||
| 	out.PopUp = widget.NewModalPopUp(container.NewMax(l, sizeRect), w.Canvas()) | ||||
|  | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| func (p progress) SetText(s string) { | ||||
| 	p.lbl.SetText(s) | ||||
|  | ||||
| 	if s == "" { | ||||
| 		p.lbl.Hide() | ||||
| 	} else { | ||||
| 		p.lbl.Show() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (p progress) SetTotal(v float64) { | ||||
| 	p.pb.Max = v | ||||
| 	p.pb.Refresh() | ||||
| 	p.lbl.SetText(fmt.Sprintf("%.0f / %.0f B", p.pb.Value, v)) | ||||
| 	p.progLbl.SetText(fmt.Sprintf("%.0f / %.0f B", p.pb.Value, v)) | ||||
| } | ||||
|  | ||||
| func (p progress) SetValue(v float64) { | ||||
| 	p.pb.SetValue(v) | ||||
| 	p.lbl.SetText(fmt.Sprintf("%.0f / %.0f B", v, p.pb.Max)) | ||||
| 	p.progLbl.SetText(fmt.Sprintf("%.0f / %.0f B", v, p.pb.Max)) | ||||
| } | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								cmd/itgui/screenshots/resources.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cmd/itgui/screenshots/resources.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 21 KiB | 
		Reference in New Issue
	
	Block a user