I decided to rewrite the program taking into account the experience gained.
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package application
|
|
|
|
import (
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/canvas"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/theme"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
type ProgressBarContract interface {
|
|
GetContainer() *fyne.Container
|
|
}
|
|
|
|
type progressBar struct {
|
|
container *fyne.Container
|
|
label *widget.Label
|
|
progressbar *widget.ProgressBar
|
|
errorBlock *container.Scroll
|
|
messageError *canvas.Text
|
|
statusMessage *canvas.Text
|
|
buttonPlay *widget.Button
|
|
}
|
|
|
|
func NewProgressBar() ProgressBarContract {
|
|
label := widget.NewLabel("")
|
|
progressbar := widget.NewProgressBar()
|
|
|
|
statusMessage := canvas.NewText("", theme.Color(theme.ColorNamePrimary))
|
|
messageError := canvas.NewText("", theme.Color(theme.ColorNameError))
|
|
buttonPlay := widget.NewButtonWithIcon("", theme.Icon(theme.IconNameMediaPlay), func() {
|
|
|
|
})
|
|
buttonPlay.Hide()
|
|
|
|
errorBlock := container.NewHScroll(messageError)
|
|
errorBlock.Hide()
|
|
|
|
content := container.NewVBox(
|
|
container.NewHScroll(label),
|
|
progressbar,
|
|
container.NewHScroll(container.NewHBox(
|
|
buttonPlay,
|
|
statusMessage,
|
|
)),
|
|
errorBlock,
|
|
)
|
|
content.Hide()
|
|
|
|
return &progressBar{
|
|
container: content,
|
|
label: label,
|
|
progressbar: progressbar,
|
|
errorBlock: errorBlock,
|
|
messageError: messageError,
|
|
statusMessage: statusMessage,
|
|
buttonPlay: buttonPlay,
|
|
}
|
|
}
|
|
|
|
func (p *progressBar) GetContainer() *fyne.Container {
|
|
return p.container
|
|
}
|