application: Store pace in the model and show it in its own view.
[gps-watch.git] / src / application / model.rs
index a056af5b1fcf41f1a06b18a5eeab0e2fabc837f5..4dc30c0b5c2ba305ad5ffadec6df03db817deac0 100644 (file)
 pub enum Field {
     UnixTime(u32),
     Distance(u32),
+    Pace(u32)
 }
 
 pub struct Model {
     pub unix_time: u32,
     pub distance_cm: u32,
+    pub pace_s: u32,
 
     is_dirty: u32,
 }
@@ -38,6 +40,7 @@ impl Model {
         Model {
             unix_time: 0,
             distance_cm: 0,
+            pace_s: 0,
             is_dirty: 0,
         }
     }
@@ -47,6 +50,12 @@ impl Model {
             self.distance_cm = 0;
             self.is_dirty |= Model::dirty_mask(Field::Distance(0));
         }
+
+        if self.pace_s != 0 {
+            self.pace_s = 0;
+
+            self.is_dirty |= Model::dirty_mask(Field::Pace(0));
+        }
     }
 
     pub fn update(&mut self, data: Field) {
@@ -63,6 +72,12 @@ impl Model {
                     self.is_dirty |= Model::dirty_mask(data);
                 }
             },
+            Field::Pace(pace_s) => {
+                if self.pace_s != pace_s {
+                    self.pace_s = pace_s;
+                    self.is_dirty |= Model::dirty_mask(data);
+                }
+            },
         }
     }
 
@@ -82,6 +97,7 @@ impl Model {
         match data {
             Field::UnixTime(_) => 1,
             Field::Distance(_) => 2,
+            Field::Pace(_) => 4,
         }
     }
 }