public ScrollView GetAddNewLayout(MenuItemType type, BaseMenuItem item = null) { var scrollView = new ScrollView(this); var layout = new LinearLayout(this); layout.Orientation = Orientation.Vertical; var aLabel = new TextView(this); aLabel.Text = string.Format("What is the name of the {0}?", type.ToString()); layout.AddView(aLabel); var textField = new EditText(this); layout.AddView(textField); var saveButton = new Button(this); saveButton.Text = "Create"; saveButton.Click += (sender, e) => { switch (type) { case MenuItemType.Game: menu.Games.Add(new GameNode(textField.Text)); UpdateMenu(); SetContentView(GetHomeLayout()); break; case MenuItemType.PlayerCharacter: var newCharacter = new PlayerCharacterNode(textField.Text, (GameNode)item); ((GameNode)item).Characters.Add(newCharacter); var gameItem = (GameNode)UpdateMenu(type, newCharacter); SetContentView(GetGameLayout(gameItem)); break; case MenuItemType.Opponent: var newOpponent = new OpponentMatchupNode(textField.Text, (PlayerCharacterNode)item); ((PlayerCharacterNode)item).Opponents.Add(newOpponent); var newItem = (PlayerCharacterNode)UpdateMenu(type, newOpponent); SetContentView(GetCharacterLayout(newItem)); break; default: break; } }; layout.AddView(saveButton); scrollView.AddView(layout); return scrollView; }
public BaseMenuItem UpdateMenu(MenuItemType? type = null, BaseMenuItem item = null) { foreach(var game in menu.Games) { foreach(var character in game.Characters) { character.Opponents = character.Opponents.OrderBy(x => x.Title).ToList(); } game.Characters = game.Characters.OrderBy(x => x.Title).ToList(); } menu.Games = menu.Games.OrderBy(x => x.Title).ToList(); XmlSerializer serializer = new XmlSerializer(typeof(MenuNode)); string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); string filename = Path.Combine(path, "Data.xml"); using (var streamWriter = new StreamWriter(filename)) { serializer.Serialize(streamWriter, menu); } string content; using (var streamReader = new StreamReader(filename)) { content = streamReader.ReadToEnd(); } menu = menuFactory.GetMenu(content); if(type.HasValue && item != null) { switch(type.Value) { case MenuItemType.PlayerCharacter: PlayerCharacterNode pCharacter = (PlayerCharacterNode)item; return menu.Games.Where(x => x.Title == pCharacter.Parent.Title).First(); case MenuItemType.Opponent: OpponentMatchupNode oMatchup = (OpponentMatchupNode)item; return menu.Games.Where(x => x.Title == oMatchup.Parent.Parent.Title).First() .Characters.Where(y => y.Title == oMatchup.Parent.Title).First(); } } return null; }