/// <summary> /// Creates an instance of <see cref="CharactersViewModel"/> /// </summary> public CharactersViewModel(Compendium compendium, CharacterSearchService characterSearchService, CharacterSearchInput characterSearchInput, StringService stringService, StatService statService, DialogService dialogService, XMLImporter xmlImporter, XMLExporter xmlExporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _characterSearchService = characterSearchService; _characterSearchInput = characterSearchInput; _stringService = stringService; _statService = statService; _dialogService = dialogService; _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _documentService = documentService; _dataManager = dataManager; _selectCharacterCommand = new RelayCommand(obj => true, obj => SelectCharacter(obj as CharacterListItemViewModel)); _editCharacterCommand = new RelayCommand(obj => true, obj => EditCharacter(obj as CharacterViewModel)); _exportCharacterCommand = new RelayCommand(obj => true, obj => ExportCharacter(obj as CharacterViewModel)); _cancelEditCharacterCommand = new RelayCommand(obj => true, obj => CancelEditCharacter()); _saveEditCharacterCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditCharacter()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedCharacter != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedCharacter != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); _selectInfoEditCommand = new RelayCommand(obj => true, obj => SelectInfoEdit()); _selectLevelsEditCommand = new RelayCommand(obj => true, obj => SelectLevelsEdit()); _selectAbilitiesEditCommand = new RelayCommand(obj => true, obj => SelectAbilitiesEdit()); _selectProficiencyEditCommand = new RelayCommand(obj => true, obj => SelectProficiencyEdit()); _compendium.CharacterChanged += _compendium_CharacterChanged; Search(); }
/// <summary> /// True if the search input applies to the model /// </summary> public bool SearchInputApplies(CharacterSearchInput searchInput, CharacterModel characterModel) { return(HasSearchText(characterModel, searchInput.SearchText)); }
/// <summary> /// Searches for characteres matching the search input /// </summary> public List <CharacterModel> Search(CharacterSearchInput searchInput) { return(Sort(_compendium.Characters.Where(x => SearchInputApplies(searchInput, x)), searchInput.SortOption.Key)); }