seekia/gui/desiresGui_Lifestyle.go

334 lines
11 KiB
Go
Raw Permalink Normal View History

package gui
// desiresGui_Lifestyle.go implements pages to manage a user's lifestyle desires
import "fyne.io/fyne/v2"
import "fyne.io/fyne/v2/widget"
import "fyne.io/fyne/v2/layout"
import "fyne.io/fyne/v2/theme"
import "fyne.io/fyne/v2/container"
import "seekia/resources/currencies"
import "seekia/internal/desires/myLocalDesires"
func setChooseDesiresCategoryPage_Lifestyle(window fyne.Window, previousPage func()){
currentPage := func(){setChooseDesiresCategoryPage_Lifestyle(window, previousPage)}
title := getPageTitleCentered(translate("My Mate Desires - Lifestyle"))
backButton := getBackButtonCentered(previousPage)
wealthButton := widget.NewButton(translate("Wealth"), func(){
setChooseDesiresPage_Wealth(window, currentPage)
})
dietButton := widget.NewButton(translate("Diet"), func(){
setChooseDesiresPage_Diet(window, currentPage)
})
fameButton := widget.NewButton(translate("Fame"), func(){
setChooseDesiresPage_Fame(window, currentPage)
})
drugsButton := widget.NewButton(translate("Drugs"), func(){
setChooseDesiresPage_Drugs(window, currentPage)
})
buttonsGrid := getContainerCentered(container.NewGridWithColumns(1, wealthButton, dietButton, fameButton, drugsButton))
buttonsGridPadded := container.NewPadded(buttonsGrid)
page := container.NewVBox(title, backButton, widget.NewSeparator(), buttonsGridPadded)
setPageContent(page, window)
}
func setChooseDesiresPage_Wealth(window fyne.Window, previousPage func()){
currentPage := func(){setChooseDesiresPage_Wealth(window, previousPage)}
title := getPageTitleCentered("My Mate Desires - Lifestyle")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Wealth")
description1 := getLabelCentered("Choose your wealth desires.")
currentCurrencyLabel := getItalicLabel("Current Currency:")
//Outputs:
// -string: Current currency code (Example: "USD")
// -error
getCurrentCurrencyCodeFunction := func()(string, error){
currentCurrencyExists, currencyCode, err := myLocalDesires.GetDesire("WealthCurrency")
if (err != nil){ return "", err }
if (currentCurrencyExists == false){
return "USD", nil
}
return currencyCode, nil
}
currencyCode, err := getCurrentCurrencyCodeFunction()
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
_, currencySymbol, err := currencies.GetCurrencyInfoFromCurrencyCode(currencyCode)
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
changeCurrencyButtonText := currencySymbol + currencyCode
changeCurrencyButton := widget.NewButton(changeCurrencyButtonText, func(){
onSelectFunction := func(newCurrencyCode string)error{
err := myLocalDesires.SetDesire("WealthCurrency", newCurrencyCode)
if (err != nil) { return err }
return nil
}
setChooseCurrencyPage(window, getCurrentCurrencyCodeFunction, onSelectFunction, currentPage)
})
currentCurrencyRow := container.NewHBox(layout.NewSpacer(), currentCurrencyLabel, changeCurrencyButton, layout.NewSpacer())
desireEditor, err := getDesireEditor_Numeric(window, currentPage, "Wealth", 0, 9223372036854775807, currencyCode, 0, false, nil, nil, false, "", "", nil)
if (err != nil) {
setErrorEncounteredPage(window, err, previousPage)
return
}
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
setViewMyMateDesireStatisticsPage(window, "Wealth", "Wealth", true, "Bar", "WealthInGold", currentPage)
}))
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, widget.NewSeparator(), currentCurrencyRow, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
setPageContent(page, window)
}
func setChooseDesiresPage_Diet(window fyne.Window, previousPage func()){
currentPage := func(){setChooseDesiresPage_Diet(window, previousPage)}
title := getPageTitleCentered("My Mate Desires - Lifestyle")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Diet")
description := getLabelCentered("Choose your diet desires.")
foodNamesList := []string{"Fruit", "Vegetables", "Nuts", "Grains", "Dairy", "Seafood", "Beef", "Pork", "Poultry", "Eggs", "Beans"}
buttonsGrid := container.NewGridWithColumns(2)
for _, foodName := range foodNamesList{
foodButton := widget.NewButton(foodName, func(){
setChooseDesiresPage_FoodRating(window, foodName, currentPage)
})
buttonsGrid.Add(foodButton)
}
buttonsGridCentered := getContainerCentered(buttonsGrid)
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description, widget.NewSeparator(), buttonsGridCentered)
setPageContent(page, window)
}
func setChooseDesiresPage_FoodRating(window fyne.Window, foodName string, previousPage func()){
currentPage := func(){setChooseDesiresPage_FoodRating(window, foodName, previousPage)}
pageTitle := getPageTitleCentered(translate("My Mate Desires - Lifestyle"))
backButton := getBackButtonCentered(previousPage)
pageSubtitle := getPageSubtitleCentered(translate(foodName))
description1 := getLabelCentered("Choose your " + foodName + " rating desires.")
description2 := getLabelCentered("Users provide a food rating between 1 and 10.")
description3 := getLabelCentered("Choose the responses that you desire.")
description4 := getLabelCentered("1/10 = Strongly dislike, 10/10 = Strongly like")
optionTitlesList := []string{"1/10", "2/10", "3/10", "4/10", "5/10", "6/10", "7/10", "8/10", "9/10", "10/10"}
optionNamesMap := map[string][]string{
"1/10": []string{"1"},
"2/10": []string{"2"},
"3/10": []string{"3"},
"4/10": []string{"4"},
"5/10": []string{"5"},
"6/10": []string{"6"},
"7/10": []string{"7"},
"8/10": []string{"8"},
"9/10": []string{"9"},
"10/10": []string{"10"},
}
desireName := foodName + "Rating"
desireEditor, err := getDesireEditor_Choice(window, currentPage, desireName, optionTitlesList, optionNamesMap, false, true, 5)
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
desireTitle := foodName + " Rating"
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
setViewMyMateDesireStatisticsPage(window, desireTitle, desireName, true, "Bar", desireName, currentPage)
}))
page := container.NewVBox(pageTitle, backButton, widget.NewSeparator(), pageSubtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
setPageContent(page, window)
}
func setChooseDesiresPage_Fame(window fyne.Window, previousPage func()){
currentPage := func(){setChooseDesiresPage_Fame(window, previousPage)}
title := getPageTitleCentered(translate("My Mate Desires - Lifestyle"))
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered(translate("Fame"))
description1 := getLabelCentered("Choose your fame desires.")
description2 := getLabelCentered("Users describe their fame from 1 to 10.")
description3 := getLabelCentered("Choose the fame responses that you desire.")
description4 := getLabelCentered("1/10 = No fame, 10/10 = Most fame.")
optionTitlesList := []string{"1/10", "2/10", "3/10", "4/10", "5/10", "6/10", "7/10", "8/10", "9/10", "10/10"}
optionNamesMap := map[string][]string{
"1/10": []string{"1"},
"2/10": []string{"2"},
"3/10": []string{"3"},
"4/10": []string{"4"},
"5/10": []string{"5"},
"6/10": []string{"6"},
"7/10": []string{"7"},
"8/10": []string{"8"},
"9/10": []string{"9"},
"10/10": []string{"10"},
}
desireEditor, err := getDesireEditor_Choice(window, currentPage, "Fame", optionTitlesList, optionNamesMap, false, true, 5)
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
setViewMyMateDesireStatisticsPage(window, "Fame", "Fame", true, "Bar", "Fame", currentPage)
}))
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
setPageContent(page, window)
}
func setChooseDesiresPage_Drugs(window fyne.Window, previousPage func()){
currentPage := func(){setChooseDesiresPage_Drugs(window, previousPage)}
title := getPageTitleCentered("My Mate Desires - Lifestyle")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Drugs")
description := getLabelCentered("Choose your drug desires.")
drugNamesList := []string{"Alcohol", "Tobacco", "Cannabis"}
buttonsGrid := container.NewGridWithColumns(1)
for _, drugName := range drugNamesList{
drugButton := widget.NewButton(drugName, func(){
setChooseDesiresPage_DrugFrequency(window, drugName, currentPage)
})
buttonsGrid.Add(drugButton)
}
buttonsGridCentered := getContainerCentered(buttonsGrid)
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description, widget.NewSeparator(), buttonsGridCentered)
setPageContent(page, window)
}
func setChooseDesiresPage_DrugFrequency(window fyne.Window, drugName string, previousPage func()){
currentPage := func(){setChooseDesiresPage_DrugFrequency(window, drugName, previousPage)}
pageTitle := getPageTitleCentered(translate("My Mate Desires - Lifestyle"))
backButton := getBackButtonCentered(previousPage)
pageSubtitle := getPageSubtitleCentered(translate(drugName))
description1 := getLabelCentered("Choose your " + drugName + " frequency desires.")
description2 := getLabelCentered("Users describe their drug use frequency from 1 to 10.")
description3 := getLabelCentered("Choose the user responses that you desire.")
description4 := getLabelCentered("1/10 = Never, 10/10 = Constantly")
desireName := drugName + "Frequency"
optionTitlesList := []string{"1/10", "2/10", "3/10", "4/10", "5/10", "6/10", "7/10", "8/10", "9/10", "10/10"}
optionNamesMap := map[string][]string{
"1/10": []string{"1"},
"2/10": []string{"2"},
"3/10": []string{"3"},
"4/10": []string{"4"},
"5/10": []string{"5"},
"6/10": []string{"6"},
"7/10": []string{"7"},
"8/10": []string{"8"},
"9/10": []string{"9"},
"10/10": []string{"10"},
}
desireEditor, err := getDesireEditor_Choice(window, currentPage, desireName, optionTitlesList, optionNamesMap, false, true, 5)
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
desireTitle := drugName + " Frequency"
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
setViewMyMateDesireStatisticsPage(window, desireTitle, desireName, true, "Bar", desireName, currentPage)
}))
page := container.NewVBox(pageTitle, backButton, widget.NewSeparator(), pageSubtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
setPageContent(page, window)
}