From 950b86454da53445f9edfd02fe778cabde03cebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Sat, 26 Oct 2019 18:06:39 +0200 Subject: [PATCH] Save Discovery Enabled in Preferences on Android --- .../com/metallic/chiaki/common/Preferences.kt | 5 +++++ .../com/metallic/chiaki/main/MainActivity.kt | 2 +- .../com/metallic/chiaki/main/MainViewModel.kt | 17 +++++++++++++++-- android/app/src/main/res/values/strings.xml | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/metallic/chiaki/common/Preferences.kt b/android/app/src/main/java/com/metallic/chiaki/common/Preferences.kt index 684ffc5..0bbcfe6 100644 --- a/android/app/src/main/java/com/metallic/chiaki/common/Preferences.kt +++ b/android/app/src/main/java/com/metallic/chiaki/common/Preferences.kt @@ -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) diff --git a/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt b/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt index 73252ac..d7124f2 100644 --- a/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt +++ b/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt @@ -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) diff --git a/android/app/src/main/java/com/metallic/chiaki/main/MainViewModel.kt b/android/app/src/main/java/com/metallic/chiaki/main/MainViewModel.kt index 4c665b8..ffb9d74 100644 --- a/android/app/src/main/java/com/metallic/chiaki/main/MainViewModel.kt +++ b/android/app/src/main/java/com/metallic/chiaki/main/MainViewModel.kt @@ -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() } } \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 5eb0d49..dd62cf0 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -60,6 +60,7 @@ Warning: This logs a LOT! Don\'t enable for regular use. + discovery_enabled log_verbose stream_resolution 360p