Exemplo n.º 1
0
        public bool DeleteGroup(string cn, DataAccessLayer dal, bool deletePoints)
        {
            if (Groups.ContainsKey(cn))
            {
                List<TtPoint> points = dal.GetPointsInGroup(cn);

                if (deletePoints)
                {
                    dal.DeletePointsInGroup(cn);
                }
                else
                {
                    for (int i = 0; i < points.Count; i++)
                    {
                        points[i].GroupCN = MainGroup.CN;
                        points[i].GroupName = MainGroup.Name;
                    }

                    dal.SavePoints(points, points);
                }

                _Groups.Remove(cn);

                return dal.DeleteGroup(cn);
            }

            return false;
        }
        //private List<TtPoint> origPoints;
        //private DataAccessLayer _db;
        //Dictionary<string, TtMetaData> metas;
        public SegmentFactory(DataAccessLayer dal)
        {
            Dictionary<string, TtMetaData> meta = dal.GetMetaData().ToDictionary(m => m.CN, m => m);
            polys = dal.GetPolygons().ToDictionary(p => p.CN, p => p);

            List<TtPoint> tmpWayPoints = new List<TtPoint>();
            Dictionary<string, TtPoint> tmpPoints = new Dictionary<string, TtPoint>();

            foreach (TtPoint p in dal.GetPoints())
            {
                if (p.op == OpType.WayPoint)
                {
                    p.CalculatePoint();
                    p.AdjustPoint();
                    tmpWayPoints.Add(p);
                }
                else
                {
                    tmpPoints.Add(p.CN, p);

                    if (p.IsTravType())
                    {
                        ((SideShotPoint)p).Declination = meta[p.MetaDefCN].magDec;
                    }
                }
            }

            if (tmpWayPoints.Count > 0)
            {
                dal.SavePoints(tmpWayPoints, tmpWayPoints);
            }

            QuondamPoint qp;
            foreach (TtPoint p in tmpPoints.Values)
            {
                if (p.op == OpType.Quondam)
                {
                    qp = p as QuondamPoint;
                    qp.ParentPoint = tmpPoints[qp.ParentCN];
                }
            }

            points = tmpPoints.Values.ToList();
        }
Exemplo n.º 3
0
        public bool MergeGroups(TtGroup group1, TtGroup group2, DataAccessLayer dal)
        {
            List<TtPoint> points = dal.GetPointsInGroup(group2.CN);  //group2.Points.Values.ToList();

            for (int i = 0; i < points.Count; i++)
            {
                points[i].GroupCN = group1.CN;
                points[i].GroupName = group1.Name;
            }

            //group1.AddPointsToGroup(points);

            dal.SavePoints(points, points);
            return dal.DeleteGroup(group2.CN);
        }
        public static void Adjust(DataAccessLayer dal, bool updateIndexes, System.Windows.Forms.Form form)
        {
            if (form != null && !Values.AdjustingPolygons)
            {
                new Thread(() =>
                {
                    Values.GlobalCancelToken = false;
                    Values.AdjustingPolygons = true;

            #if !(PocketPC || WindowsCE || Mobile)
                    Values.UpdateStatusText("Adjusting Polygons (Do NOT close Program)");
            #endif
                    if (updateIndexes && Values.Settings.DeviceOptions.AutoUpdateIndex)
                    {
                        List<TtPoint> iPoints = new List<TtPoint>();

                        foreach (TtPolygon poly in dal.GetPolygons())
                        {
                            int index = 0;
                            foreach (TtPoint p in dal.GetPointsInPolygon(poly.CN))
                            {
                                if (p.Index != index)
                                {
                                    p.Index = index;
                                    iPoints.Add(p);
                                }

                                index++;
                            }
                        }

                        dal.SavePoints(iPoints, ref Values.GlobalCancelToken);
                    }

                    bool result = CalculateSegmentsInOrderByWeight(dal);

                    if (Values.GlobalCancelToken)
                    {
            #if !(PocketPC || WindowsCE || Mobile)
                        Values.UpdateStatusText("Polygons Adjustment Canceled");
                    }
                    else
                    {
                        if (result)
                            Values.UpdateStatusText("Polygons Adjusted");
            #endif
                    }

                    Values.AdjustingPolygons = false;
                    Values.GlobalCancelToken = false;

                    form.GuiInvoke(() =>
                    {
                        TtUtils.HideWaitCursor();
                        form.Close();
                    });

                    GC.Collect();

                }).Start();
            }
            else
            {
                Values.AdjustingPolygons = true;

            #if !(PocketPC || WindowsCE || Mobile)
                Values.UpdateStatusText("Adjusting Polygons (Do NOT close Program)");
            #endif
                bool result = CalculateSegmentsInOrderByWeight(dal);

            #if !(PocketPC || WindowsCE || Mobile)
                if (Values.GlobalCancelToken)
                {
                    Values.UpdateStatusText("Polygons Adjustment Canceled");
                }
                else
                {
                    if (result)
                        Values.UpdateStatusText("Polygons Adjusted");
                }
            #endif

                Values.AdjustingPolygons = false;
                GC.Collect();
            }
        }
        private static void SaveAllSegments(DataAccessLayer dal, List<Segment> adjusted)
        {
            TtPoint point;
            Dictionary<string, TtPoint> points = new Dictionary<string, TtPoint>();

            for (int s = 0; s < adjusted.Count; s++)
            {
                for (int i = 0; i < adjusted[s].Count; i++)
                {
                    point = adjusted[s][i];

                    if (!points.ContainsKey(point.CN))
                        points.Add(point.CN, point);
                }
            }

            dal.SavePoints(points.Values.ToList(), ref Values.GlobalCancelToken);
        }
Exemplo n.º 6
0
        public void SetGroupName(string name, DataAccessLayer dal)
        {
            if (name.IsEmpty())
                return;

            Name = name;

            if (dal == null)
                return;

            List<TtPoint> points = dal.GetPointsInGroup(this.CN)
                .Where(p => p.IsGpsType())
                .ToList();

            for (int i = 0; i < points.Count; i++)
                points[i].GroupName = Name;

            dal.SavePoints(points, points);
        }
Exemplo n.º 7
0
        /*
        public void Init(List<string> cns)
        {
            _PointCNs = cns;
        }
        */
        /// <summary>
        /// Sets Manual Accuracy to all Gps Type Points.
        /// </summary>
        /// <param name="acc">Accuracy</param>
        /// <param name="dal">DataAccessLayer</param>
        public void SetGroupManualAccuracy(double acc, DataAccessLayer dal)
        {
            if (acc < 0)
                return;

            ManualAccuracy = acc;

            if (dal == null)
                return;

            List<GpsPoint> gpsPoints = dal.GetPointsInGroup(this.CN)
                .Where(p => p.IsGpsType())
                .Cast<GpsPoint>()
                .ToList();

            for (int i = 0; i < gpsPoints.Count; i++)
                gpsPoints[i].ManualAccuracy = ManualAccuracy;

            dal.SavePoints(gpsPoints);
        }