117 lines
3.9 KiB
Go
117 lines
3.9 KiB
Go
|
|
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)
|
|
}
|
|
|
|
|
|
|