private void OnDeletePredefinedNumberRequested(IUserFilledSudokuBox sudokuBox)
        {
            if (sudokuBox == null)
            {
                return;
            }

            var foundViewModel =
                FindViewModel(
                    sudokuBox.Coordinate,
                    sudokuBox.ParentCoordinate
                    ) as PredefinedSudokuBoxViewModel;

            if (foundViewModel?.Model == null || foundViewModel.Model.IsForControl)
            {
                return;
            }

            var viewModelIndex = mSudokuBoxViewModels.IndexOf(foundViewModel);

            var newUserDefinedViewModel =
                new UserFilledSudokuBoxViewModel(
                    mModelsFactoryService.GetUserDefinedSudokuBox(
                        sudokuBox.Coordinate,
                        sudokuBox.ParentCoordinate,
                        null),
                    mSudokuService);

            mSudokuBoxViewModels.RemoveAt(viewModelIndex);
            mSudokuBoxViewModels.Insert(viewModelIndex, newUserDefinedViewModel);

            RefreshValues();
        }
Beispiel #2
0
 public UserFilledSudokuBoxViewModel(
     IUserFilledSudokuBox model,
     ISudokuService sudokuService)
 {
     mSudokuService = sudokuService;
     Model          = model ?? throw new ArgumentNullException(nameof(model));
 }
        private void OnChangeUserDefinedToNotesRequested(
            IUserFilledSudokuBox userFilledSudokuBox)
        {
            if (userFilledSudokuBox == null)
            {
                return;
            }

            var foundViewModel = FindViewModel(userFilledSudokuBox.Coordinate, userFilledSudokuBox.ParentCoordinate) as UserFilledSudokuBoxViewModel;

            if (foundViewModel == null)
            {
                return;
            }

            // Replace user defined view model with predefined view model:
            var viewModelIndex = mSudokuBoxViewModels.IndexOf(foundViewModel);

            var numbersInSameGrid =
                GetAllNumbers((userFilledSudokuBox.ParentCoordinate, userFilledSudokuBox.Coordinate));

            var remainingNumbers =
                mModelsFactoryService.SudokuNumbers().Except(numbersInSameGrid);

            var numbersInOtherGrids =
                mSudokuService.GetExistentNumbers(
                    (userFilledSudokuBox.ParentCoordinate, userFilledSudokuBox.Coordinate));

            if (numbersInOtherGrids != null)
            {
                remainingNumbers = remainingNumbers.Except(numbersInOtherGrids);
            }

            var newNoteViewModel =
                new NoteSudokuBoxViewModel(
                    mModelsFactoryService.GetNoteSudokuBox(
                        userFilledSudokuBox.Coordinate,
                        userFilledSudokuBox.ParentCoordinate,
                        new List <SudokuBoxNumbers>(remainingNumbers)),
                    mSudokuService);

            mSudokuBoxViewModels.RemoveAt(viewModelIndex);
            mSudokuBoxViewModels.Insert(viewModelIndex, newNoteViewModel);

            RefreshValues();
            SelectSingleAndUniqueNoteNumbers(GetAllNoteViewModels());
        }