示例#1
0
        private static void UpdateDocumentToCurrentVersion(Document doc)
        {
            var defaultRLS = SessionSettings.CreateDefaultRouteLineSettingsCollection();

            // ensure MonochromeColor is non-invisible
            foreach (Session s in doc.sessions)
            {
                foreach (var rls in s.Settings.RouteLineSettingsCollection.Values)
                {
                    if (rls.MonochromeColor == Color.FromArgb(0, 0, 0, 0))
                    {
                        rls.MonochromeColor = rls.ColorRange.Gradient.GetColor(1);
                        rls.MonochromeWidth = rls.Width;
                    }
                }
            }


            // add some speed waypoint attribute settings, introduced in QR 2.1
            if (!doc.Settings.ColorRangeIntervalSliderSettings.ContainsKey(WaypointAttribute.Speed))
            {
                var defaultCRISS = DocumentSettings.CreateDefaultColorRangeIntervalSliderSettings();
                doc.Settings.ColorRangeIntervalSliderSettings.Add(WaypointAttribute.Speed, defaultCRISS[WaypointAttribute.Speed]);
            }

            if (!doc.Settings.LapHistogramSettings.ContainsKey(WaypointAttribute.Speed))
            {
                var defaultLHS = DocumentSettings.CreateDefaultLapHistogramSettings();
                doc.Settings.LapHistogramSettings.Add(WaypointAttribute.Speed, defaultLHS[WaypointAttribute.Speed]);
            }

            foreach (Session s in doc.sessions)
            {
                if (!s.Settings.RouteLineSettingsCollection.ContainsKey(WaypointAttribute.Speed))
                {
                    s.Settings.RouteLineSettingsCollection.Add(WaypointAttribute.Speed, defaultRLS[WaypointAttribute.Speed]);
                }
            }


            // add some direction waypoint attribute settings, introduced in QR 2.1-4
            if (!doc.Settings.ColorRangeIntervalSliderSettings.ContainsKey(WaypointAttribute.DirectionDeviationToNextLap))
            {
                var defaultCRISS = DocumentSettings.CreateDefaultColorRangeIntervalSliderSettings();
                doc.Settings.ColorRangeIntervalSliderSettings.Add(WaypointAttribute.DirectionDeviationToNextLap, defaultCRISS[WaypointAttribute.DirectionDeviationToNextLap]);
            }

            if (!doc.Settings.LapHistogramSettings.ContainsKey(WaypointAttribute.DirectionDeviationToNextLap))
            {
                var defaultLHS = DocumentSettings.CreateDefaultLapHistogramSettings();
                doc.Settings.LapHistogramSettings.Add(WaypointAttribute.DirectionDeviationToNextLap, defaultLHS[WaypointAttribute.DirectionDeviationToNextLap]);
            }

            foreach (Session s in doc.sessions)
            {
                if (!s.Settings.RouteLineSettingsCollection.ContainsKey(WaypointAttribute.DirectionDeviationToNextLap))
                {
                    s.Settings.RouteLineSettingsCollection.Add(WaypointAttribute.DirectionDeviationToNextLap, defaultRLS[WaypointAttribute.DirectionDeviationToNextLap]);
                }
            }

            // add circle time radius, introduced in QR 2.4
            foreach (var s in doc.sessions)
            {
                if (s.Settings.CircleTimeRadius == 0)
                {
                    s.Settings.CircleTimeRadius = 45;
                }
            }

            // add map reading duration settings, introduced in QR 2.4
            if (!doc.Settings.ColorRangeIntervalSliderSettings.ContainsKey(WaypointAttribute.MapReadingDuration))
            {
                var defaultCRISS = DocumentSettings.CreateDefaultColorRangeIntervalSliderSettings();
                doc.Settings.ColorRangeIntervalSliderSettings.Add(WaypointAttribute.MapReadingDuration, defaultCRISS[WaypointAttribute.MapReadingDuration]);
            }

            if (!doc.Settings.LapHistogramSettings.ContainsKey(WaypointAttribute.MapReadingDuration))
            {
                var defaultLHS = DocumentSettings.CreateDefaultLapHistogramSettings();
                doc.Settings.LapHistogramSettings.Add(WaypointAttribute.MapReadingDuration, defaultLHS[WaypointAttribute.MapReadingDuration]);
            }

            if (!doc.Settings.DefaultSessionSettings.SmoothingIntervals.ContainsKey(WaypointAttribute.MapReadingDuration))
            {
                doc.Settings.DefaultSessionSettings.SmoothingIntervals[WaypointAttribute.MapReadingDuration] = new Interval(0, 0);
            }


            foreach (Session s in doc.sessions)
            {
                if (!s.Settings.RouteLineSettingsCollection.ContainsKey(WaypointAttribute.MapReadingDuration))
                {
                    s.Settings.RouteLineSettingsCollection.Add(WaypointAttribute.MapReadingDuration, defaultRLS[WaypointAttribute.MapReadingDuration]);
                }
            }
        }