Exemple #1
0
        /// <summary>
        /// Creates a new instance of <see cref="RandomTableEditViewModel"/>
        /// </summary>
        public RandomTableEditViewModel(RandomTableModel randomTableModel)
        {
            _randomTableModel = new RandomTableModel(randomTableModel);

            foreach (RandomTableRowModel rowModel in _randomTableModel.Rows)
            {
                RandomTableRowViewModel randomTableRowViewModel = new RandomTableRowViewModel(rowModel);
                randomTableRowViewModel.PropertyChanged += Row_PropertyChanged;
                _rows.Add(randomTableRowViewModel);
            }

            _dieOptions.AddRange(_statService.Dice);

            _name = _randomTableModel.Name;

            if (_randomTableModel.Tags.Any())
            {
                _tags = String.Join(", ", _randomTableModel.Tags);
            }

            _die    = !String.IsNullOrWhiteSpace(_randomTableModel.Die) ? _randomTableModel.Die : _dieOptions[0];
            _header = _randomTableModel.Header;

            _addRowCommand    = new RelayCommand(obj => true, obj => AddRow());
            _deleteRowCommand = new RelayCommand(obj => true, obj => DeleteRow(obj as RandomTableRowViewModel));

            SetRowDieMaximums();
        }
Exemple #2
0
        /// <summary>
        /// Adds a table
        /// </summary>
        public void AddTable(RandomTableModel randomTableModel)
        {
            if (!_tables.Any(x => x.Id == randomTableModel.Id))
            {
                _tables.Add(randomTableModel);

                //UpdateTags();
            }
        }
Exemple #3
0
        /// <summary>
        /// Updates the table with id matching the parameter's id
        /// </summary>
        public void UpdateTable(RandomTableModel model)
        {
            RandomTableModel currentModel = _tables.FirstOrDefault(x => x.Id == model.Id);

            if (currentModel != null)
            {
                _tables[_tables.IndexOf(currentModel)] = model;

                UpdateTags();
            }
        }
Exemple #4
0
        /// <summary>
        /// Creates a new instance of <see cref="RandomTableViewModel"/>
        /// </summary>
        public RandomTableViewModel(RandomTableModel randomTableModel)
        {
            _randomTableModel = randomTableModel;

            foreach (RandomTableRowModel rowModel in _randomTableModel.Rows)
            {
                _rows.Add(new RandomTableRowViewModel(rowModel));
            }

            _rollWorker.DoWork += _rollWorker_DoWork;

            _rollCommand      = new RelayCommand(obj => true, obj => Roll());
            _copyValueCommand = new RelayCommand(obj => true, obj => CopyValue(obj as RandomTableRowViewModel));
        }
Exemple #5
0
        private void InitializeListItemDetails(ListItemViewModel <RandomTableModel> listItem, RandomTableModel tableModel)
        {
            listItem.Model = tableModel;

            if (!String.IsNullOrWhiteSpace(tableModel.Name))
            {
                listItem.Name = tableModel.Name;
            }
            else
            {
                listItem.Name = "Unknown Name";
            }

            if (!String.IsNullOrWhiteSpace(tableModel.Die) && !String.IsNullOrWhiteSpace(tableModel.Header))
            {
                listItem.Description = $"{tableModel.Die}, {tableModel.Header}";
            }
            else if (String.IsNullOrWhiteSpace(tableModel.Die) && !String.IsNullOrWhiteSpace(tableModel.Header))
            {
                listItem.Description = $"Unknown Die, {tableModel.Header}";
            }
            else if (!String.IsNullOrWhiteSpace(tableModel.Die) && String.IsNullOrWhiteSpace(tableModel.Header))
            {
                listItem.Description = $"{tableModel.Die}, Unknown Header";
            }
            else
            {
                listItem.Description = "Unknown description";
            }
        }
Exemple #6
0
        private void Copy()
        {
            if (_selectedTable != null)
            {
                bool copyTable = true;

                if (_tableEditViewModel != null)
                {
                    if (_editHasUnsavedChanges)
                    {
                        string body = String.Format("{0} has unsaved changes.{1}What would you like to do?",
                                                    _selectedTable.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 (!SaveEditTable())
                            {
                                copyTable = false;
                            }
                        }
                        else if (result == false)
                        {
                            CancelEditTable();
                        }
                        else
                        {
                            copyTable = false;
                        }
                    }
                    else
                    {
                        CancelEditTable();
                    }
                }

                if (copyTable)
                {
                    RandomTableModel tableModel = new RandomTableModel(_selectedTable.RandomTableModel);
                    tableModel.Name += " (copy)";
                    tableModel.Id    = Guid.NewGuid();

                    _compendium.AddTable(tableModel);

                    if (_tableSearchService.SearchInputApplies(_tableSearchInput, tableModel))
                    {
                        ListItemViewModel <RandomTableModel> listItem = new ListItemViewModel <RandomTableModel>(tableModel);
                        InitializeListItemDetails(listItem, tableModel);
                        _tables.Add(listItem);
                        foreach (ListItemViewModel <RandomTableModel> item in _tables)
                        {
                            item.IsSelected = false;
                        }
                        listItem.IsSelected = true;
                    }

                    _selectedTable = new RandomTableViewModel(tableModel);

                    SortTables();

                    _compendium.SaveTables();

                    OnPropertyChanged(nameof(SelectedTable));
                }
            }
        }
Exemple #7
0
 /// <summary>
 /// Creates a table archive from the table model
 /// </summary>
 public byte[] CreateTableArchive(RandomTableModel randomTableModel)
 {
     return(null);
 }
Exemple #8
0
 /// <summary>
 /// Gets table bytes
 /// </summary>
 public byte[] GetTableBytes(RandomTableModel randomTableModel)
 {
     return(null);
 }
Exemple #9
0
 private bool HasTag(RandomTableModel randomTableModel, string tag)
 {
     return(tag == null || randomTableModel.Tags.Any(x => x.Equals(tag, StringComparison.CurrentCultureIgnoreCase)));
 }
Exemple #10
0
 private bool HasSearchText(RandomTableModel randomTableModel, string searchText)
 {
     return(String.IsNullOrWhiteSpace(searchText) ||
            randomTableModel.Name.ToLower().Contains(searchText.ToLower()));
 }
Exemple #11
0
 /// <summary>
 /// True if the search input applies to the model
 /// </summary>
 public bool SearchInputApplies(TableSearchInput searchInput, RandomTableModel randomTableModel)
 {
     return(HasSearchText(randomTableModel, searchInput.SearchText) &&
            HasTag(randomTableModel, searchInput.Tag.Key));
 }