public ManualCoinJoinProfileDialogViewModel(CoinJoinProfileViewModelBase current)
    {
        _autoCoinjoin       = true;
        _minAnonScoreTarget = current.MinAnonScoreTarget.ToString();
        _maxAnonScoreTarget = current.MaxAnonScoreTarget.ToString();
        _timeFrames         = new[]
        {
            new TimeFrameItem("Hours", TimeSpan.Zero),
            new TimeFrameItem("Days", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[0])),
            new TimeFrameItem("Weeks", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[1])),
            new TimeFrameItem("Months", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[2]))
        };

        _selectedTimeFrame = _timeFrames.FirstOrDefault(tf => tf.TimeFrame == TimeSpan.FromHours(current.FeeRateMedianTimeFrameHours)) ?? _timeFrames.First();

        SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: true);
        EnableBack = false;

        NextCommand = ReactiveCommand.Create(() =>
        {
            var auto  = AutoCoinjoin;
            var min   = int.Parse(MinAnonScoreTarget);
            var max   = int.Parse(MaxAnonScoreTarget);
            var hours = (int)Math.Floor(SelectedTimeFrame.TimeFrame.TotalHours);

            Close(DialogResultKind.Normal, new ManualCoinJoinProfile(auto, min, max, hours));
        });

        this.ValidateProperty(x => x.MinAnonScoreTarget, errors => ValidateInteger(MinAnonScoreTarget, nameof(MinAnonScoreTarget), errors));
        this.ValidateProperty(x => x.MaxAnonScoreTarget, errors => ValidateInteger(MaxAnonScoreTarget, nameof(MaxAnonScoreTarget), errors));
    }
Ejemplo n.º 2
0
    public ManualCoinJoinProfileDialogViewModel(CoinJoinProfileViewModelBase current, bool autoCoinJoin)
    {
        _autoCoinjoin = autoCoinJoin;

        _anonScoreTarget = current.AnonScoreTarget;

        _timeFrames = new[]
        {
            new TimeFrameItem("Hours", TimeSpan.Zero),
            new TimeFrameItem("Days", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[0])),
            new TimeFrameItem("Weeks", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[1])),
            new TimeFrameItem("Months", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[2]))
        };

        _selectedTimeFrame = _timeFrames.FirstOrDefault(tf => tf.TimeFrame == TimeSpan.FromHours(current.FeeRateMedianTimeFrameHours)) ?? _timeFrames.First();

        SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: true);

        EnableBack = false;

        NextCommand = ReactiveCommand.Create(() =>
        {
            var auto   = AutoCoinjoin;
            var target = AnonScoreTarget;
            var hours  = (int)Math.Floor(SelectedTimeFrame.TimeFrame.TotalHours);

            Close(DialogResultKind.Normal, new ManualCoinJoinProfileDialogViewModelResult(AutoCoinjoin, new ManualCoinJoinProfileViewModel(target, hours)));
        });
    }
    public ManualCoinJoinProfileDialogViewModel(CoinJoinProfileViewModelBase current)
    {
        _autoCoinjoin = true;

        _minAnonScoreTarget = current.MinAnonScoreTarget;
        _maxAnonScoreTarget = current.MaxAnonScoreTarget;

        _timeFrames = new[]
        {
            new TimeFrameItem("Hours", TimeSpan.Zero),
            new TimeFrameItem("Days", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[0])),
            new TimeFrameItem("Weeks", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[1])),
            new TimeFrameItem("Months", TimeSpan.FromHours(Constants.CoinJoinFeeRateMedianTimeFrames[2]))
        };

        _selectedTimeFrame = _timeFrames.FirstOrDefault(tf => tf.TimeFrame == TimeSpan.FromHours(current.FeeRateMedianTimeFrameHours)) ?? _timeFrames.First();

        SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: true);

        EnableBack = false;

        this.WhenAnyValue(x => x.MinAnonScoreTarget)
        .Subscribe(
            x =>
        {
            if (x >= MaxAnonScoreTarget)
            {
                MaxAnonScoreTarget = x + 1;
            }
        });

        this.WhenAnyValue(x => x.MaxAnonScoreTarget)
        .Subscribe(
            x =>
        {
            if (x <= MinAnonScoreTarget)
            {
                MinAnonScoreTarget = x - 1;
            }
        });


        NextCommand = ReactiveCommand.Create(() =>
        {
            var auto  = AutoCoinjoin;
            var min   = MinAnonScoreTarget;
            var max   = MaxAnonScoreTarget;
            var hours = (int)Math.Floor(SelectedTimeFrame.TimeFrame.TotalHours);

            Close(DialogResultKind.Normal, new ManualCoinJoinProfileViewModel(auto, min, max, hours));
        });
    }
Ejemplo n.º 4
0
 /// <summary>
 /// 添加计时器
 /// </summary>
 /// <param name="name">计时器名称</param>
 /// <param name="delay">多少秒执行一次</param>
 /// <param name="callback">回调函数</param>
 /// <param name="repeat">重复次数,-1为无限次</param>
 /// <param name="onOver">结束函数</param>
 /// <param name="priority">优先级</param>
 public void Add(string name, float delay, TimeFrameItem.OnTick0 callback, int repeat = -1, TimeFrameItem.OnTick0 onOver = null, int priority = 10)
 {
     if (HasFunction(callback) == -1)
     {
         TimeFrameItem fti = new TimeFrameItem(name, delay, repeat, callback, onOver, priority);
         list.Add(fti);
     }
     else
     {
         for (int i = 0; i < list.Count; i++)
         {
             if (list[i].callback == callback)
             {
                 list[i].delay  = delay;
                 list[i].repeat = repeat;
                 list[i].SetEnd = false;
             }
         }
     }
 }