From 84c24d789b53e1bf2f0d6c68324d56ea641d44a8 Mon Sep 17 00:00:00 2001 From: weasdown <34220924+weasdown@users.noreply.github.com> Date: Sat, 28 Jun 2025 10:55:14 +0100 Subject: [PATCH 1/4] feat: update dependencies --- ios/Flutter/ephemeral/flutter_lldb_helper.py | 32 +++++++++++++++++++ ios/Flutter/ephemeral/flutter_lldbinit | 5 +++ linux/flutter/generated_plugin_registrant.cc | 11 +++++++ linux/flutter/generated_plugin_registrant.h | 15 +++++++++ linux/flutter/generated_plugins.cmake | 23 +++++++++++++ macos/Flutter/GeneratedPluginRegistrant.swift | 10 ++++++ .../ephemeral/Flutter-Generated.xcconfig | 11 +++++++ .../ephemeral/flutter_export_environment.sh | 12 +++++++ 8 files changed, 119 insertions(+) create mode 100644 ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 ios/Flutter/ephemeral/flutter_lldbinit create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Flutter/ephemeral/Flutter-Generated.xcconfig create mode 100644 macos/Flutter/ephemeral/flutter_export_environment.sh diff --git a/ios/Flutter/ephemeral/flutter_lldb_helper.py b/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 0000000..a88caf9 --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/ios/Flutter/ephemeral/flutter_lldbinit b/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 0000000..e3ba6fb --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..e71a16d --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..2e1de87 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..cccf817 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig new file mode 100644 index 0000000..e4b4683 --- /dev/null +++ b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -0,0 +1,11 @@ +// This is a generated file; do not edit or check into version control. +FLUTTER_ROOT=C:\Users\weasd\Documents\flutter +FLUTTER_APPLICATION_PATH=C:\Users\weasd\dev\non-OH\dispatch +COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_BUILD_DIR=build +FLUTTER_BUILD_NAME=1.0.0 +FLUTTER_BUILD_NUMBER=1 +DART_OBFUSCATION=false +TRACK_WIDGET_CREATION=true +TREE_SHAKE_ICONS=false +PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/macos/Flutter/ephemeral/flutter_export_environment.sh b/macos/Flutter/ephemeral/flutter_export_environment.sh new file mode 100644 index 0000000..5ff6c81 --- /dev/null +++ b/macos/Flutter/ephemeral/flutter_export_environment.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=C:\Users\weasd\Documents\flutter" +export "FLUTTER_APPLICATION_PATH=C:\Users\weasd\dev\non-OH\dispatch" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=1.0.0" +export "FLUTTER_BUILD_NUMBER=1" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=true" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" From e245c995cb75b15230f8fd8f92eecbb19a186722 Mon Sep 17 00:00:00 2001 From: weasdown <34220924+weasdown@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:08:28 +0100 Subject: [PATCH 2/4] feat: add all missing unit statuses --- app/lib/domain/models/unit/unit_status.dart | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/lib/domain/models/unit/unit_status.dart b/app/lib/domain/models/unit/unit_status.dart index 3d64aca..f0b65cb 100644 --- a/app/lib/domain/models/unit/unit_status.dart +++ b/app/lib/domain/models/unit/unit_status.dart @@ -3,20 +3,28 @@ library; /// Possible statuses for a [Unit] to show its current activity. enum UnitStatus { + pd('PD', 'Pre-Duty'), ab('AB', 'Available Base'), - ra('RA', 'Returning Available'), - dp('DP', 'Dispatched'), ds('DS', 'Dispatched to Standby'), + av('AV', 'Available - Voice'), + af('AF', 'Available - Foot'), + am('AM', 'Available - MDT'), + ra('RA', 'Available - Returning'), + sb('SB', 'Available - Standby'), + ms('MS', 'Mobile - Standby'), + dp('DP', 'Dispatched'), mo('MO', 'Mobile'), - ms('MS', 'Mobile to Standby'), as('AS', 'At Scene'), - wp('WP', 'With Patient'), ls('LS', 'Left Scene'), ah('AH', 'At Hospital'), ho('HO', 'Handover'), vc('VC', 'Vehicle Clear'), - os('OS', 'Out of Service'), - pd('PD', 'Pre-Duty'); + rt('RT', 'Request Transport'), + nt('NT', 'No Transport Required'), + rv('RV', 'At Scene - RV Point'), + wp('WP', 'With Patient'), + ak('AK', 'Acknowledgement'), + os('OS', 'Out of Service'); const UnitStatus(this.abbreviation, this.name); From eac766f3413e73bea01d7803ca206cf65494ac06 Mon Sep 17 00:00:00 2001 From: weasdown <34220924+weasdown@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:15:20 +0100 Subject: [PATCH 3/4] feat: add UnitStatus.fontColour getter --- app/lib/domain/models/unit/unit_status.dart | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/lib/domain/models/unit/unit_status.dart b/app/lib/domain/models/unit/unit_status.dart index f0b65cb..75f522a 100644 --- a/app/lib/domain/models/unit/unit_status.dart +++ b/app/lib/domain/models/unit/unit_status.dart @@ -1,6 +1,8 @@ /// @docImport 'unit.dart'; library; +import 'package:flutter/material.dart'; + /// Possible statuses for a [Unit] to show its current activity. enum UnitStatus { pd('PD', 'Pre-Duty'), @@ -31,4 +33,35 @@ enum UnitStatus { final String abbreviation; final String name; + + /// White text = Are doing, Grey text = Awaiting, Black text = Have actioned. + Color get fontColour => switch (this) { + /// White: Are doing + UnitStatus.pd || + UnitStatus.ds || + UnitStatus.av || + UnitStatus.af || + UnitStatus.am || + UnitStatus.ra || + UnitStatus.ms || + UnitStatus.mo || + UnitStatus.rt || + UnitStatus.os => Colors.white, + + /// Grey: Awaiting + UnitStatus.ds || UnitStatus.dp => Colors.grey, + + /// Black: Have actioned + UnitStatus.ab || + UnitStatus.sb || + UnitStatus.as || + UnitStatus.ls || + UnitStatus.ah || + UnitStatus.ho || + UnitStatus.vc || + UnitStatus.nt || + UnitStatus.rv || + UnitStatus.wp || + UnitStatus.ak => Colors.black, + }; } From 8152c4a9d0ba5c4bb0b38e8cad8b8afd070e18e4 Mon Sep 17 00:00:00 2001 From: weasdown <34220924+weasdown@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:22:20 +0100 Subject: [PATCH 4/4] feat: add UnitStatus.backgroundColour getter --- app/lib/domain/models/unit/unit_status.dart | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/lib/domain/models/unit/unit_status.dart b/app/lib/domain/models/unit/unit_status.dart index 75f522a..714510e 100644 --- a/app/lib/domain/models/unit/unit_status.dart +++ b/app/lib/domain/models/unit/unit_status.dart @@ -34,6 +34,40 @@ enum UnitStatus { final String name; + /// Gets the colour to display in the [Unit]'s row of the unit screen. + Color get backgroundColour => switch (this) { + UnitStatus.pd => Colors.grey, + + UnitStatus.ab => Colors.orange, + + UnitStatus.ds || + UnitStatus.av || + UnitStatus.af || + UnitStatus.am || + UnitStatus.sb || + UnitStatus.ms => Colors.lightGreenAccent, + + UnitStatus.ra => Colors.green.shade900, + + UnitStatus.dp || + UnitStatus.as || + UnitStatus.ls || + UnitStatus.ah || + UnitStatus.ho || + UnitStatus.nt || + UnitStatus.rv || + UnitStatus.wp || + UnitStatus.ak => Colors.red, + + UnitStatus.mo => Colors.pinkAccent, + + UnitStatus.vc => Colors.lightBlueAccent.shade200, + + UnitStatus.rt => Colors.red.shade900, + + UnitStatus.os => Colors.black, + }; + /// White text = Are doing, Grey text = Awaiting, Black text = Have actioned. Color get fontColour => switch (this) { /// White: Are doing