summaryrefslogtreecommitdiffstats
path: root/lib/data/data_providers/units_notifier.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/data/data_providers/units_notifier.dart')
-rw-r--r--lib/data/data_providers/units_notifier.dart65
1 files changed, 62 insertions, 3 deletions
diff --git a/lib/data/data_providers/units_notifier.dart b/lib/data/data_providers/units_notifier.dart
index f7c25aa..26b79da 100644
--- a/lib/data/data_providers/units_notifier.dart
+++ b/lib/data/data_providers/units_notifier.dart
@@ -1,13 +1,72 @@
-import '../../export.dart';
+import 'package:flutter_ics_homescreen/export.dart';
+import 'package:protos/val-api.dart';
-class UnitsNotifier extends StateNotifier<Units> {
- UnitsNotifier(super.state);
+class UnitsNotifier extends Notifier<Units> {
+ @override
+ Units build() {
+ return const Units.initial();
+ }
+
+ bool handleSignalUpdate(DataEntry entry) {
+ bool handled = true;
+ switch (entry.path) {
+ case VSSPath.vehicleHmiDistanceUnit:
+ if (entry.value.hasString()) {
+ String value = entry.value.string;
+ DistanceUnit unit = DistanceUnit.kilometers;
+ if (value != "KILOMETERS") unit = DistanceUnit.miles;
+ state = state.copyWith(distanceUnit: unit);
+ }
+ break;
+ case VSSPath.vehicleHmiTemperatureUnit:
+ if (entry.value.hasString()) {
+ String value = entry.value.string;
+ TemperatureUnit unit = TemperatureUnit.celsius;
+ if (value != "C") unit = TemperatureUnit.fahrenheit;
+ state = state.copyWith(temperatureUnit: unit);
+ }
+ break;
+ case VSSPath.vehicleHmiPressureUnit:
+ if (entry.value.hasString()) {
+ String value = entry.value.string;
+ PressureUnit unit = PressureUnit.kilopascals;
+ if (value != "KPA") unit = PressureUnit.psi;
+ state = state.copyWith(pressureUnit: unit);
+ }
+ break;
+ default:
+ handled = false;
+ }
+ return handled;
+ }
void setDistanceUnit(DistanceUnit unit) {
state = state.copyWith(distanceUnit: unit);
+ var valClient = ref.read(valClientProvider);
+ valClient.setString(
+ VSSPath.vehicleHmiDistanceUnit,
+ unit == DistanceUnit.kilometers ? "KILOMETERS" : "MILES",
+ true,
+ );
}
void setTemperatureUnit(TemperatureUnit unit) {
state = state.copyWith(temperatureUnit: unit);
+ var valClient = ref.read(valClientProvider);
+ valClient.setString(
+ VSSPath.vehicleHmiTemperatureUnit,
+ unit == TemperatureUnit.celsius ? "C" : "F",
+ true,
+ );
+ }
+
+ void setPressureUnit(PressureUnit unit) {
+ state = state.copyWith(pressureUnit: unit);
+ var valClient = ref.read(valClientProvider);
+ valClient.setString(
+ VSSPath.vehicleHmiPressureUnit,
+ unit == PressureUnit.kilopascals ? "KPA" : "PSI",
+ true,
+ );
}
}