333 lines
11 KiB
Go
333 lines
11 KiB
Go
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)
|
|
}
|
|
|
|
|
|
|