public ToppingsPageModel(Pizza currentPizza) { ThisPizza = currentPizza; string pizzaName = ThisPizza.ItemName; BaseSelections = new string[] { "Pesto Base", "White Base", "Regular Base" }; CookSelections = new string[] { "Crispy Cook", "Kid Cook", "Light Cook", "Regular Cook" }; var toppingsList = Toppings.AllToppings; ToppingSelectionsList = new ObservableCollection <ToppingSelection>(); for (int i = 0; i < toppingsList.Count; i++) { var toppingSelection = new ToppingSelection(this); toppingSelection.ListTopping = toppingsList[i]; toppingSelection.SelectionIndex = i; toppingSelection.SelectionColor = Xamarin.Forms.Color.Black; toppingSelection.WButtonTextColor = Color.White; toppingSelection.AreWholeHalfColumnsVisible = true; if (toppingsList[i].ToppingName == ToppingName.HalfMajor) { toppingSelection.WButtonTextColor = Color.Black; } ToppingSelectionsList.Add(toppingSelection); //If the pizza type is a slice, don't display whole/halfa/halfb options. toppingSelection.AreWholeHalfColumnsVisible = true; if (pizzaName.Equals(DisplayNames.GetPizzaDisplayName(PizzaType.ThinSlice)) || pizzaName.Equals(DisplayNames.GetPizzaDisplayName(PizzaType.PanSlice))) { toppingSelection.AreWholeHalfColumnsVisible = false; } } if (ThisPizza != null) { if (ThisPizza.MajorMamaInfo == MajorOrMama.Major) { SelectMajorToppings(); ThisPizza.Toppings.AddMajorToppings(); } } }
//For selection or deselection of the Half Major topping. private void ProcessHalfMajorToppingSelection(ToppingSelection halfMajorSelection) { if ( halfMajorSelection.ListItemIsSelected) //If selected, toggle to unselect... { ToppingsPageModel.ThisPizza.Toppings.RemoveToppings(new List <ToppingName> { ToppingName.Mushrooms, ToppingName.BlackOlives, ToppingName.GreenPeppers, ToppingName.Onion, ToppingName.Pepperoni, ToppingName.Sausage }); foreach (var toppingSelection in ToppingsPageModel.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.SelectionColor = Xamarin.Forms.Color.Black; } } halfMajorSelection.SelectionColor = Xamarin.Forms.Color.Black; halfMajorSelection.ButtonWSelected = false; halfMajorSelection.ButtonASelected = false; halfMajorSelection.ButtonBSelected = false; } else { ToppingsPageModel.SelectMajorToppings(halfMajorSelection.ListTopping.ToppingWholeHalf); ToppingsPageModel.ThisPizza.Toppings.AddMajorToppingsToHalf(ToppingWholeHalf.HalfA); halfMajorSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; halfMajorSelection.ButtonASelected = true; //halfMajorSelection.AColor = Xamarin.Forms.Color.CornflowerBlue; } halfMajorSelection.ListItemIsSelected = !halfMajorSelection.ListItemIsSelected; }
private void ProcessHalfMajorSelectionOfSide(ToppingSelection thisItemSelected) { if (thisItemSelected.ListTopping.ToppingWholeHalf == ToppingWholeHalf.Whole) { thisItemSelected.ButtonWSelected = false; thisItemSelected.ButtonASelected = false; thisItemSelected.ButtonBSelected = false; thisItemSelected.WButtonTextColor = Color.Black; return; } if (!thisItemSelected.ListItemIsSelected) { thisItemSelected.ListItemIsSelected = true; thisItemSelected.SelectionColor = Color.CornflowerBlue; ChangeButtonSelection(thisItemSelected, thisItemSelected.ListTopping.ToppingWholeHalf); } thisPizza.Toppings.AddMajorToppings(); switch (thisItemSelected.ListTopping.ToppingWholeHalf) { case ToppingWholeHalf.HalfA: thisPizza.Toppings.ChangeMajorToppingsHalf(ToppingWholeHalf.HalfA); break; case ToppingWholeHalf.HalfB: thisPizza.Toppings.ChangeMajorToppingsHalf(ToppingWholeHalf.HalfB); break; } 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.SelectionColor = Color.CornflowerBlue; ChangeButtonSelection(toppingSelection, thisItemSelected.ListTopping.ToppingWholeHalf); } } }
private void ListItemTapped(object sender, ItemTappedEventArgs e) { ToppingSelection selectedItem = e.Item as ToppingSelection; int indexOfItemSelected = selectedItem.SelectionIndex; //Can't change ListView directly - must change underlying data. Get this data by the index. ToppingSelection thisSelection = ToppingsPageModel.ToppingSelectionsList[indexOfItemSelected]; if (thisSelection.ListTopping.ToppingName == ToppingName.HalfMajor) { ProcessHalfMajorToppingSelection(thisSelection); } else { if (thisSelection.ListItemIsSelected) //If selected, toggle to unselect... { thisSelection.ListTopping.SequenceSelected = 0; ToppingsPageModel.ThisPizza.Toppings.RemoveTopping(thisSelection.ListTopping.ToppingName); } else { thisSelection.ListTopping.SequenceSelected = ToppingsPageModel.ThisPizza.Toppings.CurrentToppings.Count + 1; ToppingsPageModel.ThisPizza.Toppings.AddTopping(thisSelection.ListTopping); } thisSelection.ListItemIsSelected = !thisSelection.ListItemIsSelected; //Appearance... if (thisSelection.ListItemIsSelected) { thisSelection.SelectionColor = Xamarin.Forms.Color.CornflowerBlue; thisSelection.ButtonWSelected = true; } else { thisSelection.SelectionColor = Xamarin.Forms.Color.Black; thisSelection.ButtonASelected = false; thisSelection.ButtonBSelected = false; thisSelection.ButtonWSelected = false; } } //NOTE: Modifying ToppingsPageModel.Toppings directly instead of //explicitly setting it here does not trigger bindings. //ThisPizza.Toppings = Toppings; }
public void ChangeButtonSelection(ToppingSelection 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; } }