Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
 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();
             }
         }
     }
 }
Exemplo n.º 3
0
        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);
         }
     }
 }
Exemplo n.º 5
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 6
0
        /// <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));
 }
Exemplo n.º 8
0
        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);
                }
            }
        }
Exemplo n.º 9
0
        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));
                }
            }
        }
Exemplo n.º 10
0
        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));
            }
        }
Exemplo n.º 11
0
        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);
        }