From c7c4760c8ce246ac7bf79e88c166596c6d439f13 Mon Sep 17 00:00:00 2001 From: rgarcia-herrera Date: Fri, 28 Aug 2020 18:56:32 -0500 Subject: [PATCH] compass screen with dark theme --- assets/to_map.png | Bin 0 -> 6414 bytes assets/to_map.svg | 53 ++++++++++++++++++++- flockompass.kv | 114 +++++++++++++++++++++++++++------------------- main.py | 14 +++++- 4 files changed, 130 insertions(+), 51 deletions(-) create mode 100644 assets/to_map.png diff --git a/assets/to_map.png b/assets/to_map.png new file mode 100644 index 0000000000000000000000000000000000000000..0091cc492ca22d7f4b35d2ecdec9b1de27cf88a4 GIT binary patch literal 6414 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 Y@z|Ly5hN3I|91hXD!o#yQGkd1AF)sf{r~^~ literal 0 HcmV?d00001 diff --git a/assets/to_map.svg b/assets/to_map.svg index 5939f02..e9feb47 100644 --- a/assets/to_map.svg +++ b/assets/to_map.svg @@ -1,3 +1,52 @@ - - + +image/svg+xml + \ No newline at end of file diff --git a/flockompass.kv b/flockompass.kv index 446cb29..99ea981 100644 --- a/flockompass.kv +++ b/flockompass.kv @@ -1,6 +1,20 @@ #:import random random.random #:import RiseInTransition kivy.uix.screenmanager.RiseInTransition #:import facade plyer.compass +#:import rgba kivy.utils.get_color_from_hex + +: + background_color: 1, 1, 1, 1 + canvas.before: + Color: + rgba: root.background_color + Rectangle: + size: self.size + pos: self.pos + +: + background_color: 0, 0, 0, 0 + background_color: rgba("#c0464b") : @@ -62,51 +76,55 @@ orientation: 'vertical' padding: '20dp' spacing: '10dp' - BoxLayout: - orientation: 'vertical' - ActionBar: - pos_hint: {'top':1} - ActionView: - use_separator: True - ActionPrevious: - title: 'Social Cycling' - with_previous: False - ActionButton: - important: True - text: 'set destination' - on_press: root.manager.current = 'map'; - FloatLayout: - canvas: - Color: - rgb: .9, .9, .9 - Rectangle: - size: self.size - Label: - text: app.dest_distance - color: 0, 0, 0.3, 1 - size_hint: 0.5, 0.1 - pos: 0, 0.1 - font_size: '40sp' - Image: - source: 'assets/needle.png' - canvas.before: - PushMatrix - Rotate: - angle: app.needle_angle - axis: 0, 0, 1 - origin: self.center - canvas.after: - PopMatrix - Image: - id: to_dest - source: 'assets/needle_to_dest.png' - canvas.before: - PushMatrix - Rotate: - angle: app.fbearing - axis: 0, 0, 1 - origin: self.center - canvas.after: - PopMatrix - Image: - source: 'assets/pivot.png' \ No newline at end of file + FloatLayout: + canvas: + Color: + rgba: rgba("#336645") + Rectangle: + size: self.size + Image: + source: 'assets/needle.png' + pos_hint: {"center_x": 0.5, "center_y": 0.7} + canvas.before: + PushMatrix + Rotate: + angle: app.needle_angle + axis: 0, 0, 1 + origin: self.center + canvas.after: + PopMatrix + Image: + id: to_dest + source: 'assets/needle_to_dest.png' + pos_hint: {"center_x": 0.5, "center_y": 0.7} + canvas.before: + PushMatrix + Rotate: + angle: app.fbearing + axis: 0, 0, 1 + origin: self.center + canvas.after: + PopMatrix + Image: + source: 'assets/pivot.png' + pos_hint: {"center_x": 0.5, "center_y": 0.7} + size_hint: 1, 1 + IconButton: + source: 'assets/to_map.png' + pos_hint: {"center_x": 0.1, "center_y": 0.95} + size_hint: 0.2, 0.2 + on_press: root.manager.current = 'map'; + BackgroundLabel: + text: app.dest_distance + background_color: rgba("#c0464b") + color: rgba("#f3e8d2") + size_hint: 1, 0.2 + pos_hint: {"x": 0, "top": 0.4} + font_size: '40sp' + BackgroundLabel: + text: app.dashboard_flock + background_color: rgba("#679958") + color: rgba("#f3e8d2") + size_hint: 1, 0.2 + pos_hint: {"x": 0, "top": 0.2} + font_size: '40sp' diff --git a/main.py b/main.py index d6e33bd..c1009d1 100644 --- a/main.py +++ b/main.py @@ -35,6 +35,8 @@ class FlockompassApp(App): fbearing = NumericProperty(0) dest_distance = StringProperty("") + dashboard_dest = StringProperty("") + dashboard_flock = StringProperty("") def dump(self, dt): print(dt, self.gps_data, self.session_data) @@ -79,9 +81,19 @@ class FlockompassApp(App): self.ms.ids.mapview.center_on(self.session_data['dest_lat'], self.session_data['dest_lon']) else: - self.dest_distance = "D: %0.1f km" % geodesic( + + dest_distance = geodesic( (self.gps_data['lat'], self.gps_data['lon']), (self.session_data['dest_lat'], self.session_data['dest_lon'])).kilometers + if dest_distance < 1: + dest_distance *= 1000 + dest_distance = "%i metros" % dest_distance + else: + dest_distance = "%0.1f km" % dest_distance + + self.dest_distance = "Destino: %s\nVel: %0.1f km/h" % (dest_distance, + self.gps_data['speed']) + def center_map_on_gps(self): self.ms.ids.mapview.center_on(self.gps_data['lat'],