mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-08-11 18:50:58 +00:00
Merge branch 'hotfix-250606' of gitlab.futo.org:videostreaming/grayjay
This commit is contained in:
commit
d3dca00482
4 changed files with 11 additions and 6 deletions
|
@ -166,10 +166,11 @@ class StateCasting {
|
||||||
Logger.i(TAG, "CastingService started.");
|
Logger.i(TAG, "CastingService started.");
|
||||||
|
|
||||||
_nsdManager = context.getSystemService(Context.NSD_SERVICE) as NsdManager
|
_nsdManager = context.getSystemService(Context.NSD_SERVICE) as NsdManager
|
||||||
|
startDiscovering()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun startDiscovering() {
|
private fun startDiscovering() {
|
||||||
_nsdManager?.apply {
|
_nsdManager?.apply {
|
||||||
_discoveryListeners.forEach {
|
_discoveryListeners.forEach {
|
||||||
discoverServices(it.key, NsdManager.PROTOCOL_DNS_SD, it.value)
|
discoverServices(it.key, NsdManager.PROTOCOL_DNS_SD, it.value)
|
||||||
|
@ -178,7 +179,7 @@ class StateCasting {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun stopDiscovering() {
|
private fun stopDiscovering() {
|
||||||
_nsdManager?.apply {
|
_nsdManager?.apply {
|
||||||
_discoveryListeners.forEach {
|
_discoveryListeners.forEach {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -103,7 +103,6 @@ class ConnectCastingDialog(context: Context?) : AlertDialog(context) {
|
||||||
super.show();
|
super.show();
|
||||||
Logger.i(TAG, "Dialog shown.");
|
Logger.i(TAG, "Dialog shown.");
|
||||||
|
|
||||||
StateCasting.instance.startDiscovering()
|
|
||||||
(_imageLoader.drawable as Animatable?)?.start();
|
(_imageLoader.drawable as Animatable?)?.start();
|
||||||
|
|
||||||
synchronized(StateCasting.instance.devices) {
|
synchronized(StateCasting.instance.devices) {
|
||||||
|
@ -148,7 +147,6 @@ class ConnectCastingDialog(context: Context?) : AlertDialog(context) {
|
||||||
override fun dismiss() {
|
override fun dismiss() {
|
||||||
super.dismiss()
|
super.dismiss()
|
||||||
(_imageLoader.drawable as Animatable?)?.stop()
|
(_imageLoader.drawable as Animatable?)?.stop()
|
||||||
StateCasting.instance.stopDiscovering()
|
|
||||||
StateCasting.instance.onDeviceAdded.remove(this)
|
StateCasting.instance.onDeviceAdded.remove(this)
|
||||||
StateCasting.instance.onDeviceChanged.remove(this)
|
StateCasting.instance.onDeviceChanged.remove(this)
|
||||||
StateCasting.instance.onDeviceRemoved.remove(this)
|
StateCasting.instance.onDeviceRemoved.remove(this)
|
||||||
|
|
|
@ -16,6 +16,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.futo.platformplayer.R
|
import com.futo.platformplayer.R
|
||||||
import com.futo.platformplayer.UISlideOverlays
|
import com.futo.platformplayer.UISlideOverlays
|
||||||
|
import com.futo.platformplayer.stores.FragmentedStorage
|
||||||
|
import com.futo.platformplayer.stores.StringStorage
|
||||||
import com.futo.platformplayer.views.adapters.SubscriptionAdapter
|
import com.futo.platformplayer.views.adapters.SubscriptionAdapter
|
||||||
|
|
||||||
class CreatorsFragment : MainFragment() {
|
class CreatorsFragment : MainFragment() {
|
||||||
|
@ -29,6 +31,8 @@ class CreatorsFragment : MainFragment() {
|
||||||
private var _editSearch: EditText? = null;
|
private var _editSearch: EditText? = null;
|
||||||
private var _textMeta: TextView? = null;
|
private var _textMeta: TextView? = null;
|
||||||
private var _buttonClearSearch: ImageButton? = null
|
private var _buttonClearSearch: ImageButton? = null
|
||||||
|
private var _ordering = FragmentedStorage.get<StringStorage>("creators_ordering")
|
||||||
|
|
||||||
|
|
||||||
override fun onCreateMainView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
override fun onCreateMainView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
val view = inflater.inflate(R.layout.fragment_creators, container, false);
|
val view = inflater.inflate(R.layout.fragment_creators, container, false);
|
||||||
|
@ -44,7 +48,7 @@ class CreatorsFragment : MainFragment() {
|
||||||
_buttonClearSearch?.visibility = View.INVISIBLE;
|
_buttonClearSearch?.visibility = View.INVISIBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
val adapter = SubscriptionAdapter(inflater, getString(R.string.confirm_delete_subscription)) { subs ->
|
val adapter = SubscriptionAdapter(inflater, getString(R.string.confirm_delete_subscription), _ordering?.value?.toIntOrNull() ?: 5) { subs ->
|
||||||
_textMeta?.let {
|
_textMeta?.let {
|
||||||
it.text = "${subs.size} creator${if(subs.size > 1) "s" else ""}";
|
it.text = "${subs.size} creator${if(subs.size > 1) "s" else ""}";
|
||||||
}
|
}
|
||||||
|
@ -61,6 +65,7 @@ class CreatorsFragment : MainFragment() {
|
||||||
spinnerSortBy.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
spinnerSortBy.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||||
override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
|
override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
|
||||||
adapter.sortBy = pos;
|
adapter.sortBy = pos;
|
||||||
|
_ordering.setAndSave(pos.toString())
|
||||||
}
|
}
|
||||||
override fun onNothingSelected(parent: AdapterView<*>?) = Unit
|
override fun onNothingSelected(parent: AdapterView<*>?) = Unit
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,10 +31,11 @@ class SubscriptionAdapter : RecyclerView.Adapter<SubscriptionViewHolder> {
|
||||||
updateDataset();
|
updateDataset();
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(inflater: LayoutInflater, confirmationMessage: String, onDatasetChanged: ((List<Subscription>)->Unit)? = null) : super() {
|
constructor(inflater: LayoutInflater, confirmationMessage: String, sortByDefault: Int, onDatasetChanged: ((List<Subscription>)->Unit)? = null) : super() {
|
||||||
_inflater = inflater;
|
_inflater = inflater;
|
||||||
_confirmationMessage = confirmationMessage;
|
_confirmationMessage = confirmationMessage;
|
||||||
_onDatasetChanged = onDatasetChanged;
|
_onDatasetChanged = onDatasetChanged;
|
||||||
|
sortBy = sortByDefault
|
||||||
|
|
||||||
StateSubscriptions.instance.onSubscriptionsChanged.subscribe { _, _ -> if(Looper.myLooper() != Looper.getMainLooper())
|
StateSubscriptions.instance.onSubscriptionsChanged.subscribe { _, _ -> if(Looper.myLooper() != Looper.getMainLooper())
|
||||||
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { updateDataset() }
|
StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { updateDataset() }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue