public void Start(String targetDB, bool isMove, ModeEnum modeType, OCMMainWindow win) { if (isMove) { Title = Catalog.GetString ("Move Caches..."); copyLabel.Markup = Catalog.GetString ("Moving Geocaches"); } List<Geocache> caches; if (modeType == CopyingProgress.ModeEnum.VISIBLE) { caches = win.CacheList.UnfilteredCaches; } else if (modeType == CopyingProgress.ModeEnum.SELECTED) { caches = new List<Geocache> (); caches.Add (win.CacheList.SelectedCache); } else { caches = null; //caches = new List<Geocache> (UIMonitor.getInstance ().CacheStore.GetUnfilteredCaches(0d,0d,new string[0])); } ACacheStore target = new FileStore (targetDB); ACacheStore source = win.App.CacheStore; targetDBLabel.Text = targetDB; double count = 0; total = caches.Count; if (target.NeedsUpgrade) { MessageDialog dlg = new MessageDialog(null, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, Catalog.GetString("The target database needs to be upgraded. " + "Please open the target database before trying to copy/move caches.")); dlg.Run(); dlg.Hide(); this.Hide(); return; } buttonOk.Visible = false; List<String> str = new List<String>(); foreach(Geocache c in caches) { str.Add(c.Name); } target.StartUpdate(); target.PurgeAllLogs(str.ToArray()); target.PurgeAllAttributes(str.ToArray()); target.PurgeAllTravelBugs(str.ToArray()); foreach(Geocache cache in caches) { if (cancel) { target.CancelUpdate(); this.Hide(); this.Dispose(); return; } count++; UpdateProgress(count, cache.Name); target.AddWaypointOrCache(cache, false, false); List<CacheLog> logs = source.GetCacheLogs(cache.Name); foreach(CacheLog log in logs) { target.AddLog(cache.Name, log); } List<Waypoint> children = source.GetChildWaypoints(new string[]{cache.Name}); foreach (Waypoint child in children) { target.AddWaypointOrCache(child, false, false); } CacheAttribute[] attributes = source.GetAttributes(cache.Name); foreach (CacheAttribute attribute in attributes) { target.AddAttribute(cache.Name,attribute); } if (isMove) source.DeleteWaypoint(cache.Name); } statusLabel.Markup = Catalog.GetString("<i>Complete</i>"); progressBar.Text = Catalog.GetString("Complete"); buttonOk.Visible = true; buttonCancel.Visible = false; target.CompleteUpdate(); }
void HandleHandleClose(object sender, EventArgs e) { this.Hide (); this.Dispose (); if (!Directory.Exists (page2.DataDirectory)) Directory.CreateDirectory (page2.DataDirectory); if (!File.Exists (page2.DBFile)) { FileStore store = new FileStore (page2.DBFile); store.Dispose (); } Config config = new Config(); config.DataDirectory = page2.DataDirectory; config.DBFile = page2.DBFile; config.HomeLat = page3.HomeLat; config.HomeLon = page3.HomeLon; config.OwnerID = page3.MemberID; config.ImperialUnits = page2.ImperialUnits; config.MapType = page2.DefaultMap; config.WizardDone = true; m_App.InitializeApp(null, false); }