diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml
index fb908091..37dff90d 100644
--- a/.github/workflows/release-tag.yml
+++ b/.github/workflows/release-tag.yml
@@ -67,7 +67,6 @@ jobs:
generate_release_notes: true
files: |
app/build/outputs/apk/foss/beta/*.apk
- app-wear/build/outputs/apk/foss/beta/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -130,14 +129,6 @@ jobs:
ruby-version: 3.3.6
bundler-cache: true
- # - name: Assemble WearOS beta and upload to Google Play
- # if: contains(steps.tagger.outputs.tag, '-beta')
- # run: bundle exec fastlane beta_wearos
- # env:
- # STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
- # KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
- # KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
-
- name: Assemble beta and upload to Google Play
if: contains(steps.tagger.outputs.tag, '-beta')
run: bundle exec fastlane beta
@@ -146,14 +137,6 @@ jobs:
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
- # - name: Assemble WearOS production and upload to Google Play
- # if: "!contains(steps.tagger.outputs.tag, '-beta')"
- # run: bundle exec fastlane production_wearos
- # env:
- # STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
- # KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
- # KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
-
- name: Assemble production and upload to Google Play
if: "!contains(steps.tagger.outputs.tag, '-beta')"
run: bundle exec fastlane production
diff --git a/CLAUDE.md b/CLAUDE.md
index ebe0a5ac..fa8453c0 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -65,8 +65,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
### Multi-Module Structure
- **app/**: Main Android application with FOSS and Google Play flavors
-- **app-common/**: Shared code between main app and Wear OS
-- **app-wear/**: Dedicated Wear OS companion application
+- **app-common/**: Shared code between main app
### Core Architecture Patterns
diff --git a/README.md b/README.md
index c77f1c5f..2f32424f 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,6 @@ A companion app that adds support for AirPod specific features to Android:
* Ear detection with automatic play/pause.
* Automatically connect phone & AirPods.
* Show popup when case is opened.
-* Support for Wear OS
* Widgets
CAPod is ad-free. Some additional features require an in-app purchase.
diff --git a/_config.yml b/_config.yml
index a79052d1..b2bb816b 100644
--- a/_config.yml
+++ b/_config.yml
@@ -25,6 +25,5 @@ exclude:
- crowdin*
- app
- app-common
- - app-wear
- CONTRIBUTING.md
- CLAUDE.md
diff --git a/app-wear/.gitignore b/app-wear/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/app-wear/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/app-wear/build.gradle.kts b/app-wear/build.gradle.kts
deleted file mode 100644
index ef43b79f..00000000
--- a/app-wear/build.gradle.kts
+++ /dev/null
@@ -1,140 +0,0 @@
-plugins {
- id("com.android.application")
- id("kotlin-android")
- id("kotlin-kapt")
- id("kotlin-parcelize")
-}
-apply(plugin = "dagger.hilt.android.plugin")
-apply(plugin = "androidx.navigation.safeargs.kotlin")
-
-android {
- compileSdk = ProjectConfig.compileSdk
- namespace = ProjectConfig.packageName
-
- defaultConfig {
- applicationId = ProjectConfig.packageName
-
- minSdk = ProjectConfig.minSdk
- targetSdk = ProjectConfig.targetSdk
-
- versionCode = ProjectConfig.Version.code + 1 // Wear app
- versionName = ProjectConfig.Version.name
-
- testInstrumentationRunner = "eu.darken.capod.HiltTestRunner"
-
- buildConfigField("String", "GITSHA", "\"${lastCommitHash()}\"")
- }
-
- signingConfigs {
- val basePath = File(System.getProperty("user.home"), ".appconfig/${ProjectConfig.packageName}")
- create("releaseFoss") {
- setupCredentials(File(basePath, "signing-foss.properties"))
- }
- create("releaseGplay") {
- setupCredentials(File(basePath, "signing-gplay-upload.properties"))
- }
- }
-
- flavorDimensions.add("version")
- productFlavors {
- create("foss") {
- dimension = "version"
- signingConfig = signingConfigs["releaseFoss"]
- }
- create("gplay") {
- dimension = "version"
- signingConfig = signingConfigs["releaseGplay"]
- }
- }
-
- buildTypes {
- val customProguardRules = fileTree(File("../proguard")) {
- include("*.pro")
- }
- debug {
- isMinifyEnabled = false
- isShrinkResources = false
- proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
- proguardFiles(*customProguardRules.toList().toTypedArray())
- proguardFiles("proguard-rules-debug.pro")
- }
- create("beta") {
- lint {
- abortOnError = true
- fatal.add("StopShip")
- }
- isMinifyEnabled = true
- isShrinkResources = true
- proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
- proguardFiles(*customProguardRules.toList().toTypedArray())
- }
- release {
- lint {
- abortOnError = true
- fatal.add("StopShip")
- }
- isMinifyEnabled = true
- isShrinkResources = true
- proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
- proguardFiles(*customProguardRules.toList().toTypedArray())
- }
- }
-
- buildOutputs.all {
- val variantOutputImpl = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl
- val variantName: String = variantOutputImpl.name
-
- if (listOf("release", "beta").any { variantName.lowercase().contains(it) }) {
- val outputFileName = ProjectConfig.packageName + "-WEAROS" +
- "-v${defaultConfig.versionName}-${defaultConfig.versionCode}" +
- "-${variantName.uppercase()}.apk"
-
- variantOutputImpl.outputFileName = outputFileName
- }
- }
-
- buildFeatures {
- viewBinding = true
- }
-
- compileOptions {
- isCoreLibraryDesugaringEnabled = true
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-
- kotlinOptions {
- jvmTarget = "17"
- freeCompilerArgs = freeCompilerArgs + listOf(
- "-opt-in=kotlin.ExperimentalStdlibApi",
- "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
- "-opt-in=kotlinx.coroutines.FlowPreview",
- "-opt-in=kotlin.time.ExperimentalTime",
- "-opt-in=kotlin.RequiresOptIn"
- )
- }
-}
-
-dependencies {
- coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
-
- implementation(project(":app-common"))
-
- addBaseKotlin()
-
- addDagger()
-
- addBaseWorkManager()
-
- addBaseAndroid()
- addBaseAndroidUi()
-
- implementation("androidx.core:core-splashscreen:1.0.1")
-
- addNavigation()
-
- addTesting()
-
- implementation("androidx.wear:wear:1.2.0")
- implementation("androidx.wear.tiles:tiles-material:1.1.0")
-}
\ No newline at end of file
diff --git a/app-wear/proguard-rules.pro b/app-wear/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/app-wear/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/app-wear/src/main/AndroidManifest.xml b/app-wear/src/main/AndroidManifest.xml
deleted file mode 100644
index 7a18d6a9..00000000
--- a/app-wear/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app-wear/src/main/java/eu/darken/capod/App.kt b/app-wear/src/main/java/eu/darken/capod/App.kt
deleted file mode 100644
index b406a024..00000000
--- a/app-wear/src/main/java/eu/darken/capod/App.kt
+++ /dev/null
@@ -1,85 +0,0 @@
-package eu.darken.capod
-
-import android.app.Application
-import androidx.hilt.work.HiltWorkerFactory
-import androidx.work.Configuration
-import androidx.work.Data
-import androidx.work.ExistingPeriodicWorkPolicy
-import androidx.work.PeriodicWorkRequestBuilder
-import androidx.work.WorkManager
-import dagger.hilt.android.HiltAndroidApp
-import eu.darken.capod.common.BuildConfig
-import eu.darken.capod.common.BuildConfigWrap
-import eu.darken.capod.common.coroutine.AppScope
-import eu.darken.capod.common.debug.autoreport.AutomaticBugReporter
-import eu.darken.capod.common.debug.logging.LogCatLogger
-import eu.darken.capod.common.debug.logging.Logging
-import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
-import eu.darken.capod.common.debug.logging.asLog
-import eu.darken.capod.common.debug.logging.log
-import eu.darken.capod.common.debug.logging.logTag
-import eu.darken.capod.main.core.GeneralSettings
-import eu.darken.capod.wear.core.MonitorWorker
-import kotlinx.coroutines.CoroutineScope
-import java.time.Duration
-import javax.inject.Inject
-
-@HiltAndroidApp
-open class App : Application(), Configuration.Provider {
-
- @Inject lateinit var workerFactory: HiltWorkerFactory
- @Inject lateinit var autoReporting: AutomaticBugReporter
- @Inject lateinit var generalSettings: GeneralSettings
- @Inject lateinit var workManager: WorkManager
- @Inject @AppScope lateinit var appScope: CoroutineScope
-
- override fun onCreate() {
- super.onCreate()
- if (BuildConfig.DEBUG) Logging.install(LogCatLogger())
-
- autoReporting.setup(this)
-
- setupWorker()
-
- log(TAG) { "onCreate() done! ${Exception().asLog()}" }
- }
-
- private fun setupWorker() {
- log(TAG) { "setupWorker()" }
- val workRequest = PeriodicWorkRequestBuilder(
- Duration.ofMinutes(30),
- Duration.ofMinutes(30)
- ).apply {
- setInputData(Data.Builder().build())
- }.build()
-
- log(TAG, VERBOSE) { "Worker request: $workRequest" }
-
- val operation = workManager.enqueueUniquePeriodicWork(
- "${BuildConfigWrap.APPLICATION_ID}.monitor.worker",
- ExistingPeriodicWorkPolicy.KEEP,
- workRequest,
- )
-
- operation.result.get()
- log(TAG) { "Monitor start request send." }
- }
-
- override val workManagerConfiguration: Configuration
- get() = Configuration.Builder()
- .setMinimumLoggingLevel(
- when {
- BuildConfigWrap.DEBUG -> android.util.Log.VERBOSE
- BuildConfigWrap.BUILD_TYPE == BuildConfigWrap.BuildType.DEV -> android.util.Log.DEBUG
- BuildConfigWrap.BUILD_TYPE == BuildConfigWrap.BuildType.BETA -> android.util.Log.INFO
- BuildConfigWrap.BUILD_TYPE == BuildConfigWrap.BuildType.RELEASE -> android.util.Log.WARN
- else -> android.util.Log.VERBOSE
- }
- )
- .setWorkerFactory(workerFactory)
- .build()
-
- companion object {
- internal val TAG = logTag("CAP")
- }
-}
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/core/MonitorWorker.kt b/app-wear/src/main/java/eu/darken/capod/wear/core/MonitorWorker.kt
deleted file mode 100644
index d6fa89ee..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/core/MonitorWorker.kt
+++ /dev/null
@@ -1,92 +0,0 @@
-package eu.darken.capod.wear.core
-
-import android.content.Context
-import androidx.hilt.work.HiltWorker
-import androidx.work.CoroutineWorker
-import androidx.work.WorkerParameters
-import dagger.assisted.Assisted
-import dagger.assisted.AssistedInject
-import eu.darken.capod.common.coroutine.DispatcherProvider
-import eu.darken.capod.common.debug.Bugs
-import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
-import eu.darken.capod.common.debug.logging.Logging.Priority.WARN
-import eu.darken.capod.common.debug.logging.log
-import eu.darken.capod.common.debug.logging.logTag
-import eu.darken.capod.common.flow.setupCommonEventHandlers
-import eu.darken.capod.main.core.PermissionTool
-import eu.darken.capod.monitor.core.MonitorCoroutineScope
-import eu.darken.capod.monitor.core.PodMonitor
-import kotlinx.coroutines.*
-import kotlinx.coroutines.flow.filterNotNull
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.take
-
-
-@HiltWorker
-class MonitorWorker @AssistedInject constructor(
- @Assisted private val context: Context,
- @Assisted private val params: WorkerParameters,
- private val dispatcherProvider: DispatcherProvider,
- private val permissionTool: PermissionTool,
- private val podMonitor: PodMonitor,
-) : CoroutineWorker(context, params) {
-
- private val workerScope = MonitorCoroutineScope()
-
- private var finishedWithError = false
-
- init {
- log(TAG, VERBOSE) { "init(): workerId=$id" }
- }
-
- override suspend fun doWork(): Result = try {
- val start = System.currentTimeMillis()
- log(TAG, VERBOSE) { "Executing $inputData now (runAttemptCount=$runAttemptCount)" }
-
- doDoWork()
-
- val duration = System.currentTimeMillis() - start
-
- log(TAG, VERBOSE) { "Execution finished after ${duration}ms, $inputData" }
-
- Result.success(inputData)
- } catch (e: Throwable) {
- if (e !is CancellationException) {
- Bugs.report(tag = TAG, "Execution failed", exception = e)
- finishedWithError = true
- Result.failure(inputData)
- } else {
- Result.success()
- }
- } finally {
- this.workerScope.cancel("Worker finished (withError?=$finishedWithError).")
- }
-
- private suspend fun doDoWork() = withContext(dispatcherProvider.IO) {
- val permissionsMissingOnStart = permissionTool.missingPermissions.first()
- if (permissionsMissingOnStart.isNotEmpty()) {
- log(TAG, WARN) { "Aborting, missing permissions: $permissionsMissingOnStart" }
- return@withContext
- }
-
- val monitorJob = podMonitor.mainDevice
- .filterNotNull()
- .take(3)
- .setupCommonEventHandlers(TAG) { "monitorJob" }
- .launchIn(workerScope)
-
- try {
- withTimeout(15 * 1000) {
- monitorJob.join()
- }
- log(TAG) { "Monitor job quit after a few takes." }
- } catch (e: TimeoutCancellationException) {
- log(TAG) { "Monitor job quit after finding nothing." }
- }
- }
-
- companion object {
- val TAG = logTag("Monitor", "Worker")
- }
-}
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/core/UserTime.kt b/app-wear/src/main/java/eu/darken/capod/wear/core/UserTime.kt
deleted file mode 100644
index 960f6806..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/core/UserTime.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package eu.darken.capod.wear.core
-
-import android.content.Context
-import java.time.Instant
-import java.time.ZoneId
-import java.time.format.DateTimeFormatter
-import java.time.format.FormatStyle
-import java.util.Locale
-
-data class UserTime(
- val time: Instant = Instant.now(),
-) {
- fun toFormatted(context: Context): String = DateTimeFormatter
- .ofLocalizedTime(FormatStyle.SHORT)
- .withLocale(Locale.getDefault())
- .withZone(ZoneId.systemDefault())
- .format(time)
-}
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivity.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivity.kt
deleted file mode 100644
index 6e73b924..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivity.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package eu.darken.capod.wear.ui
-
-import android.os.Bundle
-import androidx.activity.viewModels
-import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
-import androidx.wear.widget.SwipeDismissFrameLayout
-import dagger.hilt.android.AndroidEntryPoint
-import eu.darken.capod.R
-import eu.darken.capod.common.navigation.findNavController
-import eu.darken.capod.common.uix.Activity2
-import eu.darken.capod.databinding.MainActivityBinding
-
-@AndroidEntryPoint
-class MainActivity : Activity2() {
-
- private val vm: MainActivityVM by viewModels()
- private lateinit var ui: MainActivityBinding
- private val navController by lazy { supportFragmentManager.findNavController(R.id.nav_host) }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- installSplashScreen()
-
- super.onCreate(savedInstanceState)
-
- ui = MainActivityBinding.inflate(layoutInflater)
- setContentView(ui.root)
-
- ui.swipeWrapper.addCallback(object : SwipeDismissFrameLayout.Callback() {
- override fun onDismissed(layout: SwipeDismissFrameLayout) {
- if (!navController.popBackStack()) finish()
- super.onDismissed(layout)
- }
- })
- }
-}
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
deleted file mode 100644
index 6bfb929d..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/MainActivityVM.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-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.permissions.Permission
-import eu.darken.capod.common.uix.ViewModel2
-import eu.darken.capod.main.core.PermissionTool
-import eu.darken.capod.monitor.core.PodMonitor
-import eu.darken.capod.pods.core.PodDevice
-import kotlinx.coroutines.flow.combine
-import javax.inject.Inject
-
-
-@HiltViewModel
-class MainActivityVM @Inject constructor(
- handle: SavedStateHandle,
- dispatcherProvider: DispatcherProvider,
- private val podMonitor: PodMonitor,
- private val permissionTool: PermissionTool,
-) : ViewModel2(dispatcherProvider = dispatcherProvider) {
-
- sealed class State {
- data class PermissionRequired(
- val permissions: List,
- ) : State()
-
- data class Devices(
- val devices: List
- ) : State()
- }
-
- val state = combine(
- podMonitor.devices,
- permissionTool.missingPermissions,
- ) { devices, missingPermissions ->
- when {
- missingPermissions.isNotEmpty() -> State.PermissionRequired(
- permissions = missingPermissions.toList()
- )
- else -> State.Devices(
- devices = devices
- )
- }
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewAdapter.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewAdapter.kt
deleted file mode 100644
index 74cfea64..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewAdapter.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package eu.darken.capod.wear.ui.overview
-
-import android.view.ViewGroup
-import androidx.annotation.LayoutRes
-import androidx.viewbinding.ViewBinding
-import eu.darken.capod.common.lists.BindableVH
-import eu.darken.capod.common.lists.differ.AsyncDiffer
-import eu.darken.capod.common.lists.differ.DifferItem
-import eu.darken.capod.common.lists.differ.HasAsyncDiffer
-import eu.darken.capod.common.lists.differ.setupDiffer
-import eu.darken.capod.common.lists.modular.ModularAdapter
-import eu.darken.capod.common.lists.modular.mods.DataBinderMod
-import eu.darken.capod.common.lists.modular.mods.TypedVHCreatorMod
-import eu.darken.capod.wear.ui.overview.cards.BluetoothDisabledVH
-import eu.darken.capod.wear.ui.overview.cards.MissingMainDeviceVH
-import eu.darken.capod.wear.ui.overview.cards.PermissionCardVH
-import eu.darken.capod.wear.ui.overview.cards.pods.DualPodsCardVH
-import eu.darken.capod.wear.ui.overview.cards.pods.SinglePodsCardVH
-import javax.inject.Inject
-
-class OverviewAdapter @Inject constructor() :
- ModularAdapter>(),
- HasAsyncDiffer {
-
- override val asyncDiffer: AsyncDiffer<*, Item> = setupDiffer()
-
- init {
- modules.add(DataBinderMod(data))
- modules.add(TypedVHCreatorMod({ data[it] is PermissionCardVH.Item }) { PermissionCardVH(it) })
- modules.add(TypedVHCreatorMod({ data[it] is DualPodsCardVH.Item }) { DualPodsCardVH(it) })
- modules.add(TypedVHCreatorMod({ data[it] is SinglePodsCardVH.Item }) { SinglePodsCardVH(it) })
- modules.add(TypedVHCreatorMod({ data[it] is MissingMainDeviceVH.Item }) { MissingMainDeviceVH(it) })
- modules.add(TypedVHCreatorMod({ data[it] is BluetoothDisabledVH.Item }) { BluetoothDisabledVH(it) })
- }
-
- override fun getItemCount(): Int = data.size
-
- abstract class BaseVH(
- @LayoutRes layoutId: Int,
- parent: ViewGroup
- ) : ModularAdapter.VH(layoutId, parent), BindableVH
-
- interface Item : DifferItem
-
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragment.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragment.kt
deleted file mode 100644
index 168d5383..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragment.kt
+++ /dev/null
@@ -1,95 +0,0 @@
-package eu.darken.capod.wear.ui.overview
-
-import android.content.Intent
-import android.net.Uri
-import android.os.Bundle
-import android.provider.Settings
-import android.view.View
-import androidx.activity.result.ActivityResultLauncher
-import androidx.activity.result.contract.ActivityResultContracts
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import dagger.hilt.android.AndroidEntryPoint
-import eu.darken.capod.R
-import eu.darken.capod.common.debug.logging.log
-import eu.darken.capod.common.lists.differ.update
-import eu.darken.capod.common.permissions.Permission
-import eu.darken.capod.common.uix.Fragment3
-import eu.darken.capod.common.viewbinding.viewBinding
-import eu.darken.capod.databinding.MainFragmentBinding
-import javax.inject.Inject
-
-
-@AndroidEntryPoint
-class OverviewFragment : Fragment3(R.layout.main_fragment) {
-
- override val vm: OverviewFragmentVM by viewModels()
- override val ui: MainFragmentBinding by viewBinding()
-
- @Inject
- lateinit var overviewAdapter: OverviewAdapter
-
- lateinit var permissionLauncher: ActivityResultLauncher
- var awaitingPermission = false
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- awaitingPermission = savedInstanceState?.getBoolean("awaitingPermission") ?: false
-
- permissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
- log { "Request for $id was granted=$granted" }
- vm.onPermissionResult(granted)
- }
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- ui.list.apply {
- layoutManager = LinearLayoutManager(context)
- this.adapter = overviewAdapter
- }
-
- vm.listItems.observe2(ui) { overviewAdapter.update(it) }
-
- vm.requestPermissionEvent.observe2(ui) {
- when (it) {
- Permission.IGNORE_BATTERY_OPTIMIZATION -> {
- awaitingPermission = true
- startActivity(
- Intent(
- Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
- Uri.parse("package:${requireContext().packageName}")
- )
- )
- }
- Permission.SYSTEM_ALERT_WINDOW -> {
- awaitingPermission = true
- startActivity(
- Intent(
- Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
- Uri.parse("package:${requireContext().packageName}")
- )
- )
- }
- else -> {
- permissionLauncher.launch(it.permissionId)
- }
- }
- }
-
- super.onViewCreated(view, savedInstanceState)
- }
-
- override fun onSaveInstanceState(outState: Bundle) {
- outState.putBoolean("awaitingPermission", awaitingPermission)
- super.onSaveInstanceState(outState)
- }
-
- override fun onResume() {
- super.onResume()
- if (awaitingPermission) {
- awaitingPermission = false
- log { "awaitingPermission=true" }
- vm.onPermissionResult(true)
- }
- }
-}
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt
deleted file mode 100644
index 97171547..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/OverviewFragmentVM.kt
+++ /dev/null
@@ -1,115 +0,0 @@
-package eu.darken.capod.wear.ui.overview
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.SavedStateHandle
-import dagger.hilt.android.lifecycle.HiltViewModel
-import eu.darken.capod.common.bluetooth.BluetoothManager2
-import eu.darken.capod.common.coroutine.DispatcherProvider
-import eu.darken.capod.common.debug.DebugSettings
-import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE
-import eu.darken.capod.common.debug.logging.log
-import eu.darken.capod.common.flow.combine
-import eu.darken.capod.common.flow.throttleLatest
-import eu.darken.capod.common.livedata.SingleLiveEvent
-import eu.darken.capod.common.permissions.Permission
-import eu.darken.capod.common.uix.ViewModel3
-import eu.darken.capod.main.core.PermissionTool
-import eu.darken.capod.monitor.core.PodMonitor
-import eu.darken.capod.pods.core.DualPodDevice
-import eu.darken.capod.pods.core.SinglePodDevice
-import eu.darken.capod.wear.core.UserTime
-import eu.darken.capod.wear.ui.overview.cards.BluetoothDisabledVH
-import eu.darken.capod.wear.ui.overview.cards.MissingMainDeviceVH
-import eu.darken.capod.wear.ui.overview.cards.PermissionCardVH
-import eu.darken.capod.wear.ui.overview.cards.pods.DualPodsCardVH
-import eu.darken.capod.wear.ui.overview.cards.pods.SinglePodsCardVH
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.flow.*
-import kotlinx.coroutines.isActive
-import java.time.Instant
-import javax.inject.Inject
-
-@HiltViewModel
-class OverviewFragmentVM @Inject constructor(
- @Suppress("UNUSED_PARAMETER") handle: SavedStateHandle,
- dispatcherProvider: DispatcherProvider,
- private val podMonitor: PodMonitor,
- private val permissionTool: PermissionTool,
- debugSettings: DebugSettings,
- private val bluetoothManager: BluetoothManager2,
-) : ViewModel3(dispatcherProvider = dispatcherProvider) {
-
- private val updateTicker = channelFlow {
- while (isActive) {
- trySend(Unit)
- delay(3000)
- }
- }
-
- val requestPermissionEvent = SingleLiveEvent()
-
- private val mainDevice = podMonitor.mainDevice.throttleLatest(1000)
-
- val listItems: LiveData> = combine(
- updateTicker,
- permissionTool.missingPermissions,
- debugSettings.isDebugModeEnabled.flow,
- bluetoothManager.isBluetoothEnabled,
- mainDevice,
- ) { _, permissions, isDebugMode, isBluetoothEnabled, _ ->
- val items = mutableListOf()
-
- if (permissions.isNotEmpty()) {
- permissions
- .map { perm ->
- PermissionCardVH.Item(
- permission = perm,
- onRequest = { requestPermissionEvent.postValue(it) },
- )
- }
- .run { items.addAll(this) }
- return@combine items
- }
-
- if (!isBluetoothEnabled) {
- items.add(0, BluetoothDisabledVH.Item)
- return@combine items
- }
-
- val podToShow = podMonitor.latestMainDevice()
- log(TAG, VERBOSE) { "Showing $podToShow" }
-
- val now = Instant.now()
-
- val pod = when (podToShow) {
- is DualPodDevice -> DualPodsCardVH.Item(
- now = now,
- device = podToShow,
- showDebug = isDebugMode,
- isMainPod = true,
- userTime = UserTime(),
- )
-
- is SinglePodDevice -> SinglePodsCardVH.Item(
- now = now,
- device = podToShow,
- showDebug = isDebugMode,
- isMainPod = true,
- userTime = UserTime(),
- )
-
- else -> MissingMainDeviceVH.Item(
- userTime = UserTime(),
- )
- }
- items.add(pod)
-
- items
- }
- .catch { errorEvents.postValue(it) }
- .asLiveData2()
-
- fun onPermissionResult(granted: Boolean) {
- if (granted) permissionTool.recheck()
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/BluetoothDisabledVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/BluetoothDisabledVH.kt
deleted file mode 100644
index 41b77519..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/BluetoothDisabledVH.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards
-
-import android.view.ViewGroup
-import eu.darken.capod.R
-import eu.darken.capod.common.lists.binding
-import eu.darken.capod.common.lists.differ.DifferItem
-import eu.darken.capod.databinding.OverviewBluetoothDisabledItemBinding
-import eu.darken.capod.wear.ui.overview.OverviewAdapter
-
-class BluetoothDisabledVH(parent: ViewGroup) :
- OverviewAdapter.BaseVH(
- R.layout.overview_bluetooth_disabled_item,
- parent
- ) {
-
- override val viewBinding = lazy {
- OverviewBluetoothDisabledItemBinding.bind(itemView)
- }
-
- override val onBindData: OverviewBluetoothDisabledItemBinding.(
- item: Item,
- payloads: List
- ) -> Unit = binding(payload = true) { item ->
-
- }
-
- object Item : OverviewAdapter.Item {
- override val stableId: Long = Item::class.hashCode().toLong()
-
- override val payloadProvider: ((DifferItem, DifferItem) -> DifferItem?)
- get() = { old, new -> if (new::class.isInstance(old)) new else null }
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/MissingMainDeviceVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/MissingMainDeviceVH.kt
deleted file mode 100644
index 8157283c..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/MissingMainDeviceVH.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards
-
-import android.view.ViewGroup
-import eu.darken.capod.R
-import eu.darken.capod.common.lists.binding
-import eu.darken.capod.common.lists.differ.DifferItem
-import eu.darken.capod.databinding.OverviewNomaindeviceItemBinding
-import eu.darken.capod.wear.core.UserTime
-import eu.darken.capod.wear.ui.overview.OverviewAdapter
-
-class MissingMainDeviceVH(parent: ViewGroup) :
- OverviewAdapter.BaseVH(
- R.layout.overview_nomaindevice_item,
- parent
- ) {
-
- override val viewBinding = lazy {
- OverviewNomaindeviceItemBinding.bind(itemView)
- }
-
- override val onBindData: OverviewNomaindeviceItemBinding.(
- item: Item,
- payloads: List
- ) -> Unit = binding(payload = true) { item ->
- userTime.text = item.userTime.toFormatted(context)
-
- }
-
- data class Item(
- val userTime: UserTime,
- ) : OverviewAdapter.Item {
- override val stableId: Long = this.hashCode().toLong()
-
- override val payloadProvider: ((DifferItem, DifferItem) -> DifferItem?)
- get() = { old, new -> if (new::class.isInstance(old)) new else null }
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/PermissionCardVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/PermissionCardVH.kt
deleted file mode 100644
index 8db86018..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/PermissionCardVH.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards
-
-import android.view.ViewGroup
-import eu.darken.capod.R
-import eu.darken.capod.common.lists.binding
-import eu.darken.capod.common.lists.differ.DifferItem
-import eu.darken.capod.common.permissions.Permission
-import eu.darken.capod.databinding.OverviewPermissionItemBinding
-import eu.darken.capod.wear.ui.overview.OverviewAdapter
-
-class PermissionCardVH(parent: ViewGroup) :
- OverviewAdapter.BaseVH(
- R.layout.overview_permission_item,
- parent
- ) {
-
- override val viewBinding = lazy {
- OverviewPermissionItemBinding.bind(itemView)
- }
-
- override val onBindData: OverviewPermissionItemBinding.(
- item: Item,
- payloads: List
- ) -> Unit = binding(payload = true) { item ->
- permissionLabel.setText(item.permission.labelRes)
- permissionDescription.setText(item.permission.descriptionRes)
- grantAction.setOnClickListener { item.onRequest(item.permission) }
- }
-
- data class Item(
- val permission: Permission,
- val onRequest: (Permission) -> Unit
- ) : OverviewAdapter.Item {
- override val stableId: Long = permission.hashCode().toLong()
-
- override val payloadProvider: ((DifferItem, DifferItem) -> DifferItem?)
- get() = { old, new -> if (new::class.isInstance(old)) new else null }
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/DualPodsCardVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/DualPodsCardVH.kt
deleted file mode 100644
index c42dfc84..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/DualPodsCardVH.kt
+++ /dev/null
@@ -1,136 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards.pods
-
-import android.graphics.Typeface
-import android.view.ViewGroup
-import androidx.core.view.isGone
-import androidx.core.view.isInvisible
-import eu.darken.capod.R
-import eu.darken.capod.common.lists.binding
-import eu.darken.capod.databinding.OverviewPodsDualItemBinding
-import eu.darken.capod.pods.core.*
-import eu.darken.capod.pods.core.apple.DualApplePods
-import eu.darken.capod.wear.core.UserTime
-import java.time.Instant
-
-class DualPodsCardVH(parent: ViewGroup) :
- PodDeviceVH(
- R.layout.overview_pods_dual_item,
- parent
- ) {
-
- override val viewBinding = lazy { OverviewPodsDualItemBinding.bind(itemView) }
-
- override val onBindData = binding(payload = true) { item: Item ->
- userTime.text = item.userTime.toFormatted(context)
-
- val device = item.device
-
- name.apply {
- val sb = StringBuilder(device.getLabel(context))
- if (device is HasPodStyle && item.showDebug) {
- val style = device.podStyle
- sb.append(" (${style.getColor(context)})")
- }
- text = sb
-
- if (item.isMainPod) setTypeface(null, Typeface.BOLD)
- else setTypeface(null, Typeface.NORMAL)
-
- if (device is DualApplePods && item.showDebug) {
- append(" [${device.primaryPod.name}]")
- }
- }
- deviceIcon.setImageResource(device.iconRes)
- podLeftIcon.setImageResource(device.leftPodIcon)
- podRightIcon.setImageResource(device.rightPodIcon)
-
- lastSeen.text = device.lastSeenFormatted(item.now)
-
- // Pods battery state
- device.apply {
- podLeftBatteryIcon.setImageResource(getBatteryDrawable(batteryLeftPodPercent))
- podLeftBatteryLabel.text = getBatteryLevelLeftPod(context)
-
- podRightBatteryIcon.setImageResource(getBatteryDrawable(batteryRightPodPercent))
- podRightBatteryLabel.text = getBatteryLevelRightPod(context)
- }
-
- // Pods charging state
- device.apply {
- if (this is HasChargeDetectionDual) {
- podLeftChargingIcon.isInvisible = !isLeftPodCharging
-
- podRightChargingIcon.isInvisible = !isRightPodCharging
- } else {
- podLeftChargingIcon.isGone = true
-
- podRightChargingIcon.isGone = true
- }
- }
-
- // Microphone state
- device.apply {
- if (this is HasDualMicrophone) {
- podLeftMicrophoneIcon.isInvisible = !isLeftPodMicrophone
-
- podRightMicrophoneIcon.isInvisible = !isRightPodMicrophone
- } else {
- podLeftMicrophoneIcon.isGone = true
-
- podRightMicrophoneIcon.isGone = true
- }
- }
-
- // Pods wear state
- device.apply {
- if (this is HasEarDetectionDual) {
- podLeftWearIcon.isInvisible = !isLeftPodInEar
-
- podRightWearIcon.isInvisible = !isRightPodInEar
- } else {
- podLeftWearIcon.isGone = true
-
- podRightWearIcon.isGone = true
- }
- }
-
- // Case charge state
- device.apply {
- if (this is HasCase) {
- podCaseIcon.setImageResource(caseIcon)
- podCaseBatteryIcon.isGone = false
- podCaseBatteryIcon.setImageResource(getBatteryDrawable(batteryCasePercent))
- podCaseBatteryLabel.text = getBatteryLevelCase(context)
-
- podCaseChargingIcon.isInvisible = !isCaseCharging
- } else {
- podCaseBatteryIcon.isGone = true
- podCaseBatteryLabel.isGone = true
-
- podCaseChargingIcon.isGone = true
- }
- }
-
- // Connection state
- device.apply {
- val sb = StringBuilder()
- if (this is HasStateDetection) {
- sb.append(state.getLabel(context))
- }
- if (item.showDebug) {
- sb.append("\n\n").append("---Debug---")
- sb.append("\n").append(rawDataHex)
- }
- status.text = sb
- status.isGone = sb.isEmpty()
- }
- }
-
- data class Item(
- override val now: Instant,
- override val device: DualPodDevice,
- override val showDebug: Boolean,
- override val isMainPod: Boolean,
- val userTime: UserTime,
- ) : PodDeviceVH.Item
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/PodDeviceVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/PodDeviceVH.kt
deleted file mode 100644
index df71467e..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/PodDeviceVH.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards.pods
-
-import android.view.ViewGroup
-import androidx.annotation.LayoutRes
-import androidx.viewbinding.ViewBinding
-import eu.darken.capod.common.lists.BindableVH
-import eu.darken.capod.common.lists.differ.DifferItem
-import eu.darken.capod.common.lists.modular.ModularAdapter
-import eu.darken.capod.pods.core.PodDevice
-import eu.darken.capod.pods.core.getSignalQuality
-import eu.darken.capod.wear.ui.overview.OverviewAdapter
-import java.time.Instant
-
-abstract class PodDeviceVH(
- @LayoutRes layoutId: Int,
- parent: ViewGroup
-) : ModularAdapter.VH(layoutId, parent), BindableVH {
-
- fun Item.getReceptionText(): String = device.getSignalQuality(context)
- .let { if (showDebug) "$it ${device.seenCounter}" else it }
- .let { if (isMainPod) "$it\n(${getString(eu.darken.capod.common.R.string.pods_yours)})" else it }
-
- interface Item : OverviewAdapter.Item {
-
- val now: Instant
-
- val device: PodDevice
-
- val showDebug: Boolean
-
- val isMainPod: Boolean
-
- override val stableId: Long get() = device.identifier.hashCode().toLong()
-
- override val payloadProvider: ((DifferItem, DifferItem) -> DifferItem?)?
- get() = { old, new ->
- if (new::class.isInstance(old)) new else null
- }
-
- }
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/SinglePodsCardVH.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/SinglePodsCardVH.kt
deleted file mode 100644
index 39b2347d..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/overview/cards/pods/SinglePodsCardVH.kt
+++ /dev/null
@@ -1,83 +0,0 @@
-package eu.darken.capod.wear.ui.overview.cards.pods
-
-import android.graphics.Typeface
-import android.view.ViewGroup
-import androidx.core.view.isGone
-import androidx.core.view.isInvisible
-import eu.darken.capod.R
-import eu.darken.capod.common.lists.binding
-import eu.darken.capod.databinding.OverviewPodsSingleItemBinding
-import eu.darken.capod.pods.core.*
-import eu.darken.capod.wear.core.UserTime
-import java.time.Instant
-
-class SinglePodsCardVH(parent: ViewGroup) :
- PodDeviceVH(
- R.layout.overview_pods_single_item,
- parent
- ) {
-
- override val viewBinding = lazy { OverviewPodsSingleItemBinding.bind(itemView) }
-
- override val onBindData = binding(payload = true) { item: Item ->
- userTime.text = item.userTime.toFormatted(context)
-
- val device = item.device
-
- name.apply {
- text = device.getLabel(context)
- if (item.isMainPod) setTypeface(null, Typeface.BOLD)
- else setTypeface(null, Typeface.NORMAL)
- }
-
- deviceIcon.setImageResource(device.iconRes)
-
- lastSeen.text = device.lastSeenFormatted(item.now)
-
- // Battery level
- device.apply {
- batteryLabel.text = getBatteryLevelHeadset(context)
- batteryIcon.setImageResource(getBatteryDrawable(batteryHeadsetPercent))
- }
-
- // Charge state
- device.apply {
- if (this is HasChargeDetection) {
- chargingIcon.isInvisible = isHeadsetBeingCharged
- chargingLabel.isInvisible = isHeadsetBeingCharged
- } else {
- chargingIcon.isGone = true
- chargingLabel.isGone = true
- }
- }
-
- // Has ear detection
- device.apply {
- if (this is HasEarDetection) {
- wearIcon.isInvisible = isBeingWorn
- wearLabel.isInvisible = isBeingWorn
- } else {
- wearIcon.isGone = true
- wearLabel.isGone = true
- }
- }
-
- status.apply {
- val sb = StringBuilder()
- if (item.showDebug) {
- sb.append("--- Debug ---")
- sb.append("\n").append(device.rawDataHex)
- }
- text = sb
- isGone = !item.showDebug
- }
- }
-
- data class Item(
- override val now: Instant,
- override val device: SinglePodDevice,
- override val showDebug: Boolean,
- override val isMainPod: Boolean,
- val userTime: UserTime,
- ) : PodDeviceVH.Item
-}
\ No newline at end of file
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragment.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragment.kt
deleted file mode 100644
index f675fc4d..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragment.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package eu.darken.capod.wear.ui.settings
-
-import android.os.Bundle
-import android.view.View
-import androidx.fragment.app.viewModels
-import dagger.hilt.android.AndroidEntryPoint
-import eu.darken.capod.R
-import eu.darken.capod.common.BuildConfigWrap
-import eu.darken.capod.common.uix.Fragment3
-import eu.darken.capod.common.viewbinding.viewBinding
-import eu.darken.capod.databinding.SettingsFragmentBinding
-
-
-@AndroidEntryPoint
-class SettingsFragment : Fragment3(R.layout.settings_fragment) {
-
- override val vm: SettingsFragmentVM by viewModels()
- override val ui: SettingsFragmentBinding by viewBinding()
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- ui.appVersion.text = BuildConfigWrap.VERSION_DESCRIPTION_TINY
- super.onViewCreated(view, savedInstanceState)
- }
-}
diff --git a/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragmentVM.kt b/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragmentVM.kt
deleted file mode 100644
index 7a4ebfd9..00000000
--- a/app-wear/src/main/java/eu/darken/capod/wear/ui/settings/SettingsFragmentVM.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package eu.darken.capod.wear.ui.settings
-
-import androidx.lifecycle.SavedStateHandle
-import dagger.hilt.android.lifecycle.HiltViewModel
-import eu.darken.capod.common.coroutine.DispatcherProvider
-import eu.darken.capod.common.uix.ViewModel3
-import javax.inject.Inject
-
-@HiltViewModel
-class SettingsFragmentVM @Inject constructor(
- @Suppress("UNUSED_PARAMETER") handle: SavedStateHandle,
- dispatcherProvider: DispatcherProvider,
-) : ViewModel3(dispatcherProvider = dispatcherProvider)
\ No newline at end of file
diff --git a/app-wear/src/main/res/drawable/splash_screen.xml b/app-wear/src/main/res/drawable/splash_screen.xml
deleted file mode 100644
index c178ba82..00000000
--- a/app-wear/src/main/res/drawable/splash_screen.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/layout/main_activity.xml b/app-wear/src/main/res/layout/main_activity.xml
deleted file mode 100644
index f700038a..00000000
--- a/app-wear/src/main/res/layout/main_activity.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ 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
deleted file mode 100644
index 5b6ae034..00000000
--- a/app-wear/src/main/res/layout/main_fragment.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
\ 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
deleted file mode 100644
index edb9fc2c..00000000
--- a/app-wear/src/main/res/layout/overview_bluetooth_disabled_item.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app-wear/src/main/res/layout/overview_nomaindevice_item.xml b/app-wear/src/main/res/layout/overview_nomaindevice_item.xml
deleted file mode 100644
index f31fe56d..00000000
--- a/app-wear/src/main/res/layout/overview_nomaindevice_item.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/app-wear/src/main/res/layout/overview_permission_item.xml b/app-wear/src/main/res/layout/overview_permission_item.xml
deleted file mode 100644
index ce7037e9..00000000
--- a/app-wear/src/main/res/layout/overview_permission_item.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
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
deleted file mode 100644
index 07524dda..00000000
--- a/app-wear/src/main/res/layout/overview_pods_dual_item.xml
+++ /dev/null
@@ -1,289 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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
deleted file mode 100644
index f93164f1..00000000
--- a/app-wear/src/main/res/layout/overview_pods_single_item.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app-wear/src/main/res/layout/settings_fragment.xml b/app-wear/src/main/res/layout/settings_fragment.xml
deleted file mode 100644
index 4af89739..00000000
--- a/app-wear/src/main/res/layout/settings_fragment.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index be316184..00000000
--- a/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index be316184..00000000
--- a/app-wear/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/mipmap-hdpi/ic_launcher.png b/app-wear/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 2919cd5a..00000000
Binary files a/app-wear/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app-wear/src/main/res/mipmap-hdpi/ic_launcher_background.png
deleted file mode 100644
index 35e76e30..00000000
Binary files a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app-wear/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index cd9679c6..00000000
Binary files a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app-wear/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 8d0a6dbc..00000000
Binary files a/app-wear/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-mdpi/ic_launcher.png b/app-wear/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 440f5384..00000000
Binary files a/app-wear/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app-wear/src/main/res/mipmap-mdpi/ic_launcher_background.png
deleted file mode 100644
index 3a32174e..00000000
Binary files a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app-wear/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 361ac8a0..00000000
Binary files a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app-wear/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 8e86f61f..00000000
Binary files a/app-wear/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher.png b/app-wear/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 5a2ca739..00000000
Binary files a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_background.png
deleted file mode 100644
index 169f394d..00000000
Binary files a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index f94e8f28..00000000
Binary files a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 9efc8ea0..00000000
Binary files a/app-wear/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index aeb41411..00000000
Binary files a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
deleted file mode 100644
index 909fd2e1..00000000
Binary files a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index d3ee90d5..00000000
Binary files a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 39cabb78..00000000
Binary files a/app-wear/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index f840622a..00000000
Binary files a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
deleted file mode 100644
index bb71e0e1..00000000
Binary files a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 253c9c16..00000000
Binary files a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 12bc8cfa..00000000
Binary files a/app-wear/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/app-wear/src/main/res/navigation/nav_graph.xml b/app-wear/src/main/res/navigation/nav_graph.xml
deleted file mode 100644
index 6c238cf5..00000000
--- a/app-wear/src/main/res/navigation/nav_graph.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values-af-rZA/strings.xml b/app-wear/src/main/res/values-af-rZA/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-af-rZA/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-am/strings.xml b/app-wear/src/main/res/values-am/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-am/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ar/strings.xml b/app-wear/src/main/res/values-ar/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ar/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-az/strings.xml b/app-wear/src/main/res/values-az/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-az/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-be/strings.xml b/app-wear/src/main/res/values-be/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-be/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-bg/strings.xml b/app-wear/src/main/res/values-bg/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-bg/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-bn-rBD/strings.xml b/app-wear/src/main/res/values-bn-rBD/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ca/strings.xml b/app-wear/src/main/res/values-ca/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ca/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-cs/strings.xml b/app-wear/src/main/res/values-cs/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-cs/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-da/strings.xml b/app-wear/src/main/res/values-da/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-da/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-de/strings.xml b/app-wear/src/main/res/values-de/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-de/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-el/strings.xml b/app-wear/src/main/res/values-el/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-el/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-es-rAR/strings.xml b/app-wear/src/main/res/values-es-rAR/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-es-rAR/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-es-rMX/strings.xml b/app-wear/src/main/res/values-es-rMX/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-es-rMX/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-es/strings.xml b/app-wear/src/main/res/values-es/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-es/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-et-rEE/strings.xml b/app-wear/src/main/res/values-et-rEE/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-eu-rES/strings.xml b/app-wear/src/main/res/values-eu-rES/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-eu-rES/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-fa/strings.xml b/app-wear/src/main/res/values-fa/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-fa/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-fi/strings.xml b/app-wear/src/main/res/values-fi/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-fi/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-fil/strings.xml b/app-wear/src/main/res/values-fil/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-fil/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-fr/strings.xml b/app-wear/src/main/res/values-fr/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-fr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-gl-rES/strings.xml b/app-wear/src/main/res/values-gl-rES/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-gl-rES/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-hi-rIN/strings.xml b/app-wear/src/main/res/values-hi-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-hi-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-hr/strings.xml b/app-wear/src/main/res/values-hr/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-hr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-hu/strings.xml b/app-wear/src/main/res/values-hu/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-hu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-hy-rAM/strings.xml b/app-wear/src/main/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-in/strings.xml b/app-wear/src/main/res/values-in/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-in/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-is/strings.xml b/app-wear/src/main/res/values-is/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-is/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-it/strings.xml b/app-wear/src/main/res/values-it/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-it/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-iw/strings.xml b/app-wear/src/main/res/values-iw/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-iw/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ja/strings.xml b/app-wear/src/main/res/values-ja/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ja/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ka-rGE/strings.xml b/app-wear/src/main/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-km-rKH/strings.xml b/app-wear/src/main/res/values-km-rKH/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-kmr-rTR/strings.xml b/app-wear/src/main/res/values-kmr-rTR/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-kmr-rTR/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-kn-rIN/strings.xml b/app-wear/src/main/res/values-kn-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ko/strings.xml b/app-wear/src/main/res/values-ko/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ko/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ky-rKG/strings.xml b/app-wear/src/main/res/values-ky-rKG/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ky-rKG/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-lo-rLA/strings.xml b/app-wear/src/main/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-lt/strings.xml b/app-wear/src/main/res/values-lt/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-lt/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-lv/strings.xml b/app-wear/src/main/res/values-lv/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-lv/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-mk-rMK/strings.xml b/app-wear/src/main/res/values-mk-rMK/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-mk-rMK/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ml-rIN/strings.xml b/app-wear/src/main/res/values-ml-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ml-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-mn-rMN/strings.xml b/app-wear/src/main/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-mr-rIN/strings.xml b/app-wear/src/main/res/values-mr-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ms/strings.xml b/app-wear/src/main/res/values-ms/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ms/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-my-rMM/strings.xml b/app-wear/src/main/res/values-my-rMM/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-my-rMM/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ne-rNP/strings.xml b/app-wear/src/main/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-nl/strings.xml b/app-wear/src/main/res/values-nl/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-nl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-pl/strings.xml b/app-wear/src/main/res/values-pl/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-pl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-pt-rBR/strings.xml b/app-wear/src/main/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-pt/strings.xml b/app-wear/src/main/res/values-pt/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-pt/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-rm/strings.xml b/app-wear/src/main/res/values-rm/strings.xml
deleted file mode 100644
index 55344e51..00000000
--- a/app-wear/src/main/res/values-rm/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values-ro/strings.xml b/app-wear/src/main/res/values-ro/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ro/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ru/strings.xml b/app-wear/src/main/res/values-ru/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ru/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-si-rLK/strings.xml b/app-wear/src/main/res/values-si-rLK/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-sk/strings.xml b/app-wear/src/main/res/values-sk/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-sk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-sl/strings.xml b/app-wear/src/main/res/values-sl/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-sl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-sr/strings.xml b/app-wear/src/main/res/values-sr/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-sr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-sv/strings.xml b/app-wear/src/main/res/values-sv/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-sv/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-sw/strings.xml b/app-wear/src/main/res/values-sw/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-sw/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ta-rIN/strings.xml b/app-wear/src/main/res/values-ta-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ta-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-te-rIN/strings.xml b/app-wear/src/main/res/values-te-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-te-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-th/strings.xml b/app-wear/src/main/res/values-th/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-th/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-tr/strings.xml b/app-wear/src/main/res/values-tr/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-tr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-uk/strings.xml b/app-wear/src/main/res/values-uk/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-uk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-ur-rIN/strings.xml b/app-wear/src/main/res/values-ur-rIN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-ur-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-uz/strings.xml b/app-wear/src/main/res/values-uz/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-uz/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-vi/strings.xml b/app-wear/src/main/res/values-vi/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-vi/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-zh-rCN/strings.xml b/app-wear/src/main/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-zh-rHK/strings.xml b/app-wear/src/main/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-zh-rTW/strings.xml b/app-wear/src/main/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values-zu/strings.xml b/app-wear/src/main/res/values-zu/strings.xml
deleted file mode 100644
index 0f911553..00000000
--- a/app-wear/src/main/res/values-zu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/app-wear/src/main/res/values/colors.xml b/app-wear/src/main/res/values/colors.xml
deleted file mode 100644
index 4fac9aa7..00000000
--- a/app-wear/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
- #3F7AFF
- #FEFBFF
- #003EA7
- #FEFBFF
- #E9C426
- #3B2F00
- #564500
- #FFE16C
- #33E286
- #00391B
- #005229
- #5CFFA0
- #FFB4A9
- #930006
- #680003
- #FFDAD4
- #000000
- #FEFBFF
- #000000
- #FEFBFF
- #44464E
- #C6C6D0
- #8F909A
- #1B1B1F
- #FEFBFF
- #0054D9
-
- #3F7AFF
- #BA1B1B
-
- #3f7aff
- #ffd83c
- #41eb8e
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values/dimens.xml b/app-wear/src/main/res/values/dimens.xml
deleted file mode 100644
index 5dd421f1..00000000
--- a/app-wear/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- 5dp
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values/strings.xml b/app-wear/src/main/res/values/strings.xml
deleted file mode 100644
index d5dac5f6..00000000
--- a/app-wear/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values/styles.xml b/app-wear/src/main/res/values/styles.xml
deleted file mode 100644
index 51cee47c..00000000
--- a/app-wear/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app-wear/src/main/res/values/themes.xml b/app-wear/src/main/res/values/themes.xml
deleted file mode 100644
index d64cea3b..00000000
--- a/app-wear/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/crowdin.yaml b/crowdin.yaml
index 494073ae..fa4859e5 100644
--- a/crowdin.yaml
+++ b/crowdin.yaml
@@ -102,12 +102,6 @@
"translation": "/app/src/main/res/values-%android_code%/strings.xml",
# "update_option" : "update_without_changes",
"languages_mapping": *stringmapping
- }, {
- "source": "/app-wear/src/main/res/values/strings.xml",
- "dest": "/strings-wear.xml",
- "translation": "/app-wear/src/main/res/values-%android_code%/strings.xml",
- # "update_option" : "update_without_changes",
- "languages_mapping": *stringmapping
}, {
"source": "/fastlane/metadata/android/en-US/full_description.txt",
"dest": "/description.txt",
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
index c1e32e10..a681947a 100644
--- a/fastlane/Fastfile
+++ b/fastlane/Fastfile
@@ -38,24 +38,6 @@ platform :android do
)
end
- lane :beta_wearos do
- gradle(task: 'clean bundleGplayBeta')
- sh "bash ./remove_unsupported_languages.sh"
- supply(
- track: 'wear:beta',
- rollout: '0.10',
- package_name: 'eu.darken.capod',
- skip_upload_changelogs: 'false',
- skip_upload_apk: 'true',
- skip_upload_images: 'true',
- skip_upload_screenshots: 'true',
- skip_upload_metadata: 'true',
- aab_paths: [
- "app-wear/build/outputs/bundle/gplayRelease/app-wear-gplay-beta.aab",
- ],
- )
- end
-
lane :production do
gradle(task: 'clean bundleGplayRelease')
sh "bash ./remove_unsupported_languages.sh"
@@ -74,24 +56,6 @@ platform :android do
)
end
- lane :production_wearos do
- gradle(task: 'clean bundleGplayRelease')
- sh "bash ./remove_unsupported_languages.sh"
- supply(
- track: 'wear:beta',
- rollout: '0.10',
- package_name: 'eu.darken.capod',
- skip_upload_changelogs: 'false',
- skip_upload_apk: 'true',
- skip_upload_images: 'true',
- skip_upload_screenshots: 'true',
- skip_upload_metadata: 'true',
- aab_paths: [
- "app-wear/build/outputs/bundle/gplayRelease/app-wear-gplay-release.aab",
- ],
- )
- end
-
lane :listing_only do
sh "bash ./remove_unsupported_languages.sh"
supply(
diff --git a/settings.gradle b/settings.gradle
index b8acb261..8bb8a52e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,3 @@
rootProject.name = "Companion App for AirPods"
include ':app'
-include ':app-wear'
include ':app-common'