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.concurrent.ConcurrentLinkedQueue
class MainActivity : AppCompatActivity, IWithResultLauncher {
//TODO: Move to dimensions
@ -506,7 +507,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
handleIntent(intent);
if (Settings.instance.casting.enabled) {
StateCasting.instance.start(this)
StateCasting.instance.start(this);
}
StatePlatform.instance.onDevSourceChanged.subscribe {

View file

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

View file

@ -138,20 +138,20 @@ class ConnectedCastingDialog(context: Context?) : AlertDialog(context) {
StateCasting.instance.onActiveDeviceVolumeChanged.remove(this)
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 {
_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 {
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
}
};
val ad = StateCasting.instance.activeDevice
if (ad != null) {
@ -160,23 +160,20 @@ class ConnectedCastingDialog(context: Context?) : AlertDialog(context) {
val isConnected = ad != null && ad.connectionState == CastConnectionState.CONNECTED
setLoading(!isConnected)
StateCasting.instance.onActiveDeviceConnectionStateChanged.subscribe(this) { _, connectionState ->
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) {
setLoading(connectionState != CastConnectionState.CONNECTED)
}
updateDevice()
}
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { setLoading(connectionState != CastConnectionState.CONNECTED); };
updateDevice();
};
updateDevice();
}
override fun dismiss() {
super.dismiss();
StateCasting.instance.onActiveDeviceVolumeChanged.remove(this);
StateCasting.instance.onActiveDeviceDurationChanged.remove(this);
StateCasting.instance.onActiveDeviceTimeChanged.remove(this);
StateCasting.instance.onActiveDeviceConnectionStateChanged.remove(this);
_device = null;
StateCasting.instance.onActiveDeviceConnectionStateChanged.remove(this);
}
private fun updateDevice() {

View file

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

View file

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