Initial radio implementation 74/29574/1
authorScott Murray <scott.murray@konsulko.com>
Sun, 31 Dec 2023 21:24:51 +0000 (16:24 -0500)
committerScott Murray <scott.murray@konsulko.com>
Wed, 3 Jan 2024 23:23:52 +0000 (18:23 -0500)
commit4742fde5c48726357cc8db06d237e9db6c3df608
treedcca2b3e3c6cb3a4a46b7ae603f64fa9ce5a086c
parentfcd868bd73d35bd79074f3425317152565aeb275
Initial radio implementation

Notable changes:
- Add radio gRPC API protobuf definitation and generated files.
- Reworked existing single gRPC APIs library to split it into
  per-API libraries to avoid name collision issues.
- Add radio gRPC client class and associated radio state class
  and RiverPod providers.
- Split media controls and play list table classes into media
  player and radio specific versions to facilitate customization
  and wiring up their appropriate backends in a straightforward
  fashion.  Some potential rationalization of styling widgets
  may be done as a follow up to avoid some duplication.
- Added radio configuration and presets loading.  The presets
  will be populated with the contents of a radio-presets.yaml
  file from the configured location, the default location is
  the /etc/xdg/AGL/ics-homescreen directory.
- Implemented FM radio player against the radio gRPC API.
  For the sake of expediency, no attempt has been made to make
  the player able to handle AM band support.
- Reworked media page navigation state so that active player is
  restored when coming back to the page.  Logic has been added to
  start/stop the radio on navigating to or leaving the FM radio
  sub-page.  This will potentially be reworked before CES to work
  with the pause/stop button present on the other pages.
- Started pruning down global exports.dart a bit to remove files
  only used in a specific page/hierarchy, starting with media.

Bug-AGL: SPEC-5029

Change-Id: I1ae0aca4a7a8218e69e4286c863f01509a1cccb7
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
45 files changed:
lib/data/data_providers/app_config_provider.dart
lib/data/data_providers/app_launcher.dart
lib/data/data_providers/app_provider.dart
lib/data/data_providers/audio_notifier.dart
lib/data/data_providers/radio_client.dart [new file with mode: 0644]
lib/data/data_providers/radio_notifier.dart [new file with mode: 0644]
lib/data/data_providers/radio_presets_provider.dart [new file with mode: 0644]
lib/data/data_providers/val_client.dart
lib/data/data_providers/vehicle_notifier.dart
lib/data/models/audio_state.dart [moved from lib/data/models/audio.dart with 79% similarity]
lib/data/models/radio_state.dart [new file with mode: 0644]
lib/export.dart
lib/presentation/common_widget/custom_bottom_bar.dart
lib/presentation/common_widget/volume_and_fan_control.dart
lib/presentation/router/routes/routes.dart
lib/presentation/screens/media/media.dart [moved from lib/presentation/screens/media_player/media_player.dart with 57% similarity]
lib/presentation/screens/media/media_nav_notifier.dart [new file with mode: 0644]
lib/presentation/screens/media/media_player.dart [moved from lib/presentation/screens/media_player/media_content.dart with 87% similarity]
lib/presentation/screens/media/media_player_controls.dart [new file with mode: 0644]
lib/presentation/screens/media/play_list_table.dart [moved from lib/presentation/screens/media_player/play_list_table.dart with 99% similarity]
lib/presentation/screens/media/player_navigation.dart [moved from lib/presentation/screens/media_player/player_navigation.dart with 76% similarity]
lib/presentation/screens/media/radio_player.dart [moved from lib/presentation/screens/media_player/fm_player.dart with 56% similarity]
lib/presentation/screens/media/radio_player_controls.dart [new file with mode: 0644]
lib/presentation/screens/media/radio_preset_table.dart [new file with mode: 0644]
lib/presentation/screens/media/segmented_buttons.dart [moved from lib/presentation/screens/media_player/segmented_buttons.dart with 100% similarity]
lib/presentation/screens/media/widgets/gradient_progress_indicator.dart [moved from lib/presentation/screens/media_player/widgets/gradient_progress_indicator.dart with 100% similarity]
lib/presentation/screens/media/widgets/media_volume_bar.dart [moved from lib/presentation/screens/media_player/widgets/media_volume_bar.dart with 75% similarity]
lib/presentation/screens/media_player/media_controls.dart [deleted file]
lib/presentation/screens/media_player/my_media.dart [deleted file]
lib/presentation/screens/settings/settings_screens/audio_settings/widget/slider_widgets.dart
lib/presentation/screens/splash/widget/splash_content.dart
protos/lib/agl-shell-api.dart [new file with mode: 0644]
protos/lib/applauncher-api.dart [new file with mode: 0644]
protos/lib/radio-api.dart [new file with mode: 0644]
protos/lib/src/generated/radio.pb.dart [new file with mode: 0644]
protos/lib/src/generated/radio.pbenum.dart [new file with mode: 0644]
protos/lib/src/generated/radio.pbgrpc.dart [new file with mode: 0644]
protos/lib/src/generated/radio.pbjson.dart [new file with mode: 0644]
protos/lib/src/generated/todo.pb.dart [deleted file]
protos/lib/src/generated/todo.pbenum.dart [deleted file]
protos/lib/src/generated/todo.pbgrpc.dart [deleted file]
protos/lib/src/generated/todo.pbjson.dart [deleted file]
protos/lib/val-api.dart [moved from protos/lib/protos.dart with 51% similarity]
protos/protos/radio.proto [new file with mode: 0644]
protos/protos/todo.proto [deleted file]