casting: undo formatting

This commit is contained in:
Marcus Hanestad 2025-09-04 10:55:10 +02:00
commit b1c079aaee
6 changed files with 272 additions and 722 deletions

View file

@ -117,6 +117,7 @@ import java.util.LinkedList
import java.util.UUID import java.util.UUID
import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.ConcurrentLinkedQueue
class MainActivity : AppCompatActivity, IWithResultLauncher { class MainActivity : AppCompatActivity, IWithResultLauncher {
//TODO: Move to dimensions //TODO: Move to dimensions
@ -506,7 +507,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
handleIntent(intent); handleIntent(intent);
if (Settings.instance.casting.enabled) { if (Settings.instance.casting.enabled) {
StateCasting.instance.start(this) StateCasting.instance.start(this);
} }
StatePlatform.instance.onDevSourceChanged.subscribe { StatePlatform.instance.onDevSourceChanged.subscribe {

View file

@ -121,17 +121,13 @@ class ConnectCastingDialog(context: Context?) : AlertDialog(context) {
StateCasting.instance.onDeviceChanged.subscribe(this) { d -> StateCasting.instance.onDeviceChanged.subscribe(this) { d ->
val index = _unifiedDevices.indexOfFirst { it.castingDevice.name == d.name } val index = _unifiedDevices.indexOfFirst { it.castingDevice.name == d.name }
if (index != -1) { if (index != -1) {
_unifiedDevices[index] = DeviceAdapterEntry( _unifiedDevices[index] = DeviceAdapterEntry(d, _unifiedDevices[index].isPinnedDevice, _unifiedDevices[index].isOnlineDevice)
d,
_unifiedDevices[index].isPinnedDevice,
_unifiedDevices[index].isOnlineDevice
)
_adapter.notifyItemChanged(index) _adapter.notifyItemChanged(index)
} }
} }
StateCasting.instance.onDeviceRemoved.subscribe(this) { deviceName -> StateCasting.instance.onDeviceRemoved.subscribe(this) { d ->
_devices.remove(deviceName.name) _devices.remove(d.name)
updateUnifiedList() updateUnifiedList()
} }
@ -168,7 +164,6 @@ class ConnectCastingDialog(context: Context?) : AlertDialog(context) {
&& oldItem.isOnlineDevice == newItem.isOnlineDevice && oldItem.isOnlineDevice == newItem.isOnlineDevice
&& oldItem.isPinnedDevice == newItem.isPinnedDevice && oldItem.isPinnedDevice == newItem.isPinnedDevice
} }
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldList[oldItemPosition] val oldItem = oldList[oldItemPosition]
val newItem = newList[newItemPosition] val newItem = newList[newItemPosition]
@ -191,40 +186,23 @@ class ConnectCastingDialog(context: Context?) : AlertDialog(context) {
val unifiedList = mutableListOf<DeviceAdapterEntry>() val unifiedList = mutableListOf<DeviceAdapterEntry>()
val onlineDevices = StateCasting.instance.devices.values.associateBy { it.name } val onlineDevices = StateCasting.instance.devices.values.associateBy { it.name }
val rememberedDevices = val rememberedDevices = StateCasting.instance.getRememberedCastingDevices().associateBy { it.name }
StateCasting.instance.getRememberedCastingDevices().associateBy { it.name }
val intersectionNames = _devices.intersect(_rememberedDevices) val intersectionNames = _devices.intersect(_rememberedDevices)
for (name in intersectionNames) { for (name in intersectionNames) {
onlineDevices[name]?.let { onlineDevices[name]?.let { unifiedList.add(DeviceAdapterEntry(it, true, true)
unifiedList.add(
DeviceAdapterEntry(
it, true, true
)
) )
} }
} }
val onlineOnlyNames = _devices - _rememberedDevices val onlineOnlyNames = _devices - _rememberedDevices
for (name in onlineOnlyNames) { for (name in onlineOnlyNames) {
onlineDevices[name]?.let { onlineDevices[name]?.let { unifiedList.add(DeviceAdapterEntry(it, false, true )) }
unifiedList.add(
DeviceAdapterEntry(
it, false, true
)
)
}
} }
val rememberedOnlyNames = _rememberedDevices - _devices val rememberedOnlyNames = _rememberedDevices - _devices
for (name in rememberedOnlyNames) { for (name in rememberedOnlyNames) {
rememberedDevices[name]?.let { rememberedDevices[name]?.let { unifiedList.add(DeviceAdapterEntry(it, true, false)) }
unifiedList.add(
DeviceAdapterEntry(
it, true, false
)
)
}
} }
return unifiedList return unifiedList

View file

@ -138,20 +138,20 @@ class ConnectedCastingDialog(context: Context?) : AlertDialog(context) {
StateCasting.instance.onActiveDeviceVolumeChanged.remove(this) StateCasting.instance.onActiveDeviceVolumeChanged.remove(this)
StateCasting.instance.onActiveDeviceVolumeChanged.subscribe { StateCasting.instance.onActiveDeviceVolumeChanged.subscribe {
_sliderVolume.value = it.toFloat().coerceAtLeast(0.0f).coerceAtMost(_sliderVolume.valueTo) _sliderVolume.value = it.toFloat().coerceAtLeast(0.0f).coerceAtMost(_sliderVolume.valueTo);
} };
StateCasting.instance.onActiveDeviceTimeChanged.remove(this) StateCasting.instance.onActiveDeviceTimeChanged.remove(this);
StateCasting.instance.onActiveDeviceTimeChanged.subscribe { StateCasting.instance.onActiveDeviceTimeChanged.subscribe {
_sliderPosition.value = it.toFloat().coerceAtLeast(0.0f).coerceAtMost(_sliderPosition.valueTo) _sliderPosition.value = it.toFloat().coerceAtLeast(0.0f).coerceAtMost(_sliderPosition.valueTo);
} };
StateCasting.instance.onActiveDeviceDurationChanged.remove(this) StateCasting.instance.onActiveDeviceDurationChanged.remove(this);
StateCasting.instance.onActiveDeviceDurationChanged.subscribe { StateCasting.instance.onActiveDeviceDurationChanged.subscribe {
val dur = it.toFloat().coerceAtLeast(1.0f) val dur = it.toFloat().coerceAtLeast(1.0f)
_sliderPosition.value = _sliderPosition.value.coerceAtLeast(0.0f).coerceAtMost(dur) _sliderPosition.value = _sliderPosition.value.coerceAtLeast(0.0f).coerceAtMost(dur);
_sliderPosition.valueTo = dur _sliderPosition.valueTo = dur
} };
val ad = StateCasting.instance.activeDevice val ad = StateCasting.instance.activeDevice
if (ad != null) { if (ad != null) {
@ -160,23 +160,20 @@ class ConnectedCastingDialog(context: Context?) : AlertDialog(context) {
val isConnected = ad != null && ad.connectionState == CastConnectionState.CONNECTED val isConnected = ad != null && ad.connectionState == CastConnectionState.CONNECTED
setLoading(!isConnected) setLoading(!isConnected)
StateCasting.instance.onActiveDeviceConnectionStateChanged.subscribe(this) { _, connectionState -> StateCasting.instance.onActiveDeviceConnectionStateChanged.subscribe(this) { _, connectionState ->
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { setLoading(connectionState != CastConnectionState.CONNECTED); };
setLoading(connectionState != CastConnectionState.CONNECTED) updateDevice();
} };
updateDevice()
}
updateDevice(); updateDevice();
} }
override fun dismiss() { override fun dismiss() {
super.dismiss(); super.dismiss();
StateCasting.instance.onActiveDeviceVolumeChanged.remove(this); StateCasting.instance.onActiveDeviceVolumeChanged.remove(this);
StateCasting.instance.onActiveDeviceDurationChanged.remove(this); StateCasting.instance.onActiveDeviceDurationChanged.remove(this);
StateCasting.instance.onActiveDeviceTimeChanged.remove(this); StateCasting.instance.onActiveDeviceTimeChanged.remove(this);
StateCasting.instance.onActiveDeviceConnectionStateChanged.remove(this);
_device = null; _device = null;
StateCasting.instance.onActiveDeviceConnectionStateChanged.remove(this);
} }
private fun updateDevice() { private fun updateDevice() {

View file

@ -1171,9 +1171,8 @@ class VideoDetailView : ConstraintLayout {
_onPauseCalled = true; _onPauseCalled = true;
_taskLoadVideo.cancel(); _taskLoadVideo.cancel();
if (StateCasting.instance.isCasting) { if (StateCasting.instance.isCasting)
return return;
}
if(allowBackground) if(allowBackground)
StatePlayer.instance.startOrUpdateMediaSession(context, video); StatePlayer.instance.startOrUpdateMediaSession(context, video);

View file

@ -760,7 +760,7 @@ class StateApp {
_connectivityManager?.unregisterNetworkCallback(_connectivityEvents); _connectivityManager?.unregisterNetworkCallback(_connectivityEvents);
StatePlayer.instance.closeMediaSession(); StatePlayer.instance.closeMediaSession();
StateCasting.instance.stop() StateCasting.instance.stop();
StateSync.instance.stop(); StateSync.instance.stop();
StatePlayer.dispose(); StatePlayer.dispose();
Companion.dispose(); Companion.dispose();