private void exportButton_Click(object sender, System.EventArgs e) { exportButton.Enabled = false; Cursor.Current = Cursors.WaitCursor; if (Project.exportDestFolder.Length == 0) { setExportDestFolder(); } if (Project.exportDestFolder.Length > 0 && Directory.Exists(Project.exportDestFolder)) { Hashtable listOfTiles = new Hashtable(); int scaleIndex = 10 + (m_scaleShift == 0 ? Project.preloadScale1 : (Project.preloadScale2 + m_scaleShift)); int levels = TileSetTerraLayout.listTilesAtLevels(listOfTiles, PictureManager.This.CameraManager.CoverageTopLeft, PictureManager.This.CameraManager.CoverageBottomRight, scaleIndex, scaleUpCheckBox.Checked); int countLoaded = 0; int countTotal = 0; // save selected tiles: foreach (string tileName in listOfTiles.Keys) { string fileNameJpg = tileName + ".jpg"; string srcPath = Project.GetTerraserverPath(fileNameJpg); if (File.Exists(srcPath)) { try { PdaHelper.exportSingleFile(tileName, srcPath, true); countLoaded++; } catch (Exception ee) { #if DEBUG // some files may be broken/missing, not a big deal LibSys.StatusBar.Error("PreloadTiles:export " + ee.Message); #endif } } countTotal++; } this.messageLabel.Text = "OK: " + countLoaded + " downloaded tiles out of " + countTotal + " covering whole view on " + levels + " levels\n exported to folder: " + Project.exportDestFolder; } else { this.messageLabel.Text = "Error: folder '" + Project.exportDestFolder + "' not valid."; setExportDestFolder(); } exportButton.Enabled = true; Cursor.Current = Cursors.Default; }
private void exportByList(Hashtable listOfTiles, out int countExported, out int countTotal) { countExported = 0; countTotal = 0; int toExport = listOfTiles.Count; DateTime lastDisplayed = DateTime.Now; DateTime started = DateTime.Now; // save selected tiles. This loop takes time, if BMP conversion is performed. foreach (string tileName in listOfTiles.Keys) { if (m_canceling) { break; } string fileNameJpg = tileName + ".jpg"; string srcPath = Project.GetTerraserverPath(fileNameJpg); int percentComplete = (int)(countTotal * 100.0d / toExport); if (File.Exists(srcPath)) { try { string dstPath = PdaHelper.exportSingleFile(tileName, srcPath, true); if ((DateTime.Now - lastDisplayed).TotalMilliseconds > 500) { string timeLeftStr = ""; if (percentComplete > 1.0d) { TimeSpan elapsed = DateTime.Now - started; TimeSpan projected = new TimeSpan((long)(((double)elapsed.Ticks) / ((double)percentComplete) * 100.0d)); TimeSpan left = projected - elapsed; timeLeftStr = " (" + left.Minutes + " min. " + left.Seconds + " sec. left)"; } this.estimateLabel.Text = "" + countTotal + " of " + toExport + " - " + percentComplete + "%" + timeLeftStr + "\r\n" + dstPath; this.estimateLabel.Refresh(); progressBar1.Value = Math.Min(percentComplete, 100); progressBar1.Refresh(); Application.DoEvents(); lastDisplayed = DateTime.Now; } countExported++; } catch (Exception ee) { #if DEBUG // some files may be broken/missing, not a big deal LibSys.StatusBar.Error("PreloadTiles:export " + ee.Message); #endif } } countTotal++; } this.estimateLabel.Text = "100% complete"; this.estimateLabel.Refresh(); progressBar1.Value = 100; progressBar1.Refresh(); Application.DoEvents(); }