/// <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(); }
/// <summary> /// Adds a table /// </summary> public void AddTable(RandomTableModel randomTableModel) { if (!_tables.Any(x => x.Id == randomTableModel.Id)) { _tables.Add(randomTableModel); //UpdateTags(); } }
/// <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(); } }
/// <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)); }
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"; } }
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)); } } }
/// <summary> /// Creates a table archive from the table model /// </summary> public byte[] CreateTableArchive(RandomTableModel randomTableModel) { return(null); }
/// <summary> /// Gets table bytes /// </summary> public byte[] GetTableBytes(RandomTableModel randomTableModel) { return(null); }
private bool HasTag(RandomTableModel randomTableModel, string tag) { return(tag == null || randomTableModel.Tags.Any(x => x.Equals(tag, StringComparison.CurrentCultureIgnoreCase))); }
private bool HasSearchText(RandomTableModel randomTableModel, string searchText) { return(String.IsNullOrWhiteSpace(searchText) || randomTableModel.Name.ToLower().Contains(searchText.ToLower())); }
/// <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)); }