diff options
Diffstat (limited to 'lib/data/data_providers/audio_notifier.dart')
-rw-r--r-- | lib/data/data_providers/audio_notifier.dart | 129 |
1 files changed, 119 insertions, 10 deletions
diff --git a/lib/data/data_providers/audio_notifier.dart b/lib/data/data_providers/audio_notifier.dart index 1f8c1a9..32ab409 100644 --- a/lib/data/data_providers/audio_notifier.dart +++ b/lib/data/data_providers/audio_notifier.dart @@ -1,22 +1,131 @@ import 'package:flutter_ics_homescreen/export.dart'; +import 'package:protos/protos.dart'; -class AudioNotifier extends StateNotifier<Audio> { - AudioNotifier(super.state); +class AudioNotifier extends Notifier<Audio> { + @override + Audio build() { + return Audio.initial(); + } void resetToDefaults() { - state = state.copyWith(treble: 5.0, bass: 5.0, rearFront: 5.0); + state = state.copyWith(balance: 5.0, fade: 5.0, treble: 5.0, bass: 5.0); + var valClient = ref.read(valClientProvider); + int value = (state.balance * 20).toInt() - 100; + valClient.setInt32( + VSSPath.vehicleMediaBalance, + value, + true, + ); + value = (state.fade * 20).toInt() - 100; + valClient.setInt32( + VSSPath.vehicleMediaFade, + value, + true, + ); + value = (state.treble * 20).toInt() - 100; + valClient.setInt32( + VSSPath.vehicleMediaTreble, + value, + true, + ); + value = (state.bass * 20).toInt() - 100; + valClient.setInt32( + VSSPath.vehicleMediaBass, + value, + true, + ); } - void setTreble(double newVal) { - state = state.copyWith(treble: newVal); + bool handleSignalsUpdate(EntryUpdate update) { + bool handled = true; + switch (update.entry.path) { + case VSSPath.vehicleMediaVolume: + if (update.entry.value.hasUint32()) { + double value = update.entry.value.uint32.toDouble(); + state = state.copyWith(volume: value); + } + break; + case VSSPath.vehicleMediaBalance: + if (update.entry.value.hasInt32()) { + double value = (update.entry.value.int32 + 100) / 20.0; + state = state.copyWith(balance: value); + } + break; + case VSSPath.vehicleMediaFade: + if (update.entry.value.hasInt32()) { + double value = (update.entry.value.int32 + 100) / 20.0; + state = state.copyWith(fade: value); + } + break; + case VSSPath.vehicleMediaTreble: + if (update.entry.value.hasInt32()) { + double value = (update.entry.value.int32 + 100) / 20.0; + state = state.copyWith(treble: value); + } + break; + case VSSPath.vehicleMediaBass: + if (update.entry.value.hasInt32()) { + double value = (update.entry.value.int32 + 100) / 20.0; + state = state.copyWith(bass: value); + } + break; + default: + handled = false; + } + return handled; } - void setBass(double newVal) { - state = state.copyWith(bass: newVal); + void setVolume(double newValue) { + state = state.copyWith(volume: newValue); + var valClient = ref.read(valClientProvider); + valClient.setUint32( + VSSPath.vehicleMediaVolume, + newValue.toInt(), + true, + ); } - void setRearFront(double newVal) { - state = state.copyWith(rearFront: newVal); + void setBalance(double newValue) { + state = state.copyWith(balance: newValue); + int value = (newValue * 20).toInt() - 100; + var valClient = ref.read(valClientProvider); + valClient.setInt32( + VSSPath.vehicleMediaBalance, + value, + true, + ); + } + + void setFade(double newValue) { + state = state.copyWith(fade: newValue); + int value = (newValue * 20).toInt() - 100; + var valClient = ref.read(valClientProvider); + valClient.setInt32( + VSSPath.vehicleMediaFade, + value, + true, + ); } -} + void setTreble(double newValue) { + state = state.copyWith(treble: newValue); + int value = (newValue * 20).toInt() - 100; + var valClient = ref.read(valClientProvider); + valClient.setInt32( + VSSPath.vehicleMediaTreble, + value, + true, + ); + } + + void setBass(double newValue) { + state = state.copyWith(bass: newValue); + int value = (newValue * 20).toInt() - 100; + var valClient = ref.read(valClientProvider); + valClient.setInt32( + VSSPath.vehicleMediaBass, + value, + true, + ); + } +} |