Initial mediaplayer implementation 75/29575/1
authorScott Murray <scott.murray@konsulko.com>
Wed, 3 Jan 2024 23:14:12 +0000 (18:14 -0500)
committerScott Murray <scott.murray@konsulko.com>
Wed, 3 Jan 2024 23:23:55 +0000 (18:23 -0500)
commit2d395f4431ba4aa5055d02437463588f4d4c8127
tree977be67fcfab0edac1e6e03f77af6e7be0dc8931
parent4742fde5c48726357cc8db06d237e9db6c3df608
Initial mediaplayer implementation

Notable changes:
- Added dart_mpd package as a dependency.
- Added MPD client class and associated provider.
- Added MPD client configuration to the configuration file for
  potential usecases where MPD may not be available locally.
- Added playlist, play state, art, etc. providers for use in the
  mediaplayer front end UI.
- Reworked MediaPlayer classes to wire up MPD client backend.
- Removed volume slider from the bottom of the media pages to
  make more room for playlist / preset tables, as only being
  able to show 3 entries in each was not usable in practice.
- Reworked media player mocked up position indicator into an
  actual slider control, and reworked the radio slider styling
  to match for better UI consistency.
- Reworked media player and radio playlist / preset tables to
  attempt to have them layout at the same location and add an
  always visible scroll bar.  The scroll bars currently have a
  layout issue with respect to scroll track size that does not
  seem to have an obvious fix.  They are usable for now, and
  further investigation will be done when time permits.
- Wired up play/pause button on the side volume control via a
  new set of play state and controller providers.

Bug-AGL: SPEC-5028, SPEC-5029

Change-Id: I87efecc58b4e185443942eb32ff8148ebcd675c3
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
25 files changed:
lib/data/data_providers/app_config_provider.dart
lib/data/data_providers/app_provider.dart
lib/data/data_providers/mediaplayer_notifier.dart [new file with mode: 0644]
lib/data/data_providers/mediaplayer_position_notifier.dart [new file with mode: 0644]
lib/data/data_providers/mpd_client.dart [new file with mode: 0644]
lib/data/data_providers/play_controller.dart [new file with mode: 0644]
lib/data/data_providers/playlist_art_notifier.dart [new file with mode: 0644]
lib/data/data_providers/playlist_notifier.dart [new file with mode: 0644]
lib/data/data_providers/radio_presets_provider.dart
lib/data/models/audio_state.dart
lib/data/models/mediaplayer_state.dart [new file with mode: 0644]
lib/data/models/radio_state.dart
lib/export.dart
lib/presentation/common_widget/volume_and_fan_control.dart
lib/presentation/common_widget/volume_bar.dart
lib/presentation/screens/media/media.dart
lib/presentation/screens/media/media_player.dart
lib/presentation/screens/media/media_player_controls.dart
lib/presentation/screens/media/play_list_table.dart
lib/presentation/screens/media/radio_player.dart
lib/presentation/screens/media/radio_player_controls.dart
lib/presentation/screens/media/radio_preset_table.dart
lib/presentation/screens/splash/widget/splash_content.dart
pubspec.lock
pubspec.yaml