mirror of
https://github.com/johrpan/musicus_mobile.git
synced 2025-10-26 10:47:25 +01:00
common: Move playback helper methods to base class
This commit is contained in:
parent
4bdd1873c4
commit
23d233becc
2 changed files with 41 additions and 41 deletions
|
|
@ -45,7 +45,7 @@ abstract class MusicusPlayback {
|
||||||
final normalizedPosition = BehaviorSubject.seeded(0.0);
|
final normalizedPosition = BehaviorSubject.seeded(0.0);
|
||||||
|
|
||||||
/// Initialize the player.
|
/// Initialize the player.
|
||||||
///
|
///
|
||||||
/// This will be called after the database was initialized.
|
/// This will be called after the database was initialized.
|
||||||
Future<void> setup();
|
Future<void> setup();
|
||||||
|
|
||||||
|
|
@ -93,4 +93,38 @@ abstract class MusicusPlayback {
|
||||||
duration.close();
|
duration.close();
|
||||||
normalizedPosition.close();
|
normalizedPosition.close();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/// Update [position] and [normalizedPosition].
|
||||||
|
///
|
||||||
|
/// Requires [duration] to be up to date
|
||||||
|
void updatePosition(int positionMs) {
|
||||||
|
position.add(Duration(milliseconds: positionMs));
|
||||||
|
_setNormalizedPosition(positionMs / duration.value.inMilliseconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Update [position], [duration] and [normalizedPosition].
|
||||||
|
void updateDuration(int positionMs, int durationMs) {
|
||||||
|
position.add(Duration(milliseconds: positionMs));
|
||||||
|
duration.add(Duration(milliseconds: durationMs));
|
||||||
|
_setNormalizedPosition(positionMs / durationMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Update [normalizedPosition] ensuring its value is between 0.0 and 1.0.
|
||||||
|
void _setNormalizedPosition(double value) {
|
||||||
|
if (value <= 0.0) {
|
||||||
|
normalizedPosition.add(0.0);
|
||||||
|
} else if (value >= 1.0) {
|
||||||
|
normalizedPosition.add(1.0);
|
||||||
|
} else {
|
||||||
|
normalizedPosition.add(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Update [currentIndex] and [currentTrack].
|
||||||
|
///
|
||||||
|
/// Requires [playlist] to be up to date.
|
||||||
|
void updateCurrentTrack(int index) {
|
||||||
|
currentIndex.add(index);
|
||||||
|
currentTrack.add(playlist.value[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,40 +34,6 @@ class Playback extends MusicusPlayback {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Update [position] and [normalizedPosition].
|
|
||||||
///
|
|
||||||
/// Requires [duration] to be up to date
|
|
||||||
void _updatePosition(int positionMs) {
|
|
||||||
position.add(Duration(milliseconds: positionMs));
|
|
||||||
_setNormalizedPosition(positionMs / duration.value.inMilliseconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Update [position], [duration] and [normalizedPosition].
|
|
||||||
void _updateDuration(int positionMs, int durationMs) {
|
|
||||||
position.add(Duration(milliseconds: positionMs));
|
|
||||||
duration.add(Duration(milliseconds: durationMs));
|
|
||||||
_setNormalizedPosition(positionMs / durationMs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Update [normalizedPosition] ensuring its value is between 0.0 and 1.0.
|
|
||||||
void _setNormalizedPosition(double value) {
|
|
||||||
if (value <= 0.0) {
|
|
||||||
normalizedPosition.add(0.0);
|
|
||||||
} else if (value >= 1.0) {
|
|
||||||
normalizedPosition.add(1.0);
|
|
||||||
} else {
|
|
||||||
normalizedPosition.add(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Update [currentIndex] and [currentTrack].
|
|
||||||
///
|
|
||||||
/// Requires [playlist] to be up to date.
|
|
||||||
void _updateCurrentTrack(int index) {
|
|
||||||
currentIndex.add(index);
|
|
||||||
currentTrack.add(playlist.value[index]);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> setup() async {
|
Future<void> setup() async {
|
||||||
if (_playbackServiceStateSubscription != null) {
|
if (_playbackServiceStateSubscription != null) {
|
||||||
|
|
@ -93,14 +59,14 @@ class Playback extends MusicusPlayback {
|
||||||
if (msg is _StatusMessage) {
|
if (msg is _StatusMessage) {
|
||||||
playing.add(msg.playing);
|
playing.add(msg.playing);
|
||||||
} else if (msg is _PositionMessage) {
|
} else if (msg is _PositionMessage) {
|
||||||
_updatePosition(msg.positionMs);
|
updatePosition(msg.positionMs);
|
||||||
} else if (msg is _TrackMessage) {
|
} else if (msg is _TrackMessage) {
|
||||||
_updateCurrentTrack(msg.currentTrack);
|
updateCurrentTrack(msg.currentTrack);
|
||||||
_updateDuration(msg.positionMs, msg.durationMs);
|
updateDuration(msg.positionMs, msg.durationMs);
|
||||||
} else if (msg is _PlaylistMessage) {
|
} else if (msg is _PlaylistMessage) {
|
||||||
playlist.add(msg.playlist);
|
playlist.add(msg.playlist);
|
||||||
_updateCurrentTrack(msg.currentTrack);
|
updateCurrentTrack(msg.currentTrack);
|
||||||
_updateDuration(msg.positionMs, msg.durationMs);
|
updateDuration(msg.positionMs, msg.durationMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue