private void ProcessHalfMajorSelectionOfSide(ToppingDisplayItem thisItemSelected) { if (thisItemSelected.ListItemIsSelected) { thisItemSelected.ListItemIsSelected = true; thisItemSelected.SelectionColor = Color.CornflowerBlue; ChangeButtonSelection(thisItemSelected, thisItemSelected.ListTopping.ToppingWholeHalf); } thisPizza.Toppings.AddMajorToppings(); thisPizza.Toppings.ChangeMajorToppingsHalf(thisItemSelected.ListTopping.ToppingWholeHalf); ChangeButtonSelection(thisItemSelected, thisItemSelected.ListTopping.ToppingWholeHalf); //find all major toppings in ToppingSelectionsList and call ChangeButtonSelection on them. foreach (var toppingSelection in ToppingSelectionsList) { if (toppingSelection.ListTopping.ToppingName == ToppingName.Mushrooms || toppingSelection.ListTopping.ToppingName == ToppingName.GreenPeppers || toppingSelection.ListTopping.ToppingName == ToppingName.Onion || toppingSelection.ListTopping.ToppingName == ToppingName.Pepperoni || toppingSelection.ListTopping.ToppingName == ToppingName.Sausage || toppingSelection.ListTopping.ToppingName == ToppingName.BlackOlives) { toppingSelection.ListItemIsSelected = true; toppingSelection.SelectionColor = Color.CornflowerBlue; ChangeButtonSelection(toppingSelection, thisItemSelected.ListTopping.ToppingWholeHalf); } } }
private void ProcessMajorToppingSelection(ToppingDisplayItem majorSelection) { if (majorSelection.ListItemIsSelected) { majorSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; if (majorSelection.ButtonASelected || majorSelection.ButtonBSelected) { ProcessHalfMajorSelectionOfSide(majorSelection); } else { majorSelection.ButtonWSelected = true; ThisPizza.MajorMamaInfo = MajorOrMama.Major; ThisPizza.PopulateDisplayName(); //Updates to show MAJOR SelectMajorToppings(); ThisPizza.Toppings.AddMajorToppings(); } } else { majorSelection.SelectionColor = Xamarin.Forms.Color.Black; majorSelection.ButtonWSelected = false; majorSelection.ButtonASelected = false; majorSelection.ButtonBSelected = false; ThisPizza.MajorMamaInfo = MajorOrMama.Neither; ThisPizza.PopulateDisplayName(); //Updates to remove MAJOR ThisPizza.Toppings.RemoveToppings(new List <ToppingName> { ToppingName.Mushrooms, ToppingName.BlackOlives, ToppingName.GreenPeppers, ToppingName.Onion, ToppingName.Pepperoni, ToppingName.Sausage }); foreach (var toppingSelection in ToppingSelectionsList) { if (toppingSelection.ListTopping.ToppingName == ToppingName.Mushrooms || toppingSelection.ListTopping.ToppingName == ToppingName.GreenPeppers || toppingSelection.ListTopping.ToppingName == ToppingName.Onion || toppingSelection.ListTopping.ToppingName == ToppingName.Pepperoni || toppingSelection.ListTopping.ToppingName == ToppingName.Sausage || toppingSelection.ListTopping.ToppingName == ToppingName.BlackOlives) { toppingSelection.ButtonWSelected = false; toppingSelection.ButtonASelected = false; toppingSelection.ButtonBSelected = false; toppingSelection.ListItemIsSelected = false; toppingSelection.SelectionColor = Xamarin.Forms.Color.Black; } } } }
//For selection or deselection of the Half Major topping. private void ProcessHalfMajorToppingSelection(ToppingDisplayItem halfMajorSelection) { if (halfMajorSelection.ListItemIsSelected) { SelectMajorToppings(halfMajorSelection.ListTopping.ToppingWholeHalf); ThisPizza.Toppings.AddMajorToppingsToHalf(ToppingWholeHalf.HalfA); halfMajorSelection.ListItemIsSelected = true; halfMajorSelection.ButtonASelected = true; } else { ThisPizza.Toppings.RemoveToppings(new List <ToppingName> { ToppingName.Mushrooms, ToppingName.BlackOlives, ToppingName.GreenPeppers, ToppingName.Onion, ToppingName.Pepperoni, ToppingName.Sausage }); foreach (var toppingSelection in ToppingSelectionsList) { if (toppingSelection.ListTopping.ToppingName == ToppingName.Mushrooms || toppingSelection.ListTopping.ToppingName == ToppingName.GreenPeppers || toppingSelection.ListTopping.ToppingName == ToppingName.Onion || toppingSelection.ListTopping.ToppingName == ToppingName.Pepperoni || toppingSelection.ListTopping.ToppingName == ToppingName.Sausage || toppingSelection.ListTopping.ToppingName == ToppingName.BlackOlives) { toppingSelection.ButtonWSelected = false; toppingSelection.ButtonASelected = false; toppingSelection.ButtonBSelected = false; toppingSelection.ListItemIsSelected = false; } } halfMajorSelection.ListItemIsSelected = false; halfMajorSelection.ButtonWSelected = false; halfMajorSelection.ButtonASelected = false; halfMajorSelection.ButtonBSelected = false; } }
/// <summary> /// Makes sure only W or A or B (one and only one) may be /// selected at a time. /// </summary> /// <param name="thisItemSelected"></param> /// <param name="wholeOrHalf"></param> public void ChangeButtonSelection(ToppingDisplayItem thisItemSelected, ToppingWholeHalf wholeOrHalf) { switch (wholeOrHalf) { case ToppingWholeHalf.Whole: thisItemSelected.ButtonWSelected = true; thisItemSelected.ButtonASelected = false; thisItemSelected.ButtonBSelected = false; break; case ToppingWholeHalf.HalfA: thisItemSelected.ButtonASelected = true; thisItemSelected.ButtonBSelected = false; thisItemSelected.ButtonWSelected = false; break; case ToppingWholeHalf.HalfB: thisItemSelected.ButtonBSelected = true; thisItemSelected.ButtonASelected = false; thisItemSelected.ButtonWSelected = false; break; } }
public void SelectTopping(int selectionIndex) { //Can't change ListView directly - must change underlying data. Get this data by the index. ToppingDisplayItem thisSelection = ToppingSelectionsList[selectionIndex]; if (!ToppingFooterPageModel.ExtraToppingSelected || (ToppingFooterPageModel.ExtraToppingSelected && !thisSelection.ListItemIsSelected)) { thisSelection.ListItemIsSelected = !thisSelection.ListItemIsSelected; //toggle topping selection. } thisSelection.ListTopping.ToppingModifier = ToppingFooterPageModel.GetToppingModifierType(); if (thisSelection.ListTopping.ToppingName == ToppingName.Major) { ProcessMajorToppingSelection(thisSelection); } //else if (thisSelection.ListTopping.ToppingName == ToppingName.HalfMajor) //{ // ProcessHalfMajorToppingSelection(thisSelection); //} else { if (ToppingFooterPageModel.ExtraToppingSelected) { if (thisSelection.ListTopping.Count == 0) { thisSelection.ListTopping.Count = 1; } thisSelection.ListTopping.Count++; } else if (ToppingFooterPageModel.NoToppingSelected) { thisPizza.Toppings.RemoveTopping(thisSelection.ListTopping.ToppingName); } if (thisSelection.ListItemIsSelected) { if (thisSelection.ListTopping.ToppingName == ToppingName.SatchPanSlice) { ThisPizza.ChangePizzaToDeep(); OnChangeHeadingPizzaName(); } else if (ToppingFooterPageModel.ExtraToppingSelected && thisSelection.ListTopping.Count > 1 && ThisPizza.Toppings.IsToppingAlreadyAdded(thisSelection.ListTopping.ToppingName)) { ThisPizza.Toppings.UpdateToppingsTotal(); ThisPizza.UpdateItemTotal(); thisSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; thisSelection.ButtonWSelected = true; } else { thisSelection.ListTopping.SequenceSelected = ThisPizza.Toppings.CurrentToppings.Count + 1; ThisPizza.Toppings.AddTopping(thisSelection.ListTopping); ThisPizza.UpdateItemTotal(); thisSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; thisSelection.ButtonWSelected = true; } } else { if (thisSelection.ListTopping.ToppingName == ToppingName.SatchPanSlice && ThisPizza.PizzaType == PizzaType.PanSlice) { ThisPizza.ChangePizzaSliceFromPanToThin(); OnChangeHeadingPizzaName(); } thisSelection.ListTopping.SequenceSelected = 0; thisSelection.ListTopping.ToppingModifier = ToppingModifierType.None; thisSelection.ListTopping.Count = 0; ThisPizza.Toppings.RemoveTopping(thisSelection.ListTopping.ToppingName); thisSelection.SelectionColor = Xamarin.Forms.Color.Black; thisSelection.ButtonASelected = false; thisSelection.ButtonBSelected = false; thisSelection.ButtonWSelected = false; } //Modifier buttons only work if selected before the topping is selected. At this point, //all should be reset back to black/unselected. ToppingFooterPageModel.ExtraToppingSelected = false; ToppingFooterPageModel.LiteToppingSelected = false; ToppingFooterPageModel.NoToppingSelected = false; ToppingFooterPageModel.OnSideToppingSelected = false; } //Can't remember why I might need this.... //if (thisSelection.ListTopping.ToppingName == ToppingName.Cheese) //{ // if (App.AllToppings.ContainsKey(ToppingName.NoCheese)) // { // thisPizza.Toppings.AddTopping(App.AllToppings[ToppingName.NoCheese]); // } //} //else if (thisSelection.ListTopping.ToppingName == ToppingName.RicottaCalzone || // thisSelection.ListTopping.ToppingName == ToppingName.Ricotta) //{ // if (App.AllToppings.ContainsKey(ToppingName.NoRicotta)) // { // thisPizza.Toppings.AddTopping(App.AllToppings[ToppingName.NoRicotta]); // } //} }
public PizzaToppingsPageModel(Pizza currentPizza) { try { if (currentPizza.PizzaType == PizzaType.LunchSpecialSlice) { AddToOrderText = "Add Lunch Special To Order"; } else { AddToOrderText = "Add Pizza To Order"; } ThisPizza = currentPizza; AddPizzaToOrderCommand = new Command(OnAddPizzaToOrder); BaseSelections = new string[] { "Pesto Base", "White Base", "Regular Base" }; CookSelections = new string[] { "Crispy Cook", "Kid Cook", "Light Cook", "Regular Cook" }; var toppingsList = MenuFood.PizzaToppings.Values.ToList(); ToppingSelectionsList = new ObservableCollection <ToppingDisplayItem>(); int toppingSelectionIndex = 0; for (int i = 0; i < toppingsList.Count; i++) { if (!toppingsList[i].ForPizza) { continue; } if (ThisPizza.PizzaType != PizzaType.Indy && toppingsList[i].ForIndyOnly) { continue; } if (ThisPizza.PizzaType != PizzaType.ThinSlice && ThisPizza.PizzaType != PizzaType.LunchSpecialPanSlice && toppingsList[i].ForSliceOnly) { continue; } var toppingSelection = new ToppingDisplayItem(this); bool toppingisAlreadyOnThisPizza = false; if (ThisPizza != null && ThisPizza.Toppings != null) { foreach (var topping in ThisPizza.Toppings.CurrentToppings) { if (topping.ToppingName == toppingsList[i].ToppingName) { toppingisAlreadyOnThisPizza = true; toppingSelection.ListTopping = topping; if (topping.ToppingWholeHalf == ToppingWholeHalf.HalfA) { toppingSelection.ButtonASelected = true; } else if (topping.ToppingWholeHalf == ToppingWholeHalf.HalfB) { toppingSelection.ButtonBSelected = true; } toppingSelection.ListItemIsSelected = true; toppingSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; break; } } } if (!toppingisAlreadyOnThisPizza) { Topping newTopping = toppingsList[i]; //Initialize variable items in Topping object: newTopping.ToppingDisplayName = DisplayNames.GetToppingDisplayName(newTopping.ToppingName); newTopping.ToppingModifier = ToppingModifierType.None; newTopping.ToppingWholeHalf = ToppingWholeHalf.Whole; newTopping.SequenceSelected = 0; newTopping.Count = 1; toppingSelection.ListTopping = newTopping; toppingSelection.ListItemIsSelected = false; toppingSelection.SelectionColor = Xamarin.Forms.Color.Black; } if (toppingsList[i].ToppingName == ToppingName.Major && ThisPizza.MajorMamaInfo == MajorOrMama.Major) { toppingSelection.ListItemIsSelected = true; toppingSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; } toppingSelection.SelectionIndex = toppingSelectionIndex; toppingSelectionIndex++; toppingSelection.ButtonWVisible = true; //If the pizza type is a slice, don't display whole/halfa/halfb options. toppingSelection.AreWholeHalfColumnsVisible = true; if (ThisPizza.PizzaType == PizzaType.ThinSlice || ThisPizza.PizzaType == PizzaType.LunchSpecialSlice || ThisPizza.PizzaType == PizzaType.LunchSpecialPanSlice || ThisPizza.PizzaType == PizzaType.PanSlice) { toppingSelection.AreWholeHalfColumnsVisible = false; } ToppingSelectionsList.Add(toppingSelection); } if (ThisPizza != null && ThisPizza.Toppings != null && ThisPizza.MajorMamaInfo == MajorOrMama.Major && ThisPizza.Toppings.CurrentToppings.Count == 0) { SelectMajorToppings(); ThisPizza.Toppings.AddMajorToppings(); } } catch (Exception ex) { var whatisthis = ex.InnerException; throw; } }