-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathui.go
More file actions
69 lines (55 loc) · 2.48 KB
/
Copy pathui.go
File metadata and controls
69 lines (55 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
)
func (app *Config) makeUI() {
// obtenir les dades de l'API (Probabilitat de precipitacions, Temperatura Max. i Min. i Humitat)
precipitacio, tempMax, tempMin, humitat := app.getClimaText()
//insertar la informació dins del contenidor
climaDadesContent := container.NewGridWithColumns(4,
precipitacio,
tempMax,
tempMin,
humitat,
) //Definim un contenidor amb una graella amb quatre columnes
app.ClimaDadesContainer = climaDadesContent
//obtenim la barra d'eines o toolbar
toolBar := app.getToolBar(app.MainWindow)
pronosticTabContent := app.pronosticTab()
//Crearem una variable que contindrà el contenidor amb la taula de Registres
registresTabContent := app.registresTab()
//obtenim les pestanyes de l'aplicació
tabs := container.NewAppTabs( //Definim un contenidor per les pestanyes i dins afegim cada una de les pestanyes amb icones
container.NewTabItemWithIcon("Pronòstic", theme.HomeIcon(), pronosticTabContent),
container.NewTabItemWithIcon("Diari Meteorològic", theme.InfoIcon(), registresTabContent),
)
//Afegim aquesta instrucció per determinar la posició de les pestanyes
tabs.SetTabLocation(container.TabLocationTop)
//afegir el contenidor a la finestra
finalContent := container.NewVBox(climaDadesContent, toolBar, tabs) //Definim un nou contenidor i que afegirem al canvas general.
//Invoquem la pàgina principal i fem servir el mètode SetContent per afegir el contenidor
app.MainWindow.SetContent(finalContent)
//Realitzem una funcio anonima que sera invocada per una GoRutine en segon pla
go func() {
for range time.Tick(time.Second * 30) {
app.actualitzarClimaDadesContent() //Invoquem la funcio de refrescar els preus
}
}()
}
func (app *Config) actualitzarClimaDadesContent() {
app.InfoLog.Print("refrescant els preus") //Realitzem un log per tenir constancia que s'esta executant la gorutine
precipitacio, tempMax, tempMin, humitat := app.getClimaText()
app.ClimaDadesContainer.Objects = []fyne.CanvasObject{precipitacio, tempMax, tempMin, humitat}
app.ClimaDadesContainer.Refresh()
grafic := app.obtenirGrafic()
app.PronosticGraficContainer.Objects = []fyne.CanvasObject{grafic}
app.PronosticGraficContainer.Refresh()
}
func (app *Config) actualitzarRegistresTable() {
//Invoquem el mètode contenidor dels slices i l'asignem a l'atribut Registres del struct Config
app.Registres = app.getRegistresSlice()
app.RegistresTable.Refresh()
}