seekia/gui/syncGui.go

118 lines
3.9 KiB
Go
Raw Permalink Normal View History

package gui
// syncGui.go implements pages to manage the app connection to the Seekia network
import "fyne.io/fyne/v2"
import "fyne.io/fyne/v2/widget"
import "fyne.io/fyne/v2/container"
import "seekia/internal/appMemory"
func setSyncPage(window fyne.Window, previousPage func()){
appMemory.SetMemoryEntry("CurrentViewedPage", "Sync")
currentPage := func(){setSyncPage(window, previousPage)}
title := getPageTitleCentered("Sync")
backButton := getBackButtonCentered(previousPage)
syncDescription := getLabelCentered("Manage your connection to the Seekia network.")
settingsIcon, err := getFyneImageIcon("Settings")
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
settingsButton := widget.NewButton(translate("Settings"), func(){
setManageNetworkSettingsPage(window, currentPage)
})
settingsButtonWithIcon := container.NewGridWithColumns(1, settingsIcon, settingsButton)
logsIcon, err := getFyneImageIcon("Choice")
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
logsButton := widget.NewButton(translate("Logs"), func(){
setViewLogsPage(window, "Network", currentPage)
})
logsButtonWithIcon := container.NewGridWithColumns(1, logsIcon, logsButton)
peersIcon, err := getFyneImageIcon("Host")
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
peersButton := widget.NewButton(translate("Peers"), func(){
//TODO
// This should show a page where we can view all connected peers
// It should show a display similar to a torrenting client, where we can see information such as
// how much data has been uploaded/downloaded from each peer and the IP of each peer
showUnderConstructionDialog(window)
})
peersButtonWithIcon := container.NewGridWithColumns(1, peersIcon, peersButton)
buttonsRow := getContainerCentered(container.NewGridWithRows(1, settingsButtonWithIcon, logsButtonWithIcon, peersButtonWithIcon))
/*
//TODO
syncOnOffStatus := "Off"
syncOnOffStatusTitle := widget.NewLabel("Sync Status:")
syncOnOffStatusLabel := getBoldLabel(syncOnOffStatus)
// We show a button to start and stop the client's connection to the network
// This is useful for users who want to use Seekia in offline-only mode
// This way, Seekia will not connect to any servers, and the user can use the app for offline activities such as analyzing genomes
getStartStopSyncButton := func() fyne.Widget{
if (syncOnOffStatus == "Off"){
startButton := widget.NewButtonWithIcon(translate("Start"), theme.MediaPlayIcon(), func(){
//TODO
currentPage()
})
return startButton
}
stopButton := widget.NewButtonWithIcon(translate("Stop"), theme.MediaStopIcon(), func(){
//TODO
currentPage()
})
return stopButton
}
startStopSyncButton := getStartStopSyncButton()
syncStartStopRow := container.NewHBox(layout.NewSpacer(), syncOnOffStatusTitle, syncOnOffStatusLabel, startStopSyncButton, layout.NewSpacer())
*/
description1 := getLabelCentered("Seekia is under construction.")
description2 := getLabelCentered("The app is unable to connect to other peers.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), syncDescription, widget.NewSeparator(), buttonsRow, widget.NewSeparator(), description1, description2)
setPageContent(page, window)
}
func setManageNetworkConnectionPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Manage Network Connection")
backButton := getBackButtonCentered(previousPage)
description := getBoldLabelCentered("Under Construction")
//TODO: This page should show information about the network connection
// The user should be able to see if the app is currently able to connect to other peers over Tor and clearnet
// They should also see a realtime description of how much data is being uploaded and downloaded in megabytes per second
page := container.NewVBox(title, backButton, widget.NewSeparator(), description)
setPageContent(page, window)
}