예제 #1
0
        private void UpdateRootList()
        {
            try
            {
                var actual = _walletManager.CurrentWallet.TransactionProcessor?.Coins?.ToHashSet()
                             ?? Enumerable.Empty <SmartCoin>();
                var old = RootList.Items.ToDictionary(c => c.Model, c => c);

                var coinToRemove = old.Where(c => !actual.Contains(c.Key)).ToArray();
                var coinToAdd    = actual.Where(c => !old.ContainsKey(c)).ToArray();

                RootList.RemoveMany(coinToRemove.Select(kp => kp.Value));

                var newCoinViewModels = coinToAdd.Select(c => new CoinViewModel(_walletManager, _config, _bitcoinStore, c)).ToArray();
                foreach (var cvm in newCoinViewModels)
                {
                    SubscribeToCoinEvents(cvm);
                }
                RootList.AddRange(newCoinViewModels);

                foreach (var item in coinToRemove)
                {
                    item.Value.Dispose();
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
            }
            finally
            {
                IsCoinListLoading = false;
            }
        }
예제 #2
0
        /// <summary>
        /// 将Boi列表转换为Node列表
        /// </summary>
        /// <param name="BoiList"></param>
        /// <returns></returns>
        private List <ContractBoiNode> Convert(List <ContractBoi> BoiList)
        {
            List <ContractBoiNode> lstBoiNode;
            List <ContractBoiNode> lstRoot;

            lstBoiNode = BoiList.ConvertAll <ContractBoiNode>(m =>
            {
                ContractBoiNode node = HDAutoMapper.DynamicMap <ContractBoiNode>(m);
                node.OriginalBoi     = m;
                return(node);
            });
            lstRoot = lstBoiNode.FindAll(m => String.IsNullOrEmpty(m.ParentCode));
            RootList.AddRange(lstRoot);
            lstRoot.ForEach(m =>
            {
                RecursionNode(lstBoiNode, m);
            });
            return(lstBoiNode);
        }
예제 #3
0
        /// <summary>
        /// 将Boi列表转换为Node列表
        /// </summary>
        /// <param name="BoiList"></param>
        /// <returns></returns>
        private List <ContractBoiChangeNode> Convert(List <ContractBoi> BoiList)
        {
            List <ContractBoiChangeNode> lstBoiNode;
            List <ContractBoiChangeNode> lstRoot;

            lstBoiNode = BoiList.ConvertAll <ContractBoiChangeNode>(m =>
            {
                ContractBoiChangeNode node = HDAutoMapper.DynamicMap <ContractBoiChangeNode>(m);
                //生成变更的编辑界面使用合同字段作为最新的值,因此 将变更后的值赋值给合同字段
                node.CtrctAmount   = node.LatestAmount;
                node.CtrctPrjPrice = node.LatestPrice;
                node.CtrctQty      = node.LatestQty;
                node.OriginalBoi   = m;
                return(node);
            });
            lstRoot = lstBoiNode.FindAll(m => String.IsNullOrEmpty(m.ParentCode));
            RootList.AddRange(lstRoot);
            lstRoot.ForEach(m =>
            {
                RecursionNode(lstBoiNode, m);
            });
            return(lstBoiNode);
        }
예제 #4
0
        private void UpdateRootList()
        {
            try
            {
                var actual = Global.Wallet.TransactionProcessor.Coins.ToHashSet();
                var old    = RootList.Items.ToDictionary(c => c.Model, c => c);

                var coinToRemove = old.Where(c => !actual.Contains(c.Key)).ToArray();
                var coinToAdd    = actual.Where(c => !old.ContainsKey(c)).ToArray();

                RootList.RemoveMany(coinToRemove.Select(kp => kp.Value));

                var newCoinViewModels = coinToAdd.Select(c => new CoinViewModel(this, c)).ToArray();
                foreach (var cvm in newCoinViewModels)
                {
                    SubscribeToCoinEvents(cvm);
                }
                RootList.AddRange(newCoinViewModels);

                var allCoins = RootList.Items.ToArray();

                RefreshSelectionCheckBoxes(allCoins);

                foreach (var item in coinToRemove)
                {
                    item.Value.Dispose();
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
            }
            finally
            {
                IsCoinListLoading = false;
            }
        }