Example #1
0
        private async Task InvokeNextEventTriggerAsync(BaseContentView view, EventTriggerModel model, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                return;
            }

            var processConfigModel = new ProcessConfigModel()
            {
                ItemDelay = _config.ItemDelay,
                SearchImageResultDisplay = _config.SearchImageResultDisplay,
                Processes  = new List <Process>(),
                Token      = token,
                Similarity = _config.Similarity,
            };

            Dispatcher.Invoke(() =>
            {
                if (_fixProcess.HasValue)
                {
                    processConfigModel.Processes.Add(_fixProcess.Value.Value);
                }
                else
                {
                    processConfigModel.Processes.AddRange(_processes.Where(r => r.Key.Equals(model.ProcessInfo.ProcessName)).Select(r => r.Value));
                }
            });

            var nextItem = await view.InvokeNextEventTriggerAsync(model, processConfigModel);

            if (nextItem != null)
            {
                await _taskQueue.Enqueue(async() => await InvokeNextEventTriggerAsync(view, nextItem, token));
            }
        }
Example #2
0
        private async Task ProcessStartAsync(object state)
        {
            if (state is CancellationToken token)
            {
                if (token.IsCancellationRequested == true)
                {
                    return;
                }

                List <EventTriggerModel> models = new List <EventTriggerModel>();
                BaseContentView          view   = null;
                Dispatcher.Invoke(() => {
                    var selectView = _viewMap[tab_content.SelectedContent];
                    if (selectView != null)
                    {
                        models = selectView.View.GetEnumerator().ToList();
                        view   = selectView.View;
                    }
                });

                if (view == null)
                {
                    return;
                }

                foreach (var iter in models)
                {
                    await _taskQueue.Enqueue(async() =>
                    {
                        await InvokeNextEventTriggerAsync(view, iter, token);
                    });

                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
                }

                await TaskHelper.TokenCheckDelayAsync(_config.Period, token);

                await _taskQueue.Enqueue(ProcessStartAsync, token);
            }
        }
Example #3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Title = "DynamicHeightObserverView";
            InitializeScrollView();

            var headerLabel = new UILabel()
            {
                Text = "Wait 3 seconds...", TextAlignment = UITextAlignment.Center
            };
            var blueView = new UIView()
            {
                BackgroundColor = UIColor.Blue
            };

            _tableView = new UITableView()
            {
                ScrollEnabled = false
            };
            _tableView.RowHeight          = UITableView.AutomaticDimension;
            _tableView.EstimatedRowHeight = 30;
            _tableView.TableFooterView    = new UIView();
            var source = new MvxSimpleTableViewSource(_tableView, typeof(ItemCell), ItemCell.Key);

            _tableView.Source = source;

            var greenView = new UIView()
            {
                BackgroundColor = UIColor.Green
            };
            var footerLabel = new UILabel()
            {
                Text = "Footer", TextAlignment = UITextAlignment.Center
            };

            var bindingSet = this.CreateBindingSet <DynamicHeightObserverView, DynamicHeightObserverViewModel>();

            bindingSet.Bind(source).To(vm => vm.Items);
            bindingSet.Apply();

            _tableView.ReloadData();
            _tableViewHeightFluentLayout = _tableView.Height().EqualTo(0);

            BaseContentView.AddSubviews(headerLabel, blueView, _tableView, greenView, footerLabel);
            BaseScrollView.AddSubviews(BaseContentView);
            View.AddSubviews(BaseScrollView);

            View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
            View.AddConstraints(
                BaseScrollView.AtTopOf(View),
                BaseScrollView.AtLeftOf(View),
                BaseScrollView.AtRightOf(View),
                BaseScrollView.AtBottomOf(View),

                BaseContentView.WithSameWidth(View)
                );

            BaseScrollView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
            BaseScrollView.AddConstraints(
                BaseContentView.Bottom().EqualTo().BottomOf(BaseScrollView),
                BaseContentView.AtTopOf(BaseScrollView)
                );

            BaseContentView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
            BaseContentView.AddConstraints(
                headerLabel.AtTopOf(BaseContentView, 8),
                headerLabel.AtLeftOf(BaseContentView, 8),
                headerLabel.AtRightOf(BaseContentView, 8),

                blueView.Below(headerLabel, 8),
                blueView.WithSameLeft(headerLabel),
                blueView.WithSameRight(headerLabel),
                blueView.Height().EqualTo(50),

                _tableView.Below(blueView, 8),
                _tableView.WithSameLeft(headerLabel),
                _tableView.WithSameRight(headerLabel),
                _tableViewHeightFluentLayout,

                greenView.Below(_tableView, 8),
                greenView.WithSameLeft(headerLabel),
                greenView.WithSameRight(headerLabel),
                greenView.WithSameHeight(blueView),

                footerLabel.Below(greenView, 8),
                footerLabel.WithSameLeft(headerLabel),
                footerLabel.WithSameRight(headerLabel),
                footerLabel.AtBottomOf(BaseContentView, 8)
                );
        }
Example #4
0
 public void SetContentView(BaseContentView baseContentView)
 {
     this.baseContentView = baseContentView;
 }