From 6ea3127f9cb95fc9fc6283d42de73fd745a27a51 Mon Sep 17 00:00:00 2001 From: darken Date: Sun, 28 Aug 2022 19:13:15 +0200 Subject: [PATCH] More refactoring to split up modules, both compile. Wear is still WIP. --- app-common/build.gradle.kts | 8 + .../capod/common/upgrade/UpgradeModule.kt | 0 .../capod/common/upgrade/core/FossCache.kt | 0 .../capod/common/upgrade/core/FossUpgrade.kt | 0 .../common/upgrade/core/UpgradeControlFoss.kt | 0 .../src/foss/res/values-af-rZA/strings.xml | 0 .../src/foss/res/values-am/strings.xml | 0 .../src/foss/res/values-ar/strings.xml | 0 .../src/foss/res/values-az/strings.xml | 0 .../src/foss/res/values-be/strings.xml | 0 .../src/foss/res/values-bg/strings.xml | 0 .../src/foss/res/values-bn-rBD/strings.xml | 0 .../src/foss/res/values-ca/strings.xml | 0 .../src/foss/res/values-cs/strings.xml | 0 .../src/foss/res/values-da/strings.xml | 0 .../src/foss/res/values-de/strings.xml | 0 .../src/foss/res/values-el/strings.xml | 0 .../src/foss/res/values-es-rAR/strings.xml | 0 .../src/foss/res/values-es-rMX/strings.xml | 0 .../src/foss/res/values-es/strings.xml | 0 .../src/foss/res/values-et-rEE/strings.xml | 0 .../src/foss/res/values-eu-rES/strings.xml | 0 .../src/foss/res/values-fa/strings.xml | 0 .../src/foss/res/values-fi/strings.xml | 0 .../src/foss/res/values-fil/strings.xml | 0 .../src/foss/res/values-fr/strings.xml | 0 .../src/foss/res/values-gl-rES/strings.xml | 0 .../src/foss/res/values-hi-rIN/strings.xml | 0 .../src/foss/res/values-hr/strings.xml | 0 .../src/foss/res/values-hu/strings.xml | 0 .../src/foss/res/values-hy-rAM/strings.xml | 0 .../src/foss/res/values-in/strings.xml | 0 .../src/foss/res/values-is/strings.xml | 0 .../src/foss/res/values-it/strings.xml | 0 .../src/foss/res/values-iw/strings.xml | 0 .../src/foss/res/values-ja/strings.xml | 0 .../src/foss/res/values-ka-rGE/strings.xml | 0 .../src/foss/res/values-km-rKH/strings.xml | 0 .../src/foss/res/values-kmr-rTR/strings.xml | 0 .../src/foss/res/values-kn-rIN/strings.xml | 0 .../src/foss/res/values-ko/strings.xml | 0 .../src/foss/res/values-ky-rKG/strings.xml | 0 .../src/foss/res/values-lo-rLA/strings.xml | 0 .../src/foss/res/values-lt/strings.xml | 0 .../src/foss/res/values-lv/strings.xml | 0 .../src/foss/res/values-mk-rMK/strings.xml | 0 .../src/foss/res/values-ml-rIN/strings.xml | 0 .../src/foss/res/values-mn-rMN/strings.xml | 0 .../src/foss/res/values-mr-rIN/strings.xml | 0 .../src/foss/res/values-ms/strings.xml | 0 .../src/foss/res/values-my-rMM/strings.xml | 0 .../src/foss/res/values-ne-rNP/strings.xml | 0 .../src/foss/res/values-nl/strings.xml | 0 .../src/foss/res/values-no/strings.xml | 0 .../src/foss/res/values-pl/strings.xml | 0 .../src/foss/res/values-pt-rBR/strings.xml | 0 .../src/foss/res/values-pt/strings.xml | 0 .../src/foss/res/values-rm/strings.xml | 0 .../src/foss/res/values-ro/strings.xml | 0 .../src/foss/res/values-ru/strings.xml | 0 .../src/foss/res/values-sc-rIT/strings.xml | 0 .../src/foss/res/values-si-rLK/strings.xml | 0 .../src/foss/res/values-sk/strings.xml | 0 .../src/foss/res/values-sl/strings.xml | 0 .../src/foss/res/values-sq-rAL/strings.xml | 0 .../src/foss/res/values-sr/strings.xml | 0 .../src/foss/res/values-sv/strings.xml | 0 .../src/foss/res/values-sw/strings.xml | 0 .../src/foss/res/values-ta-rIN/strings.xml | 0 .../src/foss/res/values-te-rIN/strings.xml | 0 .../src/foss/res/values-th/strings.xml | 0 .../src/foss/res/values-tr/strings.xml | 0 .../src/foss/res/values-uk/strings.xml | 0 .../src/foss/res/values-ur-rIN/strings.xml | 0 .../src/foss/res/values-uz/strings.xml | 0 .../src/foss/res/values-vi/strings.xml | 0 .../src/foss/res/values-zh-rCN/strings.xml | 0 .../src/foss/res/values-zh-rHK/strings.xml | 0 .../src/foss/res/values-zh-rTW/strings.xml | 0 .../src/foss/res/values-zu/strings.xml | 0 .../src/foss/res/values/strings.xml | 0 .../src/gplay/res/values-af-rZA/strings.xml | 0 .../src/gplay/res/values-am/strings.xml | 0 .../src/gplay/res/values-ar/strings.xml | 0 .../src/gplay/res/values-az/strings.xml | 0 .../src/gplay/res/values-be/strings.xml | 0 .../src/gplay/res/values-bg/strings.xml | 0 .../src/gplay/res/values-bn-rBD/strings.xml | 0 .../src/gplay/res/values-ca/strings.xml | 0 .../src/gplay/res/values-cs/strings.xml | 0 .../src/gplay/res/values-da/strings.xml | 0 .../src/gplay/res/values-de/strings.xml | 0 .../src/gplay/res/values-el/strings.xml | 0 .../src/gplay/res/values-es-rAR/strings.xml | 0 .../src/gplay/res/values-es-rMX/strings.xml | 0 .../src/gplay/res/values-es/strings.xml | 0 .../src/gplay/res/values-et-rEE/strings.xml | 0 .../src/gplay/res/values-eu-rES/strings.xml | 0 .../src/gplay/res/values-fa/strings.xml | 0 .../src/gplay/res/values-fi/strings.xml | 0 .../src/gplay/res/values-fil/strings.xml | 0 .../src/gplay/res/values-fr/strings.xml | 0 .../src/gplay/res/values-gl-rES/strings.xml | 0 .../src/gplay/res/values-hi-rIN/strings.xml | 0 .../src/gplay/res/values-hr/strings.xml | 0 .../src/gplay/res/values-hu/strings.xml | 0 .../src/gplay/res/values-hy-rAM/strings.xml | 0 .../src/gplay/res/values-in/strings.xml | 0 .../src/gplay/res/values-is/strings.xml | 0 .../src/gplay/res/values-it/strings.xml | 0 .../src/gplay/res/values-iw/strings.xml | 0 .../src/gplay/res/values-ja/strings.xml | 0 .../src/gplay/res/values-ka-rGE/strings.xml | 0 .../src/gplay/res/values-km-rKH/strings.xml | 0 .../src/gplay/res/values-kmr-rTR/strings.xml | 0 .../src/gplay/res/values-kn-rIN/strings.xml | 0 .../src/gplay/res/values-ko/strings.xml | 0 .../src/gplay/res/values-ky-rKG/strings.xml | 0 .../src/gplay/res/values-lo-rLA/strings.xml | 0 .../src/gplay/res/values-lt/strings.xml | 0 .../src/gplay/res/values-lv/strings.xml | 0 .../src/gplay/res/values-mk-rMK/strings.xml | 0 .../src/gplay/res/values-ml-rIN/strings.xml | 0 .../src/gplay/res/values-mn-rMN/strings.xml | 0 .../src/gplay/res/values-mr-rIN/strings.xml | 0 .../src/gplay/res/values-ms/strings.xml | 0 .../src/gplay/res/values-my-rMM/strings.xml | 0 .../src/gplay/res/values-ne-rNP/strings.xml | 0 .../src/gplay/res/values-nl/strings.xml | 0 .../src/gplay/res/values-no/strings.xml | 0 .../src/gplay/res/values-pl/strings.xml | 0 .../src/gplay/res/values-pt-rBR/strings.xml | 0 .../src/gplay/res/values-pt/strings.xml | 0 .../src/gplay/res/values-rm/strings.xml | 0 .../src/gplay/res/values-ro/strings.xml | 0 .../src/gplay/res/values-ru/strings.xml | 0 .../src/gplay/res/values-sc-rIT/strings.xml | 0 .../src/gplay/res/values-si-rLK/strings.xml | 0 .../src/gplay/res/values-sk/strings.xml | 0 .../src/gplay/res/values-sl/strings.xml | 0 .../src/gplay/res/values-sq-rAL/strings.xml | 0 .../src/gplay/res/values-sr/strings.xml | 0 .../src/gplay/res/values-sv/strings.xml | 0 .../src/gplay/res/values-sw/strings.xml | 0 .../src/gplay/res/values-ta-rIN/strings.xml | 0 .../src/gplay/res/values-te-rIN/strings.xml | 0 .../src/gplay/res/values-th/strings.xml | 0 .../src/gplay/res/values-tr/strings.xml | 0 .../src/gplay/res/values-uk/strings.xml | 0 .../src/gplay/res/values-ur-rIN/strings.xml | 0 .../src/gplay/res/values-uz/strings.xml | 0 .../src/gplay/res/values-vi/strings.xml | 0 .../src/gplay/res/values-zh-rCN/strings.xml | 0 .../src/gplay/res/values-zh-rHK/strings.xml | 0 .../src/gplay/res/values-zh-rTW/strings.xml | 0 .../src/gplay/res/values-zu/strings.xml | 0 .../src/gplay/res/values/strings.xml | 0 .../eu/darken/capod/common/ColorExtensions.kt | 0 .../darken/capod/common/ContextExtensions.kt | 0 .../eu/darken/capod/common/MediaControl.kt | 0 .../darken/capod/common/error/ErrorDialog.kt | 0 .../capod/common/error/ErrorEventSource.kt | 0 .../capod/common/error/LocalizedError.kt | 0 .../capod/common/error/ThrowableExtensions.kt | 0 .../capod/common/flow/DynamicStateFlow.kt | 0 .../common/flow/DynamicStateFlowExtensions.kt | 0 .../common/flow/FlowCombineExtensions.kt | 0 .../capod/common/flow/FlowExtensions.kt | 2 +- .../darken/capod/common/lists/BaseAdapter.kt | 0 .../darken/capod/common/lists/BindableVH.kt | 0 .../darken/capod/common/lists/DataAdapter.kt | 0 .../eu/darken/capod/common/lists/ListItem.kt | 0 .../common/lists/RecyclerViewExtensions.kt | 0 .../capod/common/lists/differ/AsyncDiffer.kt | 0 .../lists/differ/AsyncDifferExtensions.kt | 0 .../capod/common/lists/differ/DifferItem.kt | 0 .../common/lists/differ/HasAsyncDiffer.kt | 0 .../common/lists/modular/ModularAdapter.kt | 0 .../common/lists/modular/mods/ClickMod.kt | 0 .../lists/modular/mods/DataBinderMod.kt | 0 .../lists/modular/mods/SimpleVHCreatorMod.kt | 0 .../common/lists/modular/mods/StableIdMod.kt | 0 .../lists/modular/mods/TypedVHCreatorMod.kt | 0 .../capod/common/livedata/SingleLiveEvent.kt | 0 .../capod/common/permissions/Permission.kt | 0 .../eu/darken/capod/common/uix/ViewModel1.kt | 0 .../eu/darken/capod/common/uix/ViewModel2.kt | 0 .../capod/common/uix/ViewModelLazyKeyed.kt | 0 .../viewbinding/ViewBindingExtensions.kt | 0 .../darken/capod/main/core/GeneralSettings.kt | 0 .../eu/darken/capod/main/core/MonitorMode.kt | 0 .../darken/capod/main/core/PermissionTool.kt | 2 +- .../capod/monitor/core/MonitorComponent.kt | 0 .../monitor/core/MonitorCoroutineScope.kt | 0 .../capod/monitor/core/MonitorModule.kt | 0 .../darken/capod/monitor/core/MonitorScope.kt | 0 .../darken/capod/monitor/core/PodMonitor.kt | 0 .../eu/darken/capod/monitor/core/PodSorter.kt | 0 .../capod/reaction/core}/ReactionHub.kt | 8 +- .../capod/reaction/core}/ReactionSettings.kt | 4 +- .../reaction/core}/autoconnect/AutoConnect.kt | 4 +- .../core}/autoconnect/AutoConnectCondition.kt | 2 +- .../reaction/core}/playpause/PlayPause.kt | 4 +- .../reaction/core}/popup/PopUpReaction.kt | 90 ++-- .../res/drawable/ic_baseline_grid_view_24.xml | 0 .../ic_baseline_settings_input_antenna_24.xml | 0 .../src/main/res/values-af-rZA/strings.xml | 0 .../src/main/res/values-am/strings.xml | 0 .../src/main/res/values-ar/strings.xml | 0 .../src/main/res/values-az/strings.xml | 0 .../src/main/res/values-be/strings.xml | 0 .../src/main/res/values-bg/strings.xml | 0 .../src/main/res/values-bn-rBD/strings.xml | 0 .../src/main/res/values-ca/strings.xml | 0 .../src/main/res/values-cs/strings.xml | 0 .../src/main/res/values-da/strings.xml | 0 .../src/main/res/values-de/strings.xml | 0 .../src/main/res/values-el/strings.xml | 0 .../src/main/res/values-es-rAR/strings.xml | 0 .../src/main/res/values-es-rMX/strings.xml | 0 .../src/main/res/values-es/strings.xml | 0 .../src/main/res/values-et-rEE/strings.xml | 0 .../src/main/res/values-eu-rES/strings.xml | 0 .../src/main/res/values-fa/strings.xml | 0 .../src/main/res/values-fi/strings.xml | 0 .../src/main/res/values-fil/strings.xml | 0 .../src/main/res/values-fr/strings.xml | 0 .../src/main/res/values-gl-rES/strings.xml | 0 .../src/main/res/values-hi-rIN/strings.xml | 0 .../src/main/res/values-hr/strings.xml | 0 .../src/main/res/values-hu/strings.xml | 0 .../src/main/res/values-hy-rAM/strings.xml | 0 .../src/main/res/values-in/strings.xml | 0 .../src/main/res/values-is/strings.xml | 0 .../src/main/res/values-it/strings.xml | 0 .../src/main/res/values-iw/strings.xml | 0 .../src/main/res/values-ja/strings.xml | 0 .../src/main/res/values-ka-rGE/strings.xml | 0 .../src/main/res/values-km-rKH/strings.xml | 0 .../src/main/res/values-kmr-rTR/strings.xml | 0 .../src/main/res/values-kn-rIN/strings.xml | 0 .../src/main/res/values-ko/strings.xml | 0 .../src/main/res/values-ky-rKG/strings.xml | 0 .../src/main/res/values-lo-rLA/strings.xml | 0 .../src/main/res/values-lt/strings.xml | 0 .../src/main/res/values-lv/strings.xml | 0 .../src/main/res/values-mk-rMK/strings.xml | 0 .../src/main/res/values-ml-rIN/strings.xml | 0 .../src/main/res/values-mn-rMN/strings.xml | 0 .../src/main/res/values-mr-rIN/strings.xml | 0 .../src/main/res/values-ms/strings.xml | 0 .../src/main/res/values-my-rMM/strings.xml | 0 .../src/main/res/values-ne-rNP/strings.xml | 0 .../src/main/res/values-nl/strings.xml | 0 .../src/main/res/values-no/strings.xml | 0 .../src/main/res/values-pl/strings.xml | 0 .../src/main/res/values-pt-rBR/strings.xml | 0 .../src/main/res/values-pt/strings.xml | 0 .../src/main/res/values-rm/strings.xml | 0 .../src/main/res/values-ro/strings.xml | 0 .../src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-sc-rIT/strings.xml | 0 .../src/main/res/values-si-rLK/strings.xml | 0 .../src/main/res/values-sk/strings.xml | 0 .../src/main/res/values-sl/strings.xml | 0 .../src/main/res/values-sq-rAL/strings.xml | 0 .../src/main/res/values-sr/strings.xml | 0 .../src/main/res/values-sv/strings.xml | 0 .../src/main/res/values-sw/strings.xml | 0 .../src/main/res/values-ta-rIN/strings.xml | 0 .../src/main/res/values-te-rIN/strings.xml | 0 .../src/main/res/values-th/strings.xml | 0 .../src/main/res/values-tr/strings.xml | 0 .../src/main/res/values-uk/strings.xml | 0 .../src/main/res/values-ur-rIN/strings.xml | 0 .../src/main/res/values-uz/strings.xml | 0 .../src/main/res/values-vi/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../src/main/res/values-zh-rHK/strings.xml | 0 .../src/main/res/values-zh-rTW/strings.xml | 0 .../src/main/res/values-zu/strings.xml | 0 app-common/src/main/res/values/strings.xml | 104 +++- app-wear/build.gradle.kts | 12 +- .../eu/darken/capod/wear/ui/MainActivityVM.kt | 14 + .../src/main/res/layout/main_fragment.xml | 28 ++ .../overview_bluetooth_disabled_item.xml | 40 ++ .../res/layout/overview_nomaindevice_item.xml | 40 ++ .../res/layout/overview_permission_item.xml | 76 +++ .../res/layout/overview_pods_dual_item.xml | 445 ++++++++++++++++++ .../res/layout/overview_pods_single_item.xml | 188 ++++++++ .../res/layout/overview_pods_unknown_item.xml | 116 +++++ .../main/res/layout/wear_tile_pods_dual.xml | 32 +- .../main/res/layout/wear_tile_pods_single.xml | 12 +- .../src/main/res/layout/wear_tile_preview.xml | 32 +- app-wear/src/main/res/values/styles.xml | 4 +- app/build.gradle.kts | 4 +- .../monitor/core/worker/MonitorWorker.kt | 40 +- .../ui/ReactionSettingsFragment.kt | 6 +- .../ui/ReactionSettingsFragmentVM.kt | 2 +- .../ui => ui/popup}/PopUpPodViewFactory.kt | 2 +- .../{popup/ui => ui/popup}/PopUpWindow.kt | 8 +- app/src/main/res/values/strings.xml | 136 ------ crowdin.yaml | 18 +- 303 files changed, 1214 insertions(+), 269 deletions(-) rename {app => app-common}/src/foss/java/eu/darken/capod/common/upgrade/UpgradeModule.kt (100%) rename {app => app-common}/src/foss/java/eu/darken/capod/common/upgrade/core/FossCache.kt (100%) rename {app => app-common}/src/foss/java/eu/darken/capod/common/upgrade/core/FossUpgrade.kt (100%) rename {app => app-common}/src/foss/java/eu/darken/capod/common/upgrade/core/UpgradeControlFoss.kt (100%) rename {app => app-common}/src/foss/res/values-af-rZA/strings.xml (100%) rename {app => app-common}/src/foss/res/values-am/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ar/strings.xml (100%) rename {app => app-common}/src/foss/res/values-az/strings.xml (100%) rename {app => app-common}/src/foss/res/values-be/strings.xml (100%) rename {app => app-common}/src/foss/res/values-bg/strings.xml (100%) rename {app => app-common}/src/foss/res/values-bn-rBD/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ca/strings.xml (100%) rename {app => app-common}/src/foss/res/values-cs/strings.xml (100%) rename {app => app-common}/src/foss/res/values-da/strings.xml (100%) rename {app => app-common}/src/foss/res/values-de/strings.xml (100%) rename {app => app-common}/src/foss/res/values-el/strings.xml (100%) rename {app => app-common}/src/foss/res/values-es-rAR/strings.xml (100%) rename {app => app-common}/src/foss/res/values-es-rMX/strings.xml (100%) rename {app => app-common}/src/foss/res/values-es/strings.xml (100%) rename {app => app-common}/src/foss/res/values-et-rEE/strings.xml (100%) rename {app => app-common}/src/foss/res/values-eu-rES/strings.xml (100%) rename {app => app-common}/src/foss/res/values-fa/strings.xml (100%) rename {app => app-common}/src/foss/res/values-fi/strings.xml (100%) rename {app => app-common}/src/foss/res/values-fil/strings.xml (100%) rename {app => app-common}/src/foss/res/values-fr/strings.xml (100%) rename {app => app-common}/src/foss/res/values-gl-rES/strings.xml (100%) rename {app => app-common}/src/foss/res/values-hi-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-hr/strings.xml (100%) rename {app => app-common}/src/foss/res/values-hu/strings.xml (100%) rename {app => app-common}/src/foss/res/values-hy-rAM/strings.xml (100%) rename {app => app-common}/src/foss/res/values-in/strings.xml (100%) rename {app => app-common}/src/foss/res/values-is/strings.xml (100%) rename {app => app-common}/src/foss/res/values-it/strings.xml (100%) rename {app => app-common}/src/foss/res/values-iw/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ja/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ka-rGE/strings.xml (100%) rename {app => app-common}/src/foss/res/values-km-rKH/strings.xml (100%) rename {app => app-common}/src/foss/res/values-kmr-rTR/strings.xml (100%) rename {app => app-common}/src/foss/res/values-kn-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ko/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ky-rKG/strings.xml (100%) rename {app => app-common}/src/foss/res/values-lo-rLA/strings.xml (100%) rename {app => app-common}/src/foss/res/values-lt/strings.xml (100%) rename {app => app-common}/src/foss/res/values-lv/strings.xml (100%) rename {app => app-common}/src/foss/res/values-mk-rMK/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ml-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-mn-rMN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-mr-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ms/strings.xml (100%) rename {app => app-common}/src/foss/res/values-my-rMM/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ne-rNP/strings.xml (100%) rename {app => app-common}/src/foss/res/values-nl/strings.xml (100%) rename {app => app-common}/src/foss/res/values-no/strings.xml (100%) rename {app => app-common}/src/foss/res/values-pl/strings.xml (100%) rename {app => app-common}/src/foss/res/values-pt-rBR/strings.xml (100%) rename {app => app-common}/src/foss/res/values-pt/strings.xml (100%) rename {app => app-common}/src/foss/res/values-rm/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ro/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ru/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sc-rIT/strings.xml (100%) rename {app => app-common}/src/foss/res/values-si-rLK/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sk/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sl/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sq-rAL/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sr/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sv/strings.xml (100%) rename {app => app-common}/src/foss/res/values-sw/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ta-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-te-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-th/strings.xml (100%) rename {app => app-common}/src/foss/res/values-tr/strings.xml (100%) rename {app => app-common}/src/foss/res/values-uk/strings.xml (100%) rename {app => app-common}/src/foss/res/values-ur-rIN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-uz/strings.xml (100%) rename {app => app-common}/src/foss/res/values-vi/strings.xml (100%) rename {app => app-common}/src/foss/res/values-zh-rCN/strings.xml (100%) rename {app => app-common}/src/foss/res/values-zh-rHK/strings.xml (100%) rename {app => app-common}/src/foss/res/values-zh-rTW/strings.xml (100%) rename {app => app-common}/src/foss/res/values-zu/strings.xml (100%) rename {app => app-common}/src/foss/res/values/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-af-rZA/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-am/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ar/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-az/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-be/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-bg/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-bn-rBD/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ca/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-cs/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-da/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-de/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-el/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-es-rAR/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-es-rMX/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-es/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-et-rEE/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-eu-rES/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-fa/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-fi/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-fil/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-fr/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-gl-rES/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-hi-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-hr/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-hu/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-hy-rAM/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-in/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-is/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-it/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-iw/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ja/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ka-rGE/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-km-rKH/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-kmr-rTR/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-kn-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ko/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ky-rKG/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-lo-rLA/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-lt/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-lv/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-mk-rMK/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ml-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-mn-rMN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-mr-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ms/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-my-rMM/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ne-rNP/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-nl/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-no/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-pl/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-pt-rBR/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-pt/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-rm/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ro/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ru/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sc-rIT/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-si-rLK/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sk/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sl/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sq-rAL/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sr/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sv/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-sw/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ta-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-te-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-th/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-tr/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-uk/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-ur-rIN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-uz/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-vi/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-zh-rCN/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-zh-rHK/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-zh-rTW/strings.xml (100%) rename {app => app-common}/src/gplay/res/values-zu/strings.xml (100%) rename {app => app-common}/src/gplay/res/values/strings.xml (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/ColorExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/ContextExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/MediaControl.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/error/ErrorDialog.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/error/ErrorEventSource.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/error/LocalizedError.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/error/ThrowableExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/flow/DynamicStateFlow.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/flow/DynamicStateFlowExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/flow/FlowCombineExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt (97%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/BaseAdapter.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/BindableVH.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/DataAdapter.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/ListItem.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/RecyclerViewExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/differ/AsyncDiffer.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/differ/AsyncDifferExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/differ/DifferItem.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/differ/HasAsyncDiffer.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/ModularAdapter.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/mods/ClickMod.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/mods/DataBinderMod.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/mods/SimpleVHCreatorMod.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/mods/StableIdMod.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/lists/modular/mods/TypedVHCreatorMod.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/livedata/SingleLiveEvent.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/permissions/Permission.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/uix/ViewModel1.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/uix/ViewModel2.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/uix/ViewModelLazyKeyed.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/common/viewbinding/ViewBindingExtensions.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/main/core/MonitorMode.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/main/core/PermissionTool.kt (96%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/MonitorComponent.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/MonitorCoroutineScope.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/MonitorModule.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/MonitorScope.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt (100%) rename {app => app-common}/src/main/java/eu/darken/capod/monitor/core/PodSorter.kt (100%) rename {app/src/main/java/eu/darken/capod/reaction => app-common/src/main/java/eu/darken/capod/reaction/core}/ReactionHub.kt (77%) rename {app/src/main/java/eu/darken/capod/reaction/settings => app-common/src/main/java/eu/darken/capod/reaction/core}/ReactionSettings.kt (93%) rename {app/src/main/java/eu/darken/capod/reaction => app-common/src/main/java/eu/darken/capod/reaction/core}/autoconnect/AutoConnect.kt (97%) rename {app/src/main/java/eu/darken/capod/reaction => app-common/src/main/java/eu/darken/capod/reaction/core}/autoconnect/AutoConnectCondition.kt (93%) rename {app/src/main/java/eu/darken/capod/reaction => app-common/src/main/java/eu/darken/capod/reaction/core}/playpause/PlayPause.kt (97%) rename {app/src/main/java/eu/darken/capod/reaction => app-common/src/main/java/eu/darken/capod/reaction/core}/popup/PopUpReaction.kt (53%) rename {app => app-common}/src/main/res/drawable/ic_baseline_grid_view_24.xml (100%) rename {app => app-common}/src/main/res/drawable/ic_baseline_settings_input_antenna_24.xml (100%) rename {app => app-common}/src/main/res/values-af-rZA/strings.xml (100%) rename {app => app-common}/src/main/res/values-am/strings.xml (100%) rename {app => app-common}/src/main/res/values-ar/strings.xml (100%) rename {app => app-common}/src/main/res/values-az/strings.xml (100%) rename {app => app-common}/src/main/res/values-be/strings.xml (100%) rename {app => app-common}/src/main/res/values-bg/strings.xml (100%) rename {app => app-common}/src/main/res/values-bn-rBD/strings.xml (100%) rename {app => app-common}/src/main/res/values-ca/strings.xml (100%) rename {app => app-common}/src/main/res/values-cs/strings.xml (100%) rename {app => app-common}/src/main/res/values-da/strings.xml (100%) rename {app => app-common}/src/main/res/values-de/strings.xml (100%) rename {app => app-common}/src/main/res/values-el/strings.xml (100%) rename {app => app-common}/src/main/res/values-es-rAR/strings.xml (100%) rename {app => app-common}/src/main/res/values-es-rMX/strings.xml (100%) rename {app => app-common}/src/main/res/values-es/strings.xml (100%) rename {app => app-common}/src/main/res/values-et-rEE/strings.xml (100%) rename {app => app-common}/src/main/res/values-eu-rES/strings.xml (100%) rename {app => app-common}/src/main/res/values-fa/strings.xml (100%) rename {app => app-common}/src/main/res/values-fi/strings.xml (100%) rename {app => app-common}/src/main/res/values-fil/strings.xml (100%) rename {app => app-common}/src/main/res/values-fr/strings.xml (100%) rename {app => app-common}/src/main/res/values-gl-rES/strings.xml (100%) rename {app => app-common}/src/main/res/values-hi-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-hr/strings.xml (100%) rename {app => app-common}/src/main/res/values-hu/strings.xml (100%) rename {app => app-common}/src/main/res/values-hy-rAM/strings.xml (100%) rename {app => app-common}/src/main/res/values-in/strings.xml (100%) rename {app => app-common}/src/main/res/values-is/strings.xml (100%) rename {app => app-common}/src/main/res/values-it/strings.xml (100%) rename {app => app-common}/src/main/res/values-iw/strings.xml (100%) rename {app => app-common}/src/main/res/values-ja/strings.xml (100%) rename {app => app-common}/src/main/res/values-ka-rGE/strings.xml (100%) rename {app => app-common}/src/main/res/values-km-rKH/strings.xml (100%) rename {app => app-common}/src/main/res/values-kmr-rTR/strings.xml (100%) rename {app => app-common}/src/main/res/values-kn-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-ko/strings.xml (100%) rename {app => app-common}/src/main/res/values-ky-rKG/strings.xml (100%) rename {app => app-common}/src/main/res/values-lo-rLA/strings.xml (100%) rename {app => app-common}/src/main/res/values-lt/strings.xml (100%) rename {app => app-common}/src/main/res/values-lv/strings.xml (100%) rename {app => app-common}/src/main/res/values-mk-rMK/strings.xml (100%) rename {app => app-common}/src/main/res/values-ml-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-mn-rMN/strings.xml (100%) rename {app => app-common}/src/main/res/values-mr-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-ms/strings.xml (100%) rename {app => app-common}/src/main/res/values-my-rMM/strings.xml (100%) rename {app => app-common}/src/main/res/values-ne-rNP/strings.xml (100%) rename {app => app-common}/src/main/res/values-nl/strings.xml (100%) rename {app => app-common}/src/main/res/values-no/strings.xml (100%) rename {app => app-common}/src/main/res/values-pl/strings.xml (100%) rename {app => app-common}/src/main/res/values-pt-rBR/strings.xml (100%) rename {app => app-common}/src/main/res/values-pt/strings.xml (100%) rename {app => app-common}/src/main/res/values-rm/strings.xml (100%) rename {app => app-common}/src/main/res/values-ro/strings.xml (100%) rename {app => app-common}/src/main/res/values-ru/strings.xml (100%) rename {app => app-common}/src/main/res/values-sc-rIT/strings.xml (100%) rename {app => app-common}/src/main/res/values-si-rLK/strings.xml (100%) rename {app => app-common}/src/main/res/values-sk/strings.xml (100%) rename {app => app-common}/src/main/res/values-sl/strings.xml (100%) rename {app => app-common}/src/main/res/values-sq-rAL/strings.xml (100%) rename {app => app-common}/src/main/res/values-sr/strings.xml (100%) rename {app => app-common}/src/main/res/values-sv/strings.xml (100%) rename {app => app-common}/src/main/res/values-sw/strings.xml (100%) rename {app => app-common}/src/main/res/values-ta-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-te-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-th/strings.xml (100%) rename {app => app-common}/src/main/res/values-tr/strings.xml (100%) rename {app => app-common}/src/main/res/values-uk/strings.xml (100%) rename {app => app-common}/src/main/res/values-ur-rIN/strings.xml (100%) rename {app => app-common}/src/main/res/values-uz/strings.xml (100%) rename {app => app-common}/src/main/res/values-vi/strings.xml (100%) rename {app => app-common}/src/main/res/values-zh-rCN/strings.xml (100%) rename {app => app-common}/src/main/res/values-zh-rHK/strings.xml (100%) rename {app => app-common}/src/main/res/values-zh-rTW/strings.xml (100%) rename {app => app-common}/src/main/res/values-zu/strings.xml (100%) create mode 100644 app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivityVM.kt create mode 100644 app-wear/src/main/res/layout/main_fragment.xml create mode 100644 app-wear/src/main/res/layout/overview_bluetooth_disabled_item.xml create mode 100644 app-wear/src/main/res/layout/overview_nomaindevice_item.xml create mode 100644 app-wear/src/main/res/layout/overview_permission_item.xml create mode 100644 app-wear/src/main/res/layout/overview_pods_dual_item.xml create mode 100644 app-wear/src/main/res/layout/overview_pods_single_item.xml create mode 100644 app-wear/src/main/res/layout/overview_pods_unknown_item.xml rename app/src/main/java/eu/darken/capod/reaction/{settings => }/ui/ReactionSettingsFragment.kt (95%) rename app/src/main/java/eu/darken/capod/reaction/{settings => }/ui/ReactionSettingsFragmentVM.kt (95%) rename app/src/main/java/eu/darken/capod/reaction/{popup/ui => ui/popup}/PopUpPodViewFactory.kt (98%) rename app/src/main/java/eu/darken/capod/reaction/{popup/ui => ui/popup}/PopUpWindow.kt (93%) delete mode 100644 app/src/main/res/values/strings.xml diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts index 80754bc9..e478826e 100644 --- a/app-common/build.gradle.kts +++ b/app-common/build.gradle.kts @@ -23,6 +23,10 @@ android { buildConfigField("String", "BUILDTIME", "\"${buildTime()}\"") } + buildFeatures { + viewBinding = true + } + compileOptions { isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_1_8 @@ -82,9 +86,13 @@ dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5") addBaseAndroid() + addBaseAndroidUi() addBaseKotlin() addDagger() addMoshi() + addBaseWorkManager() implementation("com.bugsnag:bugsnag-android:5.9.2") + + implementation("com.google.android.material:material:1.5.0-rc01") } \ No newline at end of file diff --git a/app/src/foss/java/eu/darken/capod/common/upgrade/UpgradeModule.kt b/app-common/src/foss/java/eu/darken/capod/common/upgrade/UpgradeModule.kt similarity index 100% rename from app/src/foss/java/eu/darken/capod/common/upgrade/UpgradeModule.kt rename to app-common/src/foss/java/eu/darken/capod/common/upgrade/UpgradeModule.kt diff --git a/app/src/foss/java/eu/darken/capod/common/upgrade/core/FossCache.kt b/app-common/src/foss/java/eu/darken/capod/common/upgrade/core/FossCache.kt similarity index 100% rename from app/src/foss/java/eu/darken/capod/common/upgrade/core/FossCache.kt rename to app-common/src/foss/java/eu/darken/capod/common/upgrade/core/FossCache.kt diff --git a/app/src/foss/java/eu/darken/capod/common/upgrade/core/FossUpgrade.kt b/app-common/src/foss/java/eu/darken/capod/common/upgrade/core/FossUpgrade.kt similarity index 100% rename from app/src/foss/java/eu/darken/capod/common/upgrade/core/FossUpgrade.kt rename to app-common/src/foss/java/eu/darken/capod/common/upgrade/core/FossUpgrade.kt diff --git a/app/src/foss/java/eu/darken/capod/common/upgrade/core/UpgradeControlFoss.kt b/app-common/src/foss/java/eu/darken/capod/common/upgrade/core/UpgradeControlFoss.kt similarity index 100% rename from app/src/foss/java/eu/darken/capod/common/upgrade/core/UpgradeControlFoss.kt rename to app-common/src/foss/java/eu/darken/capod/common/upgrade/core/UpgradeControlFoss.kt diff --git a/app/src/foss/res/values-af-rZA/strings.xml b/app-common/src/foss/res/values-af-rZA/strings.xml similarity index 100% rename from app/src/foss/res/values-af-rZA/strings.xml rename to app-common/src/foss/res/values-af-rZA/strings.xml diff --git a/app/src/foss/res/values-am/strings.xml b/app-common/src/foss/res/values-am/strings.xml similarity index 100% rename from app/src/foss/res/values-am/strings.xml rename to app-common/src/foss/res/values-am/strings.xml diff --git a/app/src/foss/res/values-ar/strings.xml b/app-common/src/foss/res/values-ar/strings.xml similarity index 100% rename from app/src/foss/res/values-ar/strings.xml rename to app-common/src/foss/res/values-ar/strings.xml diff --git a/app/src/foss/res/values-az/strings.xml b/app-common/src/foss/res/values-az/strings.xml similarity index 100% rename from app/src/foss/res/values-az/strings.xml rename to app-common/src/foss/res/values-az/strings.xml diff --git a/app/src/foss/res/values-be/strings.xml b/app-common/src/foss/res/values-be/strings.xml similarity index 100% rename from app/src/foss/res/values-be/strings.xml rename to app-common/src/foss/res/values-be/strings.xml diff --git a/app/src/foss/res/values-bg/strings.xml b/app-common/src/foss/res/values-bg/strings.xml similarity index 100% rename from app/src/foss/res/values-bg/strings.xml rename to app-common/src/foss/res/values-bg/strings.xml diff --git a/app/src/foss/res/values-bn-rBD/strings.xml b/app-common/src/foss/res/values-bn-rBD/strings.xml similarity index 100% rename from app/src/foss/res/values-bn-rBD/strings.xml rename to app-common/src/foss/res/values-bn-rBD/strings.xml diff --git a/app/src/foss/res/values-ca/strings.xml b/app-common/src/foss/res/values-ca/strings.xml similarity index 100% rename from app/src/foss/res/values-ca/strings.xml rename to app-common/src/foss/res/values-ca/strings.xml diff --git a/app/src/foss/res/values-cs/strings.xml b/app-common/src/foss/res/values-cs/strings.xml similarity index 100% rename from app/src/foss/res/values-cs/strings.xml rename to app-common/src/foss/res/values-cs/strings.xml diff --git a/app/src/foss/res/values-da/strings.xml b/app-common/src/foss/res/values-da/strings.xml similarity index 100% rename from app/src/foss/res/values-da/strings.xml rename to app-common/src/foss/res/values-da/strings.xml diff --git a/app/src/foss/res/values-de/strings.xml b/app-common/src/foss/res/values-de/strings.xml similarity index 100% rename from app/src/foss/res/values-de/strings.xml rename to app-common/src/foss/res/values-de/strings.xml diff --git a/app/src/foss/res/values-el/strings.xml b/app-common/src/foss/res/values-el/strings.xml similarity index 100% rename from app/src/foss/res/values-el/strings.xml rename to app-common/src/foss/res/values-el/strings.xml diff --git a/app/src/foss/res/values-es-rAR/strings.xml b/app-common/src/foss/res/values-es-rAR/strings.xml similarity index 100% rename from app/src/foss/res/values-es-rAR/strings.xml rename to app-common/src/foss/res/values-es-rAR/strings.xml diff --git a/app/src/foss/res/values-es-rMX/strings.xml b/app-common/src/foss/res/values-es-rMX/strings.xml similarity index 100% rename from app/src/foss/res/values-es-rMX/strings.xml rename to app-common/src/foss/res/values-es-rMX/strings.xml diff --git a/app/src/foss/res/values-es/strings.xml b/app-common/src/foss/res/values-es/strings.xml similarity index 100% rename from app/src/foss/res/values-es/strings.xml rename to app-common/src/foss/res/values-es/strings.xml diff --git a/app/src/foss/res/values-et-rEE/strings.xml b/app-common/src/foss/res/values-et-rEE/strings.xml similarity index 100% rename from app/src/foss/res/values-et-rEE/strings.xml rename to app-common/src/foss/res/values-et-rEE/strings.xml diff --git a/app/src/foss/res/values-eu-rES/strings.xml b/app-common/src/foss/res/values-eu-rES/strings.xml similarity index 100% rename from app/src/foss/res/values-eu-rES/strings.xml rename to app-common/src/foss/res/values-eu-rES/strings.xml diff --git a/app/src/foss/res/values-fa/strings.xml b/app-common/src/foss/res/values-fa/strings.xml similarity index 100% rename from app/src/foss/res/values-fa/strings.xml rename to app-common/src/foss/res/values-fa/strings.xml diff --git a/app/src/foss/res/values-fi/strings.xml b/app-common/src/foss/res/values-fi/strings.xml similarity index 100% rename from app/src/foss/res/values-fi/strings.xml rename to app-common/src/foss/res/values-fi/strings.xml diff --git a/app/src/foss/res/values-fil/strings.xml b/app-common/src/foss/res/values-fil/strings.xml similarity index 100% rename from app/src/foss/res/values-fil/strings.xml rename to app-common/src/foss/res/values-fil/strings.xml diff --git a/app/src/foss/res/values-fr/strings.xml b/app-common/src/foss/res/values-fr/strings.xml similarity index 100% rename from app/src/foss/res/values-fr/strings.xml rename to app-common/src/foss/res/values-fr/strings.xml diff --git a/app/src/foss/res/values-gl-rES/strings.xml b/app-common/src/foss/res/values-gl-rES/strings.xml similarity index 100% rename from app/src/foss/res/values-gl-rES/strings.xml rename to app-common/src/foss/res/values-gl-rES/strings.xml diff --git a/app/src/foss/res/values-hi-rIN/strings.xml b/app-common/src/foss/res/values-hi-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-hi-rIN/strings.xml rename to app-common/src/foss/res/values-hi-rIN/strings.xml diff --git a/app/src/foss/res/values-hr/strings.xml b/app-common/src/foss/res/values-hr/strings.xml similarity index 100% rename from app/src/foss/res/values-hr/strings.xml rename to app-common/src/foss/res/values-hr/strings.xml diff --git a/app/src/foss/res/values-hu/strings.xml b/app-common/src/foss/res/values-hu/strings.xml similarity index 100% rename from app/src/foss/res/values-hu/strings.xml rename to app-common/src/foss/res/values-hu/strings.xml diff --git a/app/src/foss/res/values-hy-rAM/strings.xml b/app-common/src/foss/res/values-hy-rAM/strings.xml similarity index 100% rename from app/src/foss/res/values-hy-rAM/strings.xml rename to app-common/src/foss/res/values-hy-rAM/strings.xml diff --git a/app/src/foss/res/values-in/strings.xml b/app-common/src/foss/res/values-in/strings.xml similarity index 100% rename from app/src/foss/res/values-in/strings.xml rename to app-common/src/foss/res/values-in/strings.xml diff --git a/app/src/foss/res/values-is/strings.xml b/app-common/src/foss/res/values-is/strings.xml similarity index 100% rename from app/src/foss/res/values-is/strings.xml rename to app-common/src/foss/res/values-is/strings.xml diff --git a/app/src/foss/res/values-it/strings.xml b/app-common/src/foss/res/values-it/strings.xml similarity index 100% rename from app/src/foss/res/values-it/strings.xml rename to app-common/src/foss/res/values-it/strings.xml diff --git a/app/src/foss/res/values-iw/strings.xml b/app-common/src/foss/res/values-iw/strings.xml similarity index 100% rename from app/src/foss/res/values-iw/strings.xml rename to app-common/src/foss/res/values-iw/strings.xml diff --git a/app/src/foss/res/values-ja/strings.xml b/app-common/src/foss/res/values-ja/strings.xml similarity index 100% rename from app/src/foss/res/values-ja/strings.xml rename to app-common/src/foss/res/values-ja/strings.xml diff --git a/app/src/foss/res/values-ka-rGE/strings.xml b/app-common/src/foss/res/values-ka-rGE/strings.xml similarity index 100% rename from app/src/foss/res/values-ka-rGE/strings.xml rename to app-common/src/foss/res/values-ka-rGE/strings.xml diff --git a/app/src/foss/res/values-km-rKH/strings.xml b/app-common/src/foss/res/values-km-rKH/strings.xml similarity index 100% rename from app/src/foss/res/values-km-rKH/strings.xml rename to app-common/src/foss/res/values-km-rKH/strings.xml diff --git a/app/src/foss/res/values-kmr-rTR/strings.xml b/app-common/src/foss/res/values-kmr-rTR/strings.xml similarity index 100% rename from app/src/foss/res/values-kmr-rTR/strings.xml rename to app-common/src/foss/res/values-kmr-rTR/strings.xml diff --git a/app/src/foss/res/values-kn-rIN/strings.xml b/app-common/src/foss/res/values-kn-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-kn-rIN/strings.xml rename to app-common/src/foss/res/values-kn-rIN/strings.xml diff --git a/app/src/foss/res/values-ko/strings.xml b/app-common/src/foss/res/values-ko/strings.xml similarity index 100% rename from app/src/foss/res/values-ko/strings.xml rename to app-common/src/foss/res/values-ko/strings.xml diff --git a/app/src/foss/res/values-ky-rKG/strings.xml b/app-common/src/foss/res/values-ky-rKG/strings.xml similarity index 100% rename from app/src/foss/res/values-ky-rKG/strings.xml rename to app-common/src/foss/res/values-ky-rKG/strings.xml diff --git a/app/src/foss/res/values-lo-rLA/strings.xml b/app-common/src/foss/res/values-lo-rLA/strings.xml similarity index 100% rename from app/src/foss/res/values-lo-rLA/strings.xml rename to app-common/src/foss/res/values-lo-rLA/strings.xml diff --git a/app/src/foss/res/values-lt/strings.xml b/app-common/src/foss/res/values-lt/strings.xml similarity index 100% rename from app/src/foss/res/values-lt/strings.xml rename to app-common/src/foss/res/values-lt/strings.xml diff --git a/app/src/foss/res/values-lv/strings.xml b/app-common/src/foss/res/values-lv/strings.xml similarity index 100% rename from app/src/foss/res/values-lv/strings.xml rename to app-common/src/foss/res/values-lv/strings.xml diff --git a/app/src/foss/res/values-mk-rMK/strings.xml b/app-common/src/foss/res/values-mk-rMK/strings.xml similarity index 100% rename from app/src/foss/res/values-mk-rMK/strings.xml rename to app-common/src/foss/res/values-mk-rMK/strings.xml diff --git a/app/src/foss/res/values-ml-rIN/strings.xml b/app-common/src/foss/res/values-ml-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-ml-rIN/strings.xml rename to app-common/src/foss/res/values-ml-rIN/strings.xml diff --git a/app/src/foss/res/values-mn-rMN/strings.xml b/app-common/src/foss/res/values-mn-rMN/strings.xml similarity index 100% rename from app/src/foss/res/values-mn-rMN/strings.xml rename to app-common/src/foss/res/values-mn-rMN/strings.xml diff --git a/app/src/foss/res/values-mr-rIN/strings.xml b/app-common/src/foss/res/values-mr-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-mr-rIN/strings.xml rename to app-common/src/foss/res/values-mr-rIN/strings.xml diff --git a/app/src/foss/res/values-ms/strings.xml b/app-common/src/foss/res/values-ms/strings.xml similarity index 100% rename from app/src/foss/res/values-ms/strings.xml rename to app-common/src/foss/res/values-ms/strings.xml diff --git a/app/src/foss/res/values-my-rMM/strings.xml b/app-common/src/foss/res/values-my-rMM/strings.xml similarity index 100% rename from app/src/foss/res/values-my-rMM/strings.xml rename to app-common/src/foss/res/values-my-rMM/strings.xml diff --git a/app/src/foss/res/values-ne-rNP/strings.xml b/app-common/src/foss/res/values-ne-rNP/strings.xml similarity index 100% rename from app/src/foss/res/values-ne-rNP/strings.xml rename to app-common/src/foss/res/values-ne-rNP/strings.xml diff --git a/app/src/foss/res/values-nl/strings.xml b/app-common/src/foss/res/values-nl/strings.xml similarity index 100% rename from app/src/foss/res/values-nl/strings.xml rename to app-common/src/foss/res/values-nl/strings.xml diff --git a/app/src/foss/res/values-no/strings.xml b/app-common/src/foss/res/values-no/strings.xml similarity index 100% rename from app/src/foss/res/values-no/strings.xml rename to app-common/src/foss/res/values-no/strings.xml diff --git a/app/src/foss/res/values-pl/strings.xml b/app-common/src/foss/res/values-pl/strings.xml similarity index 100% rename from app/src/foss/res/values-pl/strings.xml rename to app-common/src/foss/res/values-pl/strings.xml diff --git a/app/src/foss/res/values-pt-rBR/strings.xml b/app-common/src/foss/res/values-pt-rBR/strings.xml similarity index 100% rename from app/src/foss/res/values-pt-rBR/strings.xml rename to app-common/src/foss/res/values-pt-rBR/strings.xml diff --git a/app/src/foss/res/values-pt/strings.xml b/app-common/src/foss/res/values-pt/strings.xml similarity index 100% rename from app/src/foss/res/values-pt/strings.xml rename to app-common/src/foss/res/values-pt/strings.xml diff --git a/app/src/foss/res/values-rm/strings.xml b/app-common/src/foss/res/values-rm/strings.xml similarity index 100% rename from app/src/foss/res/values-rm/strings.xml rename to app-common/src/foss/res/values-rm/strings.xml diff --git a/app/src/foss/res/values-ro/strings.xml b/app-common/src/foss/res/values-ro/strings.xml similarity index 100% rename from app/src/foss/res/values-ro/strings.xml rename to app-common/src/foss/res/values-ro/strings.xml diff --git a/app/src/foss/res/values-ru/strings.xml b/app-common/src/foss/res/values-ru/strings.xml similarity index 100% rename from app/src/foss/res/values-ru/strings.xml rename to app-common/src/foss/res/values-ru/strings.xml diff --git a/app/src/foss/res/values-sc-rIT/strings.xml b/app-common/src/foss/res/values-sc-rIT/strings.xml similarity index 100% rename from app/src/foss/res/values-sc-rIT/strings.xml rename to app-common/src/foss/res/values-sc-rIT/strings.xml diff --git a/app/src/foss/res/values-si-rLK/strings.xml b/app-common/src/foss/res/values-si-rLK/strings.xml similarity index 100% rename from app/src/foss/res/values-si-rLK/strings.xml rename to app-common/src/foss/res/values-si-rLK/strings.xml diff --git a/app/src/foss/res/values-sk/strings.xml b/app-common/src/foss/res/values-sk/strings.xml similarity index 100% rename from app/src/foss/res/values-sk/strings.xml rename to app-common/src/foss/res/values-sk/strings.xml diff --git a/app/src/foss/res/values-sl/strings.xml b/app-common/src/foss/res/values-sl/strings.xml similarity index 100% rename from app/src/foss/res/values-sl/strings.xml rename to app-common/src/foss/res/values-sl/strings.xml diff --git a/app/src/foss/res/values-sq-rAL/strings.xml b/app-common/src/foss/res/values-sq-rAL/strings.xml similarity index 100% rename from app/src/foss/res/values-sq-rAL/strings.xml rename to app-common/src/foss/res/values-sq-rAL/strings.xml diff --git a/app/src/foss/res/values-sr/strings.xml b/app-common/src/foss/res/values-sr/strings.xml similarity index 100% rename from app/src/foss/res/values-sr/strings.xml rename to app-common/src/foss/res/values-sr/strings.xml diff --git a/app/src/foss/res/values-sv/strings.xml b/app-common/src/foss/res/values-sv/strings.xml similarity index 100% rename from app/src/foss/res/values-sv/strings.xml rename to app-common/src/foss/res/values-sv/strings.xml diff --git a/app/src/foss/res/values-sw/strings.xml b/app-common/src/foss/res/values-sw/strings.xml similarity index 100% rename from app/src/foss/res/values-sw/strings.xml rename to app-common/src/foss/res/values-sw/strings.xml diff --git a/app/src/foss/res/values-ta-rIN/strings.xml b/app-common/src/foss/res/values-ta-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-ta-rIN/strings.xml rename to app-common/src/foss/res/values-ta-rIN/strings.xml diff --git a/app/src/foss/res/values-te-rIN/strings.xml b/app-common/src/foss/res/values-te-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-te-rIN/strings.xml rename to app-common/src/foss/res/values-te-rIN/strings.xml diff --git a/app/src/foss/res/values-th/strings.xml b/app-common/src/foss/res/values-th/strings.xml similarity index 100% rename from app/src/foss/res/values-th/strings.xml rename to app-common/src/foss/res/values-th/strings.xml diff --git a/app/src/foss/res/values-tr/strings.xml b/app-common/src/foss/res/values-tr/strings.xml similarity index 100% rename from app/src/foss/res/values-tr/strings.xml rename to app-common/src/foss/res/values-tr/strings.xml diff --git a/app/src/foss/res/values-uk/strings.xml b/app-common/src/foss/res/values-uk/strings.xml similarity index 100% rename from app/src/foss/res/values-uk/strings.xml rename to app-common/src/foss/res/values-uk/strings.xml diff --git a/app/src/foss/res/values-ur-rIN/strings.xml b/app-common/src/foss/res/values-ur-rIN/strings.xml similarity index 100% rename from app/src/foss/res/values-ur-rIN/strings.xml rename to app-common/src/foss/res/values-ur-rIN/strings.xml diff --git a/app/src/foss/res/values-uz/strings.xml b/app-common/src/foss/res/values-uz/strings.xml similarity index 100% rename from app/src/foss/res/values-uz/strings.xml rename to app-common/src/foss/res/values-uz/strings.xml diff --git a/app/src/foss/res/values-vi/strings.xml b/app-common/src/foss/res/values-vi/strings.xml similarity index 100% rename from app/src/foss/res/values-vi/strings.xml rename to app-common/src/foss/res/values-vi/strings.xml diff --git a/app/src/foss/res/values-zh-rCN/strings.xml b/app-common/src/foss/res/values-zh-rCN/strings.xml similarity index 100% rename from app/src/foss/res/values-zh-rCN/strings.xml rename to app-common/src/foss/res/values-zh-rCN/strings.xml diff --git a/app/src/foss/res/values-zh-rHK/strings.xml b/app-common/src/foss/res/values-zh-rHK/strings.xml similarity index 100% rename from app/src/foss/res/values-zh-rHK/strings.xml rename to app-common/src/foss/res/values-zh-rHK/strings.xml diff --git a/app/src/foss/res/values-zh-rTW/strings.xml b/app-common/src/foss/res/values-zh-rTW/strings.xml similarity index 100% rename from app/src/foss/res/values-zh-rTW/strings.xml rename to app-common/src/foss/res/values-zh-rTW/strings.xml diff --git a/app/src/foss/res/values-zu/strings.xml b/app-common/src/foss/res/values-zu/strings.xml similarity index 100% rename from app/src/foss/res/values-zu/strings.xml rename to app-common/src/foss/res/values-zu/strings.xml diff --git a/app/src/foss/res/values/strings.xml b/app-common/src/foss/res/values/strings.xml similarity index 100% rename from app/src/foss/res/values/strings.xml rename to app-common/src/foss/res/values/strings.xml diff --git a/app/src/gplay/res/values-af-rZA/strings.xml b/app-common/src/gplay/res/values-af-rZA/strings.xml similarity index 100% rename from app/src/gplay/res/values-af-rZA/strings.xml rename to app-common/src/gplay/res/values-af-rZA/strings.xml diff --git a/app/src/gplay/res/values-am/strings.xml b/app-common/src/gplay/res/values-am/strings.xml similarity index 100% rename from app/src/gplay/res/values-am/strings.xml rename to app-common/src/gplay/res/values-am/strings.xml diff --git a/app/src/gplay/res/values-ar/strings.xml b/app-common/src/gplay/res/values-ar/strings.xml similarity index 100% rename from app/src/gplay/res/values-ar/strings.xml rename to app-common/src/gplay/res/values-ar/strings.xml diff --git a/app/src/gplay/res/values-az/strings.xml b/app-common/src/gplay/res/values-az/strings.xml similarity index 100% rename from app/src/gplay/res/values-az/strings.xml rename to app-common/src/gplay/res/values-az/strings.xml diff --git a/app/src/gplay/res/values-be/strings.xml b/app-common/src/gplay/res/values-be/strings.xml similarity index 100% rename from app/src/gplay/res/values-be/strings.xml rename to app-common/src/gplay/res/values-be/strings.xml diff --git a/app/src/gplay/res/values-bg/strings.xml b/app-common/src/gplay/res/values-bg/strings.xml similarity index 100% rename from app/src/gplay/res/values-bg/strings.xml rename to app-common/src/gplay/res/values-bg/strings.xml diff --git a/app/src/gplay/res/values-bn-rBD/strings.xml b/app-common/src/gplay/res/values-bn-rBD/strings.xml similarity index 100% rename from app/src/gplay/res/values-bn-rBD/strings.xml rename to app-common/src/gplay/res/values-bn-rBD/strings.xml diff --git a/app/src/gplay/res/values-ca/strings.xml b/app-common/src/gplay/res/values-ca/strings.xml similarity index 100% rename from app/src/gplay/res/values-ca/strings.xml rename to app-common/src/gplay/res/values-ca/strings.xml diff --git a/app/src/gplay/res/values-cs/strings.xml b/app-common/src/gplay/res/values-cs/strings.xml similarity index 100% rename from app/src/gplay/res/values-cs/strings.xml rename to app-common/src/gplay/res/values-cs/strings.xml diff --git a/app/src/gplay/res/values-da/strings.xml b/app-common/src/gplay/res/values-da/strings.xml similarity index 100% rename from app/src/gplay/res/values-da/strings.xml rename to app-common/src/gplay/res/values-da/strings.xml diff --git a/app/src/gplay/res/values-de/strings.xml b/app-common/src/gplay/res/values-de/strings.xml similarity index 100% rename from app/src/gplay/res/values-de/strings.xml rename to app-common/src/gplay/res/values-de/strings.xml diff --git a/app/src/gplay/res/values-el/strings.xml b/app-common/src/gplay/res/values-el/strings.xml similarity index 100% rename from app/src/gplay/res/values-el/strings.xml rename to app-common/src/gplay/res/values-el/strings.xml diff --git a/app/src/gplay/res/values-es-rAR/strings.xml b/app-common/src/gplay/res/values-es-rAR/strings.xml similarity index 100% rename from app/src/gplay/res/values-es-rAR/strings.xml rename to app-common/src/gplay/res/values-es-rAR/strings.xml diff --git a/app/src/gplay/res/values-es-rMX/strings.xml b/app-common/src/gplay/res/values-es-rMX/strings.xml similarity index 100% rename from app/src/gplay/res/values-es-rMX/strings.xml rename to app-common/src/gplay/res/values-es-rMX/strings.xml diff --git a/app/src/gplay/res/values-es/strings.xml b/app-common/src/gplay/res/values-es/strings.xml similarity index 100% rename from app/src/gplay/res/values-es/strings.xml rename to app-common/src/gplay/res/values-es/strings.xml diff --git a/app/src/gplay/res/values-et-rEE/strings.xml b/app-common/src/gplay/res/values-et-rEE/strings.xml similarity index 100% rename from app/src/gplay/res/values-et-rEE/strings.xml rename to app-common/src/gplay/res/values-et-rEE/strings.xml diff --git a/app/src/gplay/res/values-eu-rES/strings.xml b/app-common/src/gplay/res/values-eu-rES/strings.xml similarity index 100% rename from app/src/gplay/res/values-eu-rES/strings.xml rename to app-common/src/gplay/res/values-eu-rES/strings.xml diff --git a/app/src/gplay/res/values-fa/strings.xml b/app-common/src/gplay/res/values-fa/strings.xml similarity index 100% rename from app/src/gplay/res/values-fa/strings.xml rename to app-common/src/gplay/res/values-fa/strings.xml diff --git a/app/src/gplay/res/values-fi/strings.xml b/app-common/src/gplay/res/values-fi/strings.xml similarity index 100% rename from app/src/gplay/res/values-fi/strings.xml rename to app-common/src/gplay/res/values-fi/strings.xml diff --git a/app/src/gplay/res/values-fil/strings.xml b/app-common/src/gplay/res/values-fil/strings.xml similarity index 100% rename from app/src/gplay/res/values-fil/strings.xml rename to app-common/src/gplay/res/values-fil/strings.xml diff --git a/app/src/gplay/res/values-fr/strings.xml b/app-common/src/gplay/res/values-fr/strings.xml similarity index 100% rename from app/src/gplay/res/values-fr/strings.xml rename to app-common/src/gplay/res/values-fr/strings.xml diff --git a/app/src/gplay/res/values-gl-rES/strings.xml b/app-common/src/gplay/res/values-gl-rES/strings.xml similarity index 100% rename from app/src/gplay/res/values-gl-rES/strings.xml rename to app-common/src/gplay/res/values-gl-rES/strings.xml diff --git a/app/src/gplay/res/values-hi-rIN/strings.xml b/app-common/src/gplay/res/values-hi-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-hi-rIN/strings.xml rename to app-common/src/gplay/res/values-hi-rIN/strings.xml diff --git a/app/src/gplay/res/values-hr/strings.xml b/app-common/src/gplay/res/values-hr/strings.xml similarity index 100% rename from app/src/gplay/res/values-hr/strings.xml rename to app-common/src/gplay/res/values-hr/strings.xml diff --git a/app/src/gplay/res/values-hu/strings.xml b/app-common/src/gplay/res/values-hu/strings.xml similarity index 100% rename from app/src/gplay/res/values-hu/strings.xml rename to app-common/src/gplay/res/values-hu/strings.xml diff --git a/app/src/gplay/res/values-hy-rAM/strings.xml b/app-common/src/gplay/res/values-hy-rAM/strings.xml similarity index 100% rename from app/src/gplay/res/values-hy-rAM/strings.xml rename to app-common/src/gplay/res/values-hy-rAM/strings.xml diff --git a/app/src/gplay/res/values-in/strings.xml b/app-common/src/gplay/res/values-in/strings.xml similarity index 100% rename from app/src/gplay/res/values-in/strings.xml rename to app-common/src/gplay/res/values-in/strings.xml diff --git a/app/src/gplay/res/values-is/strings.xml b/app-common/src/gplay/res/values-is/strings.xml similarity index 100% rename from app/src/gplay/res/values-is/strings.xml rename to app-common/src/gplay/res/values-is/strings.xml diff --git a/app/src/gplay/res/values-it/strings.xml b/app-common/src/gplay/res/values-it/strings.xml similarity index 100% rename from app/src/gplay/res/values-it/strings.xml rename to app-common/src/gplay/res/values-it/strings.xml diff --git a/app/src/gplay/res/values-iw/strings.xml b/app-common/src/gplay/res/values-iw/strings.xml similarity index 100% rename from app/src/gplay/res/values-iw/strings.xml rename to app-common/src/gplay/res/values-iw/strings.xml diff --git a/app/src/gplay/res/values-ja/strings.xml b/app-common/src/gplay/res/values-ja/strings.xml similarity index 100% rename from app/src/gplay/res/values-ja/strings.xml rename to app-common/src/gplay/res/values-ja/strings.xml diff --git a/app/src/gplay/res/values-ka-rGE/strings.xml b/app-common/src/gplay/res/values-ka-rGE/strings.xml similarity index 100% rename from app/src/gplay/res/values-ka-rGE/strings.xml rename to app-common/src/gplay/res/values-ka-rGE/strings.xml diff --git a/app/src/gplay/res/values-km-rKH/strings.xml b/app-common/src/gplay/res/values-km-rKH/strings.xml similarity index 100% rename from app/src/gplay/res/values-km-rKH/strings.xml rename to app-common/src/gplay/res/values-km-rKH/strings.xml diff --git a/app/src/gplay/res/values-kmr-rTR/strings.xml b/app-common/src/gplay/res/values-kmr-rTR/strings.xml similarity index 100% rename from app/src/gplay/res/values-kmr-rTR/strings.xml rename to app-common/src/gplay/res/values-kmr-rTR/strings.xml diff --git a/app/src/gplay/res/values-kn-rIN/strings.xml b/app-common/src/gplay/res/values-kn-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-kn-rIN/strings.xml rename to app-common/src/gplay/res/values-kn-rIN/strings.xml diff --git a/app/src/gplay/res/values-ko/strings.xml b/app-common/src/gplay/res/values-ko/strings.xml similarity index 100% rename from app/src/gplay/res/values-ko/strings.xml rename to app-common/src/gplay/res/values-ko/strings.xml diff --git a/app/src/gplay/res/values-ky-rKG/strings.xml b/app-common/src/gplay/res/values-ky-rKG/strings.xml similarity index 100% rename from app/src/gplay/res/values-ky-rKG/strings.xml rename to app-common/src/gplay/res/values-ky-rKG/strings.xml diff --git a/app/src/gplay/res/values-lo-rLA/strings.xml b/app-common/src/gplay/res/values-lo-rLA/strings.xml similarity index 100% rename from app/src/gplay/res/values-lo-rLA/strings.xml rename to app-common/src/gplay/res/values-lo-rLA/strings.xml diff --git a/app/src/gplay/res/values-lt/strings.xml b/app-common/src/gplay/res/values-lt/strings.xml similarity index 100% rename from app/src/gplay/res/values-lt/strings.xml rename to app-common/src/gplay/res/values-lt/strings.xml diff --git a/app/src/gplay/res/values-lv/strings.xml b/app-common/src/gplay/res/values-lv/strings.xml similarity index 100% rename from app/src/gplay/res/values-lv/strings.xml rename to app-common/src/gplay/res/values-lv/strings.xml diff --git a/app/src/gplay/res/values-mk-rMK/strings.xml b/app-common/src/gplay/res/values-mk-rMK/strings.xml similarity index 100% rename from app/src/gplay/res/values-mk-rMK/strings.xml rename to app-common/src/gplay/res/values-mk-rMK/strings.xml diff --git a/app/src/gplay/res/values-ml-rIN/strings.xml b/app-common/src/gplay/res/values-ml-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-ml-rIN/strings.xml rename to app-common/src/gplay/res/values-ml-rIN/strings.xml diff --git a/app/src/gplay/res/values-mn-rMN/strings.xml b/app-common/src/gplay/res/values-mn-rMN/strings.xml similarity index 100% rename from app/src/gplay/res/values-mn-rMN/strings.xml rename to app-common/src/gplay/res/values-mn-rMN/strings.xml diff --git a/app/src/gplay/res/values-mr-rIN/strings.xml b/app-common/src/gplay/res/values-mr-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-mr-rIN/strings.xml rename to app-common/src/gplay/res/values-mr-rIN/strings.xml diff --git a/app/src/gplay/res/values-ms/strings.xml b/app-common/src/gplay/res/values-ms/strings.xml similarity index 100% rename from app/src/gplay/res/values-ms/strings.xml rename to app-common/src/gplay/res/values-ms/strings.xml diff --git a/app/src/gplay/res/values-my-rMM/strings.xml b/app-common/src/gplay/res/values-my-rMM/strings.xml similarity index 100% rename from app/src/gplay/res/values-my-rMM/strings.xml rename to app-common/src/gplay/res/values-my-rMM/strings.xml diff --git a/app/src/gplay/res/values-ne-rNP/strings.xml b/app-common/src/gplay/res/values-ne-rNP/strings.xml similarity index 100% rename from app/src/gplay/res/values-ne-rNP/strings.xml rename to app-common/src/gplay/res/values-ne-rNP/strings.xml diff --git a/app/src/gplay/res/values-nl/strings.xml b/app-common/src/gplay/res/values-nl/strings.xml similarity index 100% rename from app/src/gplay/res/values-nl/strings.xml rename to app-common/src/gplay/res/values-nl/strings.xml diff --git a/app/src/gplay/res/values-no/strings.xml b/app-common/src/gplay/res/values-no/strings.xml similarity index 100% rename from app/src/gplay/res/values-no/strings.xml rename to app-common/src/gplay/res/values-no/strings.xml diff --git a/app/src/gplay/res/values-pl/strings.xml b/app-common/src/gplay/res/values-pl/strings.xml similarity index 100% rename from app/src/gplay/res/values-pl/strings.xml rename to app-common/src/gplay/res/values-pl/strings.xml diff --git a/app/src/gplay/res/values-pt-rBR/strings.xml b/app-common/src/gplay/res/values-pt-rBR/strings.xml similarity index 100% rename from app/src/gplay/res/values-pt-rBR/strings.xml rename to app-common/src/gplay/res/values-pt-rBR/strings.xml diff --git a/app/src/gplay/res/values-pt/strings.xml b/app-common/src/gplay/res/values-pt/strings.xml similarity index 100% rename from app/src/gplay/res/values-pt/strings.xml rename to app-common/src/gplay/res/values-pt/strings.xml diff --git a/app/src/gplay/res/values-rm/strings.xml b/app-common/src/gplay/res/values-rm/strings.xml similarity index 100% rename from app/src/gplay/res/values-rm/strings.xml rename to app-common/src/gplay/res/values-rm/strings.xml diff --git a/app/src/gplay/res/values-ro/strings.xml b/app-common/src/gplay/res/values-ro/strings.xml similarity index 100% rename from app/src/gplay/res/values-ro/strings.xml rename to app-common/src/gplay/res/values-ro/strings.xml diff --git a/app/src/gplay/res/values-ru/strings.xml b/app-common/src/gplay/res/values-ru/strings.xml similarity index 100% rename from app/src/gplay/res/values-ru/strings.xml rename to app-common/src/gplay/res/values-ru/strings.xml diff --git a/app/src/gplay/res/values-sc-rIT/strings.xml b/app-common/src/gplay/res/values-sc-rIT/strings.xml similarity index 100% rename from app/src/gplay/res/values-sc-rIT/strings.xml rename to app-common/src/gplay/res/values-sc-rIT/strings.xml diff --git a/app/src/gplay/res/values-si-rLK/strings.xml b/app-common/src/gplay/res/values-si-rLK/strings.xml similarity index 100% rename from app/src/gplay/res/values-si-rLK/strings.xml rename to app-common/src/gplay/res/values-si-rLK/strings.xml diff --git a/app/src/gplay/res/values-sk/strings.xml b/app-common/src/gplay/res/values-sk/strings.xml similarity index 100% rename from app/src/gplay/res/values-sk/strings.xml rename to app-common/src/gplay/res/values-sk/strings.xml diff --git a/app/src/gplay/res/values-sl/strings.xml b/app-common/src/gplay/res/values-sl/strings.xml similarity index 100% rename from app/src/gplay/res/values-sl/strings.xml rename to app-common/src/gplay/res/values-sl/strings.xml diff --git a/app/src/gplay/res/values-sq-rAL/strings.xml b/app-common/src/gplay/res/values-sq-rAL/strings.xml similarity index 100% rename from app/src/gplay/res/values-sq-rAL/strings.xml rename to app-common/src/gplay/res/values-sq-rAL/strings.xml diff --git a/app/src/gplay/res/values-sr/strings.xml b/app-common/src/gplay/res/values-sr/strings.xml similarity index 100% rename from app/src/gplay/res/values-sr/strings.xml rename to app-common/src/gplay/res/values-sr/strings.xml diff --git a/app/src/gplay/res/values-sv/strings.xml b/app-common/src/gplay/res/values-sv/strings.xml similarity index 100% rename from app/src/gplay/res/values-sv/strings.xml rename to app-common/src/gplay/res/values-sv/strings.xml diff --git a/app/src/gplay/res/values-sw/strings.xml b/app-common/src/gplay/res/values-sw/strings.xml similarity index 100% rename from app/src/gplay/res/values-sw/strings.xml rename to app-common/src/gplay/res/values-sw/strings.xml diff --git a/app/src/gplay/res/values-ta-rIN/strings.xml b/app-common/src/gplay/res/values-ta-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-ta-rIN/strings.xml rename to app-common/src/gplay/res/values-ta-rIN/strings.xml diff --git a/app/src/gplay/res/values-te-rIN/strings.xml b/app-common/src/gplay/res/values-te-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-te-rIN/strings.xml rename to app-common/src/gplay/res/values-te-rIN/strings.xml diff --git a/app/src/gplay/res/values-th/strings.xml b/app-common/src/gplay/res/values-th/strings.xml similarity index 100% rename from app/src/gplay/res/values-th/strings.xml rename to app-common/src/gplay/res/values-th/strings.xml diff --git a/app/src/gplay/res/values-tr/strings.xml b/app-common/src/gplay/res/values-tr/strings.xml similarity index 100% rename from app/src/gplay/res/values-tr/strings.xml rename to app-common/src/gplay/res/values-tr/strings.xml diff --git a/app/src/gplay/res/values-uk/strings.xml b/app-common/src/gplay/res/values-uk/strings.xml similarity index 100% rename from app/src/gplay/res/values-uk/strings.xml rename to app-common/src/gplay/res/values-uk/strings.xml diff --git a/app/src/gplay/res/values-ur-rIN/strings.xml b/app-common/src/gplay/res/values-ur-rIN/strings.xml similarity index 100% rename from app/src/gplay/res/values-ur-rIN/strings.xml rename to app-common/src/gplay/res/values-ur-rIN/strings.xml diff --git a/app/src/gplay/res/values-uz/strings.xml b/app-common/src/gplay/res/values-uz/strings.xml similarity index 100% rename from app/src/gplay/res/values-uz/strings.xml rename to app-common/src/gplay/res/values-uz/strings.xml diff --git a/app/src/gplay/res/values-vi/strings.xml b/app-common/src/gplay/res/values-vi/strings.xml similarity index 100% rename from app/src/gplay/res/values-vi/strings.xml rename to app-common/src/gplay/res/values-vi/strings.xml diff --git a/app/src/gplay/res/values-zh-rCN/strings.xml b/app-common/src/gplay/res/values-zh-rCN/strings.xml similarity index 100% rename from app/src/gplay/res/values-zh-rCN/strings.xml rename to app-common/src/gplay/res/values-zh-rCN/strings.xml diff --git a/app/src/gplay/res/values-zh-rHK/strings.xml b/app-common/src/gplay/res/values-zh-rHK/strings.xml similarity index 100% rename from app/src/gplay/res/values-zh-rHK/strings.xml rename to app-common/src/gplay/res/values-zh-rHK/strings.xml diff --git a/app/src/gplay/res/values-zh-rTW/strings.xml b/app-common/src/gplay/res/values-zh-rTW/strings.xml similarity index 100% rename from app/src/gplay/res/values-zh-rTW/strings.xml rename to app-common/src/gplay/res/values-zh-rTW/strings.xml diff --git a/app/src/gplay/res/values-zu/strings.xml b/app-common/src/gplay/res/values-zu/strings.xml similarity index 100% rename from app/src/gplay/res/values-zu/strings.xml rename to app-common/src/gplay/res/values-zu/strings.xml diff --git a/app/src/gplay/res/values/strings.xml b/app-common/src/gplay/res/values/strings.xml similarity index 100% rename from app/src/gplay/res/values/strings.xml rename to app-common/src/gplay/res/values/strings.xml diff --git a/app/src/main/java/eu/darken/capod/common/ColorExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/ColorExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/ColorExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/ColorExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/ContextExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/ContextExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/ContextExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/ContextExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/MediaControl.kt b/app-common/src/main/java/eu/darken/capod/common/MediaControl.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/MediaControl.kt rename to app-common/src/main/java/eu/darken/capod/common/MediaControl.kt diff --git a/app/src/main/java/eu/darken/capod/common/error/ErrorDialog.kt b/app-common/src/main/java/eu/darken/capod/common/error/ErrorDialog.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/error/ErrorDialog.kt rename to app-common/src/main/java/eu/darken/capod/common/error/ErrorDialog.kt diff --git a/app/src/main/java/eu/darken/capod/common/error/ErrorEventSource.kt b/app-common/src/main/java/eu/darken/capod/common/error/ErrorEventSource.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/error/ErrorEventSource.kt rename to app-common/src/main/java/eu/darken/capod/common/error/ErrorEventSource.kt diff --git a/app/src/main/java/eu/darken/capod/common/error/LocalizedError.kt b/app-common/src/main/java/eu/darken/capod/common/error/LocalizedError.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/error/LocalizedError.kt rename to app-common/src/main/java/eu/darken/capod/common/error/LocalizedError.kt diff --git a/app/src/main/java/eu/darken/capod/common/error/ThrowableExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/error/ThrowableExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/error/ThrowableExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/error/ThrowableExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/flow/DynamicStateFlow.kt b/app-common/src/main/java/eu/darken/capod/common/flow/DynamicStateFlow.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/flow/DynamicStateFlow.kt rename to app-common/src/main/java/eu/darken/capod/common/flow/DynamicStateFlow.kt diff --git a/app/src/main/java/eu/darken/capod/common/flow/DynamicStateFlowExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/flow/DynamicStateFlowExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/flow/DynamicStateFlowExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/flow/DynamicStateFlowExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/flow/FlowCombineExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/flow/FlowCombineExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/flow/FlowCombineExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/flow/FlowCombineExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt index ead424ae..d3e13ead 100644 --- a/app/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt +++ b/app-common/src/main/java/eu/darken/capod/common/flow/FlowExtensions.kt @@ -40,7 +40,7 @@ fun Flow.replayingShare(scope: CoroutineScope) = this.shareIn( started = SharingStarted.WhileSubscribed(replayExpiration = Duration.ZERO) ) -internal fun Flow.withPrevious(): Flow> = this +fun Flow.withPrevious(): Flow> = this .scan(Pair(null, null)) { previous, current -> Pair(previous.second, current) } .drop(1) .map { diff --git a/app/src/main/java/eu/darken/capod/common/lists/BaseAdapter.kt b/app-common/src/main/java/eu/darken/capod/common/lists/BaseAdapter.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/BaseAdapter.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/BaseAdapter.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/BindableVH.kt b/app-common/src/main/java/eu/darken/capod/common/lists/BindableVH.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/BindableVH.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/BindableVH.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/DataAdapter.kt b/app-common/src/main/java/eu/darken/capod/common/lists/DataAdapter.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/DataAdapter.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/DataAdapter.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/ListItem.kt b/app-common/src/main/java/eu/darken/capod/common/lists/ListItem.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/ListItem.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/ListItem.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/RecyclerViewExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/lists/RecyclerViewExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/RecyclerViewExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/RecyclerViewExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/differ/AsyncDiffer.kt b/app-common/src/main/java/eu/darken/capod/common/lists/differ/AsyncDiffer.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/differ/AsyncDiffer.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/differ/AsyncDiffer.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/differ/AsyncDifferExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/lists/differ/AsyncDifferExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/differ/AsyncDifferExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/differ/AsyncDifferExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/differ/DifferItem.kt b/app-common/src/main/java/eu/darken/capod/common/lists/differ/DifferItem.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/differ/DifferItem.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/differ/DifferItem.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/differ/HasAsyncDiffer.kt b/app-common/src/main/java/eu/darken/capod/common/lists/differ/HasAsyncDiffer.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/differ/HasAsyncDiffer.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/differ/HasAsyncDiffer.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/ModularAdapter.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/ModularAdapter.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/ModularAdapter.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/ModularAdapter.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/mods/ClickMod.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/ClickMod.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/mods/ClickMod.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/ClickMod.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/mods/DataBinderMod.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/DataBinderMod.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/mods/DataBinderMod.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/DataBinderMod.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/mods/SimpleVHCreatorMod.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/SimpleVHCreatorMod.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/mods/SimpleVHCreatorMod.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/SimpleVHCreatorMod.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/mods/StableIdMod.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/StableIdMod.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/mods/StableIdMod.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/StableIdMod.kt diff --git a/app/src/main/java/eu/darken/capod/common/lists/modular/mods/TypedVHCreatorMod.kt b/app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/TypedVHCreatorMod.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/lists/modular/mods/TypedVHCreatorMod.kt rename to app-common/src/main/java/eu/darken/capod/common/lists/modular/mods/TypedVHCreatorMod.kt diff --git a/app/src/main/java/eu/darken/capod/common/livedata/SingleLiveEvent.kt b/app-common/src/main/java/eu/darken/capod/common/livedata/SingleLiveEvent.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/livedata/SingleLiveEvent.kt rename to app-common/src/main/java/eu/darken/capod/common/livedata/SingleLiveEvent.kt diff --git a/app/src/main/java/eu/darken/capod/common/permissions/Permission.kt b/app-common/src/main/java/eu/darken/capod/common/permissions/Permission.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/permissions/Permission.kt rename to app-common/src/main/java/eu/darken/capod/common/permissions/Permission.kt diff --git a/app/src/main/java/eu/darken/capod/common/uix/ViewModel1.kt b/app-common/src/main/java/eu/darken/capod/common/uix/ViewModel1.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/uix/ViewModel1.kt rename to app-common/src/main/java/eu/darken/capod/common/uix/ViewModel1.kt diff --git a/app/src/main/java/eu/darken/capod/common/uix/ViewModel2.kt b/app-common/src/main/java/eu/darken/capod/common/uix/ViewModel2.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/uix/ViewModel2.kt rename to app-common/src/main/java/eu/darken/capod/common/uix/ViewModel2.kt diff --git a/app/src/main/java/eu/darken/capod/common/uix/ViewModelLazyKeyed.kt b/app-common/src/main/java/eu/darken/capod/common/uix/ViewModelLazyKeyed.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/uix/ViewModelLazyKeyed.kt rename to app-common/src/main/java/eu/darken/capod/common/uix/ViewModelLazyKeyed.kt diff --git a/app/src/main/java/eu/darken/capod/common/viewbinding/ViewBindingExtensions.kt b/app-common/src/main/java/eu/darken/capod/common/viewbinding/ViewBindingExtensions.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/common/viewbinding/ViewBindingExtensions.kt rename to app-common/src/main/java/eu/darken/capod/common/viewbinding/ViewBindingExtensions.kt diff --git a/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt b/app-common/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt rename to app-common/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt diff --git a/app/src/main/java/eu/darken/capod/main/core/MonitorMode.kt b/app-common/src/main/java/eu/darken/capod/main/core/MonitorMode.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/main/core/MonitorMode.kt rename to app-common/src/main/java/eu/darken/capod/main/core/MonitorMode.kt diff --git a/app/src/main/java/eu/darken/capod/main/core/PermissionTool.kt b/app-common/src/main/java/eu/darken/capod/main/core/PermissionTool.kt similarity index 96% rename from app/src/main/java/eu/darken/capod/main/core/PermissionTool.kt rename to app-common/src/main/java/eu/darken/capod/main/core/PermissionTool.kt index 49895bfc..cc02d256 100644 --- a/app/src/main/java/eu/darken/capod/main/core/PermissionTool.kt +++ b/app-common/src/main/java/eu/darken/capod/main/core/PermissionTool.kt @@ -6,7 +6,7 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.permissions.Permission import eu.darken.capod.common.permissions.isRequired -import eu.darken.capod.reaction.settings.ReactionSettings +import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine diff --git a/app/src/main/java/eu/darken/capod/monitor/core/MonitorComponent.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/MonitorComponent.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/MonitorComponent.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/MonitorComponent.kt diff --git a/app/src/main/java/eu/darken/capod/monitor/core/MonitorCoroutineScope.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/MonitorCoroutineScope.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/MonitorCoroutineScope.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/MonitorCoroutineScope.kt diff --git a/app/src/main/java/eu/darken/capod/monitor/core/MonitorModule.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/MonitorModule.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/MonitorModule.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/MonitorModule.kt diff --git a/app/src/main/java/eu/darken/capod/monitor/core/MonitorScope.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/MonitorScope.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/MonitorScope.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/MonitorScope.kt diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodSorter.kt b/app-common/src/main/java/eu/darken/capod/monitor/core/PodSorter.kt similarity index 100% rename from app/src/main/java/eu/darken/capod/monitor/core/PodSorter.kt rename to app-common/src/main/java/eu/darken/capod/monitor/core/PodSorter.kt diff --git a/app/src/main/java/eu/darken/capod/reaction/ReactionHub.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/ReactionHub.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/reaction/ReactionHub.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/ReactionHub.kt index 61dc9c5d..eecd1893 100644 --- a/app/src/main/java/eu/darken/capod/reaction/ReactionHub.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/ReactionHub.kt @@ -1,11 +1,11 @@ -package eu.darken.capod.reaction +package eu.darken.capod.reaction.core import dagger.Reusable import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.flow.setupCommonEventHandlers -import eu.darken.capod.reaction.autoconnect.AutoConnect -import eu.darken.capod.reaction.playpause.PlayPause -import eu.darken.capod.reaction.popup.PopUpReaction +import eu.darken.capod.reaction.core.autoconnect.AutoConnect +import eu.darken.capod.reaction.core.playpause.PlayPause +import eu.darken.capod.reaction.core.popup.PopUpReaction import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/reaction/settings/ReactionSettings.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/ReactionSettings.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/reaction/settings/ReactionSettings.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/ReactionSettings.kt index da24a5d7..cc758076 100644 --- a/app/src/main/java/eu/darken/capod/reaction/settings/ReactionSettings.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/ReactionSettings.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.reaction.settings +package eu.darken.capod.reaction.core import android.content.Context import android.content.SharedPreferences @@ -8,7 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import eu.darken.capod.common.preferences.PreferenceStoreMapper import eu.darken.capod.common.preferences.Settings import eu.darken.capod.common.preferences.createFlowPreference -import eu.darken.capod.reaction.autoconnect.AutoConnectCondition +import eu.darken.capod.reaction.core.autoconnect.AutoConnectCondition import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnect.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnect.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt index c3fac002..6f90e981 100644 --- a/app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnect.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.reaction.autoconnect +package eu.darken.capod.reaction.core.autoconnect import eu.darken.capod.common.bluetooth.BluetoothManager2 import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE @@ -11,7 +11,7 @@ import eu.darken.capod.monitor.core.PodMonitor import eu.darken.capod.pods.core.HasEarDetection import eu.darken.capod.pods.core.HasEarDetectionDual import eu.darken.capod.pods.core.apple.DualAirPods -import eu.darken.capod.reaction.settings.ReactionSettings +import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.* import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnectCondition.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectCondition.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnectCondition.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectCondition.kt index 14c3e702..80ebd4c7 100644 --- a/app/src/main/java/eu/darken/capod/reaction/autoconnect/AutoConnectCondition.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectCondition.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.reaction.autoconnect +package eu.darken.capod.reaction.core.autoconnect import androidx.annotation.StringRes import com.squareup.moshi.Json diff --git a/app/src/main/java/eu/darken/capod/reaction/playpause/PlayPause.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/playpause/PlayPause.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/reaction/playpause/PlayPause.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/playpause/PlayPause.kt index a4bbd576..f3df3555 100644 --- a/app/src/main/java/eu/darken/capod/reaction/playpause/PlayPause.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/playpause/PlayPause.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.reaction.playpause +package eu.darken.capod.reaction.core.playpause import dagger.Reusable import eu.darken.capod.common.MediaControl @@ -11,7 +11,7 @@ import eu.darken.capod.common.flow.withPrevious import eu.darken.capod.monitor.core.PodMonitor import eu.darken.capod.pods.core.HasEarDetection import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.reaction.settings.ReactionSettings +import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.* import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/reaction/popup/PopUpReaction.kt b/app-common/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt similarity index 53% rename from app/src/main/java/eu/darken/capod/reaction/popup/PopUpReaction.kt rename to app-common/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt index 04a1d40b..834e6d0c 100644 --- a/app/src/main/java/eu/darken/capod/reaction/popup/PopUpReaction.kt +++ b/app-common/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt @@ -1,6 +1,5 @@ -package eu.darken.capod.reaction.popup +package eu.darken.capod.reaction.core.popup -import eu.darken.capod.common.coroutine.DispatcherProvider import eu.darken.capod.common.debug.logging.Logging.Priority.* import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag @@ -9,10 +8,8 @@ import eu.darken.capod.common.flow.withPrevious import eu.darken.capod.monitor.core.PodMonitor import eu.darken.capod.pods.core.PodDevice import eu.darken.capod.pods.core.apple.DualAirPods -import eu.darken.capod.reaction.popup.ui.PopUpWindow -import eu.darken.capod.reaction.settings.ReactionSettings +import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.* -import kotlinx.coroutines.withContext import java.time.Duration import java.time.Instant import javax.inject.Inject @@ -22,13 +19,11 @@ import javax.inject.Singleton class PopUpReaction @Inject constructor( private val podMonitor: PodMonitor, private val reactionSettings: ReactionSettings, - private val popupWindow: PopUpWindow, - private val dispatcherProvider: DispatcherProvider, ) { private val coolDowns = mutableMapOf() - fun monitor(): Flow = reactionSettings.showPopUpOnCaseOpen.flow + fun monitor(): Flow = reactionSettings.showPopUpOnCaseOpen.flow .flatMapLatest { isEnabled -> if (isEnabled) { podMonitor.mainDevice.distinctUntilChangedBy { it?.rawDataHex } @@ -38,47 +33,48 @@ class PopUpReaction @Inject constructor( } .withPrevious() .setupCommonEventHandlers(TAG) { "monitor" } - .map { (previous, current) -> - if (previous is DualAirPods? && current is DualAirPods) { - log(TAG, VERBOSE) { - val prev = previous?.rawCaseLidState?.let { String.format("%02X", it.toByte()) } - val cur = current.rawCaseLidState.let { String.format("%02X", it.toByte()) } - "previous=$prev (${previous?.caseLidState}), current=$cur (${current.caseLidState})" - } - log(TAG, VERBOSE) { "previous-id=${previous?.identifier}, current-id=${current.identifier}" } - - val isSameDeviceWithCaseNowOpen = - previous?.identifier == current.identifier && previous.caseLidState != current.caseLidState - val isNewDeviceWithJustOpenedCase = - previous?.identifier != current.identifier && previous?.caseLidState != current.caseLidState - - if (isSameDeviceWithCaseNowOpen || isNewDeviceWithJustOpenedCase) { - log(TAG) { "Case lid status changed for monitored device." } - - tryPopWindow(current) - } + .mapNotNull { (previous, current) -> + if (previous !is DualAirPods? || current !is DualAirPods) { + return@mapNotNull null } + log(TAG, VERBOSE) { + val prev = previous?.rawCaseLidState?.let { String.format("%02X", it.toByte()) } + val cur = current.rawCaseLidState.let { String.format("%02X", it.toByte()) } + "previous=$prev (${previous?.caseLidState}), current=$cur (${current.caseLidState})" + } + log(TAG, VERBOSE) { "previous-id=${previous?.identifier}, current-id=${current.identifier}" } + + val isSameDeviceWithCaseNowOpen = + previous?.identifier == current.identifier && previous.caseLidState != current.caseLidState + val isNewDeviceWithJustOpenedCase = + previous?.identifier != current.identifier && previous?.caseLidState != current.caseLidState + + if (!isSameDeviceWithCaseNowOpen && !isNewDeviceWithJustOpenedCase) { + return@mapNotNull null + } + log(TAG) { "Case lid status changed for monitored device." } + + tryPopWindow(current) } - private suspend fun tryPopWindow(current: DualAirPods) { - if (current.caseLidState == DualAirPods.LidState.OPEN) { + private suspend fun tryPopWindow(current: DualAirPods): Event? = when { + current.caseLidState == DualAirPods.LidState.OPEN -> { log(TAG, INFO) { "Show popup" } val now = Instant.now() val lastShown = coolDowns[current.identifier] ?: Instant.MIN val sinceLastPop = Duration.between(lastShown, now) log(TAG) { "Time since last popup: $sinceLastPop" } - if (sinceLastPop < Duration.ofSeconds(10)) { - log(TAG, INFO) { "Popup is still on cooldown: $sinceLastPop" } - return - } else { - coolDowns[current.identifier] = Instant.now() - } - withContext(dispatcherProvider.Main) { - popupWindow.show(current) + if (sinceLastPop >= Duration.ofSeconds(10)) { + coolDowns[current.identifier] = Instant.now() + Event.PopupShow(device = current) + } else { + log(TAG, INFO) { "Popup is still on cooldown: $sinceLastPop" } + null } - } else if (current.caseLidState != DualAirPods.LidState.OPEN) { + } + current.caseLidState != DualAirPods.LidState.OPEN -> { when (current.caseLidState) { DualAirPods.LidState.CLOSED -> { log(TAG, INFO) { "Lid was actively closed, resetting cooldown." } @@ -91,10 +87,22 @@ class PopUpReaction @Inject constructor( } log(TAG, INFO) { "Hide popup" } - withContext(dispatcherProvider.Main) { - popupWindow.close() - } + + Event.PopupHide() } + else -> null + } + + + sealed class Event { + data class PopupShow( + val eventAt: Instant = Instant.now(), + val device: PodDevice, + ) : Event() + + data class PopupHide( + val eventAt: Instant = Instant.now(), + ) : Event() } companion object { diff --git a/app/src/main/res/drawable/ic_baseline_grid_view_24.xml b/app-common/src/main/res/drawable/ic_baseline_grid_view_24.xml similarity index 100% rename from app/src/main/res/drawable/ic_baseline_grid_view_24.xml rename to app-common/src/main/res/drawable/ic_baseline_grid_view_24.xml diff --git a/app/src/main/res/drawable/ic_baseline_settings_input_antenna_24.xml b/app-common/src/main/res/drawable/ic_baseline_settings_input_antenna_24.xml similarity index 100% rename from app/src/main/res/drawable/ic_baseline_settings_input_antenna_24.xml rename to app-common/src/main/res/drawable/ic_baseline_settings_input_antenna_24.xml diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app-common/src/main/res/values-af-rZA/strings.xml similarity index 100% rename from app/src/main/res/values-af-rZA/strings.xml rename to app-common/src/main/res/values-af-rZA/strings.xml diff --git a/app/src/main/res/values-am/strings.xml b/app-common/src/main/res/values-am/strings.xml similarity index 100% rename from app/src/main/res/values-am/strings.xml rename to app-common/src/main/res/values-am/strings.xml diff --git a/app/src/main/res/values-ar/strings.xml b/app-common/src/main/res/values-ar/strings.xml similarity index 100% rename from app/src/main/res/values-ar/strings.xml rename to app-common/src/main/res/values-ar/strings.xml diff --git a/app/src/main/res/values-az/strings.xml b/app-common/src/main/res/values-az/strings.xml similarity index 100% rename from app/src/main/res/values-az/strings.xml rename to app-common/src/main/res/values-az/strings.xml diff --git a/app/src/main/res/values-be/strings.xml b/app-common/src/main/res/values-be/strings.xml similarity index 100% rename from app/src/main/res/values-be/strings.xml rename to app-common/src/main/res/values-be/strings.xml diff --git a/app/src/main/res/values-bg/strings.xml b/app-common/src/main/res/values-bg/strings.xml similarity index 100% rename from app/src/main/res/values-bg/strings.xml rename to app-common/src/main/res/values-bg/strings.xml diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app-common/src/main/res/values-bn-rBD/strings.xml similarity index 100% rename from app/src/main/res/values-bn-rBD/strings.xml rename to app-common/src/main/res/values-bn-rBD/strings.xml diff --git a/app/src/main/res/values-ca/strings.xml b/app-common/src/main/res/values-ca/strings.xml similarity index 100% rename from app/src/main/res/values-ca/strings.xml rename to app-common/src/main/res/values-ca/strings.xml diff --git a/app/src/main/res/values-cs/strings.xml b/app-common/src/main/res/values-cs/strings.xml similarity index 100% rename from app/src/main/res/values-cs/strings.xml rename to app-common/src/main/res/values-cs/strings.xml diff --git a/app/src/main/res/values-da/strings.xml b/app-common/src/main/res/values-da/strings.xml similarity index 100% rename from app/src/main/res/values-da/strings.xml rename to app-common/src/main/res/values-da/strings.xml diff --git a/app/src/main/res/values-de/strings.xml b/app-common/src/main/res/values-de/strings.xml similarity index 100% rename from app/src/main/res/values-de/strings.xml rename to app-common/src/main/res/values-de/strings.xml diff --git a/app/src/main/res/values-el/strings.xml b/app-common/src/main/res/values-el/strings.xml similarity index 100% rename from app/src/main/res/values-el/strings.xml rename to app-common/src/main/res/values-el/strings.xml diff --git a/app/src/main/res/values-es-rAR/strings.xml b/app-common/src/main/res/values-es-rAR/strings.xml similarity index 100% rename from app/src/main/res/values-es-rAR/strings.xml rename to app-common/src/main/res/values-es-rAR/strings.xml diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app-common/src/main/res/values-es-rMX/strings.xml similarity index 100% rename from app/src/main/res/values-es-rMX/strings.xml rename to app-common/src/main/res/values-es-rMX/strings.xml diff --git a/app/src/main/res/values-es/strings.xml b/app-common/src/main/res/values-es/strings.xml similarity index 100% rename from app/src/main/res/values-es/strings.xml rename to app-common/src/main/res/values-es/strings.xml diff --git a/app/src/main/res/values-et-rEE/strings.xml b/app-common/src/main/res/values-et-rEE/strings.xml similarity index 100% rename from app/src/main/res/values-et-rEE/strings.xml rename to app-common/src/main/res/values-et-rEE/strings.xml diff --git a/app/src/main/res/values-eu-rES/strings.xml b/app-common/src/main/res/values-eu-rES/strings.xml similarity index 100% rename from app/src/main/res/values-eu-rES/strings.xml rename to app-common/src/main/res/values-eu-rES/strings.xml diff --git a/app/src/main/res/values-fa/strings.xml b/app-common/src/main/res/values-fa/strings.xml similarity index 100% rename from app/src/main/res/values-fa/strings.xml rename to app-common/src/main/res/values-fa/strings.xml diff --git a/app/src/main/res/values-fi/strings.xml b/app-common/src/main/res/values-fi/strings.xml similarity index 100% rename from app/src/main/res/values-fi/strings.xml rename to app-common/src/main/res/values-fi/strings.xml diff --git a/app/src/main/res/values-fil/strings.xml b/app-common/src/main/res/values-fil/strings.xml similarity index 100% rename from app/src/main/res/values-fil/strings.xml rename to app-common/src/main/res/values-fil/strings.xml diff --git a/app/src/main/res/values-fr/strings.xml b/app-common/src/main/res/values-fr/strings.xml similarity index 100% rename from app/src/main/res/values-fr/strings.xml rename to app-common/src/main/res/values-fr/strings.xml diff --git a/app/src/main/res/values-gl-rES/strings.xml b/app-common/src/main/res/values-gl-rES/strings.xml similarity index 100% rename from app/src/main/res/values-gl-rES/strings.xml rename to app-common/src/main/res/values-gl-rES/strings.xml diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app-common/src/main/res/values-hi-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-hi-rIN/strings.xml rename to app-common/src/main/res/values-hi-rIN/strings.xml diff --git a/app/src/main/res/values-hr/strings.xml b/app-common/src/main/res/values-hr/strings.xml similarity index 100% rename from app/src/main/res/values-hr/strings.xml rename to app-common/src/main/res/values-hr/strings.xml diff --git a/app/src/main/res/values-hu/strings.xml b/app-common/src/main/res/values-hu/strings.xml similarity index 100% rename from app/src/main/res/values-hu/strings.xml rename to app-common/src/main/res/values-hu/strings.xml diff --git a/app/src/main/res/values-hy-rAM/strings.xml b/app-common/src/main/res/values-hy-rAM/strings.xml similarity index 100% rename from app/src/main/res/values-hy-rAM/strings.xml rename to app-common/src/main/res/values-hy-rAM/strings.xml diff --git a/app/src/main/res/values-in/strings.xml b/app-common/src/main/res/values-in/strings.xml similarity index 100% rename from app/src/main/res/values-in/strings.xml rename to app-common/src/main/res/values-in/strings.xml diff --git a/app/src/main/res/values-is/strings.xml b/app-common/src/main/res/values-is/strings.xml similarity index 100% rename from app/src/main/res/values-is/strings.xml rename to app-common/src/main/res/values-is/strings.xml diff --git a/app/src/main/res/values-it/strings.xml b/app-common/src/main/res/values-it/strings.xml similarity index 100% rename from app/src/main/res/values-it/strings.xml rename to app-common/src/main/res/values-it/strings.xml diff --git a/app/src/main/res/values-iw/strings.xml b/app-common/src/main/res/values-iw/strings.xml similarity index 100% rename from app/src/main/res/values-iw/strings.xml rename to app-common/src/main/res/values-iw/strings.xml diff --git a/app/src/main/res/values-ja/strings.xml b/app-common/src/main/res/values-ja/strings.xml similarity index 100% rename from app/src/main/res/values-ja/strings.xml rename to app-common/src/main/res/values-ja/strings.xml diff --git a/app/src/main/res/values-ka-rGE/strings.xml b/app-common/src/main/res/values-ka-rGE/strings.xml similarity index 100% rename from app/src/main/res/values-ka-rGE/strings.xml rename to app-common/src/main/res/values-ka-rGE/strings.xml diff --git a/app/src/main/res/values-km-rKH/strings.xml b/app-common/src/main/res/values-km-rKH/strings.xml similarity index 100% rename from app/src/main/res/values-km-rKH/strings.xml rename to app-common/src/main/res/values-km-rKH/strings.xml diff --git a/app/src/main/res/values-kmr-rTR/strings.xml b/app-common/src/main/res/values-kmr-rTR/strings.xml similarity index 100% rename from app/src/main/res/values-kmr-rTR/strings.xml rename to app-common/src/main/res/values-kmr-rTR/strings.xml diff --git a/app/src/main/res/values-kn-rIN/strings.xml b/app-common/src/main/res/values-kn-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-kn-rIN/strings.xml rename to app-common/src/main/res/values-kn-rIN/strings.xml diff --git a/app/src/main/res/values-ko/strings.xml b/app-common/src/main/res/values-ko/strings.xml similarity index 100% rename from app/src/main/res/values-ko/strings.xml rename to app-common/src/main/res/values-ko/strings.xml diff --git a/app/src/main/res/values-ky-rKG/strings.xml b/app-common/src/main/res/values-ky-rKG/strings.xml similarity index 100% rename from app/src/main/res/values-ky-rKG/strings.xml rename to app-common/src/main/res/values-ky-rKG/strings.xml diff --git a/app/src/main/res/values-lo-rLA/strings.xml b/app-common/src/main/res/values-lo-rLA/strings.xml similarity index 100% rename from app/src/main/res/values-lo-rLA/strings.xml rename to app-common/src/main/res/values-lo-rLA/strings.xml diff --git a/app/src/main/res/values-lt/strings.xml b/app-common/src/main/res/values-lt/strings.xml similarity index 100% rename from app/src/main/res/values-lt/strings.xml rename to app-common/src/main/res/values-lt/strings.xml diff --git a/app/src/main/res/values-lv/strings.xml b/app-common/src/main/res/values-lv/strings.xml similarity index 100% rename from app/src/main/res/values-lv/strings.xml rename to app-common/src/main/res/values-lv/strings.xml diff --git a/app/src/main/res/values-mk-rMK/strings.xml b/app-common/src/main/res/values-mk-rMK/strings.xml similarity index 100% rename from app/src/main/res/values-mk-rMK/strings.xml rename to app-common/src/main/res/values-mk-rMK/strings.xml diff --git a/app/src/main/res/values-ml-rIN/strings.xml b/app-common/src/main/res/values-ml-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-ml-rIN/strings.xml rename to app-common/src/main/res/values-ml-rIN/strings.xml diff --git a/app/src/main/res/values-mn-rMN/strings.xml b/app-common/src/main/res/values-mn-rMN/strings.xml similarity index 100% rename from app/src/main/res/values-mn-rMN/strings.xml rename to app-common/src/main/res/values-mn-rMN/strings.xml diff --git a/app/src/main/res/values-mr-rIN/strings.xml b/app-common/src/main/res/values-mr-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-mr-rIN/strings.xml rename to app-common/src/main/res/values-mr-rIN/strings.xml diff --git a/app/src/main/res/values-ms/strings.xml b/app-common/src/main/res/values-ms/strings.xml similarity index 100% rename from app/src/main/res/values-ms/strings.xml rename to app-common/src/main/res/values-ms/strings.xml diff --git a/app/src/main/res/values-my-rMM/strings.xml b/app-common/src/main/res/values-my-rMM/strings.xml similarity index 100% rename from app/src/main/res/values-my-rMM/strings.xml rename to app-common/src/main/res/values-my-rMM/strings.xml diff --git a/app/src/main/res/values-ne-rNP/strings.xml b/app-common/src/main/res/values-ne-rNP/strings.xml similarity index 100% rename from app/src/main/res/values-ne-rNP/strings.xml rename to app-common/src/main/res/values-ne-rNP/strings.xml diff --git a/app/src/main/res/values-nl/strings.xml b/app-common/src/main/res/values-nl/strings.xml similarity index 100% rename from app/src/main/res/values-nl/strings.xml rename to app-common/src/main/res/values-nl/strings.xml diff --git a/app/src/main/res/values-no/strings.xml b/app-common/src/main/res/values-no/strings.xml similarity index 100% rename from app/src/main/res/values-no/strings.xml rename to app-common/src/main/res/values-no/strings.xml diff --git a/app/src/main/res/values-pl/strings.xml b/app-common/src/main/res/values-pl/strings.xml similarity index 100% rename from app/src/main/res/values-pl/strings.xml rename to app-common/src/main/res/values-pl/strings.xml diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app-common/src/main/res/values-pt-rBR/strings.xml similarity index 100% rename from app/src/main/res/values-pt-rBR/strings.xml rename to app-common/src/main/res/values-pt-rBR/strings.xml diff --git a/app/src/main/res/values-pt/strings.xml b/app-common/src/main/res/values-pt/strings.xml similarity index 100% rename from app/src/main/res/values-pt/strings.xml rename to app-common/src/main/res/values-pt/strings.xml diff --git a/app/src/main/res/values-rm/strings.xml b/app-common/src/main/res/values-rm/strings.xml similarity index 100% rename from app/src/main/res/values-rm/strings.xml rename to app-common/src/main/res/values-rm/strings.xml diff --git a/app/src/main/res/values-ro/strings.xml b/app-common/src/main/res/values-ro/strings.xml similarity index 100% rename from app/src/main/res/values-ro/strings.xml rename to app-common/src/main/res/values-ro/strings.xml diff --git a/app/src/main/res/values-ru/strings.xml b/app-common/src/main/res/values-ru/strings.xml similarity index 100% rename from app/src/main/res/values-ru/strings.xml rename to app-common/src/main/res/values-ru/strings.xml diff --git a/app/src/main/res/values-sc-rIT/strings.xml b/app-common/src/main/res/values-sc-rIT/strings.xml similarity index 100% rename from app/src/main/res/values-sc-rIT/strings.xml rename to app-common/src/main/res/values-sc-rIT/strings.xml diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app-common/src/main/res/values-si-rLK/strings.xml similarity index 100% rename from app/src/main/res/values-si-rLK/strings.xml rename to app-common/src/main/res/values-si-rLK/strings.xml diff --git a/app/src/main/res/values-sk/strings.xml b/app-common/src/main/res/values-sk/strings.xml similarity index 100% rename from app/src/main/res/values-sk/strings.xml rename to app-common/src/main/res/values-sk/strings.xml diff --git a/app/src/main/res/values-sl/strings.xml b/app-common/src/main/res/values-sl/strings.xml similarity index 100% rename from app/src/main/res/values-sl/strings.xml rename to app-common/src/main/res/values-sl/strings.xml diff --git a/app/src/main/res/values-sq-rAL/strings.xml b/app-common/src/main/res/values-sq-rAL/strings.xml similarity index 100% rename from app/src/main/res/values-sq-rAL/strings.xml rename to app-common/src/main/res/values-sq-rAL/strings.xml diff --git a/app/src/main/res/values-sr/strings.xml b/app-common/src/main/res/values-sr/strings.xml similarity index 100% rename from app/src/main/res/values-sr/strings.xml rename to app-common/src/main/res/values-sr/strings.xml diff --git a/app/src/main/res/values-sv/strings.xml b/app-common/src/main/res/values-sv/strings.xml similarity index 100% rename from app/src/main/res/values-sv/strings.xml rename to app-common/src/main/res/values-sv/strings.xml diff --git a/app/src/main/res/values-sw/strings.xml b/app-common/src/main/res/values-sw/strings.xml similarity index 100% rename from app/src/main/res/values-sw/strings.xml rename to app-common/src/main/res/values-sw/strings.xml diff --git a/app/src/main/res/values-ta-rIN/strings.xml b/app-common/src/main/res/values-ta-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-ta-rIN/strings.xml rename to app-common/src/main/res/values-ta-rIN/strings.xml diff --git a/app/src/main/res/values-te-rIN/strings.xml b/app-common/src/main/res/values-te-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-te-rIN/strings.xml rename to app-common/src/main/res/values-te-rIN/strings.xml diff --git a/app/src/main/res/values-th/strings.xml b/app-common/src/main/res/values-th/strings.xml similarity index 100% rename from app/src/main/res/values-th/strings.xml rename to app-common/src/main/res/values-th/strings.xml diff --git a/app/src/main/res/values-tr/strings.xml b/app-common/src/main/res/values-tr/strings.xml similarity index 100% rename from app/src/main/res/values-tr/strings.xml rename to app-common/src/main/res/values-tr/strings.xml diff --git a/app/src/main/res/values-uk/strings.xml b/app-common/src/main/res/values-uk/strings.xml similarity index 100% rename from app/src/main/res/values-uk/strings.xml rename to app-common/src/main/res/values-uk/strings.xml diff --git a/app/src/main/res/values-ur-rIN/strings.xml b/app-common/src/main/res/values-ur-rIN/strings.xml similarity index 100% rename from app/src/main/res/values-ur-rIN/strings.xml rename to app-common/src/main/res/values-ur-rIN/strings.xml diff --git a/app/src/main/res/values-uz/strings.xml b/app-common/src/main/res/values-uz/strings.xml similarity index 100% rename from app/src/main/res/values-uz/strings.xml rename to app-common/src/main/res/values-uz/strings.xml diff --git a/app/src/main/res/values-vi/strings.xml b/app-common/src/main/res/values-vi/strings.xml similarity index 100% rename from app/src/main/res/values-vi/strings.xml rename to app-common/src/main/res/values-vi/strings.xml diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app-common/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from app/src/main/res/values-zh-rCN/strings.xml rename to app-common/src/main/res/values-zh-rCN/strings.xml diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app-common/src/main/res/values-zh-rHK/strings.xml similarity index 100% rename from app/src/main/res/values-zh-rHK/strings.xml rename to app-common/src/main/res/values-zh-rHK/strings.xml diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app-common/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from app/src/main/res/values-zh-rTW/strings.xml rename to app-common/src/main/res/values-zh-rTW/strings.xml diff --git a/app/src/main/res/values-zu/strings.xml b/app-common/src/main/res/values-zu/strings.xml similarity index 100% rename from app/src/main/res/values-zu/strings.xml rename to app-common/src/main/res/values-zu/strings.xml diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml index a64dcc12..0f20c880 100644 --- a/app-common/src/main/res/values/strings.xml +++ b/app-common/src/main/res/values/strings.xml @@ -14,6 +14,14 @@ Check Close + Upgrade CAPod + Get additional features and support the developer. + + No primary device + All detected devices are unlikely to be yours. Power on and connect your device or adjust the settings. + Bluetooth is disabled + Bluetooth is disabled, enable it ;) + Bluetooth connect This app requires the \"Bluetooth connect\" permission to interact with paired devices and initiate connections. Bluetooth scanning @@ -26,6 +34,98 @@ CAPod uses \"background location access\" to enable features like \"Show popup\" and \"AutoConnect\" while the app is closed. Background location access allows the app to receive Bluetooth Low Energy data while it is in the background. This app will NOT use Bluetooth data to determine your location. Disable battery optimizations Battery optimizations prevent this app from reliably receiving Bluetooth data while the app is in the background. + The following permission is required: + System Alert Window + Allow CAPod to draw over other apps to make the feature \"Show PopUp\" possible. + + Low power + Balanced + Low latency + When app is open + When device is connected + Always + Monitor mode + Under which circumstances this app monitors Bluetooth data. + Scanner mode + Should the Bluetooth Low Energy data scanner prioritize performance or conserve energy? + Auto pause + Pause audio when removing the device from your ear. + Show all devices + Show other people\'s devices that are near you. + Auto play + Start audio playback when device is worn. + Fake data + Show fake data, i.e., simulate devices that don\’t exist. + Debug settings + Additional settings to help troubleshoot issues with the app. + Minimum signal quality + The minimum signal quality that a device needs to have to be considered yours. + Auto connect + If Android does not automatically connect, we can ask it too. This will set the monitor mode setting to \'Always\'. + Auto connect condition + When should we try to connect to your device? + Reactions + React to events and behaviors. + Your device + Your device address + The address of your paired device. The app uses this to determine when it is connected to your phone. + None + Your device model + The model of your main device. This helps the app recognize your device when it is not connected to your phone. + Show popup + Show a popup when the device case is opened (experimental). + One pod mode + Wearing both pods is not required, wearing a single pod is sufficient to trigger reactions. + When seen + Case is open + In ear + + Device status + + Size + Compressed size + Debug notifications + Recorded log file + Record debug log + + + Install ID + Automatic error reports are anonymous. Share your install ID if the developer needs to find your error reports. + Support + If you need some help. + + Issue tracker + A public issue tracker for bug reports and feature requests (english only). + + Discord + A place to hang out in and ask questions. + + Changelog + Settings + Privacy policy + Handling data responsibly. + Licenses + Other + Settings + General tweaks that affect the whole app. + Acknowledgements + + Automatic bug reports + Automatically reports issues, e.g. details on an app crash so I can figure out how to fix it. + Debug mode + Show additional information to troubleshoot issues. + + Unfiltered BLE data + Remove any filters from the BLE scanner to show all broadcasted BLE data. Useful to add support for new headphone types. + + Compatibility mode + Disable optimizations to improve compatibility. Try this if you are not seeing any data. + + Translation + Help translate this app into your favorite language. + + Translators + darken Left pod Right pod @@ -52,8 +152,4 @@ Last seen: %s First seen: %s - - Low power - Balanced - Low latency \ No newline at end of file diff --git a/app-wear/build.gradle.kts b/app-wear/build.gradle.kts index 498e4459..2e09b70c 100644 --- a/app-wear/build.gradle.kts +++ b/app-wear/build.gradle.kts @@ -9,12 +9,10 @@ apply(plugin = "androidx.navigation.safeargs.kotlin") apply(plugin = "com.bugsnag.android.gradle") android { - val packageName = "eu.darken.androidstarter" - compileSdk = ProjectConfig.compileSdk defaultConfig { - applicationId = packageName + applicationId = ProjectConfig.packageName minSdk = ProjectConfig.minSdk targetSdk = ProjectConfig.targetSdk @@ -22,18 +20,18 @@ android { versionCode = ProjectConfig.Version.code versionName = ProjectConfig.Version.name - testInstrumentationRunner = "eu.darken.androidstarter.HiltTestRunner" + testInstrumentationRunner = "eu.darken.capod.HiltTestRunner" buildConfigField("String", "GITSHA", "\"${lastCommitHash()}\"") buildConfigField("String", "BUILDTIME", "\"${buildTime()}\"") manifestPlaceholders["bugsnagApiKey"] = getBugSnagApiKey( - File(System.getProperty("user.home"), ".appconfig/${packageName}/bugsnag.properties") + File(System.getProperty("user.home"), ".appconfig/${ProjectConfig.packageName}/bugsnag.properties") ) ?: "fake" } signingConfigs { - val basePath = File(System.getProperty("user.home"), ".appconfig/${packageName}") + val basePath = File(System.getProperty("user.home"), ".appconfig/${ProjectConfig.packageName}") create("releaseFoss") { setupCredentials(File(basePath, "signing-foss.properties")) } @@ -92,7 +90,7 @@ android { val variantName: String = variantOutputImpl.name if (listOf("release", "beta").any { variantName.toLowerCase().contains(it) }) { - val outputFileName = packageName + + val outputFileName = ProjectConfig.packageName + "-v${defaultConfig.versionName}-${defaultConfig.versionCode}" + "-${variantName.toUpperCase()}-${lastCommitHash()}.apk" diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivityVM.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivityVM.kt new file mode 100644 index 00000000..4ae95b6a --- /dev/null +++ b/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivityVM.kt @@ -0,0 +1,14 @@ +package eu.darken.capod.wear.ui + +import androidx.lifecycle.SavedStateHandle +import dagger.hilt.android.lifecycle.HiltViewModel +import eu.darken.capod.common.coroutine.DispatcherProvider +import eu.darken.capod.common.uix.ViewModel2 +import javax.inject.Inject + + +@HiltViewModel +class MainActivityVM @Inject constructor( + handle: SavedStateHandle, + dispatcherProvider: DispatcherProvider, +) : ViewModel2(dispatcherProvider = dispatcherProvider) \ No newline at end of file diff --git a/app-wear/src/main/res/layout/main_fragment.xml b/app-wear/src/main/res/layout/main_fragment.xml new file mode 100644 index 00000000..ce26dd95 --- /dev/null +++ b/app-wear/src/main/res/layout/main_fragment.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/app-wear/src/main/res/layout/overview_bluetooth_disabled_item.xml b/app-wear/src/main/res/layout/overview_bluetooth_disabled_item.xml new file mode 100644 index 00000000..3c73ea0d --- /dev/null +++ b/app-wear/src/main/res/layout/overview_bluetooth_disabled_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/overview_nomaindevice_item.xml b/app-wear/src/main/res/layout/overview_nomaindevice_item.xml new file mode 100644 index 00000000..e4dea28a --- /dev/null +++ b/app-wear/src/main/res/layout/overview_nomaindevice_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/overview_permission_item.xml b/app-wear/src/main/res/layout/overview_permission_item.xml new file mode 100644 index 00000000..b8502bb9 --- /dev/null +++ b/app-wear/src/main/res/layout/overview_permission_item.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/overview_pods_dual_item.xml b/app-wear/src/main/res/layout/overview_pods_dual_item.xml new file mode 100644 index 00000000..af85cccc --- /dev/null +++ b/app-wear/src/main/res/layout/overview_pods_dual_item.xml @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/overview_pods_single_item.xml b/app-wear/src/main/res/layout/overview_pods_single_item.xml new file mode 100644 index 00000000..fef6a047 --- /dev/null +++ b/app-wear/src/main/res/layout/overview_pods_single_item.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/overview_pods_unknown_item.xml b/app-wear/src/main/res/layout/overview_pods_unknown_item.xml new file mode 100644 index 00000000..90b5e79a --- /dev/null +++ b/app-wear/src/main/res/layout/overview_pods_unknown_item.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app-wear/src/main/res/layout/wear_tile_pods_dual.xml b/app-wear/src/main/res/layout/wear_tile_pods_dual.xml index 178b3447..8160f0f6 100644 --- a/app-wear/src/main/res/layout/wear_tile_pods_dual.xml +++ b/app-wear/src/main/res/layout/wear_tile_pods_dual.xml @@ -65,7 +65,7 @@ - -