void DoSendStartList(object sender, System.Timers.ElapsedEventArgs e)
        {
            string output = null;

            Application.Current.Dispatcher.Invoke(() =>
            {
                List <object> remaingStarters = new List <object>();
                int c = 0;
                foreach (var item in _rslVP.GetView())
                {
                    if (_limit >= 0 && c >= _limit)
                    {
                        break;
                    }

                    remaingStarters.Add(item);
                    c++;
                }

                output = JsonConversion.ConvertOnStartList(remaingStarters);
            });

            OnNewDataToSend(this, new NewDataEventArgs {
                Data = output
            });
        }
예제 #2
0
        private void selectNextParticipant(RaceParticipant currentParticipant)
        {
            RaceParticipant nextParticipant = null;
            bool            useNext         = false;

            foreach (var sle in _rslVP.GetView().SourceCollection.OfType <StartListEntry>())
            {
                if (useNext)
                {
                    nextParticipant = sle.Participant;
                    break;
                }
                if (sle.Participant == currentParticipant)
                {
                    useNext = true;
                }
            }

            if (nextParticipant != null)
            {
                txtStartNumber.Text = nextParticipant.StartNumber.ToString();
            }

            txtStartNumber.Focus();
        }
        private void ListenToCurrentRaceRun()
        {
            if (_currentRace != _dm.GetCurrentRaceRun())
            {
                if (_notifier != null)
                {
                    _notifier.CollectionChanged -= StartListChanged;
                    _notifier.ItemChanged       -= StartListItemChanged;
                    _notifier = null;
                }
                _rslVP = null;



                Application.Current.Dispatcher.Invoke(() =>
                {
                    RaceRun raceRun = _dm.GetCurrentRaceRun();
                    _rslVP          = new RemainingStartListViewProvider();
                    _rslVP.Init(raceRun.GetStartListProvider(), raceRun);

                    _notifier = new ItemsChangedNotifier(_rslVP.GetView());
                    _notifier.CollectionChanged += StartListChanged;
                    _notifier.ItemChanged       += StartListItemChanged;
                });

                _currentRace = _dm.GetCurrentRaceRun();

                SendStartList();
            }
        }
예제 #4
0
        private void ConnectUiToRaceRun(RaceRun raceRun)
        {
            if (raceRun != null)
            {
                _rslVP = (new ViewConfigurator(_thisRace)).GetRemainingStartersViewProvider(raceRun);
                dgRemainingStarters.ItemsSource = _rslVP.GetView();
                UiUtilities.EnableOrDisableColumns(_thisRace, dgRemainingStarters);

                dgRunning.ItemsSource = raceRun.GetOnTrackList();
                UiUtilities.EnableOrDisableColumns(_thisRace, dgRunning);

                dgFinish.ItemsSource = raceRun.GetInFinishList();
                UiUtilities.EnableOrDisableColumns(_thisRace, dgFinish);

                lblStartList.DataContext = _rslVP.GetView();
            }
            else
            {
                dgRemainingStarters.ItemsSource = null;
                dgRunning.ItemsSource           = null;
                dgFinish.ItemsSource            = null;
            }
        }