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(); }
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); }
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); }
/* 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); }