예제 #1
0
 public static void CopyBitsTo(this IBitsConfigViewModel configViewModelSource,
                               IBitsConfigViewModel configViewModelTarget)
 {
     configViewModelTarget.IsFromBits = configViewModelSource.IsFromBits;
     for (int i = 15; i >= 0; i--)
     {
         configViewModelTarget.BitNumbersInWord[i].IsChecked =
             configViewModelSource.BitNumbersInWord[i].IsChecked;
     }
 }
예제 #2
0
        public static List <IBitViewModel> CreateBitViewModelsWithOwnership(IBitsConfigViewModel bitsConfigViewModel, List <IConfigurationItemViewModel> rootConfigurationItemViewModels)
        {
            var result = new List <IBitViewModel>();

            List <IConfigurationItemViewModel> itemsWithSameAddress = new List <IConfigurationItemViewModel>();

            FillItemsWithSameAddress(bitsConfigViewModel.GetAddressInfo().address, rootConfigurationItemViewModels, itemsWithSameAddress);
            if (itemsWithSameAddress.Contains(bitsConfigViewModel as IConfigurationItemViewModel))
            {
                itemsWithSameAddress.Remove(bitsConfigViewModel as IConfigurationItemViewModel);
            }

            for (int i = 15; i >= 0; i--)
            {
                IEnumerable <(bool isBitOwned, string owner)> owners = itemsWithSameAddress.Select(model =>
                {
                    if (model is IBitsConfigViewModel bitsConfigViewModelSameAddress &&
                        bitsConfigViewModelSameAddress.IsFromBits)
                    {
                        var bit = bitsConfigViewModelSameAddress.BitNumbersInWord.FirstOrDefault(viewModel =>
                                                                                                 viewModel.BitNumber == i && viewModel.IsChecked);
                        if (bit != null)
                        {
                            return(true, GetMessageForAlreadySetItem(model));
                        }
                        else
                        {
                            return(false, string.Empty);
                        }
                    }

                    return(true, GetMessageForAlreadySetItem(model));
                }).ToList();

                var isOwned = owners.Any(tuple => tuple.isBitOwned);
                var toolTip = owners.FirstOrDefault(tuple => tuple.isBitOwned).owner;


                IBitViewModel bitViewModel = new BitViewModel(i, !isOwned, toolTip);
                result.Add(bitViewModel);
            }


            return(result);
        }