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