示例#1
0
 private void RadTimelineTest_Loaded(object sender, RoutedEventArgs e)
 {
     this._viewModel  = new RadTimelineTestView(_fireworkManager);
     this.DataContext = _viewModel;
     _timer.Elapsed  += _timer_Elapsed;
     _fireworkTimeline.SelectionChanged += _fireworkTimeline_SelectionChanged;
     // _timer.Start();
     _verticalSlider = _fireworkTimeline.FindChildByType <TimelineScrollBar>();
     _fireworkManager.LineStarted += _fireworkManager_LineStarted;
     _fireworkManager.LineFailed  += _fireworkManager_LineFailed;
 }
示例#2
0
        private void ResetScrollBar()
        {
            //Refresh useful value
            _lastCentereredVerticalSliderFireworkPositionStart = null;
            _currentVerticalRange = null;

            //Horizontal
            _fireworkTimeline.VisiblePeriodStart = FireworkManager.DefaultPeriodStartUI;
            _fireworkTimeline.VisiblePeriodEnd   = FireworkManager.DefaultPeriodEndUI;

            //Vertical
            TimelineScrollBar verticalSlider = _fireworkTimeline.FindChildByType <TimelineScrollBar>();

            if (verticalSlider != null)
            {
                var newStart = 0;
                var newEnd   = verticalSlider.SelectionEnd;

                verticalSlider.Selection = new SelectionRange <double>(newStart, newEnd);
            }
        }
示例#3
0
        /// <summary>
        /// Useful to make some tests :-)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void _btnTest_Click(object sender, RoutedEventArgs e)
        {
            TimelineScrollBar verticalSlider = _fireworkTimeline.FindChildByType <TimelineScrollBar>();
            double            start          = verticalSlider.SelectionStart;
            double            end            = verticalSlider.SelectionEnd;


            double newStart = (double)50 / 67 - (verticalSlider.SelectionRange / 2);  // ou 0.3 / 0.6 /
            double newEnd   = ((double)50 / 67 + verticalSlider.SelectionRange / 2);

            verticalSlider.Selection = new SelectionRange <double>(newStart, newEnd);


            //verticalSlider.Selection = verticalSlider.SelectionRange + (20 * 1 / 67 - (verticalSlider.SelectionRange / 2), )


            return;


            List <TimelineStripLineControl> timeLineStripLineControlList = _fireworkTimeline.ChildrenOfType <TimelineStripLineControl>().ToList();


            Style t = timeLineStripLineControlList[0].ElementStyle;
            Style s = timeLineStripLineControlList[0].NormalStyle;
            Style p = timeLineStripLineControlList[0].AlternateStyle;

            Style t1 = timeLineStripLineControlList[1].ElementStyle;
            Style s1 = timeLineStripLineControlList[1].NormalStyle;
            Style p1 = timeLineStripLineControlList[1].AlternateStyle;

            Type         toto = t.Setters[0].GetType();
            PropertyInfo pi   = toto.GetProperty("Value");
            object       obj  = pi.GetValue(t.Setters[0], null);

            //FluentResourceKey.AlternativeBrush

            /* FluentResourceKey dd = (FluentResourceKey)FluentResourceKey.AlternativeBrush;
             *
             * FluentResourceKey.PrimaryBrush
             *
             * FluentResourceExtension gd = new FluentResourceExtension();
             * gd.ResourceKey = dd;*/


            /*FluentResourceExtension<> ty;
             *
             * ty.ResourceKey = FluentResourceKey.AlternativeBrush;
             * ty.
             * //m.ResourceKey = FluentResourceKey.AlternativeBrush;*/



            Telerik.Windows.Controls.FluentResourceExtension u = (Telerik.Windows.Controls.FluentResourceExtension)obj;


            //object y = toto.GetProperties()[4].GetValue(timeLineStripLineControlList[0].ElementStyle);



            //System.Windows.Controls.Border border =  (System.Windows.Controls.Border)t;

            // System.Windows.Controls.Border tot = (System.Windows.Controls.Border)timeLineStripLineControlList[0].ElementStyle;



            /*Style s = new Style
             *  {
             *      TargetType = typeof(System.Windows.Controls.Border)
             *  };
             *
             *  s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
             *
             *  //timeLineStripLineControlList[0].NormalStyle = s;
             *  //timeLineStripLineControlList[0].AlternateStyle = s;
             *  timeLineStripLineControlList[0].ElementStyle = s;*/



            //Style s  = timeLineStripLineControlList[0].NormalStyle;
            //Style p = timeLineStripLineControlList[0].AlternateStyle;

            //s.Setters Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
            //p.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Red));



            //timeLineStripLineControlList[0].Background =


            //List<TimelinePeriodControl> tytyList = _fireworkTimeline.ChildrenOfType<TimelinePeriodControl>().ToList();

            //Grid gr = tytyList[0].FindChildByType<Grid>();
            //gr.Background = Brushes.Blue;

            //List<TimelineStripLineControl> tytyList = _fireworkTimeline.ChildrenOfType<TimelineStripLineControl>().ToList();
            //TimelineStripLineControl to = test.FindChildByType<TimelineStripLineControl>();

            /*Grid gr = tytyList[0].FindChildByType<Grid>();
             * gr.Background = Brushes.Blue;*/
            // gr.InvalidateVisual();

            /* tytyList[0].Background = Brushes.Red;
             *
             * Style s = new Style
             * {
             *   TargetType = typeof(System.Windows.Controls.Border)
             * };
             *
             * s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
             *
             * tytyList[0].AlternateStyle = s;
             *
             * s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Coral));
             *
             * tytyList[0].NormalStyle = s;
             *
             * tytyList[0].InvalidateVisual();*/

            //if (_viewModel.FireworkManager.State == FireworkManagerState.FireworkRunning)
            //{
            //   TimelineStripLineContainer test = _fireworkTimeline.FindChildByType<TimelineStripLineContainer>();


            //Telerik.Windows.Controls.TimeBar.PeriodSpan y = (PeriodSpan)test.Items.CurrentItem;


            // List<TimelinePeriodControl> tytyList = _fireworkTimeline.ChildrenOfType<TimelinePeriodControl>().ToList();
            //TimelineStripLineControl to = test.FindChildByType<TimelineStripLineControl>();

            //            Grid gr = tytyList[0].FindChildByType<Grid>();
            //           gr.Background = Brushes.Blue;
            //          gr.InvalidateVisual();

            /*Style st = new Style
             * {
             *  TargetType = typeof(System.Windows.Controls.Border)
             * };
             *
             * st.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
             *
             * gr.Background =
             *
             * st.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Coral));
             *
             * t.NormalStyle = s;
             *
             * tt.InvalidateVisual();*/


            //VirtualizingTimeBarPanel titit = test.ChildrenOfType<VirtualizingTimeBarPanel>().FirstOrDefault();



            /*TimelinePeriodControl u = toto.FindChild<TimelinePeriodControl>(_fireworkTimeline);
             *
             * Style s = new Style
             * {
             *  TargetType = typeof(System.Windows.Controls.Border)
             * };
             *
             * s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
             *
             * u.AlternateStyle = s;
             *
             * s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Coral));
             *
             * u.NormalStyle = s;
             *
             * u.InvalidateVisual();
             *
             * /*List<TimelinePeriodControl> tytyList = _fireworkTimeline.ChildrenOfType<TimelinePeriodControl>().ToList();
             *
             * if (tytyList != null && tytyList.Count > 0)
             * {
             *  foreach (TimelinePeriodControl t in tytyList)
             *  {
             *
             *
             *      t.v
             *      Style s = new Style
             *      {
             *          TargetType = typeof(System.Windows.Controls.Border)
             *      };
             *
             *      s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Blue));
             *
             *      t.AlternateStyle = s;
             *
             *      s.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Coral));
             *
             *      t.NormalStyle = s;
             *
             *      t.InvalidateVisual();
             *  }
             * }*/
        }
示例#4
0
        /// <summary>
        /// Compute visible timeline automatically (based on current line started)
        /// </summary>
        /// <param name="line"></param>
        private void ComputeVisiblePeriod(DateTime visiblePeriodStart, DateTime visiblePeriodEnd, int radRowIndex, bool byPassAutomaticScrollSanityCheck)
        {
            if (!_automaticTimelineScroll && !byPassAutomaticScrollSanityCheck)
            {
                return;
            }

            //Sanity check  _line must be initialized!
            //if (_line == null) return;

            //Put this into try/catch, just in case...
            //Don't want program to stop in the middle of firework
            try
            {
                //_computeVisiblePeriodComputing = true;
                //DateTime visiblePeriodStart = DateTime.Now.Date.Add(_line.Ignition).Subtract(new TimeSpan(0, 0, 20));
                //DateTime visiblePeriodEnd = DateTime.Now.Date.Add(_line.Ignition).Add(new TimeSpan(0, 0, 40));

                _userControlDispatcher.BeginInvoke((Action)(() =>
                {
                    //***************
                    //Horizontal part
                    //***************

                    //Change visible port view only if new visible period start - 20 s > period start ui
                    //_fireworkTimeline.VisiblePeriod.Start
                    if (visiblePeriodStart.CompareTo(_fireworkManager.PeriodStartUI) > 0)
                    {
                        _fireworkTimeline.VisiblePeriod = new Telerik.Windows.Controls.SelectionRange <DateTime>(visiblePeriodStart, visiblePeriodEnd);
                    }
                    else
                    {
                        //Reset horizontal position in case user has changed it
                        _fireworkTimeline.VisiblePeriodStart = FireworkManager.DefaultPeriodStartUI;
                        _fireworkTimeline.VisiblePeriodEnd = FireworkManager.DefaultPeriodEndUI;
                    }

                    //*************
                    //Vertical part
                    //*************

                    //Center firework as soon as possible
                    TimelineScrollBar verticalSlider = _fireworkTimeline.FindChildByType <TimelineScrollBar>();
                    if (verticalSlider != null)
                    {
                        //Need to re-compute select range?
                        if (!_currentVerticalRange.HasValue)
                        {
                            _currentVerticalRange = verticalSlider.SelectionRange;
                        }

                        //Slider value is between 0 - 1
                        //So (firework index * 1) / nb total firework = vertical slider position
                        double verticalSliderFireworkPositionStart = (double)radRowIndex / _fireworkManager.AllActiveFireworks.Count;
                        double verticalSliderFireworkPositionEnd = (double)radRowIndex / _fireworkManager.AllActiveFireworks.Count;

                        double centereredVerticalSliderFireworkPositionStart = verticalSliderFireworkPositionStart - (_currentVerticalRange.Value / 2);
                        double centereredVerticalSliderFireworkPositionEnd = verticalSliderFireworkPositionEnd + (_currentVerticalRange.Value / 2);

                        if (centereredVerticalSliderFireworkPositionStart >= 0)
                        {
                            if (centereredVerticalSliderFireworkPositionEnd > 1)
                            {
                                //Do it only one time! so at the end the slider does not keep on going down
                                if (!_lastCentereredVerticalSliderFireworkPositionStart.HasValue)
                                {
                                    _lastCentereredVerticalSliderFireworkPositionStart = centereredVerticalSliderFireworkPositionStart;
                                }

                                verticalSlider.Selection = new SelectionRange <double>(_lastCentereredVerticalSliderFireworkPositionStart.Value, 1);
                            }
                            else
                            {
                                verticalSlider.Selection = new SelectionRange <double>(centereredVerticalSliderFireworkPositionStart, centereredVerticalSliderFireworkPositionEnd);
                            }
                        }
                        else
                        {
                            //Ensure to scroll up in case user has scroll down for instance
                            verticalSlider.Selection = new SelectionRange <double>(0, _currentVerticalRange.Value);
                        }
                    }


                    /*
                     * Below = old implementation (before 07/2021)
                     * /*
                     *
                     * /*TimelineScrollBar verticalSlider = _fireworkTimeline.FindChildByType<TimelineScrollBar>();
                     * if (verticalSlider != null)
                     * {
                     *  int nbOfElementVisiblePerRange = Convert.ToInt32(Math.Truncate((_fireworkManager.AllActiveFireworks.Count * verticalSlider.SelectionRange)));
                     *  double range = (line.Fireworks[0].RadRowIndex * verticalSlider.SelectionRange / nbOfElementVisiblePerRange);
                     *
                     *  //End?
                     *  if (range + verticalSlider.SelectionRange - (verticalSlider.SelectionRange / 4) > 1)
                     *  {
                     *      verticalSlider.Selection = new SelectionRange<double>(1 - verticalSlider.SelectionRange, 1);
                     *      return;
                     *  }
                     *
                     *  //Mid screen reached?
                     *  if (range > (verticalSlider.SelectionRange / 4))
                     *  {
                     *      var newStart = range - (verticalSlider.SelectionRange / 4);
                     *      var newEnd = range + verticalSlider.SelectionRange - (verticalSlider.SelectionRange / 4);
                     *      verticalSlider.Selection = new SelectionRange<double>(newStart, newEnd);
                     *  }
                     * }*/
                }));
            }
            catch
            {
                //NLog here
            }
        }