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; } }
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); }