Esempio n. 1
0
 public WordListsVarietyViewModel(IProjectService projectService, WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory, WordListsViewModel parent, Variety variety)
     : base(variety)
 {
     _parent = parent;
     _meanings = new VarietyMeaningViewModelCollection(projectService.Project.Meanings, DomainVariety.Words, meaning => varietyMeaningFactory(this, meaning));
     _switchToVarietyCommand = new RelayCommand(() => Messenger.Default.Send(new SwitchViewMessage(typeof(VarietiesViewModel), DomainVariety)));
     _goToNextInvalidWordCommand = new RelayCommand(GotoNextInvalidWord);
     CheckForErrors();
 }
Esempio n. 2
0
        private void Find()
        {
            if (_findViewModel != null)
            {
                return;
            }

            _findViewModel = new FindViewModel(_dialogService, FindNext);
            _findViewModel.PropertyChanged += (sender, args) => _startVarietyMeaning = null;
            _dialogService.ShowModelessDialog(this, _findViewModel, () => _findViewModel = null);
        }
Esempio n. 3
0
 private void SearchEnded()
 {
     _findViewModel.ShowSearchEndedMessage();
     _startVarietyMeaning = null;
 }
Esempio n. 4
0
        private void FindNext()
        {
            WordListsVarietyMeaningViewModel curVarietyMeaning = _selectedVarietyMeaning;

            if (curVarietyMeaning == null)
            {
                WordListsVarietyViewModel curVariety = null;
                switch (_findViewModel.Field)
                {
                case FindField.Form:
                    curVariety = _varietiesView.Cast <WordListsVarietyViewModel>().LastOrDefault();
                    break;

                case FindField.Gloss:
                    curVariety = _varietiesView.Cast <WordListsVarietyViewModel>().FirstOrDefault();
                    break;
                }
                if (curVariety != null && _meanings.Count > 0)
                {
                    curVarietyMeaning = curVariety.Meanings.Last();
                }
            }

            if (_varieties.Count > 0 && _meanings.Count > 0 && _startVarietyMeaning == null)
            {
                _startVarietyMeaning = curVarietyMeaning;
            }
            else if (curVarietyMeaning == null || _startVarietyMeaning == curVarietyMeaning)
            {
                SearchEnded();
                return;
            }

            Debug.Assert(curVarietyMeaning != null);
            WordListsVarietyViewModel variety = curVarietyMeaning.Variety;
            int meaningIndex = variety.Meanings.IndexOf(curVarietyMeaning);

            switch (_findViewModel.Field)
            {
            case FindField.Form:
                List <WordListsVarietyViewModel> varieties = _varietiesView.Cast <WordListsVarietyViewModel>().ToList();
                int varietyIndex = varieties.IndexOf(variety);
                do
                {
                    meaningIndex++;
                    if (meaningIndex == varieties[varietyIndex].Meanings.Count)
                    {
                        varietyIndex = (varietyIndex + 1) % _varieties.Count;
                        meaningIndex = 0;
                    }

                    curVarietyMeaning = varieties[varietyIndex].Meanings[meaningIndex];
                    if (curVarietyMeaning.Words.Any(w => w.StrRep.Contains(_findViewModel.String)))
                    {
                        Set(() => SelectedVarietyMeaning, ref _selectedVarietyMeaning, curVarietyMeaning);
                        return;
                    }
                } while (_startVarietyMeaning != curVarietyMeaning);
                break;

            case FindField.Gloss:
                do
                {
                    meaningIndex = (meaningIndex + 1) % variety.Meanings.Count;

                    curVarietyMeaning = variety.Meanings[meaningIndex];
                    if (curVarietyMeaning.DomainMeaning.Gloss.Contains(_findViewModel.String))
                    {
                        Set(() => SelectedVarietyMeaning, ref _selectedVarietyMeaning, curVarietyMeaning);
                        return;
                    }
                } while (_startVarietyMeaning != curVarietyMeaning);
                break;
            }
            SearchEnded();
        }
Esempio n. 5
0
 private void SearchEnded()
 {
     _findViewModel.ShowSearchEndedMessage();
     _startVarietyMeaning = null;
 }
Esempio n. 6
0
        private void FindNext()
        {
            WordListsVarietyMeaningViewModel curVarietyMeaning = _selectedVarietyMeaning;
            if (curVarietyMeaning == null)
            {
                WordListsVarietyViewModel curVariety = null;
                switch (_findViewModel.Field)
                {
                    case FindField.Form:
                        curVariety = _varietiesView.Cast<WordListsVarietyViewModel>().LastOrDefault();
                        break;
                    case FindField.Gloss:
                        curVariety = _varietiesView.Cast<WordListsVarietyViewModel>().FirstOrDefault();
                        break;
                }
                if (curVariety != null && _meanings.Count > 0)
                    curVarietyMeaning = curVariety.Meanings.Last();
            }

            if (_varieties.Count > 0 && _meanings.Count > 0 && _startVarietyMeaning == null)
            {
                _startVarietyMeaning = curVarietyMeaning;
            }
            else if (curVarietyMeaning == null || _startVarietyMeaning == curVarietyMeaning)
            {
                SearchEnded();
                return;
            }

            Debug.Assert(curVarietyMeaning != null);
            WordListsVarietyViewModel variety = curVarietyMeaning.Variety;
            int meaningIndex = variety.Meanings.IndexOf(curVarietyMeaning);
            switch (_findViewModel.Field)
            {
                case FindField.Form:
                    List<WordListsVarietyViewModel> varieties = _varietiesView.Cast<WordListsVarietyViewModel>().ToList();
                    int varietyIndex = varieties.IndexOf(variety);
                    do
                    {
                        meaningIndex++;
                        if (meaningIndex == varieties[varietyIndex].Meanings.Count)
                        {
                            varietyIndex = (varietyIndex + 1) % _varieties.Count;
                            meaningIndex = 0;
                        }

                        curVarietyMeaning = varieties[varietyIndex].Meanings[meaningIndex];
                        if (curVarietyMeaning.Words.Any(w => w.StrRep.Contains(_findViewModel.String)))
                        {
                            Set(() => SelectedVarietyMeaning, ref _selectedVarietyMeaning, curVarietyMeaning);
                            return;
                        }
                    } while (_startVarietyMeaning != curVarietyMeaning);
                    break;

                case FindField.Gloss:
                    do
                    {
                        meaningIndex = (meaningIndex + 1) % variety.Meanings.Count;

                        curVarietyMeaning = variety.Meanings[meaningIndex];
                        if (curVarietyMeaning.DomainMeaning.Gloss.Contains(_findViewModel.String))
                        {
                            Set(() => SelectedVarietyMeaning, ref _selectedVarietyMeaning, curVarietyMeaning);
                            return;
                        }
                    } while (_startVarietyMeaning != curVarietyMeaning);
                    break;
            }
            SearchEnded();
        }
Esempio n. 7
0
        private void Find()
        {
            if (_findViewModel != null)
                return;

            _findViewModel = new FindViewModel(_dialogService, FindNext);
            _findViewModel.PropertyChanged += (sender, args) => _startVarietyMeaning = null;
            _dialogService.ShowModelessDialog(this, _findViewModel, () => _findViewModel = null);
        }