Files
xterra-overland-dashboard/pico-dashboard/app.py
T

47 lines
1.3 KiB
Python

from alarms.alarm_manager import AlarmManager
from ui.alarm_view_model import AlarmViewModel
from ui.dashboard_view_model import DashboardViewModel
class PicoDashboardApp:
def __init__(
self,
app_state,
communication_service,
screen_manager,
touch_router,
display,
dashboard_renderer,
buzzer,
alarm_manager=None,
):
self.state = app_state
self.comms = communication_service
self.screen_manager = screen_manager
self.touch_router = touch_router
self.display = display
self.dashboard_renderer = dashboard_renderer
self.buzzer = buzzer
self.alarm_manager = alarm_manager or AlarmManager()
self.alarms = []
def tick(self, touch_event=None):
self.comms.poll()
self.comms.auto_select_transport()
if touch_event:
self.touch_router.handle_touch(touch_event)
self.alarms = self.alarm_manager.evaluate(self.state)
alarm_view = AlarmViewModel(self.alarms)
self.buzzer.update_from_alarm_view(alarm_view)
self.render()
def render(self):
if self.screen_manager.current_screen == "dashboard":
vm = DashboardViewModel(self.state, self.alarms)
self.dashboard_renderer.render(vm)
self.display.flush()