private void SelectPrevious() { if (_items.Any()) { ItemListItemViewModel selected = _items.FirstOrDefault(x => x.IsSelected); foreach (ItemListItemViewModel item in _items) { item.IsSelected = false; } if (selected == null) { _items[_items.Count - 1].IsSelected = true; _selectedItem = new ItemViewModel(_items[_items.Count - 1].ItemModel); } else { int index = Math.Max(_items.IndexOf(selected) - 1, 0); _items[index].IsSelected = true; _selectedItem = new ItemViewModel(_items[index].ItemModel); } OnPropertyChanged(nameof(SelectedItem)); } }
private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ItemsViewModel.SelectedItem)) { ItemListItemViewModel selected = _viewModel.Items.FirstOrDefault(x => x.IsSelected); if (selected != null) { if (_tree.ItemContainerGenerator.ContainerFromItem(selected) is TreeViewItem item) { item.BringIntoView(); } } } }
private void SelectItem(ItemListItemViewModel listItem) { bool selectItem = true; if (_editItemXML != null) { if (_editHasUnsavedChanges) { string body = String.Format("{0} has unsaved changes.{1}What would you like to do?", _selectedItem.Name, Environment.NewLine + Environment.NewLine); string accept = "Save and Continue"; string reject = "Discard Changes"; string cancel = "Cancel Navigation"; bool? result = _dialogService.ShowConfirmationDialog("Unsaved Changes", body, accept, reject, cancel); if (result == true) { if (!SaveEditItem()) { selectItem = false; } } else if (result == false) { CancelEditItem(); } else { selectItem = false; } } else { CancelEditItem(); } } if (selectItem) { foreach (ItemListItemViewModel item in _items) { item.IsSelected = false; } listItem.IsSelected = true; _selectedItem = new ItemViewModel(listItem.ItemModel); OnPropertyChanged(nameof(SelectedItem)); } }
private void ItemListItemViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ItemListItemViewModel.IsSelected)) { ItemListItemViewModel itemListItemViewModel = sender as ItemListItemViewModel; if (itemListItemViewModel.IsSelected) { if (!_selectedItems.Any(x => x.Id == itemListItemViewModel.ItemModel.Id)) { _selectedItems.Add(itemListItemViewModel.ItemModel); } } else { _selectedItems.RemoveAll(x => x.Id == itemListItemViewModel.ItemModel.Id); } } }
private void SortItems() { if (_items != null && _items.Count > 0) { List <ItemModel> items = _itemSearchService.Sort(_items.Select(x => x.ItemModel), _itemSearchInput.SortOption.Key); for (int i = 0; i < items.Count; ++i) { if (items[i].Id != _items[i].ItemModel.Id) { ItemListItemViewModel item = _items.FirstOrDefault(x => x.ItemModel.Id == items[i].Id); if (item != null) { _items.Move(_items.IndexOf(item), i); } } } } }
/// <summary> /// Searches, applying current sorting and filtering /// </summary> public void Search() { _items.Clear(); foreach (ItemModel itemModel in _itemSearchService.Search(_itemSearchInput)) { _items.Add(new ItemListItemViewModel(itemModel, _stringService)); } if (_selectedItem != null) { ItemListItemViewModel item = _items.FirstOrDefault(x => x.ItemModel.Id == _selectedItem.ItemModel.Id); if (item != null) { item.IsSelected = true; } } OnPropertyChanged(nameof(SortAndFilterHeader)); }
private void SelectItem(ItemListItemViewModel item) { _dialogService.ShowDetailsDialog(new ItemViewModel(item.ItemModel)); }
private void Delete() { if (_selectedItem != null) { bool canDelete = true; foreach (CharacterModel character in _compendium.Characters) { foreach (BagModel bag in character.Bags) { foreach (EquipmentModel equipment in bag.Equipment) { if (equipment.Item != null && equipment.Item.Id == _selectedItem.ItemModel.Id) { canDelete = false; break; } } if (!canDelete) { break; } } if (!canDelete) { break; } } if (canDelete) { string message = String.Format("Are you sure you want to delete {0}?", _selectedItem.Name); bool?result = _dialogService.ShowConfirmationDialog("Delete Item", message, "Yes", "No", null); if (result == true) { _compendium.DeleteItem(_selectedItem.ItemModel.Id); ItemListItemViewModel listItem = _items.FirstOrDefault(x => x.ItemModel.Id == _selectedItem.ItemModel.Id); if (listItem != null) { _items.Remove(listItem); } _selectedItem = null; _compendium.SaveItems(); OnPropertyChanged(nameof(SelectedItem)); if (_editItemXML != null) { CancelEditItem(); } } } else { _dialogService.ShowConfirmationDialog("Unable Delete Item", "Item is in use by a character.", "OK", null, null); } } }
private void Copy() { if (_selectedItem != null) { bool copyItem = true; if (_editItemXML != null) { if (_editHasUnsavedChanges) { string body = String.Format("{0} has unsaved changes.{1}What would you like to do?", _selectedItem.Name, Environment.NewLine + Environment.NewLine); string accept = "Save and Continue"; string reject = "Discard Changes"; string cancel = "Cancel Navigation"; bool? result = _dialogService.ShowConfirmationDialog("Unsaved Changes", body, accept, reject, cancel); if (result == true) { if (!SaveEditItem()) { copyItem = false; } } else if (result == false) { CancelEditItem(); } else { copyItem = false; } } else { CancelEditItem(); } } if (copyItem) { ItemModel newItem = new ItemModel(_selectedItem.ItemModel); newItem.Name += " (copy)"; newItem.Id = Guid.NewGuid(); newItem.XML = newItem.XML.Replace("<name>" + _selectedItem.ItemModel.Name + "</name>", "<name>" + newItem.Name + "</name>"); _compendium.AddItem(newItem); if (_itemSearchService.SearchInputApplies(_itemSearchInput, newItem)) { ItemListItemViewModel listItem = new ItemListItemViewModel(newItem, _stringService); _items.Add(listItem); foreach (ItemListItemViewModel item in _items) { item.IsSelected = false; } listItem.IsSelected = true; } _selectedItem = new ItemViewModel(newItem); SortItems(); _compendium.SaveItems(); OnPropertyChanged(nameof(SelectedItem)); } } }
private void Add() { bool addItem = true; if (_editItemXML != null) { if (_editHasUnsavedChanges) { string body = String.Format("{0} has unsaved changes.{1}What would you like to do?", _selectedItem.Name, Environment.NewLine + Environment.NewLine); string accept = "Save and Continue"; string reject = "Discard Changes"; string cancel = "Cancel Navigation"; bool? result = _dialogService.ShowConfirmationDialog("Unsaved Changes", body, accept, reject, cancel); if (result == true) { if (!SaveEditItem()) { addItem = false; } } else if (result == false) { CancelEditItem(); } else { addItem = false; } } else { CancelEditItem(); } } if (addItem) { string xml = @"<name>New Item</name> <type></type> <magic></magic> <value></value> <detail></detail> <weight></weight> <ac></ac> <strength></strength> <stealth></stealth> <dmg1></dmg1> <dmg2></dmg2> <dmgType></dmgType> <property></property> <rarity></rarity> <range></range> <text></text> <modifier category=""""></modifier> <roll></roll>" ; ItemModel itemModel = _xmlImporter.GetItem(xml); _compendium.AddItem(itemModel); if (_itemSearchService.SearchInputApplies(_itemSearchInput, itemModel)) { ItemListItemViewModel listItem = new ItemListItemViewModel(itemModel, _stringService); _items.Add(listItem); foreach (ItemListItemViewModel item in _items) { item.IsSelected = false; } listItem.IsSelected = true; } _selectedItem = new ItemViewModel(itemModel); _editItemXML = itemModel.XML; SortItems(); _compendium.SaveItems(); OnPropertyChanged(nameof(EditingItemXML)); OnPropertyChanged(nameof(IsEditingItem)); OnPropertyChanged(nameof(SelectedItem)); } }
private bool SaveEditItem() { bool saved = false; try { ItemModel model = _xmlImporter.GetItem(_editItemXML); if (model != null) { model.Id = _selectedItem.ItemModel.Id; _compendium.UpdateItem(model); _selectedItem = new ItemViewModel(model); ItemListItemViewModel oldListItem = _items.FirstOrDefault(x => x.ItemModel.Id == model.Id); if (oldListItem != null) { if (_itemSearchService.SearchInputApplies(_itemSearchInput, model)) { oldListItem.UpdateModel(model); } else { _items.Remove(oldListItem); } } _editItemXML = null; _editHasUnsavedChanges = false; SortItems(); _compendium.SaveItems(); OnPropertyChanged(nameof(SelectedItem)); OnPropertyChanged(nameof(EditingItemXML)); OnPropertyChanged(nameof(IsEditingItem)); OnPropertyChanged(nameof(HasUnsavedChanges)); saved = true; } else { string message = String.Format("Something went wrong...{0}{1}{2}{3}", Environment.NewLine + Environment.NewLine, "The following are required:", Environment.NewLine, "-name"); _dialogService.ShowConfirmationDialog("Unable To Save", message, "OK", null, null); } } catch (Exception ex) { string message = String.Format("Something went wrong...{0}{1}", Environment.NewLine + Environment.NewLine, ex.Message); _dialogService.ShowConfirmationDialog("Unable To Save", message, "OK", null, null); } return(saved); }