545 lines
19 KiB
Go
545 lines
19 KiB
Go
|
package gui
|
||
|
|
||
|
// desiresGui_Mental.go implements pages to manage a user's Mental mate desires
|
||
|
|
||
|
import "fyne.io/fyne/v2"
|
||
|
import "fyne.io/fyne/v2/container"
|
||
|
import "fyne.io/fyne/v2/layout"
|
||
|
import "fyne.io/fyne/v2/theme"
|
||
|
import "fyne.io/fyne/v2/widget"
|
||
|
|
||
|
import "seekia/resources/worldLanguages"
|
||
|
|
||
|
import "seekia/internal/desires/myLocalDesires"
|
||
|
import "seekia/internal/encoding"
|
||
|
import "seekia/internal/helpers"
|
||
|
|
||
|
import "strings"
|
||
|
import "errors"
|
||
|
import "slices"
|
||
|
|
||
|
|
||
|
func setChooseDesiresCategoryPage_Mental(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresCategoryPage_Mental(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered(translate("My Mate Desires - Mental"))
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
languageButton := widget.NewButton(translate("Language"), func(){
|
||
|
setChooseDesiresPage_Language(window, currentPage)
|
||
|
})
|
||
|
|
||
|
genderIdentityButton := widget.NewButton(translate("Gender Identity"), func(){
|
||
|
setChooseDesiresPage_GenderIdentity(window, currentPage)
|
||
|
})
|
||
|
petsButton := widget.NewButton(translate("Pets"), func(){
|
||
|
setChooseDesiresPage_Pets(window, currentPage)
|
||
|
})
|
||
|
|
||
|
buttonsGrid := getContainerCentered(container.NewGridWithColumns(1, languageButton, genderIdentityButton, petsButton))
|
||
|
|
||
|
buttonsGridPadded := container.NewPadded(buttonsGrid)
|
||
|
|
||
|
page := container.NewVBox(title, backButton, widget.NewSeparator(), buttonsGridPadded)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
func setChooseDesiresPage_Language(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_Language(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered("My Mate Desires - Mental")
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("Language"))
|
||
|
|
||
|
description1 := getLabelCentered("Choose the languages that you desire.")
|
||
|
description2 := getLabelCentered("This refers to the languages that a user can speak.")
|
||
|
description3 := getLabelCentered("For example, add English if you desire someone who can speak it.")
|
||
|
|
||
|
getSelectedLanguagesSection := func()(*fyne.Container, error){
|
||
|
|
||
|
getCurrentDesiredChoicesList := func()([]string, error){
|
||
|
|
||
|
currentChoicesListExists, currentChoicesList, err := myLocalDesires.GetDesire("Language")
|
||
|
if (err != nil) { return nil, err }
|
||
|
if (currentChoicesListExists == false){
|
||
|
|
||
|
emptyList := make([]string, 0)
|
||
|
return emptyList, nil
|
||
|
}
|
||
|
//currentChoicesList is a "+" separated list of choices
|
||
|
// Each choice option is encoded in base64 (except for "Other")
|
||
|
currentDesiredChoicesList := strings.Split(currentChoicesList, "+")
|
||
|
|
||
|
return currentDesiredChoicesList, nil
|
||
|
}
|
||
|
|
||
|
currentDesiredChoicesList, err := getCurrentDesiredChoicesList()
|
||
|
if (err != nil) { return nil, err }
|
||
|
|
||
|
addLanguageButton := getWidgetCentered(widget.NewButtonWithIcon("Add Language", theme.ContentAddIcon(), func(){
|
||
|
|
||
|
onSubmitFunction := func(_ int, newLanguagePrimaryName string)error{
|
||
|
|
||
|
newLanguageNameBase64 := encoding.EncodeBytesToBase64String([]byte(newLanguagePrimaryName))
|
||
|
|
||
|
newLanguagesList := helpers.AddItemToStringListAndAvoidDuplicate(currentDesiredChoicesList, newLanguageNameBase64)
|
||
|
|
||
|
newDesireString := strings.Join(newLanguagesList, "+")
|
||
|
|
||
|
err = myLocalDesires.SetDesire("Language", newDesireString)
|
||
|
if (err != nil){ return err }
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
setChooseDesiresPage_AddLanguage(window, onSubmitFunction, currentPage, currentPage)
|
||
|
}))
|
||
|
|
||
|
allowOtherCheck := widget.NewCheck("Allow Other", func(response bool){
|
||
|
|
||
|
getNewChoicesList := func()[]string{
|
||
|
|
||
|
if (response == false){
|
||
|
|
||
|
newList, _ := helpers.DeleteAllMatchingItemsFromStringList(currentDesiredChoicesList, "Other")
|
||
|
return newList
|
||
|
}
|
||
|
|
||
|
newList := helpers.AddItemToStringListAndAvoidDuplicate(currentDesiredChoicesList, "Other")
|
||
|
|
||
|
return newList
|
||
|
}
|
||
|
|
||
|
newList := getNewChoicesList()
|
||
|
|
||
|
if (len(newList) == 0){
|
||
|
err := myLocalDesires.DeleteDesire("Language")
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, currentPage)
|
||
|
return
|
||
|
}
|
||
|
currentPage()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
newDesireValueString := strings.Join(newList, "+")
|
||
|
|
||
|
err := myLocalDesires.SetDesire("Language", newDesireValueString)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, currentPage)
|
||
|
return
|
||
|
}
|
||
|
currentPage()
|
||
|
})
|
||
|
|
||
|
allowOtherIsSelected := slices.Contains(currentDesiredChoicesList, "Other")
|
||
|
if (allowOtherIsSelected == true){
|
||
|
allowOtherCheck.Checked = true
|
||
|
}
|
||
|
|
||
|
allowOtherHelpButton := widget.NewButtonWithIcon("", theme.QuestionIcon(), func(){
|
||
|
setAllowOtherExplainerPage(window, currentPage)
|
||
|
})
|
||
|
|
||
|
allowOtherRow := container.NewHBox(layout.NewSpacer(), allowOtherCheck, allowOtherHelpButton, layout.NewSpacer())
|
||
|
|
||
|
getAnyLanguageIsSelectedBool := func()bool{
|
||
|
|
||
|
if (len(currentDesiredChoicesList) == 0){
|
||
|
return false
|
||
|
}
|
||
|
if (len(currentDesiredChoicesList) == 1){
|
||
|
onlyValue := currentDesiredChoicesList[0]
|
||
|
if (onlyValue == "Other"){
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
anyLanguageIsSelected := getAnyLanguageIsSelectedBool()
|
||
|
if (anyLanguageIsSelected == false){
|
||
|
|
||
|
noLanguagesLabel := getBoldLabelCentered("No languages selected.")
|
||
|
|
||
|
selectedLanguagesSection := container.NewVBox(noLanguagesLabel, addLanguageButton, widget.NewSeparator(), allowOtherRow)
|
||
|
|
||
|
return selectedLanguagesSection, nil
|
||
|
}
|
||
|
|
||
|
myDesiredLanguagesLabel := getItalicLabelCentered("My Desired Languages:")
|
||
|
|
||
|
languageNameColumn := container.NewVBox(widget.NewSeparator())
|
||
|
|
||
|
deleteButtonsColumn := container.NewVBox(widget.NewSeparator())
|
||
|
|
||
|
for _, languageNameBase64 := range currentDesiredChoicesList{
|
||
|
|
||
|
if (languageNameBase64 == "Other"){
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
languageName, err := encoding.DecodeBase64StringToUnicodeString(languageNameBase64)
|
||
|
if (err != nil){
|
||
|
return nil, errors.New("My current language desire is malformed: Contains invalid language: " + languageNameBase64)
|
||
|
}
|
||
|
|
||
|
languageNameLabel := getBoldLabelCentered(translate(languageName))
|
||
|
|
||
|
deleteLanguageButton := widget.NewButtonWithIcon("", theme.DeleteIcon(), func(){
|
||
|
newDesiredLanguagesList, _ := helpers.DeleteAllMatchingItemsFromStringList(currentDesiredChoicesList, languageNameBase64)
|
||
|
|
||
|
if (len(newDesiredLanguagesList) == 0){
|
||
|
|
||
|
err := myLocalDesires.DeleteDesire("Language")
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, currentPage)
|
||
|
return
|
||
|
}
|
||
|
currentPage()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
newDesireValueString := strings.Join(newDesiredLanguagesList, "+")
|
||
|
|
||
|
err := myLocalDesires.SetDesire("Language", newDesireValueString)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, currentPage)
|
||
|
return
|
||
|
}
|
||
|
currentPage()
|
||
|
})
|
||
|
|
||
|
languageNameColumn.Add(languageNameLabel)
|
||
|
deleteButtonsColumn.Add(deleteLanguageButton)
|
||
|
|
||
|
languageNameColumn.Add(widget.NewSeparator())
|
||
|
deleteButtonsColumn.Add(widget.NewSeparator())
|
||
|
}
|
||
|
|
||
|
languagesGrid := container.NewHBox(layout.NewSpacer(), languageNameColumn, deleteButtonsColumn, layout.NewSpacer())
|
||
|
|
||
|
//TODO: Add option for requiring a user to fulfill all of your chosen languages
|
||
|
// For example, a user could only search for people who speak both English and French
|
||
|
|
||
|
selectedLanguagesSection := container.NewVBox(addLanguageButton, widget.NewSeparator(), myDesiredLanguagesLabel, languagesGrid, widget.NewSeparator(), allowOtherRow)
|
||
|
|
||
|
return selectedLanguagesSection, nil
|
||
|
}
|
||
|
|
||
|
selectedLanguagesSection, err := getSelectedLanguagesSection()
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
filterOptionsSection, err := getDesireEditorFilterOptionsSection(window, currentPage, "Language", true)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
|
||
|
setViewMyMateDesireStatisticsPage(window, "Language", "Language", false, "", "", currentPage)
|
||
|
}))
|
||
|
|
||
|
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, widget.NewSeparator(), selectedLanguagesSection, widget.NewSeparator(), filterOptionsSection, widget.NewSeparator(), viewStatisticsButton)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
//Inputs:
|
||
|
// -fyne.Window
|
||
|
// -func(int, string)error: The function to be executed when a choice is selected
|
||
|
// -Int: Language identifier
|
||
|
// -string: Language primary name
|
||
|
// -func(): Previous Page
|
||
|
// -func(): Page to go to after selection
|
||
|
func setChooseDesiresPage_AddLanguage(window fyne.Window, submitFunction func(int, string)error, previousPage func(), nextPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_AddLanguage(window, submitFunction, previousPage, nextPage)}
|
||
|
|
||
|
title := getPageTitleCentered("My Mate Desires - Mental")
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered("Choose Language")
|
||
|
|
||
|
worldLanguageObjectsList, err := worldLanguages.GetWorldLanguageObjectsList()
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// This list stores the translated language names
|
||
|
worldLanguageDescriptionsList := make([]string, 0, len(worldLanguageObjectsList))
|
||
|
|
||
|
// This map will store all of the language names
|
||
|
// If a language has multiple names, the first name is used
|
||
|
//Map Structure: Language Description -> Language Object
|
||
|
worldLanguageObjectsMap := make(map[string]worldLanguages.LanguageObject)
|
||
|
|
||
|
for _, languageObject := range worldLanguageObjectsList{
|
||
|
|
||
|
languageNamesList := languageObject.NamesList
|
||
|
|
||
|
languageDescription := helpers.TranslateAndJoinStringListItems(languageNamesList, "/")
|
||
|
|
||
|
worldLanguageDescriptionsList = append(worldLanguageDescriptionsList, languageDescription)
|
||
|
|
||
|
worldLanguageObjectsMap[languageDescription] = languageObject
|
||
|
}
|
||
|
|
||
|
helpers.SortStringListToUnicodeOrder(worldLanguageDescriptionsList)
|
||
|
|
||
|
selectFunction := func(itemIndex int){
|
||
|
|
||
|
languageDescription := worldLanguageDescriptionsList[itemIndex]
|
||
|
|
||
|
languageObject, exists := worldLanguageObjectsMap[languageDescription]
|
||
|
if (exists == false){
|
||
|
setErrorEncounteredPage(window, errors.New("worldLanguageNamesMap missing languageDescription"), currentPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
languageIdentifier := languageObject.Identifier
|
||
|
languagePrimaryName := languageObject.NamesList[0]
|
||
|
|
||
|
err := submitFunction(languageIdentifier, languagePrimaryName)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, currentPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
nextPage()
|
||
|
}
|
||
|
|
||
|
languagesWidgetList, err := getFyneWidgetListFromStringList(worldLanguageDescriptionsList, selectFunction)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
header := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator())
|
||
|
|
||
|
page := container.NewBorder(header, nil, nil, nil, languagesWidgetList)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
|
||
|
func setChooseDesiresPage_GenderIdentity(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_GenderIdentity(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered("My Mate Desires - Mental")
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("Gender Identity"))
|
||
|
|
||
|
description1 := getLabelCentered("Choose the gender identities that you desire.")
|
||
|
description2 := getLabelCentered("This refers to the gender a user identifies as.")
|
||
|
description3 := getLabelCentered("For example, if you desire people who identify as Men, choose Man.")
|
||
|
|
||
|
optionTitlesList := []string{translate("Man"), translate("Woman")}
|
||
|
|
||
|
optionNamesMap := make(map[string][]string)
|
||
|
|
||
|
optionNamesMap[translate("Man")] = []string{"Man"}
|
||
|
optionNamesMap[translate("Woman")] = []string{"Woman"}
|
||
|
|
||
|
desireEditor, err := getDesireEditor_Choice(window, currentPage, "GenderIdentity", optionTitlesList, optionNamesMap, true, true, 1)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
|
||
|
setViewMyMateDesireStatisticsPage(window, "Gender Identity", "GenderIdentity", true, "Donut", "GenderIdentity", currentPage)
|
||
|
}))
|
||
|
|
||
|
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
func setChooseDesiresPage_Pets(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_Pets(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered("My Mate Desires - Mental")
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("Pets"))
|
||
|
|
||
|
description := getLabelCentered("Choose your pet desires.")
|
||
|
|
||
|
allPetsButton := widget.NewButton("All Pets", func(){
|
||
|
setChooseDesiresPage_AllPets(window, currentPage)
|
||
|
})
|
||
|
|
||
|
dogsButton := widget.NewButton("Dogs", func(){
|
||
|
setChooseDesiresPage_Dogs(window, currentPage)
|
||
|
})
|
||
|
catsButton := widget.NewButton("Cats", func(){
|
||
|
setChooseDesiresPage_Cats(window, currentPage)
|
||
|
})
|
||
|
|
||
|
buttonsGrid := getContainerCentered(container.NewGridWithColumns(1, allPetsButton, dogsButton, catsButton))
|
||
|
|
||
|
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description, widget.NewSeparator(), buttonsGrid)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
|
||
|
func setChooseDesiresPage_AllPets(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_AllPets(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered(translate("My Mate Desires - Mental"))
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("All Pets"))
|
||
|
|
||
|
description1 := getLabelCentered("Choose your pets rating desires.")
|
||
|
description2 := getLabelCentered("Users describe how much they enjoy having pets from 1 to 10.")
|
||
|
description3 := getLabelCentered("Choose the user 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"},
|
||
|
}
|
||
|
|
||
|
desireEditor, err := getDesireEditor_Choice(window, currentPage, "PetsRating", optionTitlesList, optionNamesMap, false, true, 5)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
|
||
|
setViewMyMateDesireStatisticsPage(window, "Pets Rating", "PetsRating", true, "Bar", "PetsRating", 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_Dogs(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_Dogs(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered(translate("My Mate Desires - Mental"))
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("Dogs"))
|
||
|
|
||
|
description1 := getLabelCentered("Choose your dogs rating desires.")
|
||
|
description2 := getLabelCentered("Users describe how much they enjoy having dogs from 1 to 10.")
|
||
|
description3 := getLabelCentered("Choose the user 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"},
|
||
|
}
|
||
|
|
||
|
desireEditor, err := getDesireEditor_Choice(window, currentPage, "DogsRating", optionTitlesList, optionNamesMap, false, true, 5)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
|
||
|
setViewMyMateDesireStatisticsPage(window, "Dogs Rating", "DogsRating", true, "Bar", "DogsRating", 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_Cats(window fyne.Window, previousPage func()){
|
||
|
|
||
|
currentPage := func(){setChooseDesiresPage_Cats(window, previousPage)}
|
||
|
|
||
|
title := getPageTitleCentered(translate("My Mate Desires - Mental"))
|
||
|
|
||
|
backButton := getBackButtonCentered(previousPage)
|
||
|
|
||
|
subtitle := getPageSubtitleCentered(translate("Cats"))
|
||
|
|
||
|
description1 := getLabelCentered("Choose your cats rating desires.")
|
||
|
description2 := getLabelCentered("Users describe how much they enjoy having cats from 1 to 10.")
|
||
|
description3 := getLabelCentered("Choose the user 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 := make(map[string][]string)
|
||
|
optionNamesMap["1/10"] = []string{"1"}
|
||
|
optionNamesMap["2/10"] = []string{"2"}
|
||
|
optionNamesMap["3/10"] = []string{"3"}
|
||
|
optionNamesMap["4/10"] = []string{"4"}
|
||
|
optionNamesMap["5/10"] = []string{"5"}
|
||
|
optionNamesMap["6/10"] = []string{"6"}
|
||
|
optionNamesMap["7/10"] = []string{"7"}
|
||
|
optionNamesMap["8/10"] = []string{"8"}
|
||
|
optionNamesMap["9/10"] = []string{"9"}
|
||
|
optionNamesMap["10/10"] = []string{"10"}
|
||
|
|
||
|
desireEditor, err := getDesireEditor_Choice(window, currentPage, "CatsRating", optionTitlesList, optionNamesMap, false, true, 5)
|
||
|
if (err != nil){
|
||
|
setErrorEncounteredPage(window, err, previousPage)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
viewStatisticsButton := getWidgetCentered(widget.NewButtonWithIcon("View Statistics", theme.InfoIcon(), func(){
|
||
|
setViewMyMateDesireStatisticsPage(window, "Cats Rating", "CatsRating", true, "Bar", "CatsRating", currentPage)
|
||
|
}))
|
||
|
|
||
|
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), desireEditor, widget.NewSeparator(), viewStatisticsButton)
|
||
|
|
||
|
setPageContent(page, window)
|
||
|
}
|
||
|
|
||
|
|
||
|
|