File: ProgressIndicator.cs

package info (click to toggle)
quickroute-gps 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,576 kB
  • sloc: cs: 74,488; makefile: 72; sh: 43
file content (95 lines) | stat: -rw-r--r-- 2,668 bytes parent folder | download | duplicates (3)
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 "";
    }
    
  }
}