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]); // } //} }