diff --git a/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt b/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt index d0b0a89d..5afcc2a8 100644 --- a/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt +++ b/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt @@ -16,8 +16,8 @@ import javax.inject.Singleton @Singleton class GeneralSettings @Inject constructor( @ApplicationContext private val context: Context, - private val debugSettings: DebugSettings, - private val moshi: Moshi, + debugSettings: DebugSettings, + moshi: Moshi, ) : Settings() { override val preferences: SharedPreferences = context.getSharedPreferences("settings_general", Context.MODE_PRIVATE) @@ -34,9 +34,21 @@ class GeneralSettings @Inject constructor( moshi ) + val autoPause = preferences.createFlowPreference( + "core.eardetection.autopause.enabled", + false + ) + + val showAll = preferences.createFlowPreference( + "core.showall.enabled", + false + ) + override val preferenceDataStore: PreferenceDataStore = PreferenceStoreMapper( monitorMode, scannerMode, + autoPause, + showAll, debugSettings.isDebugModeEnabled, debugSettings.isAutoReportEnabled ) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt index ad4bd7d6..fea45e0e 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt @@ -13,6 +13,7 @@ import eu.darken.capod.common.navigation.navVia import eu.darken.capod.common.permissions.Permission import eu.darken.capod.common.permissions.isGrantedOrNotRequired import eu.darken.capod.common.uix.ViewModel3 +import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.main.ui.overview.cards.PermissionCardVH import eu.darken.capod.main.ui.overview.cards.pods.BasicSingleApplePodsCardVH import eu.darken.capod.main.ui.overview.cards.pods.DualApplePodsCardVH @@ -39,13 +40,10 @@ class OverviewFragmentVM @Inject constructor( private val recorderModule: RecorderModule, private val monitorControl: MonitorControl, private val podMonitor: PodMonitor, + private val generalSettings: GeneralSettings, private val debugSettings: DebugSettings, ) : ViewModel3(dispatcherProvider = dispatcherProvider) { - private val enabledState: Flow = flow { - emit(false) - } - private val updateTicker = channelFlow { while (isActive) { trySend(Unit) @@ -66,9 +64,19 @@ class OverviewFragmentVM @Inject constructor( val requestPermissionevent = SingleLiveEvent() private val pods: Flow> = requiredPermissions - .flatMapLatest { - if (it.isEmpty()) { - podMonitor.pods + .flatMapLatest { permissions -> + if (permissions.isEmpty()) { + combine(podMonitor.pods, generalSettings.showAll.flow) { pods, showAll -> + if (showAll) { + pods + .sortedByDescending { it.rssi } + } else { + pods + .maxByOrNull { it.rssi } + ?.let { listOf(it) } + ?: emptyList() + } + } } else { channelFlow { send(emptyList()) @@ -79,11 +87,10 @@ class OverviewFragmentVM @Inject constructor( val listItems: LiveData> = combine( updateTicker, - enabledState, requiredPermissions, pods, - debugSettings.isDebugModeEnabled.flow - ) { tick, state, permissions, pods, isDebugMode -> + debugSettings.isDebugModeEnabled.flow, + ) { _, permissions, pods, isDebugMode -> val items = mutableListOf() permissions diff --git a/app/src/main/res/drawable/ic_baseline_devices_other_24.xml b/app/src/main/res/drawable/ic_baseline_devices_other_24.xml new file mode 100644 index 00000000..27bbfc93 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_devices_other_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_pause_circle_24.xml b/app/src/main/res/drawable/ic_baseline_pause_circle_24.xml new file mode 100644 index 00000000..d5536013 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_pause_circle_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_refresh_24.xml b/app/src/main/res/drawable/ic_baseline_refresh_24.xml new file mode 100644 index 00000000..566500b8 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_refresh_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/main_fragment.xml b/app/src/main/res/layout/main_fragment.xml index 792acd84..48bfafa9 100644 --- a/app/src/main/res/layout/main_fragment.xml +++ b/app/src/main/res/layout/main_fragment.xml @@ -33,6 +33,6 @@ android:layout_margin="24dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:srcCompat="@drawable/ic_baseline_add_24" /> + app:srcCompat="@drawable/ic_baseline_refresh_24" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8c1e76e4..990e90fe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -95,4 +95,8 @@ Low power Balanced Low latency + Auto pause + Pause music when removing the device from your ear (if your device supports it). + Show all devices + Show other people\'s devices that are near you. \ No newline at end of file diff --git a/app/src/main/res/xml/preferences_general.xml b/app/src/main/res/xml/preferences_general.xml index 42a0820a..29def366 100644 --- a/app/src/main/res/xml/preferences_general.xml +++ b/app/src/main/res/xml/preferences_general.xml @@ -13,6 +13,18 @@ android:summary="@string/settings_scanner_mode_description" android:title="@string/settings_scanner_mode_label" /> + + + +