Save Discovery Enabled in Preferences on Android

This commit is contained in:
Florian Märkl 2019-10-26 18:06:39 +02:00
commit 950b86454d
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 22 additions and 3 deletions

View file

@ -64,6 +64,11 @@ class Preferences(context: Context)
private val resources = context.resources
val discoveryEnabledKey get() = resources.getString(R.string.preferences_discovery_enabled_key)
var discoveryEnabled
get() = sharedPreferences.getBoolean(discoveryEnabledKey, true)
set(value) { sharedPreferences.edit().putBoolean(discoveryEnabledKey, value).apply() }
val logVerboseKey get() = resources.getString(R.string.preferences_log_verbose_key)
var logVerbose
get() = sharedPreferences.getBoolean(logVerboseKey, false)

View file

@ -70,7 +70,7 @@ class MainActivity : AppCompatActivity()
registerLabelButton.setOnClickListener { showRegistration() }
viewModel = ViewModelProviders
.of(this, viewModelFactory { MainViewModel(getDatabase(this)) })
.of(this, viewModelFactory { MainViewModel(getDatabase(this), Preferences(this)) })
.get(MainViewModel::class.java)
val recyclerViewAdapter = DisplayHostRecyclerViewAdapter(this::hostTriggered)

View file

@ -21,14 +21,26 @@ import androidx.lifecycle.ViewModel
import com.metallic.chiaki.common.AppDatabase
import com.metallic.chiaki.common.DiscoveredDisplayHost
import com.metallic.chiaki.common.ManualDisplayHost
import com.metallic.chiaki.common.Preferences
import com.metallic.chiaki.common.ext.toLiveData
import com.metallic.chiaki.discovery.DiscoveryManager
import com.metallic.chiaki.discovery.ps4Mac
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.Observables
import io.reactivex.rxkotlin.addTo
class MainViewModel(val database: AppDatabase): ViewModel()
class MainViewModel(val database: AppDatabase, val preferences: Preferences): ViewModel()
{
val discoveryManager = DiscoveryManager().also { it.active = true /* TODO: from shared preferences */ }
private val disposable = CompositeDisposable()
val discoveryManager = DiscoveryManager().also {
it.active = preferences.discoveryEnabled
it.discoveryActive
.observeOn(AndroidSchedulers.mainThread())
.subscribe { preferences.discoveryEnabled = it }
.addTo(disposable)
}
val displayHosts by lazy {
Observables.combineLatest(
@ -55,6 +67,7 @@ class MainViewModel(val database: AppDatabase): ViewModel()
override fun onCleared()
{
super.onCleared()
disposable.dispose()
discoveryManager.dispose()
}
}

View file

@ -60,6 +60,7 @@
<string name="preferences_log_verbose_summary">Warning: This logs a LOT! Don\'t enable for regular use.</string>
<!-- Don't localize these -->
<string name="preferences_discovery_enabled_key">discovery_enabled</string>
<string name="preferences_log_verbose_key">log_verbose</string>
<string name="preferences_resolution_key">stream_resolution</string>
<string name="preferences_resolution_title_360p">360p</string>