package main

import (
	"time"

	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/data/binding"
	"fyne.io/fyne/v2/layout"
	"fyne.io/fyne/v2/widget"
	"git.martyn.berlin/martyn/fyne-widgets/pkg/numeter"
)

func main() {
	a := app.New()
	w := a.NewWindow("VUMeter")
	level := binding.NewFloat()
	levelPB := numeter.NewVUMeterWithData(level)
	level.Set(0.95)
	levelPB.TextFormatter = func() string { return "                                                            " }
	levelPB.Peakhold = 3 * time.Second
	progress := widget.NewProgressBarWithData(level)
	setLevel := binding.NewFloat()
	setLevel.Set(75.0)
	slider := widget.NewSliderWithData(0.0, 100.0, setLevel)
	slider.OnChanged = func(data float64) {
		level.Set(data / 100)
	}

	vLevelPB := numeter.NewVUMeterWithData(level)
	vLevelPB.VUMeterDirection = numeter.VUMeterVertical
	levelPB.Peakhold = 3 * time.Second
	levelPB.TextFormatter = func() string { return "                                                            " }
	contain := container.New(layout.NewVBoxLayout(), levelPB, progress, slider)
	w.SetContent(container.New(layout.NewHBoxLayout(), contain, vLevelPB))
	w.ShowAndRun()
}
