1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
using System;
using System.Windows.Forms;
namespace QuickRoute.GPSDeviceReaders.GarminUSBReader
{
public partial class ProgressIndicator : Form
{
private readonly GarminUSBReader garminUSBReader;
public ProgressIndicator(GarminUSBReader garminUSBReader)
{
InitializeComponent();
this.garminUSBReader = garminUSBReader;
status.Text = "";
}
protected override void OnLoad(EventArgs e)
{
BindEventHandlers();
base.OnLoad(e);
}
private void BindEventHandlers()
{
garminUSBReader.Progress += GarminUSBReader_Progress;
garminUSBReader.Completed += GarminUSBReader_Completed;
garminUSBReader.Error += GarminUSBReader_Error;
}
private void UnbindEventHandlers()
{
garminUSBReader.Progress -= GarminUSBReader_Progress;
garminUSBReader.Completed -= GarminUSBReader_Completed;
garminUSBReader.Error -= GarminUSBReader_Error;
}
private void GarminUSBReader_Error(Exception ex)
{
if (InvokeRequired)
{
BeginInvoke(new ErrorDelegate(GarminUSBReader_Error), ex);
return;
}
UnbindEventHandlers();
MessageBox.Show(this, ex.Message, Strings.USBReadError, MessageBoxButtons.OK, MessageBoxIcon.Error);
DialogResult = DialogResult.Abort;
}
private void GarminUSBReader_Progress(ReadType readType, int step, int maxSteps, double partCompleted)
{
if (InvokeRequired)
{
BeginInvoke(new ProgressDelegate(GarminUSBReader_Progress), readType, step, maxSteps, partCompleted);
return;
}
status.Text = string.Format(Strings.Status, step, maxSteps, GetReadTypeString(readType));
progressBar.Value = (int)(100 * partCompleted);
}
private void GarminUSBReader_Completed()
{
if (InvokeRequired)
{
BeginInvoke(new CompletedDelegate(GarminUSBReader_Completed));
return;
}
UnbindEventHandlers();
DialogResult = DialogResult.OK;
Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
garminUSBReader.CancelRead();
DialogResult = DialogResult.Cancel;
}
private static string GetReadTypeString(ReadType readType)
{
switch (readType)
{
case ReadType.ProductData:
return Strings.ProductData;
case ReadType.Runs:
return Strings.Runs;
case ReadType.Laps:
return Strings.Laps;
case ReadType.Tracks:
return Strings.Tracks;
}
return "";
}
}
}
|