private void createRecord(Storage.Database db, IWaypointData data) { using (MemoryStream ms = new MemoryStream(DataBuffer)) using (BinaryWriter bw = new BinaryWriter(ms)) { ms.Position = 0; ms.Position = 150; bw.Write(Utils.Conversion.DateTimeToLong(data.DataFromDate)); //150 bw.Write((bool)(data.Lat != null)); //158 bw.Write(data.Lat == null ? (double)0.0 : (double)data.Lat); //159 bw.Write((bool)(data.Lon != null)); //167 bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168 bw.Write(Utils.Conversion.DateTimeToLong(data.Time)); //176 bw.Write(data.WPType.ID); //184 //spare ms.Position = 200; bw.Write(data.GeocacheCode); ms.Position = 240; bw.Write(data.Code ?? ""); ms.Position = 280; bw.Write(GetSafeString(280, 500, data.Description) ?? ""); ms.Position = 500; bw.Write(GetSafeString(500, 600, data.Name) ?? ""); ms.Position = 600; bw.Write(data.Url ?? ""); ms.Position = 700; bw.Write(data.UrlName ?? ""); ms.Position = 800; bw.Write(data.Comment ?? ""); RecordInfo = db.RequestWaypointRecord(data.ID, data.GeocacheCode, DataBuffer, ms.Position, 100); } }
public static void Copy(IWaypointData src, IWaypointData dest) { dest.ID = src.ID; dest.Name = src.Name; dest.Comment = src.Comment; dest.Description = src.Description; dest.Url = src.Url; dest.UrlName = src.UrlName; dest.WPType = src.WPType; dest.Code = src.Code; dest.GeocacheCode = src.GeocacheCode; dest.DataFromDate = src.DataFromDate; dest.Lat = src.Lat; dest.Lon = src.Lon; dest.Time = src.Time; }
//new record to be stored public Waypoint(Storage.Database db, IWaypointData data) : base(null) { _id = data.ID; using (MemoryStream ms = new MemoryStream(_buffer)) using (BinaryWriter bw = new BinaryWriter(ms)) { ms.Position = 0; //todo: add string length checks!!! ms.Position = 150; bw.Write(data.DataFromDate.ToFileTime()); //150 bw.Write((bool)(data.Lat!=null)); //158 bw.Write(data.Lat==null ? (double)0.0: (double)data.Lat); //159 bw.Write((bool)(data.Lon != null)); //167 bw.Write(data.Lon == null ? (double)0.0 : (double)data.Lon); //168 bw.Write(data.Time.ToFileTime()); //176 bw.Write(data.WPType.ID); //188 //spare ms.Position = 200; bw.Write(data.GeocacheCode); ms.Position = 240; bw.Write(data.Code); ms.Position = 280; bw.Write(data.Description); ms.Position = 500; bw.Write(data.Name); ms.Position = 600; bw.Write(data.Url); ms.Position = 700; bw.Write(data.UrlName); ms.Position = 800; bw.Write(data.Comment); RecordInfo = db.RequestWaypointRecord(data.ID, _buffer, ms.Position, 100); } db.WaypointCollection.Add(this); }
//new record to be stored public Waypoint(Storage.Database db, IWaypointData data) : this(null) { createRecord(db, data); db.WaypointCollection.Add(this); }